操作系统原理与设计(下) - 图文

2020-04-14 07:14

CH13 操作系统UNIX ............................................................................................... 220

13.1 UNIX操作系统概述 ........................................................................................................ 220 13.1.1 UNIX系统的结构 ..................................................................................................... 220 13.1.2 UNIX系统的运行描述 ............................................................................................. 221 13.2 UNIX操作系统的进程管理 ............................................................................................ 222 13.2.1 UNIX操作系统的进程 ............................................................................................. 222 13.2.2 UNIX操作系统的进程调度 ..................................................................................... 229 13.2.3 UNIX操作系统的进程通信 ..................................................................................... 231 13.2.4 UNIX中的进程控制 ................................................................................................. 232 13.3 UNIX操作系统的存储管理 ............................................................................................ 235 13.3.1 存储管理部件 ............................................................................................................ 235 13.3.2 UNIX进程映像的虚、实地址空间.......................................................................... 237 13.3.3 UNIX存储管理及分配释放策略.............................................................................. 239 13.4 UNIX操作系统的文件管理 ............................................................................................ 240 13.4.1 UNIX文件系统的基本工作原理.............................................................................. 240 13.4.2 UNIX文件系统的数据结构综述.............................................................................. 241 13.4.3 UNIX文件的物理结构 ............................................................................................. 247 13.4.4 UNIX文件系统的资源管理综述.............................................................................. 248 13.4.5 子文件系统的装卸 .................................................................................................... 250 13.4.6 文件的共享 ................................................................................................................ 252 13.4.7 文件卷的动态安装 .................................................................................................... 254 13.4.8 UNIX文件操作的系统调用 ..................................................................................... 255 13.5 UNIX操作系统的设备管理 ............................................................................................ 259 13.5.1 块设备管理的数据结构 ............................................................................................ 260 13.5.2 缓存控制块buf的各种队列 ..................................................................................... 264 13.5.3 字符设备管理的数据结构 ........................................................................................ 266 13.5.4 字符缓存的管理 ........................................................................................................ 267 13.5.5 块设备的读写操作 .................................................................................................... 267 13.5.6 磁盘中断处理 ............................................................................................................ 273 13.5.7 块设备I/O操作与文件读写关系............................................................................. 276 13.6 UNIX命令语言SHELL..................................................................................................... 277 13.6.1 shell命令语言 ........................................................................................................... 277 13.6.2 shell程序设计语言 ................................................................................................... 280

I

CH13 操作系统UNIX

13.1 UNIX操作系统概述

13.1.1 UNIX系统的结构

UNIX是一个通用的、多用户分时、交互型的操作系统,是美国贝尔实验室的汤普逊(K. Thompson)和里奇(D. M. Ritchie)于70年代初共同研制成功的。在经历了开发、发展、不断完善和广泛应用的过程之后,影响日益扩大。目前,UNIX系统已经成为世界上最为著名的分时操作系统之一,我们这里所介绍的,是以PDP-11/40机上的第六版为依据。UNIX系统的结构,可如图13-1所示,下面对此做些说明。

图13-1 UNIX系统结构示意图

(1) UNIX系统基本上可分成核心与核外程序两部分,通常所说的UNIX操作系统多是指核心程序,它大致由存储管理、进程管理、设备管理和文件系统管理等几部分组成。进程管理还可以进一步分成高级进程管理和低级进程管理两部分。前者主要包括:进程创建、终止;进程间的高级通信;进程在内、外存之间的转移;信号机构和进程间的跟踪控制等。后者主要包括:进程调度;进程间的低级通信机构等。

(2) 由于UNIX产生于七十年代,当时才刚刚开始进行结构程序设计方法的研究,

220

因此UNIX系统的结构并不是很理想的,它的整个核心属于模块结构,模块间的关系极为复杂。不过由于设计者具有的丰富经验,悉心研究和精心构思,使得核心程序不光代码紧凑,系统效率高,而且对模块间的关系做了较好的处置和安排,所以从模块间的调用关系上看,除某些模块外,大多数模块之间仍然可以划分成一定的层次。譬如从图1可以看出,文件系统的大部分模块都在设备管理的上面,而设备管理又处在存储管理之上。

(3) UNIX操作系统源程序由三大部分组成:

? C语言程序文件;

? C语言全局变量和符号常数文件; ? 汇编语言程序文件。

每个C语言程序文件包括若干个子程序,这些文件都可以独立编译,UNIX操作系统所具有的功能基本上由这些文件反映出来。C语言全局变量和符号常数文件中包含有UNIX操作系统使用的重要数据结构的说明,它与C语言程序文件的区别在于它不能单独编译,只能和C语言文件一起编译。汇编语言程序文件大约有1000条左右的汇编语句,大部分反映了与机器硬件直接关联的功能,也有的是为追求系统效率而设置的。

(4) 如果把UNIX核心看作是分层的,那么核心的最外层是“系统调用”。系统调用命令是UNIX向用户提供的第一种界面——面向用户程序的界面,即用户在编写程序时可以使用的界面,这是用户程序获得操作系统为其服务的必由和唯一的途径。

很多操作系统也都为用户提供系统调用这种界面,但这只能做到汇编语言这一级上(即用户在编写汇编语言源程序时,可在源程序中使用操作系统提供的系统调用命令)。但是UNIX不仅在汇编语言,而且也在程序设计语言C中向用户提供这种界面,用户可以把系统调用命令视为C语言的一部分去加以应用,去编写自己的C语言源程序。

