自学要求:在学习操作系统基本工作原理的基础上,了解一个具体操作系统UNIX的实现方法。
本章不是重点章,学习时注意结合前面章节的内容来领会。
一、UNIX系统结构(领会)
1、UNIX的层次结构。
UNIX可以分为内核层和外壳层两部分。
内核层是UNIX操作系统的核心,它实现存储管理、文件管理、设备管理、进程管理等功能并为外壳层提供系统调用。
外壳层为用户提供各种操作命令(UNIX把它们称为shell命令)和程序设计环境。外壳层由shell解释程序、支持程序设计的各种语言(如C、PASCAL和BASIC等)、编译程序和解释程序、实用程序和系统库等组成。
2、UNIX系统的主要特点。
短小精悍
简洁有效
易移植
可扩充
开放性
3、UNIX的程序员接口和用户接口。
UNIX的程序员接口就是其内核提供的系统调用,它是内核为外壳用户程序提供的服务界面,也就是操作系统支持用户程序正常工作的接口。
系统调用是用户程序请求操作系统为其服务的唯一形式,UNIX规定用户程序用 trap 指令请求服务。
UNIX的中粗略地分为三类:文件操作类、进程控制类和信号与时间类。
shell命令是终端用户与UNIX的接口。因为用户不能直接使用系统调用,而只能使用外壳层的用户程序。一个在终端上登录成功的用户可以用UNIX提供的shell命令来得到用户程序。
二、UNIX系统的进程(领会)
1、进程的组成:在UNIX系统中进程由三部分组成:进程控制块、正文段和数据段。
2、进程的状态及状态转换:UNIX进程在执行过程中由于各种原因使其状态 不断发生变化,且当内存空间不够时可把一些进程换出到磁盘上,需要时又可把它换进内存。进程的状态有运行状态、就绪状态、睡眠状态、创建状态、僵死状态。
3、Shell进程:UNIX系统初始起动时为每个用户创建一个shell进程,每个shell进程等待用户输入命令。当shell进程接收了用户命令后再创建子进程去解释执行命令,子进程在执行过程中可以按需要再创建子进程。形成一棵进程树。
4)进程的创建:一个进程总是使用系统调用fork来创建新进程,形成父子关系。父进程与子进程可以并发执行,子进程可以共享父进程的正文段和已打开的文件。
5、进程调度算法及其实现:在内存就绪的进程中,当处理器空闲时可以竞争处理器,UNIX系统对进程的调度采用动态优先数调度算法,优先数大的进程其优先权低,进程调度总是让优先数小(优先权高)的进程先占用处理器。
6、利用管道设施pipe实现进程间的通信:UNIX的管道机制pipe是连接在进程间的共享文件,称为pipe文件。通过管道机制对进程读写pipe文件进行操作,使得一个进程可以把信息写入pipe文件,别的进程可以从pipe文件中读取信息,实现进程间的通信。
三、UNIX系统的存储管理(领会)
1、对换(Swapping)技术:这就是前面我们所学的虚拟存储器在UNIX中的应用。磁盘上设置开辟一个足够大的区域,为对换区。当内存中的进程要扩大内存空间,而当前的内存空间又不能满足时,则可把内存中的某些进程暂换出到对换区中,在适当的时候又可以把它们换进内存。因而,对换区可作为内存的逻辑扩充,用对换技术解决进程之间的内存竞争。UNIX对内存空间和对换区空间的管理都采用最先适应分配算法。
2、虚拟页式存储管理技术。UNIX把进程的地址空间划分成三个功能区段:系统区段、进程控制区段、进程程序区段。系统区段占用系统空间,系统空间中的程序和数据常驻内存。其余两个区段占用进程空间,是进程中非常驻内存部分。通过页表和硬件的地址转换机构完成虚拟地址和物理地址之间的转换。
四、UNIX系统的文件系统(领会)
1、UNIX系统中的逻辑文件采用流式文件组织
在UNIX系统中,文件的逻辑结构是由一串顺序的字符组成的流式文件,即用户文件是不划分记录的。文件的物理结构是采用索引结构方式,即把文件按一定的长度分块后存放到磁盘上。UNIX的文件系统分成基本文件和可装卸的子文件系统两部分。
2、UNIX的树形目录结构:UNIX采用树形目录,因而从用户角度来看,UNIX文件系统是一个倒树形的层次结构。UNIX把普通文件、目录文件保存在磁盘上,一个具体的文件可以用路径名确定。磁盘被分成块(扇区),每块为512个字节或1K字节
3、UNIX系统中的物理文件采用索引结构组织。UNIX中的文件在磁盘上是按索引结构组织的,每个文件都有一张索引表记录文件占用的磁盘空间块号。
4、UNIX的索引节点。UNIX中每个文件有一个唯一的索引节点,索引节点静态地存放在磁盘上,故称为磁盘索引节点。当建立一个新文件时就要为该文件分配一个索引节点号和存放索引节点的盘空间。
活动索引节点是为了加快文件访问速度而在内存中对磁盘索引节点进行复制而成。若要对文件进行各种操作,则必须把相应的磁盘索引节点复制到活动索引表中,这样才能根据文件的控制和管理信息实现相应的操作。在活动索引表中的节点被称为活动索引节点。
5、UNIX系统中基本文件操作:通过系统调用实现,文件操作类的系统调用主要有creat(建立)、open(打开)、read(读)、write(写)、close(关闭)、link(链接)、unlink(删除)等。
6、文件存储空间 磁盘空间的管理(参阅第五章):UNIX中的每一个文件系统(基本文件系统或子文件系统)的磁盘空间可分成几个部分:一、引导块二、超级块三、索引节点区四、文件存储区。
UNIX中可分配的磁盘空间有两类:一类是索引节点区,另一类是存放文件的存储区UNIX对这两类存储空间采用不同的管理方法。
五、UNIX系统的I/O系统(领会)
1、块设备和字符设备
块设备以块为单位每次与内存交换一组信息。字符设备以字节为单位与内存交换信息。块设备是用来存储信息的设备,进程可以从块设备上读取所需的信息,也可以把信息保存到块设备上。字符设备是计算机用来接收外部信息或把处理好的信息传向外部的设备。块设备包括硬盘、软盘、磁带等,字符设备包括终端、打印机等。
2、设备文件:UNIX系统把设备也当作文件来对待,每个设备都有一个文件名,并对它像文件那样进行操作。
3、缓冲技术:这个技术就是前面我们学过的虚拟设备(SPOOL技术)在UNIX中的实际应用UNIX采用缓冲技术实现设备的读写操作。对写操作,驱动程序分配一个 缓冲区 ,先从用户空间把信息拷贝到缓冲区,再从缓冲区输出到设备;对读操作,先从设备接收信息到缓冲区,再将信息拷贝到指定的用户空间。这样做的目的是为了减少启动设备的次数,提高整个系统的吞吐率。
4、块设备的管理:块设备来与文件系统之间有一个接口实现对缓冲区的管理,通过启动驱动程序完成相应的打开、关闭、读和写等操作。
5、字符设备的管理:字符设备管理为各种字符设备设置了一些反映它们各自工作特性的数据结构:开关表、设备表和I/O队列等。字符设备工作速度低,一次输入输出要求传送的字节数少而且不固定。所以不适宜采用块设备管理中的缓冲技术,而是采用缓冲区容量较小的、易管理的字符缓冲技术。