(5) UNIX是一个多用户分时、交互式的操作系统,用户会经常通过终端发出命令与系统进行交往:一方面控制自己的作业在系统中的运行,另一方面也可对系统采取的某些动作作出及时地响应。这种要求操作系统进行某种工作的通信语言,在UNIX系统中形成了向用户提供的第二种界面——面向用户终端的界面,即命令语言shell。UNIX系统提供的shell,不仅是一种键盘命令语言,而且也含有许多高级语言所具备的复杂的控制结构与变量运算能力。因此,用户除了能使用shell在终端上与UNIX系统会话,直接参与管理和控制计算机工作,还可以把它做为一种程序设计语言,用来编写出所谓的shell过程,以文件形式存入系统,需要时经shell调入内存,按用户进程的形式执行。一般地,把shell提供的界面简称为用户界面,把系统调用命令提供的界面简称为系统调用。

13.1.2 UNIX系统的运行描述

如图13-2,在UNIX系统生成后,系统的所有程序都是以文件的形式存放在磁盘上,系统开始初启,引导程序把系统的核心(UNIX操作系统)放入内存空间的低地址部分,随之初启程序为系统建立起进程0。

进程0是系统调度进程,其主要任务是负责把在盘上的准备运行的所有进程换入内存。

进程1是系统初启时由进程0创建的。随之,它为每一个终端建立一个相应的shell

221

进程,这些进程都执行shell命令解释程序。每个终端的shell进程都等待用户敲入命令,在接到命令后,相应进程的shell解释程序就开始工作。它根据命令名去查找存放在文件系统中的这个命令文件,并将它调入内存,建立一个子进程来执行这个命令,以完成shell命令的功能。这个子进程执行完后就被撤销,回到相应shell进程,以接收下一个shell命令。

图13-2 UNIX系统运行描述图

这里要注意两点:第一,进程0和进程1是在系统初启时在核心态下直接创建的两个进程,它们与UNIX系统中的其它进程不同,其它进程都是通过系统调用命令fork而建立起来的。UNIX操作系统能否正常运行,在很大程度上取决于进程和进程1的工作。第二,在一般的操作系统中,命令解释语言都是作为操作系统的一部分而常驻内存的(譬如MS-DOS的COMMAND.COM文件),但UNIX的shell却采用了独特的处理方法,它把实现shell命令的程序都以文件的形式存放在文件系统中,每一个终端的shell进程根据用户键入的命令,找到相应的命令程序,并为之建立一个子程序在用户态下运行。这样的好处,不光使UNIX操作系统显得短小精悍,节省内存,而且能很方便地扩充和更改shell的功能,使得用户能根据自己的需要,灵活地构造出与UNIX系统的用户界面。

13.2 UNIX操作系统的进程管理

13.2.1 UNIX操作系统的进程

1、进程映像与UNIX进程

从前面进程的基本概念可知,描述一个进程应由程序、数据集合以及进程控制块PCB三者来完成。

程序——表示该进程所要完成的操作,允许多个进程共享一个程序,这时的程序应编制成为“可重入”的结构,即程序的代码在执行过程中不能被修改。

数据集合——这是程序运行时所需要的数据以及工作区(如栈区等),是附属于

222

该进程的私有物。

进程控制块——表示进程存在的唯一标志,它记录下有关进程的重要信息。譬如进程的状态,保留进程运行暂停时刻的各通用寄存器,控制寄存器,程序状态字的当前值等。

可以看出,在整个进行的生命周期里,这三部分的瞬息变化如同电影中的一幅幅镜头似地,描绘出了该进程的执行过程。因此,UNIX中就称这三部分为进程映像,把进程定义为是“进程映像的执行”。 2、UNIX进程的两种运行状态

在有的操作系统里,把执行操作系统程序的进程称作系统进程,譬如作业调度进程、存储分配进程等;而把执行用户程序的进程称为用户进程。UNIX对此有不同的处理:在UNIX里,进程既可以执行操作系统程序,也可以执行用户程序,操作系统程序的任务是管理资源,控制系统中的各种活动,用户程序则应在操作系统的管理和控制下,完成自己的任务。

为了能区分开一个进程在两种不同环境下的运行情况,UNIX采取的措施为: 第一,让操作系统程序和用户程序构成各自的虚拟地址空间,运行时两者在内存占有不同的存储区域,使用两套不同的映射寄存器组,来分别实现它们的虚拟地址空间到内存地址空间的映射。

第二,为进程设置了两种运行状态:核心态和用户态,这实际上也是处理机的两种工作状态,体现在处理机状态字PS里(图13-3)。

图13-3 PDP-11机的处理机状态字PS

所谓核心态,即表示进程在执行操作系统程序,此时它的活动地址空间为核心空间;所谓用户态,即表示进程在执行用户程序,此时它的活动地址空间为用户态空间。这两种运行态将按照需要在一定时机进行转换。 3、UNIX进程的映像

UNIX把进程映像分成:进程控制块、数据段、以及共享正文段三大部分,下面加以分别介绍。 1) 进程控制块

UNIX的进程控制块由基本控制块proc结构和扩充控制块user结构两部分组成。在proc结构里存放着关于一个进程的最基本、最必需的信息,因此它常驻内存;在user结构里存放着只有进程运行时才用到的数据和状态信息,因此为了节省内存空间,当进程暂时不在处理机上运行时,就把它放在磁盘上的对换区中,进程的user结构总和进程的数据段在一起。下面行介绍proc结构。

223


操作系统原理与设计(下) - 图文.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:边城中的悲剧意识

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: