计算机操作系统

上传人:夏** 文档编号:584948051 上传时间:2024-09-01 格式:PPT 页数:703 大小:4.02MB
返回 下载 相关 举报
计算机操作系统_第1页
第1页 / 共703页
计算机操作系统_第2页
第2页 / 共703页
计算机操作系统_第3页
第3页 / 共703页
计算机操作系统_第4页
第4页 / 共703页
计算机操作系统_第5页
第5页 / 共703页
点击查看更多>>
资源描述

《计算机操作系统》由会员分享,可在线阅读,更多相关《计算机操作系统(703页珍藏版)》请在金锄头文库上搜索。

1、操作系统1.1 1.1 操作系统的地位、目标及作用操作系统的地位、目标及作用计算机系统计算机系统( (层次结构层次结构) )软件软件硬件(裸机)硬件(裸机)应用软件应用软件系统软件系统软件编辑软件,编译软件编辑软件,编译软件操作系统操作系统计算机系统的组成计算机系统的组成:第第1 1章章 引论引论计算机硬件计算机硬件操作系统操作系统系统工具系统工具用户应用用户应用应用用户应用用户应用开发人员应用开发人员操作系统操作系统开发人员开发人员地位:地位: 紧贴系统硬件之上,所有其它软件之下紧贴系统硬件之上,所有其它软件之下(是其它软件的支撑环境)(是其它软件的支撑环境)有效性有效性(系统管理人员的观点

2、):管理和分配硬系统管理人员的观点):管理和分配硬件、软件资源,合理地组织计算机的工作流程。件、软件资源,合理地组织计算机的工作流程。方便性方便性(用户的观点):提供良好的、一致的用(用户的观点):提供良好的、一致的用户接口,弥补硬件系统的类型和数量差别。户接口,弥补硬件系统的类型和数量差别。可扩充性可扩充性(开放的观点):硬件的类型和规模、(开放的观点):硬件的类型和规模、操作系统本身的功能和管理策略、多个系统之间操作系统本身的功能和管理策略、多个系统之间的资源共享和互操作的资源共享和互操作。目标:目标:作用作用 :几种观点几种观点 (1)(1)OSOS是计算机硬件、软件资源的管理者。是计算

3、机硬件、软件资源的管理者。系统调用(编程接口)系统调用(编程接口)命令命令命令行命令行图形界面(图形界面(GUI)(2 2)OSOS是用户使用系统的接口是用户使用系统的接口(3)(3) OSOS是扩展机是扩展机( (extended machine)/extended machine)/虚拟机虚拟机( (virtual machine)virtual machine)。在裸机上添加:设备管理、文件管理、存储管理(针对在裸机上添加:设备管理、文件管理、存储管理(针对内存和外存)、处理机管理内存和外存)、处理机管理1.2操作系统的发展史操作系统的发展史1.2.1推动操作系统发展的主要动力推动操作系

4、统发展的主要动力需求推动了发展需求推动了发展(1)(1) 提高资源的利用率和系统性能提高资源的利用率和系统性能(2)(2) 方便用户方便用户 (3)(3) 器件的发展器件的发展1.2.2早期的早期的手工操作手工操作时间时间194650年代(电子管),集中计算(计算中心),计算年代(电子管),集中计算(计算中心),计算机资源昂贵;机资源昂贵;需求需求 二战对武器设计的需要,美国、英国和德国等国家开始二战对武器设计的需要,美国、英国和德国等国家开始了电子数字计算机的研究工作。了电子数字计算机的研究工作。 哈佛大学的哈佛大学的Howard AikenHoward Aiken 普林斯顿高等研究院的普林

5、斯顿高等研究院的John NeumannJohn Neumann(冯冯诺依曼)诺依曼) 宾夕法尼亚大学的宾夕法尼亚大学的J.PresperJ.Presper Eckert Eckert和和William William MauchleyMauchley 德国电话公司的德国电话公司的KonraadKonraad ZuseZuse以及其他一些人都使用真空以及其他一些人都使用真空管成功地建造了运算机器。管成功地建造了运算机器。 没有程序设计语言没有程序设计语言(甚至没有汇编),更(甚至没有汇编),更谈不上操作系统。谈不上操作系统。 程序员提前预约一段程序员提前预约一段时间时间, ,然后到机房将他的然

6、后到机房将他的插件板插到计算机里。插件板插到计算机里。 期盼着在接下来的时期盼着在接下来的时间中几万个真空管不会间中几万个真空管不会烧断从而可以计算自己烧断从而可以计算自己的题目。的题目。ENIACENIAC计算机计算机运算速度:运算速度:10001000次次/ /每秒每秒, , 数万个真空管数万个真空管, , 占地占地100100平方米平方米工作方式:工作方式:用户:用户既是程序员,又是操作员;用户是计算机专业人用户:用户既是程序员,又是操作员;用户是计算机专业人员;员;编程语言:机器语言;编程语言:机器语言;输入输出:纸带或卡片;输入输出:纸带或卡片;工作特点:工作特点:1)用户独占全机:

7、不出现资源被其他用户占用的现象,但资用户独占全机:不出现资源被其他用户占用的现象,但资源利用率低;源利用率低;2)CPU等待用户:计算前,手工装入纸带或卡片;计算完成等待用户:计算前,手工装入纸带或卡片;计算完成后,手工卸取纸带或卡片;后,手工卸取纸带或卡片;CPU利用率低;利用率低;主要矛盾:主要矛盾:1)计算机处理能力的提高,手工操作的低效率(造成浪费);计算机处理能力的提高,手工操作的低效率(造成浪费);2)用户独占全机的所有资源;用户独占全机的所有资源;提高效率的途径提高效率的途径专门的操作员,批处理专门的操作员,批处理1.2.3单道批处理系统单道批处理系统(simplebatchpr

8、ocessing)时间时间50年代末年代末60年代中(晶体管):利用磁带把若干个作业年代中(晶体管):利用磁带把若干个作业分类编成作业执行序列,每个批作业由一个专门的监督分类编成作业执行序列,每个批作业由一个专门的监督程序(程序(Monitor)自动依次处理。可使用汇编语言开发。自动依次处理。可使用汇编语言开发。批处理中的作业的组成:批处理中的作业的组成:l包括用户程序、数据和作业说明书(作业控制语言)包括用户程序、数据和作业说明书(作业控制语言)批处理方式批处理方式(1)(1) 联机批处理联机批处理 问题:输入输出时,问题:输入输出时,CPU处于等待状态。处于等待状态。 早期的联机批处理的硬

9、件控制方式是:作业的输入、计算早期的联机批处理的硬件控制方式是:作业的输入、计算和输出都是在和输出都是在CPUCPU直接控制下进行的。直接控制下进行的。模型:模型:早期联机批处理早期联机批处理应用带应用带系统带系统带主机主机卡片输入卡片输入机机打印机打印机(2)2)脱机批处理(缓冲技术的一种)脱机批处理(缓冲技术的一种) 增加卫星机完成输入增加卫星机完成输入/ /输出功能。主机与卫星输出功能。主机与卫星机可并行工作。机可并行工作。 系统带系统带应用带应用带输出带输出带输入带输入带卫卫星星机机打印机打印机主机主机卡片输入机卡片输入机1.2.4多道批处理系统多道批处理系统时间:时间:6060年代中

10、年代中 70 70年代中(集成电路)年代中(集成电路) 60 60年代初期,计算机开始采用集成电路,多数厂商有几条年代初期,计算机开始采用集成电路,多数厂商有几条完全不同的生产线,生产不同的计算机。开发和维护完全不完全不同的生产线,生产不同的计算机。开发和维护完全不同的产品,对厂商来说是昂贵的。同的产品,对厂商来说是昂贵的。 另外,新用户,在开始时只需要一台小计算机,随着时间另外,新用户,在开始时只需要一台小计算机,随着时间的推移,业务量的增加,到后来可能需要一台大的计算机,的推移,业务量的增加,到后来可能需要一台大的计算机,而且希望能在新计算机上执行原有的程序。这样,厂家和用而且希望能在新计

11、算机上执行原有的程序。这样,厂家和用户都需要软件在不同型号的计算机之间兼容。户都需要软件在不同型号的计算机之间兼容。目的:目的: 提高资源的利用率。提高资源的利用率。特点:特点:多道:内存中同时存放几个作业(用户程序);多道:内存中同时存放几个作业(用户程序);宏观上并行运行:都处于运行状态,但都未运行完;宏观上并行运行:都处于运行状态,但都未运行完;微观上串行运行:各作业交替使用微观上串行运行:各作业交替使用CPU;tjopjop1 1jopjop2 2jopjop3 3调度程序调度程序jopjop1 1打印打印jopjop1 1再次运行再次运行jopjop2 2读数据读数据使用使用cpuc

12、pu使用使用I/OI/O优点:优点:资源利用率高:资源利用率高:CPU和内存利用率较高;作业吞吐量大:和内存利用率较高;作业吞吐量大:单位时间内完成的工作总量大;单位时间内完成的工作总量大;缺点:缺点:用户交互性差用户交互性差,不利于调试和修改;不利于调试和修改; 由于所有的计算机都由于所有的计算机都有相同的体系结构和指令有相同的体系结构和指令集在理论上,为一型号编集在理论上,为一型号编写的程序可以在其它型号写的程序可以在其它型号机器上运行。机器上运行。IBMIBM试图一试图一次性地解决上述问题次性地解决上述问题代表机器:代表机器: 1964 1964 年年IBM IBM 宣布推宣布推Syst

13、em/360System/360计算机系统,为第一个采计算机系统,为第一个采用小规模集成电路的主流机型。用小规模集成电路的主流机型。IBM System/360IBM System/360的若干问题:的若干问题: IBMIBM无法写出同时满足互冲突需要的操作系统,其实别无法写出同时满足互冲突需要的操作系统,其实别人也一样不能完成这项工作任务。人也一样不能完成这项工作任务。 IBM OS/360IBM OS/360文件系统中有类型字段,定义文件的类型,文件系统中有类型字段,定义文件的类型,有定长、不定长记录、块状和非块状文件,用户对于输出文有定长、不定长记录、块状和非块状文件,用户对于输出文件的

14、大小,只有通过猜测。件的大小,只有通过猜测。 存储管理有基地址寄存器寻址方式,程序也可以访问存储管理有基地址寄存器寻址方式,程序也可以访问和修改基地址寄存器,但是和修改基地址寄存器,但是CPUCPU生成的却是绝对地址,虽然不生成的却是绝对地址,虽然不用进行动态再分配,但程序却被钉死在调入内存时的物理地用进行动态再分配,但程序却被钉死在调入内存时的物理地址上。址上。IBM System/360, IBM System/360, 庞大的软件怪兽庞大的软件怪兽 数千名程序员写了数百万行汇编语言代码,系统自身数千名程序员写了数百万行汇编语言代码,系统自身占据了大量存储空间和一半的占据了大量存储空间和一

15、半的CPUCPU时间。时间。 数百万行汇编代码中有成千上万处错误数百万行汇编代码中有成千上万处错误 IBMIBM不断发行新的版本试图更正这些错误,每个新版本不断发行新的版本试图更正这些错误,每个新版本在更正老错误的同时又引入新错误。在更正老错误的同时又引入新错误。 随着时间的流逝,错误的数量大致保持不变随着时间的流逝,错误的数量大致保持不变1.2.5分时系统分时系统时间:时间:7070年代中期至今年代中期至今含义:含义: 多个用户分享使用同一台计算机。每个用户给一定的时多个用户分享使用同一台计算机。每个用户给一定的时间运行,然后切换到另一个用户,一个轮转周期在宏观上间运行,然后切换到另一个用户

16、,一个轮转周期在宏观上相当短,用户感觉不到。相当短,用户感觉不到。主机主机终端终端占用终端与系统用户交互的作占用终端与系统用户交互的作业业前台作业前台作业系统控制台系统控制台不占用终端的用户(作业)不占用终端的用户(作业)后台作业后台作业特点特点: :(1)(1)人机交互性好。在调试和运行程序时由用户自己操人机交互性好。在调试和运行程序时由用户自己操作。作。(2)(2)共享主机:多个用户同时使用。共享主机:多个用户同时使用。(3)(3) 用户独立性:对每个用户而言逻辑上独占主机。用户独立性:对每个用户而言逻辑上独占主机。 目前许多操作系统都具有分时处理的功能,在分时目前许多操作系统都具有分时处

17、理的功能,在分时系统的基础上,操作系统的发展开始分化,如实时系统、系统的基础上,操作系统的发展开始分化,如实时系统、通用系统、个人系统等。通用系统、个人系统等。 1.2.6实时系统实时系统(real-timesystem)用于工业过程控制、军事实时控制、金融等领域,用于工业过程控制、军事实时控制、金融等领域,包括实时控制、实时信息处理。包括实时控制、实时信息处理。要求:在一定范围之内,响应时间短;要求:在一定范围之内,响应时间短;系统可靠性高系统可靠性高1.3操作系统的特征和服务操作系统的特征和服务1.3.1操作系统的特征操作系统的特征并发并发( (concurrency)concurrenc

18、y)多个事件在同一时间段内发生。多个事件在同一时间段内发生。操作系统是一个并发操作系统是一个并发系统,各进程间的并发,系统程序与应用程序间的并系统,各进程间的并发,系统程序与应用程序间的并发。操作系统要完成这些并发过程的管理。发。操作系统要完成这些并发过程的管理。并行并行( (parallel)parallel)是指在同一时刻发生是指在同一时刻发生。在多道程序处理时,宏观上并发,。在多道程序处理时,宏观上并发,微观上交替执行(在单处理器情况下)。微观上交替执行(在单处理器情况下)。 程序的静态实体是可执行文件,而动态实体是进程序的静态实体是可执行文件,而动态实体是进程(或称作任务),并发指的是

19、进程。程(或称作任务),并发指的是进程。共享共享( (sharing)sharing)l多个进程共享有限的计算机系统资源。操作系统要多个进程共享有限的计算机系统资源。操作系统要对系统资源进行合理分配和使用。资源在一个时间对系统资源进行合理分配和使用。资源在一个时间段内交替被多个进程所用。段内交替被多个进程所用。l互斥共享(如音频设备):资源分配后到释放前,互斥共享(如音频设备):资源分配后到释放前,不能被其它进程所用。不能被其它进程所用。l同时访问(如可重入代码,磁盘文件)同时访问(如可重入代码,磁盘文件)虚拟虚拟( (virtual)virtual)l一个物理实体映射为若干个对应的逻辑实体分

20、时一个物理实体映射为若干个对应的逻辑实体分时或分空间。虚拟是操作系统管理系统资源的重要手段,或分空间。虚拟是操作系统管理系统资源的重要手段,可提高资源利用率。可提高资源利用率。lCPUCPU每个用户(进程)的每个用户(进程)的“虚处理机虚处理机”l存储器每个进程都占有的地址空间(指令数据存储器每个进程都占有的地址空间(指令数据堆栈)堆栈)l显示设备多窗口或虚拟终端显示设备多窗口或虚拟终端( (virtual terminal)virtual terminal)异步性异步性( (asynchronismasynchronism) )l也称不确定性,指进程的执行顺序和执行时间的不也称不确定性,指进

21、程的执行顺序和执行时间的不确定性;确定性;进程的运行速度不可预知:分时系统中,多个进进程的运行速度不可预知:分时系统中,多个进程并发执行,程并发执行,“时走时停时走时停”,不可预知每个进程,不可预知每个进程推进的快慢推进的快慢判据:无论快慢,应该结果相同通过进程互判据:无论快慢,应该结果相同通过进程互斥和同步手段来保证难以重现系统在某个时刻的斥和同步手段来保证难以重现系统在某个时刻的状态(包括重现运行中的错误)状态(包括重现运行中的错误)性能保证:实时系统与分时系统相似,但通过资性能保证:实时系统与分时系统相似,但通过资源预留以保证性能源预留以保证性能 1.3.2操作系统的服务操作系统的服务(

22、1)服务类型)服务类型l程序执行和终止(包括分配和回收资源)程序执行和终止(包括分配和回收资源)lI/O操作操作l文件系统操作文件系统操作l通信:本机内,计算机之间(通常通信服务的使用通信:本机内,计算机之间(通常通信服务的使用者为进程,而不是笼统说者为进程,而不是笼统说“主机主机”)l配置管理:硬件、配置管理:硬件、OS本身、其它软件本身、其它软件l差错检测差错检测(2 2)服务提供方式:系统命令和系统调用)服务提供方式:系统命令和系统调用1.4.1存储管理存储管理管理目标:提高利用率、方便用户使用、提供足够的存管理目标:提高利用率、方便用户使用、提供足够的存储空间、方便进程并发运行。储空间

23、、方便进程并发运行。l(1)(1)存储分配与回收存储分配与回收l(2)(2)存储保护存储保护 l(3)(3)地址映射地址映射 l(4)(4)内存扩充(覆盖、交换和虚拟存储内存扩充(覆盖、交换和虚拟存储) )1.4.2处理机管理处理机管理完成处理机资源的分配调度等功能。完成处理机资源的分配调度等功能。l(1)(1)进程控制进程控制 l(2)(2)进程同步进程同步 l(3)(3)进程通信进程通信 l(4)(4)调度调度1.4操作系统的功能操作系统的功能1.4.3设备管理设备管理目标:方便设备使用、提高目标:方便设备使用、提高CPUCPU与与I/OI/O设备利用率;设备利用率;l(1)(1)设备操作

24、设备操作 l(2)(2)设备独立性设备独立性l(3)(3)设备分配与回收设备分配与回收1.4.4信息管理信息管理解决软件资源的存储、共享、保密和保护。解决软件资源的存储、共享、保密和保护。l(1)(1)文件存储空间管理文件存储空间管理l(2)(2)目录管理目录管理 l(3)(3)文件的读写管理和存取控制文件的读写管理和存取控制 l(4)(4)软件管理软件管理1.4.5用户接口用户接口 目标:提供一个友好的用户访问操作系统的接口。目标:提供一个友好的用户访问操作系统的接口。 (1) (1)系统命令:供用户用于组织和控制自己的作业运系统命令:供用户用于组织和控制自己的作业运行。命令行、菜单式或行。

25、命令行、菜单式或GUI“GUI“联机联机”;命令脚本;命令脚本“脱机脱机” (2) (2)编程接口:供用户程序和系统程序调用操作系统编程接口:供用户程序和系统程序调用操作系统功能。系统调用和高级语言库函数;(系统调用)功能。系统调用和高级语言库函数;(系统调用)1.5操作系统分类操作系统分类1 1、微机、微机OSOS 单用户单任务单用户单任务MS_DOS单用户多任务单用户多任务Window多用户多任务多用户多任务UNIX版本版本2、多处理机操作系统多处理机操作系统(Multi-processorOperatingSystem)3、网络操作系统网络操作系统(NOS,NetworkOperatin

26、gSystem)4 4、分布式操作系统、分布式操作系统(DistributedOperatingSystem)5、非、非Microsoft系列操作系统系列操作系统1)OS/2OS/2最初是微软与最初是微软与IBM共同开发的共同开发的,但后来微软推出但后来微软推出Windows3.x,并获得不错的市场反应并获得不错的市场反应,终到导致于微软与终到导致于微软与IBM分分道扬镳道扬镳,专心致力于专心致力于Windows系列操作系统的研发。而此时由系列操作系统的研发。而此时由于于OS/2的系统需求偏高的系统需求偏高,因此其市场接受程度偏低。直到因此其市场接受程度偏低。直到IBM在在1992年推出年推出

27、OS/22.0版版,以及稍后的以及稍后的OS/2Warp3.0,才真正改才真正改变了大家对变了大家对OS/2的观感。而的观感。而IBM在在1996年年,将将OS/2Warp3.0与与LANServer5.0整合整合,推出推出OS/2WarpServer4.0版。至此版。至此,OS/2Warp与微软的与微软的WindowsNT一样一样,已经分成已经分成Client和和Server两种两种版本。版本。OS/2OS/2目前的版本是目前的版本是 4.0 4.0 WarpWarp系列系列(96(96年)年), ,其特点如下其特点如下: : 真正、完全的多用户操作系统真正、完全的多用户操作系统, ,其效率

28、很高其效率很高; ; 寻址能力高达寻址能力高达6464TB,TB,使每个程序都可占用使每个程序都可占用512512MBMB的虚的虚拟内存拟内存; ; 对象导向式操作环境对象导向式操作环境, ,不同程序可通过不同程序可通过SOM(System SOM(System Object Model)Object Model)共享及交换对象共享及交换对象; ; 支持支持JavaJava和语音识别和语音识别, ,这是目前这是目前OS/2OS/2领先业界的先进领先业界的先进技术技术; ; 内置内置DOSDOS及及WindowsWindows模拟器模拟器, ,以运行传统的以运行传统的DOSDOS或或Window

29、sWindows应用程序应用程序; ; 完善的多媒体完善的多媒体MMPM/2(Multimedia Presentation MMPM/2(Multimedia Presentation Manager/2)Manager/2)和和3 3D D图形支持图形支持; ; 高效率的文件系统高效率的文件系统( (HPFS),HPFS),文件名可长达文件名可长达255255个字符。个字符。 参考网站参考网站: :http:/http:/ /OS/2问题:问题:1.合作矛盾合作矛盾Window3.1后后MS与与IBM分道扬镳分道扬镳MS负责负责OS/23.0(WindowNT)IBM负责负责OS/22.0

30、2.IBM进入进入PC领域后,仍然用大型机市场的思考模式领域后,仍然用大型机市场的思考模式,产品产品价格价格贵,机器配置要求高,缺乏配套软件,非计算机人员不愿购买。贵,机器配置要求高,缺乏配套软件,非计算机人员不愿购买。2002年年12月月IBM宣布,在宣布,在2003年年3月月12日正式停止日正式停止OS/2操作系统的支持与销售,其服务还将持续到操作系统的支持与销售,其服务还将持续到2004年年12月月31日。日。2)2)Mac OSMac OS 自自19841984年年MacintoshMacintosh上市以来上市以来, ,Mac OSMac OS几乎是大家公认唯一在几乎是大家公认唯一在

31、MacintoshMacintosh上运行的上运行的OS;OS;不过除不过除Mac OSMac OS之外之外, ,BeOSBeOS与与LinuxLinux在在MacintoshMacintosh上也都有不错的表现。上也都有不错的表现。 User FriendlyUser Friendly一直是电脑用户所企盼的。一直是电脑用户所企盼的。Mac OSMac OS在用户在用户界面上跨了一大步界面上跨了一大步, ,图形与鼠标导向的使用界面确实让人与电脑图形与鼠标导向的使用界面确实让人与电脑之间的交互达到了所谓的之间的交互达到了所谓的 User FriendlyUser Friendly。相比之下相比之

32、下, ,直到直到19881988年年OS/2OS/2的的Presentation ManagerPresentation Manager出现出现, ,IBMIBM才推出具有相同能力的才推出具有相同能力的图形用户界面图形用户界面( (GUI)GUI)解决方案解决方案; ;而微软直到而微软直到19901990年年Windows 3.xWindows 3.x问问世之后世之后, ,才有图形用户界面。才有图形用户界面。 MacMac硬件结构的封闭性迫使其下游厂商不得不屈服于苹果公硬件结构的封闭性迫使其下游厂商不得不屈服于苹果公司司, ,但是也正是该特性使但是也正是该特性使MacOSMacOS本身和本身和

33、MacMac硬件具有高度的集成性。硬件具有高度的集成性。它通过资源管理器、字型管理器、事件管理器、窗口管理器等一它通过资源管理器、字型管理器、事件管理器、窗口管理器等一系列管理器系列管理器, ,让整套操作系统相当人性化与合理化让整套操作系统相当人性化与合理化, ,用户在使用中用户在使用中根本感觉不到根本感觉不到Mac OSMac OS的存在。的存在。 MacOS8.5是是Macintosh系统史上的大翻新。系统核心主要针系统史上的大翻新。系统核心主要针对对PowerPC进行了改写进行了改写,以提高以提高MacOS的运行效率的运行效率;而重新改写而重新改写的的Macintosh系统绘图核心系统绘

34、图核心QuickDraw,除了将绘图显示速除了将绘图显示速度提高度提高10%左右左右,还提供屏幕字体的柔边效果。新的还提供屏幕字体的柔边效果。新的MacOS8.5具有以下特点具有以下特点:Sherlock搜索引擎提供强大的搜索界面搜索引擎提供强大的搜索界面,甚至可将用户面前甚至可将用户面前的电脑变成一个功能强大的网站搜索引擎的电脑变成一个功能强大的网站搜索引擎;改写了改写了AppleScript,系统组件也提供系统组件也提供AppleScript描述功能描述功能,这使得这使得AppleScript在在MacOS8.5中能发挥更多更广的用途中能发挥更多更广的用途;提高了网络文件传输速度提高了网络

35、文件传输速度,与与WindowsNT/98相比相比,MacOS8.5的网络传输速度甚至更快的网络传输速度甚至更快;内置多国语言网络浏览功能。内置多国语言网络浏览功能。参考网站参考网站:http:/ 2005 2005年年4 4月月2929日出苹果最新日出苹果最新MacMac操作系统操作系统TigerTiger于出货,于出货,129129美元美元3)UNIX由于开放性、发展概念及商业利益等因素由于开放性、发展概念及商业利益等因素,Unix现已呈现出现已呈现出百百家争鸣家争鸣的盛况。不过总体来说的盛况。不过总体来说,Unix可分成可分成SystemV和和BSD两大两大流派。这两大派别虽然都是流派。

36、这两大派别虽然都是Unix,但在系统架构、命令操作以及但在系统架构、命令操作以及管理方式上都有所不同。到了管理方式上都有所不同。到了1988年年,SystemV融入融入BSD与与SunOS的主要特性的主要特性,演变成为演变成为SVR4(SystemVRelease4)。因为因为Unix当初是当初是X/Open所使用的注册商标所使用的注册商标,基于版权考虑基于版权考虑,不可不可以再使用以再使用Unix这个名字作为商业的操作系统名字。这个名字作为商业的操作系统名字。有影响的的有影响的的UNIX系统:系统:IBMRS/6000上的上的AIX(SystemV)SGI的的IRIX(SVR4)Sun的的S

37、unOS(4.3BSD或或SVR4)HP的的HP-UX(SystemV)SCO的的SCOUnix(SVR3.2)发展历史:发展历史:为了解决批处理方式缺乏效率与使用不便,为了解决批处理方式缺乏效率与使用不便,Dartmouth大大学和麻省理工学院发明了分时系统,学和麻省理工学院发明了分时系统,Dartmouth大学的分时大学的分时系统只能运行系统只能运行BASIC,麻省理工学院的麻省理工学院的CTSS则具有通用性,则具有通用性,在科研领域取得了巨大的成功。在科研领域取得了巨大的成功。 1965 1965年年麻省理工学院麻省理工学院、贝尔实验室和通用电气公司决定贝尔实验室和通用电气公司决定开发一

38、种开发一种“公用计算服务系统公用计算服务系统”,”,希望能够同时支持整个波希望能够同时支持整个波士顿所有的分时用户。该系统称作士顿所有的分时用户。该系统称作MULTICS(MULTICS(MULTMULTiplexediplexed I Information and nformation and C Computongomputong S Service)ervice) MULTICSMULTICS设计目标设计目标是:便利的远程终端使用,大量终端通是:便利的远程终端使用,大量终端通过电话线接入计算机主机。过电话线接入计算机主机。 高可靠的大型文件系统;大容量的用户信息共享;存储和构高可靠的大

39、型文件系统;大容量的用户信息共享;存储和构造层次化信息结构的能力。造层次化信息结构的能力。 MULTICSMULTICS研制难度超出了所有人预料,长期研制工作达不研制难度超出了所有人预料,长期研制工作达不到预期目标,到预期目标,19691969年年4 4月贝尔实验室退出,其后通用电气公司月贝尔实验室退出,其后通用电气公司也退出了。也退出了。 但最终,经过多年的努力,但最终,经过多年的努力,MULTICSMULTICS成功地应用。成功地应用。 运行运行MULTICSMULTICS的计算机系统在九十年代中期陆续被关闭。的计算机系统在九十年代中期陆续被关闭。MULTICSMULTICS引入了许多现代

40、操作系统领域概念雏形,对随后操作引入了许多现代操作系统领域概念雏形,对随后操作系统特别是系统特别是UNIXUNIX的成功有着巨大的影响。的成功有着巨大的影响。PDP-11的的UNIX 1969 1969年,在贝尔退出年,在贝尔退出MULTICSMULTICS研制项目后,研制项目后,Ken ThompsonKen Thompson和和Dennis M. Ritchie Dennis M. Ritchie 想申请经费买计算机从事操作系统研究,想申请经费买计算机从事操作系统研究,但多次申请得不到批准,项目无着落,但多次申请得不到批准,项目无着落, ThompsonThompson在一台无人用在一台无

41、人用的的PDP-7PDP-7上,重新摆弄原先在上,重新摆弄原先在MULTICSMULTICS项目上设计的项目上设计的“空间旅行空间旅行”游戏。其工作吸引了游戏。其工作吸引了Dennis M. Ritchie Dennis M. Ritchie ,为了使游戏能够为了使游戏能够在在PDP-7PDP-7上顺利运行,他们陆续开发了浮点运算软件包、显示驱上顺利运行,他们陆续开发了浮点运算软件包、显示驱动软件,设计了文件系统、实用程序、动软件,设计了文件系统、实用程序、shell shell 和汇编程序。和汇编程序。 因此他们因此他们重写了一个简化的重写了一个简化的MULTICSMULTICS并加进了自己

42、的一些思并加进了自己的一些思想(用汇编语言作为编程工具),被想(用汇编语言作为编程工具),被Brian Brian KerighanKerighan开玩笑的开玩笑的称为称为UNICS(UNICS(UNUNI Iplexedplexed I Information and nformation and C Computer omputer S Service)ervice)DennisRitchie及所在部门的加入,完成两件事情及所在部门的加入,完成两件事情从从PDP-7移植到移植到PDP-11/20,后来又移植到后来又移植到PDP-11/45,PDP-11/70Thompson决定用自己设计的

43、语言决定用自己设计的语言“B”来重新写来重新写UNIX其后,其后,Ritchie对对B进行了改进,取名为进行了改进,取名为C,接着又写了接着又写了C的编的编译器译器74年,年,Thompson和和Richie发表了一篇关于发表了一篇关于UNIX的论文。的论文。84年被授予图灵奖。年被授予图灵奖。可移植的可移植的UNIXUNIX移植到非移植到非PDP11的第一个机器为的第一个机器为Interdata8/32小型机小型机上上,其后,又移植到了其后,又移植到了VAX和其它一些机器上。和其它一些机器上。 贝尔实验室的贝尔实验室的Steve JohnsonSteve Johnson设计并实现了可移植的设

44、计并实现了可移植的C C语语言编译器。只要修改少量的代码,它就能为相应的机器产生目言编译器。只要修改少量的代码,它就能为相应的机器产生目标代码。从此以后,几乎所有的标代码。从此以后,几乎所有的C C编译器都是基于该可移植的编译器都是基于该可移植的编译器。编译器。8585年推出年推出System V System V 。伯克利的伯克利的UNIX加州大学的伯克利分校在美国国防高级研究规划局的资助加州大学的伯克利分校在美国国防高级研究规划局的资助下下,为为PDP11设计并发布了一个改进的版本。取名为设计并发布了一个改进的版本。取名为1BSD(FirstBerkeleysoftwareDistribu

45、tion),很快有了很快有了2BSD。定型的是定型的是4BSD(4.1BSD4.2BSD,4.3BSD和和4.4BSD)UNIX的标准化的标准化80年代后期两个互不相同、互不兼容的年代后期两个互不相同、互不兼容的UNIX版本版本4.3BSD和和SystemVRelease3都在广泛使用,另外,每个都在广泛使用,另外,每个UNIX提供商提供商事实上又在原有的事实上又在原有的UNIX系统的基础上加入了自己的非标准东系统的基础上加入了自己的非标准东西。西。目前这些系统还都朝着各自的方向发展着,混乱依然存在。目前这些系统还都朝着各自的方向发展着,混乱依然存在。一般而言一般而言,Unix操作系统具有下列

46、特点操作系统具有下列特点:灵活性灵活性,主要原因是主要原因是Unix大部分以大部分以C语言写成。事实上语言写成。事实上,也正也正是由于发展是由于发展Unix的需要的需要,才有才有C语言的问世语言的问世;多用户、多任务多用户、多任务;树状文件结构树状文件结构;文件与设备独立文件与设备独立,即输出、输入设备皆被视为文件即输出、输入设备皆被视为文件;完整的软件开发工具完整的软件开发工具,便于开发软件系统和应用程序便于开发软件系统和应用程序;完整且强大的网络能力。完整且强大的网络能力。长久以来长久以来,初学者最头疼的是初学者最头疼的是Unix的使用界面的使用界面,但随着但随着X-Window的发展的发

47、展,Unix用户也可以享受功能强大的图形用户界面。用户也可以享受功能强大的图形用户界面。同时同时,不同的不同的X-Window管理界面管理界面(如如FVWM、AfterStep、CDE、MWM)更让您的更让您的X-Window有多种选择有多种选择,也使您的电脑更具个也使您的电脑更具个人风格。此外人风格。此外,现在已经有许多应用软件可在现在已经有许多应用软件可在Unix下运行。下运行。参考网站参考网站:http:/www.PLiG.org/xwinman/4)4)SolarisSolaris Solaris Solaris是是SunSun公司开发的以公司开发的以UnixUnix为基础的使用环境。

48、完为基础的使用环境。完整的整的SolarisSolaris包含包含UnixUnix操作系统、源自操作系统、源自X11X11的窗口系统以及的窗口系统以及ONCONC网络产品与服务等。简单来说网络产品与服务等。简单来说, ,Solaris = SunOS + Open Solaris = SunOS + Open Windows(Windows(或或CDE),CDE),不过不过SunOS 4.1.xSunOS 4.1.x是根据是根据4.2/4.3 4.2/4.3 BSDBSD开发开发的的, ,而而SolarisSolaris则是根据则是根据SVR4SVR4的的SunOS 5.xSunOS 5.x开

49、发的。开发的。 SolarisSolaris操作系统具有许多特点操作系统具有许多特点, ,如如: : 支持多种硬件平台支持多种硬件平台, ,上至价值数百万的高端服务器上至价值数百万的高端服务器, ,下至下至Intel x86Intel x86个人电脑。如此完整的操作系统产品个人电脑。如此完整的操作系统产品, ,可以轻可以轻易地进行硬件平台的升级易地进行硬件平台的升级; ; 有数量庞大的应用软件支持有数量庞大的应用软件支持, ,并提供完整的应用系统并提供完整的应用系统开发环境开发环境; ; Wabi(WindowsWabi(Windows Application Binary Interface

50、) Application Binary Interface)使用户在使用户在SolarisSolaris上可以执行大部分上可以执行大部分Microsoft Windows Microsoft Windows 的应用程序的应用程序; ; 有功能强大的有功能强大的XGL(X-WindowXGL(X-Window版的版的 OpenGL)OpenGL)及及XILXIL图像处图像处理程序库理程序库; ; 提供提供C2C2级系统安全防护。级系统安全防护。( (虽然虽然NTNT也号称是也号称是C2C2的系统的系统, ,但但仅限于单机状态下。仅限于单机状态下。) ) 参考网站参考网站: :http:/htt

51、p:/ /新动态:新动态:04年年SunMicrosystems当地时间当地时间8月月3日披露了新一代日披露了新一代OS“Solaris10”(开发代号:开发代号:ProjectJanus)的新功能。的新功能。11月宣布完成。月宣布完成。在在Solaris10中,中,Linux二进制程序不必修改即可直接运二进制程序不必修改即可直接运行。这样,行。这样,“在多种在多种OS环境下,就可以在不降低性能和易环境下,就可以在不降低性能和易管理性的同时削减开发和管理成本管理性的同时削减开发和管理成本”此外,此外,Solaris10添加了添加了600多种新功能。多种新功能。其它主要特点:其它主要特点:实时问

52、题分析及还原功能实时问题分析及还原功能“DynamicTracing”在线查测及自动修复功能在线查测及自动修复功能“PredictiveSelfHealing”“具有相当于现有文件系统具有相当于现有文件系统160亿倍的容量亿倍的容量”(Sun)的自我的自我管理文件系统技术管理文件系统技术“DynamicFileSystem”5 5) )MINIXMINIX 一个用于操作系统教学的与一个用于操作系统教学的与UNIXUNIX兼容的操作系统,由兼容的操作系统,由坦尼坦尼鲍姆鲍姆完成完成。目的:解决操作系统课程只讲理论缺乏实例的情况,(目的:解决操作系统课程只讲理论缺乏实例的情况,(UNIXUNIX太

53、太大了,已超出一个人能全面理解的范畴)大了,已超出一个人能全面理解的范畴) MINIXMINIX发布不久,就出现了一个面向它的新闻组,每天都有发布不久,就出现了一个面向它的新闻组,每天都有数百人提供建议、思想甚至代码。而作者几年来坚持不采纳这数百人提供建议、思想甚至代码。而作者几年来坚持不采纳这些建议,以保持些建议,以保持MINIXMINIX的特点。人们最终意识到作者的立场,的特点。人们最终意识到作者的立场,于是一个芬兰学生决定写一个面向实用而不是教学的于是一个芬兰学生决定写一个面向实用而不是教学的MINIXMINIX系系统统LINUXLINUX。参考网站参考网站: : http:/http:

54、/minixl.hampshire.edu/asw/6)Linux历史:历史:Linux是是1991年由芬兰大学生年由芬兰大学生Linus编写的一套与编写的一套与Unix相容却相容却又免费的又免费的Unixclone,后经后经Internet的传播的传播,获得众多电脑玩家的响获得众多电脑玩家的响应和应和GNU基金会的支持基金会的支持,可以说是一套无国界的操作系统。可以说是一套无国界的操作系统。90年秋天,正在芬兰首都的赫尔辛基大学学习年秋天,正在芬兰首都的赫尔辛基大学学习UNIX课程的课程的Linus为了实习使用了为了实习使用了Minix,买了一台买了一台486微机,但很快发现许微机,但很快发

55、现许多功能很难满足自己的要求,于是自己开始动手编写一些代码,多功能很难满足自己的要求,于是自己开始动手编写一些代码,随后将这些代码结合起来,到次年的随后将这些代码结合起来,到次年的10月月5日,发布了第一个日,发布了第一个“正式正式”版本,版本,0.02版。当时并没有在版。当时并没有在Minix的新闻组中公布它,的新闻组中公布它,而只是在赫尔辛基大学的一台而只是在赫尔辛基大学的一台FTP服务器上发了一则消息,称用服务器上发了一则消息,称用户可以下载户可以下载Linux的公开版本。的公开版本。Linux是是Linus的笔名,当时起的名字为的笔名,当时起的名字为Freax(free+freak(怪

56、胎)怪胎)+x),FTP管理员认为这是管理员认为这是Linus的的Minix,就建了一个就建了一个Linux目录放源代码。目录放源代码。94年年3月月14日,第一个正式版本日,第一个正式版本1.0版发布。版发布。Linux操作系统具有下列特点操作系统具有下列特点:Linux是免费的软件是免费的软件,您可以自由安装及任意修改软件的您可以自由安装及任意修改软件的原代码原代码;Linux系统与系统与SystemV及及BSDUnix兼容兼容,并且符合并且符合POSIX1.0规格规格;拥有数量庞大的拥有数量庞大的GNU软件以及世界各地软件以及世界各地Linux高手所开高手所开发的软件发的软件;支持支持I

57、ntelx86、680x0、SPARC、Alpha及及MIPS等平台等平台,并广泛支持各种周边设备。并广泛支持各种周边设备。不论在哪里不论在哪里,只要有计算机的地方就有人为只要有计算机的地方就有人为Linux写程序写程序,这这表示这套系统进步很快表示这套系统进步很快,但同时这也是它最大的缺点但同时这也是它最大的缺点:系统缺系统缺乏严密性。由于它从系统核心到应用程序几乎都是集各家之乏严密性。由于它从系统核心到应用程序几乎都是集各家之大成大成,到底里面藏有多少问题到底里面藏有多少问题,恐怕没有人可以给出一个答案。恐怕没有人可以给出一个答案。目前在目前在Linux世界里世界里,已经有不少公司或组织有

58、计划地收集已经有不少公司或组织有计划地收集有关有关Linux的软件的软件,组合成一套完整的组合成一套完整的Linux发行版本上市发行版本上市,比比较著名的有较著名的有Slackware、RedHat、Caldera及及GNU自己的自己的Debian。Linux的发展经历了三个阶段:的发展经历了三个阶段:(1)99-00年:年:快速发展阶段,十天半月就可能有一个新的发快速发展阶段,十天半月就可能有一个新的发行版本行版本“出炉出炉”,在中国,八九个人就能成立一家,在中国,八九个人就能成立一家Linux公司。公司。(2)00-01:随着互连网泡沫的破灭,随着互连网泡沫的破灭,Linux遭受了重创,虽

59、然遭受了重创,虽然全球涌现了数百个全球涌现了数百个Linux发行版本,但在它上面的应用软件很少,发行版本,但在它上面的应用软件很少,桌面用户很难找到合适的办公软件。对企业用户而言,桌面用户很难找到合适的办公软件。对企业用户而言,Linux的可靠性、稳定性、后续的技术支持等都不能让人放心,的可靠性、稳定性、后续的技术支持等都不能让人放心,“观观望望”是大多数企业用户当时的心态。对是大多数企业用户当时的心态。对Linux厂商来说,厂商来说,Linux特有的特有的“自由与开放自由与开放”使他们找不到赢利的模式。使他们找不到赢利的模式。(3)01起,起,IBM、Oracal,CA,Intel、AMD等

60、业界巨头纷纷宣等业界巨头纷纷宣布支持布支持Linux,IBM豪赌了豪赌了10亿美元,押宝亿美元,押宝Linux!支持支持Linux的数据库、中间件、应用方案纷纷的数据库、中间件、应用方案纷纷“粉墨登场粉墨登场”;Linux厂商厂商调整策略,重点移到提供应用解决方案上。巨头的支持,加上调整策略,重点移到提供应用解决方案上。巨头的支持,加上Linux的成熟,企业用户从质疑转向信任,的成熟,企业用户从质疑转向信任,Linux应用进入平稳应用进入平稳的发展期。的发展期。但但Linux厂商还没有走上赢利的阳关道,到目前为止,实现收厂商还没有走上赢利的阳关道,到目前为止,实现收支平衡并略有赢利的厂商还很少

61、,更多的厂商仍然在艰难前进。支平衡并略有赢利的厂商还很少,更多的厂商仍然在艰难前进。未来发展:未来发展:(1)Linux会演变成巨头们的会演变成巨头们的“囊中物囊中物”?(2)是否支持)是否支持LSBLSB是由是由DanQuinlan和他的和他的LSB小组发起的一个比较小组发起的一个比较公认的标准,目前得到多数公认的标准,目前得到多数Linux厂商的支持。目标是各厂商的支持。目标是各种不同的种不同的Linux发布版本能够在二进制上兼容。发布版本能够在二进制上兼容。(3)桌面端还是大型机上发展)桌面端还是大型机上发展参考网站参考网站:http:/www.linux.org/http:/ 2.2.

62、1 进程的定义与特征进程的定义与特征 进进程程这这个个概概念念是是为为了了描描述述系系统统中中各各并并发发活活动动而而引引入入的的。为为了了满满足足成成千千上上万万个个用用户户的的要要求求,现现代代操操作作系系统统正正是是围围绕绕进进程程这这个个概概念念建建造造的的。最最早早使使用用进进程程( (process)process)概概念念进进行行操操作作系系统统设设计计的的是是美美国国的的麻麻省省理理工工学学院院在在MULTICSMULTICS系系统统和和IBMIBM公公司司的的CTSS/360CTSS/360系系统统上上实实现现的的。只只是是IBM/360IBM/360使使用用了了另另一一个个

63、术术语语任任务务( (task)task),但但两两者者的的实实际际含含义义是是相相同的。同的。2.2 2.2 进程的描述进程的描述1. 进程的含义进程的含义一个具有一定独立功能的程序在一个数据集合上的一一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。次动态执行过程。2. 进程的特征进程的特征(1 1)动态性:创建产生,调度执行,撤销消亡。)动态性:创建产生,调度执行,撤销消亡。(2 2)并发性:多个进程同时存在于内存,宏观上同时)并发性:多个进程同时存在于内存,宏观上同时运行。运行。(3 3)独立性:独立运行的基本单位。)独立性:独立运行的基本单位。(4 4)异步性:各进程各自

64、独立的运行,以不可预知速)异步性:各进程各自独立的运行,以不可预知速度前进。度前进。(5 5)结构化:代码段,数据段和进程控制块组成。)结构化:代码段,数据段和进程控制块组成。3. 进程与程序的区别进程与程序的区别1)进程是动态的,程序是静态的:程序是有序代码的进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。集合;进程是程序的执行。2)进程是暂时的,程序的永久的:进程是一个状态变进程是暂时的,程序的永久的:进程是一个状态变化的过程,程序可长久保存。化的过程,程序可长久保存。3)进程与程序的组成不同:进程的组成包括程序、数进程与程序的组成不同:进程的组成包括程序、数据和进程控

65、制块(即进程状态信息)。据和进程控制块(即进程状态信息)。4)进程与程序的对应关系:通过多次执行,一个程序进程与程序的对应关系:通过多次执行,一个程序可对应多个进程。可对应多个进程。2.2.2 2.2.2 进程的基本状态进程的基本状态运行态运行态就绪态就绪态阻塞态阻塞态时间片用完时间片用完进程调度进程调度等待某个等待某个事件发生事件发生某个事件已经发生某个事件已经发生1、三个基本状态、三个基本状态就绪状态就绪状态:进程已获得除处理进程已获得除处理机外的所需资源,等待分配处机外的所需资源,等待分配处理机资源;只要分配到理机资源;只要分配到CPUCPU就可就可执行。在某一时刻,可能有若执行。在某一

66、时刻,可能有若干个进程处于该状态干个进程处于该状态2.2.2 2.2.2 进程的基本状态进程的基本状态运行态运行态就绪态就绪态阻塞态阻塞态时间片用完时间片用完进程调度进程调度等待某个等待某个事件发生事件发生某个事件已经发生某个事件已经发生1、三个基本状态、三个基本状态运行状态运行状态:占用处理机资源运占用处理机资源运行;处于此状态的进程的数目行;处于此状态的进程的数目小于等于小于等于CPUCPU的数目。的数目。2.2.2 2.2.2 进程的基本状态进程的基本状态运行态运行态就绪态就绪态阻塞态阻塞态时间片用完时间片用完进程调度进程调度等待某个等待某个事件发生事件发生某个事件已经发生某个事件已经发

67、生1、三个基本状态、三个基本状态阻塞态阻塞态:由于进程等待某种条由于进程等待某种条件(如件(如I/OI/O操作或进程同步),操作或进程同步),在条件满足之前无法继续执行。在条件满足之前无法继续执行。该事件发生前即使把处理机分该事件发生前即使把处理机分配给该进程,也无法运行。配给该进程,也无法运行。voidmain()inti;cini;couti;创建态创建态: :进程刚创建,但还不能进程刚创建,但还不能运行运行( (一种可能的原因是一种可能的原因是OSOS对并对并发进程数的限制发进程数的限制) );如:分配和;如:分配和建立建立PCBPCB表项(可能有数目限制)表项(可能有数目限制)、建立资

68、源表格(如打开文件、建立资源表格(如打开文件表)并分配资源,加载程序并表)并分配资源,加载程序并建立地址空间表。建立地址空间表。结束态结束态( (Exit)Exit):进程已结进程已结束运行,等待束运行,等待OSOS做善后工做善后工作。作。2、增加创建、与结束的状态、增加创建、与结束的状态进程调度进程调度时间片完时间片完事件完成事件完成等待事件等待事件进程完成进程完成fork()接纳接纳创建态创建态就绪态就绪态运行态运行态结束态结束态阻塞阻塞3 3、引入挂起状态、引入挂起状态静止静止就绪就绪挂起挂起激活激活挂起挂起静止静止阻塞阻塞释放释放挂起挂起目的:目的:(1)调整系统负荷)调整系统负荷(2

69、)用户程序调试)用户程序调试进程调度进程调度时间片完时间片完事件完成事件完成等待事件等待事件进程完成进程完成fork()接纳接纳创建态创建态就绪态就绪态运行态运行态结束态结束态阻塞阻塞2.2.42.2.4进程控制块进程控制块(PCB,processcontrolblock)1. 1. 作用作用l记录系统管理进程全部信息。记录系统管理进程全部信息。l一般常驻于内存,由一般常驻于内存,由OSOS维护。维护。每个进程都有唯一的一个每个进程都有唯一的一个PCBPCB。不能由应用程序自身的代码来直接访问。不能由应用程序自身的代码来直接访问。2. 包含信息包含信息 不同的操作系统差别很大,随系统复杂性而异

70、不同的操作系统差别很大,随系统复杂性而异。共性的有:共性的有:1)进程描述信息进程描述信息进程标识符进程标识符( (process IDprocess ID,内部标识符,具有唯一性,通常内部标识符,具有唯一性,通常是一个整数);是一个整数); 用户标识符用户标识符( (user ID)user ID); 进程组标识符进程组标识符( (process group)process group)2 2)在进程进行切换时的处理机及其相关现场。()在进程进行切换时的处理机及其相关现场。(CPUCPU,程序状态字,通用寄存器,栈指针)程序状态字,通用寄存器,栈指针)3 3)为保证进程再次运行的:进程调度信

71、息、控制信息)为保证进程再次运行的:进程调度信息、控制信息3、进程表的组织、进程表的组织以线性表的方式管理以线性表的方式管理1)顺序存储)顺序存储2)静态链表,具有相同状态的进程形成一个链)静态链表,具有相同状态的进程形成一个链3)索引表,建立若干个索引,如就绪索引,阻塞索引)索引表,建立若干个索引,如就绪索引,阻塞索引2.3 2.3 进程控制进程控制术语:核心态(系统态、管态、术语:核心态(系统态、管态、 特权态)和用户态(目态)特权态)和用户态(目态)(supervisor mode monitor mode system mode (supervisor mode monitor mod

72、e system mode Privileged mode user mode)Privileged mode user mode)核心态:核心态:可执行所有机器指令。可执行所有机器指令。OSOS运行在核心态,可以访问所有运行在核心态,可以访问所有资源。资源。用户态:用户态:用户进程运行在用户态。无法直接访问硬件资源,不可用户进程运行在用户态。无法直接访问硬件资源,不可直接访问受保护的直接访问受保护的OSOS代码,只可以访问代码,只可以访问OSOS指定的寄存器和存储区指定的寄存器和存储区域及有关资源。域及有关资源。 现代的计算机的程序状态字中都至少有一个位,其值为现代的计算机的程序状态字中都至

73、少有一个位,其值为0或或1。这样区分出两种状态。分别称为。这样区分出两种状态。分别称为核心态核心态和和用户态用户态。机器。机器的一部分指令只能在核心态下运行,这样的指令称为的一部分指令只能在核心态下运行,这样的指令称为特权指特权指令令。1)现代某些计算机的状态多于一位()现代某些计算机的状态多于一位(80386以后的芯片),以后的芯片),因此能提供更强的保护机制(如因此能提供更强的保护机制(如2位,形成四种方式,称为保位,形成四种方式,称为保护环,操作系统在护环,操作系统在0环,环,DB等在等在1环等)环等)2)用户进程在用户态运行,在需要操作系统为其服务时,将)用户进程在用户态运行,在需要操

74、作系统为其服务时,将转到转到OS,从用户态转到核心态,从用户态转到核心态;OS完成任务后回到用户进程,完成任务后回到用户进程,也就是用户态。也就是用户态。实现:实现:计算机提供一条陷阱指令,如在计算机提供一条陷阱指令,如在SUN公司的机器中为公司的机器中为trap指令,指令,指令格式样为:指令格式样为:指令码指令码参数参数1参数参数2其中,参数其中,参数1为本次系统调用的调用号,这由编译解决转换为本次系统调用的调用号,这由编译解决转换参数参数2为一个地址,给出了调用参数表的首地址为一个地址,给出了调用参数表的首地址trap码码102文件号文件号缓冲地址缓冲地址0字节数字节数在在trap指令执行

75、后,状态位自动从用户态转到核心态指令执行后,状态位自动从用户态转到核心态2.3.12.3.1操作系统内核操作系统内核 出于结构上的考虑,将出于结构上的考虑,将OSOS分为若干层次。分为若干层次。内核:程序模块的集合,这些模块通常为与硬件紧密相关的内核:程序模块的集合,这些模块通常为与硬件紧密相关的(如中断处理、设备驱动程序)或执行频率较高的(如处理机(如中断处理、设备驱动程序)或执行频率较高的(如处理机调度)程序模块。它们常驻内存,不会被交换出去。调度)程序模块。它们常驻内存,不会被交换出去。内核的功能:内核的功能: 支撑功能:中断处理、时钟管理、原语操作。支撑功能:中断处理、时钟管理、原语操

76、作。 资源管理功能:进程管理、存储器管理、设备管理等。资源管理功能:进程管理、存储器管理、设备管理等。 原语操作:由若干条指令构成的原语操作:由若干条指令构成的“原子操作原子操作( (atomic atomic operation)”operation)”过程过程 ,作为一个整体而不可分割要么全都,作为一个整体而不可分割要么全都完成,要么全都不做。在执行其间不能被中断。(实现时,完成,要么全都不做。在执行其间不能被中断。(实现时,屏蔽所有中断,执行完,开中断)屏蔽所有中断,执行完,开中断)注意问题:原语执行时间尽可能短;若由于忘记开中断,则注意问题:原语执行时间尽可能短;若由于忘记开中断,则系

77、统无法正常运行。系统无法正常运行。2.3.2 2.3.2 进程的创建(进程的创建(Creation of ProcessCreation of Process)在创建一个进程中,不应有外界干扰,所以系统中一在创建一个进程中,不应有外界干扰,所以系统中一般都有进程创建原语(如般都有进程创建原语(如UNIX的的newproc()1 1. .进程图(进程图(Process GraphProcess Graph)进程可以创建子进程,个数一般系统都没有限制(只取进程可以创建子进程,个数一般系统都没有限制(只取决于系统当前的资源),所以会构成树状结构决于系统当前的资源),所以会构成树状结构进程进程树。树。

78、2.2.引起创建进程的事件引起创建进程的事件用户登录用户登录 作业调度作业调度提供服务提供服务 应用请求:用户程序自己创建子进程应用请求:用户程序自己创建子进程3、进程的创建的步骤进程的创建的步骤:申请空白申请空白PCBPCB 为子进程分配资源为子进程分配资源初始化进程控制块初始化进程控制块 资源往往继承父进程资源往往继承父进程将新进程插入就绪队列将新进程插入就绪队列进程创建进程创建父进程创建子进程,子进程还可创建子进程,从父进程创建子进程,子进程还可创建子进程,从而形成进程树。而形成进程树。父子进程关系:父子进程关系:资源继承共享资源继承共享l父子进程共享所有的资源父子进程共享所有的资源.l

79、子进程共享父进程资源的子集子进程共享父进程资源的子集.l父进程和子进程之间不共享资源父进程和子进程之间不共享资源.执行关系:执行关系:l父进程和子进程并发执行父进程和子进程并发执行.l父进程等待执行结束父进程等待执行结束.地址空间地址空间l子进程是父进程的复制(克隆)子进程是父进程的复制(克隆).l子进程将自己代码装入其中子进程将自己代码装入其中。WindowsNT支持两种支持两种例子:例子:UNIXlfork系统调用:创建一个子(新)进程。系统调用:创建一个子(新)进程。精确复制父进程精确复制父进程lexec系统调用:系统调用:在在fork之后执行,用之后执行,用来用新的代码替换原父进程的代

80、码来用新的代码替换原父进程的代码。2.3.3 2.3.3 进程的终止进程的终止1. 1. 引起终止的事件引起终止的事件l正常结束正常结束l异常结束异常结束越界错误越界错误保护错保护错特权指令错特权指令错非法指令错非法指令错运行超时运行超时等待超时等待超时算数运算错算数运算错I/OI/O故障故障l外界干预外界干预操作员或系统干预操作员或系统干预父进程请求父进程请求父进程终止父进程终止2 2、 进程终止时应做的工作进程终止时应做的工作l终止所有子进程终止所有子进程l回收资源回收资源l若本身是运行的,通知调度程序进行若本身是运行的,通知调度程序进行CPUCPU的调度的调度unix进程终止过程进程终止

81、过程进程执行完最后一条语句,请求操作系统删进程执行完最后一条语句,请求操作系统删除进程除进程(通过执行通过执行exit系统调用系统调用)。l将子进程运行数据传递给父进程将子进程运行数据传递给父进程(通过通过wait系统调用系统调用)。l回收的系统资源由操作系统再另行分配回收的系统资源由操作系统再另行分配父进程也可以终止子进程的执行(通过父进程也可以终止子进程的执行(通过abort系统调用系统调用)。原因:。原因:l子进程超额使用资源子进程超额使用资源.l分配给子进程执行的任务不在需要执行分配给子进程执行的任务不在需要执行.l父进程退出。父进程退出。如果父进程终止,操作系统不再允许如果父进程终止

82、,操作系统不再允许子进程继续执行。子进程继续执行。1.1.引起阻塞的事件:引起阻塞的事件:所需资源得不到满足(如申请内存暂时无法满足)所需资源得不到满足(如申请内存暂时无法满足)启动输入启动输入/输出后输出后同步关系在等待其它进程的消息同步关系在等待其它进程的消息无事可做无事可做2.3.3 2.3.3 进程的阻塞和唤醒进程的阻塞和唤醒2.2.进程阻塞所做工作(进程阻塞所做工作(block)block) 进程自身调用阻塞原语,进入等待队列(是进程进程自身调用阻塞原语,进入等待队列(是进程的主动性行为),然后进行处理机调度。的主动性行为),然后进行处理机调度。3.3.进程的唤醒过程进程的唤醒过程(

83、 (wakeup)wakeup) 唤醒原因:等待的事件产生。唤醒原因:等待的事件产生。 由阻塞队列转入就绪队列,状态标志改动。由阻塞队列转入就绪队列,状态标志改动。若干若干unix进程的调用进程的调用(1)fork()fork创建一个新进程(子进程),创建一个新进程(子进程),fork()是是UNIX中建子中建子进程的唯一方法。子进程继承了父进程的所有环境,甚至开进程的唯一方法。子进程继承了父进程的所有环境,甚至开始执行的执行位置始执行的执行位置(子进程不从(子进程不从main()开始执行,而是从开始执行,而是从fork()的后继语句处执行)的后继语句处执行)voidmain()fork();

84、printf(“Thisistestn”);voidmain()fork();printf(“Thisistestn”);进程进程p1P1就绪进程:就绪进程:voidmain()fork();printf(“Thisistestn”);子进程子进程p2fork()P2Thisistest.Thisistest.调用调用fork()会返回不同的值:会返回不同的值:子进程返回:子进程返回:0父进程返回:父进程返回:子进程的子进程的id号号返回返回0返回子返回子进程号进程号voidmain()if(fork()=0)printf(“Thisisthechildn”);elseprintf(“This

85、istheparentn”);Thisistheparent.Thisisthechild.在在UNIXUNIX中子进程建中子进程建立后,先执行子进程还立后,先执行子进程还是父进程是不定的。是父进程是不定的。(对于特定的一个(对于特定的一个UNIXUNIX是确定的)是确定的)Thisisthechild.Thisistheparent.(2)wait()wait(变量地址),等待子进程结束,并将系统结束码放在变量地址),等待子进程结束,并将系统结束码放在给定的单元中,若为空则不保存结束状态。给定的单元中,若为空则不保存结束状态。voidmain()if(fork()=0)printf(“Thi

86、sisthechildn”);elsewait(NULL);printf(“Thisistheparentn”);(3 3)exec() exec() 改变原有进程的代码改变原有进程的代码 用一个新代码覆盖原有代码。它的参数包括新代码对应的用一个新代码覆盖原有代码。它的参数包括新代码对应的文件和命令行参数。成功调用时,不再返回;否则,返回出错文件和命令行参数。成功调用时,不再返回;否则,返回出错原因原因。( (execexec有多种格式)有多种格式)voidmain()if(fork()=0)exec(文件,参数);文件,参数);elsewait(NULL);.2.4 2.4 线程(线程(th

87、reads)threads)的基本概念的基本概念 在在OSOS中,进程的引入提高了计算机资源的利用率。中,进程的引入提高了计算机资源的利用率。但在进一步提高进程的并发性时,进程切换开销的比重但在进一步提高进程的并发性时,进程切换开销的比重越来越大,同时进程通信的效率也受到限制。越来越大,同时进程通信的效率也受到限制。引入线程引入线程的目的是用它来提高系统内程序的并发程度,提高系统的目的是用它来提高系统内程序的并发程度,提高系统效率,增大系统作业的吞吐量。效率,增大系统作业的吞吐量。例子:(例子:(1)网页浏览器:含有图象、文本等)网页浏览器:含有图象、文本等(2)网页服务器:同时可能有数百个客

88、户在访问)网页服务器:同时可能有数百个客户在访问进程的两个基本属性:进程的两个基本属性: 资源分配单位资源分配单位 处理机调度单位。处理机调度单位。线程模型:线程模型: 线程作为处理机调度单位。线程作为处理机调度单位。只拥有必不可少的资源,如:线程状态、寄存器状态和栈只拥有必不可少的资源,如:线程状态、寄存器状态和栈同样具有就绪、阻塞和执行三种基本状态同样具有就绪、阻塞和执行三种基本状态优点:减小并发执行的时间和空间开销(线程的创建、退优点:减小并发执行的时间和空间开销(线程的创建、退出和调度),因此容许在系统中建立更多的线程来提高并发出和调度),因此容许在系统中建立更多的线程来提高并发程度。

89、程度。一个进程中可以有多个线程一个进程中可以有多个线程 由于同一进程内各线程都可以访问整个进程的所有资源,由于同一进程内各线程都可以访问整个进程的所有资源,因此线程之间的通信比进程间的通信要方便;而同一进程内因此线程之间的通信比进程间的通信要方便;而同一进程内的线程间切换也会由于许多上下文的相同而简化的线程间切换也会由于许多上下文的相同而简化线程:线程:一个动态对象,它是处理机调度的基本单位,表示一个动态对象,它是处理机调度的基本单位,表示进程的一个控制点,执行一系列的指令。进程的一个控制点,执行一系列的指令。同一进程内各线程的差异体现:线程状态、寄存器上下文同一进程内各线程的差异体现:线程状

90、态、寄存器上下文和堆栈等环境上。和堆栈等环境上。优点:优点:1)线程创建的时间比进程短)线程创建的时间比进程短2)线程的终止时间比进程短)线程的终止时间比进程短3)同一进程的线程切换时间比进程短)同一进程的线程切换时间比进程短4)同一个进程的线程可直接进行通信。)同一个进程的线程可直接进行通信。进程和线程的比较:进程和线程的比较:1)不同进程的地址空间是相互独立的,而同一进程下的)不同进程的地址空间是相互独立的,而同一进程下的各线程共享同一地址空间。一个进程中的线程在另一个进各线程共享同一地址空间。一个进程中的线程在另一个进程中是不可见的。程中是不可见的。2)同一进程下的线程可以通过读写进程数

91、据段(如全局)同一进程下的线程可以通过读写进程数据段(如全局变量)来进行通信;进程间通信必须用操作系统提供的进变量)来进行通信;进程间通信必须用操作系统提供的进程间的通信机制。程间的通信机制。3)同一进程中的线程上下文切换比进程上下文切换要快)同一进程中的线程上下文切换比进程上下文切换要快得多。得多。2.4.32.4.3用户级线程和内核支持线程用户级线程和内核支持线程 1 1、由操作系统内核实现,、由操作系统内核实现,内核线程内核线程( (kernel-level kernel-level thread)thread),OSOS知道每个进程有多少线程,一个线程阻塞时,知道每个进程有多少线程,一

92、个线程阻塞时,OSOS会选则另一个线程,它们可能属于同一个进程,也可能会选则另一个线程,它们可能属于同一个进程,也可能属于不同进程。属于不同进程。 2 2、操作系统感觉不到线程存在,它们在用户空间进行管理、操作系统感觉不到线程存在,它们在用户空间进行管理用户级线程用户级线程。(用户级线程软件包:。(用户级线程软件包:POSIX-P,MACH CPOSIX-P,MACH C, 数据库数据库informixinformix,图形处理图形处理Aldus PageMaker Aldus PageMaker )两者性能上差异很大:两者性能上差异很大:l用户级线程的调度发生在同一个进程中,也不需通过中断进

93、用户级线程的调度发生在同一个进程中,也不需通过中断进入核心,所以切换快入核心,所以切换快这个事实有力的支持将线程管理放这个事实有力的支持将线程管理放在用户级。在用户级。l用户级的线程阻塞后,整个进程阻塞,因为内核无法知道其用户级的线程阻塞后,整个进程阻塞,因为内核无法知道其它线程的存在它线程的存在这个事实有力的支持将线程管理放在核心。这个事实有力的支持将线程管理放在核心。最后两种都用,最后两种都用,1992Anderson,现在现在SUN的的SolarisSolaris同时同时支持两者支持两者不管线程在核心还是用户空间,都有一堆新问题,这些不管线程在核心还是用户空间,都有一堆新问题,这些问题在

94、相当的程度上改变了编程模型。问题在相当的程度上改变了编程模型。如:如:若父进程创建子进程,子进程的线索和父进程一样多吗?若父进程创建子进程,子进程的线索和父进程一样多吗?需一样,否则可能无法工作需一样,否则可能无法工作但一样又会产生:若一个线程阻塞于键盘输入语句,那么两但一样又会产生:若一个线程阻塞于键盘输入语句,那么两个线程都阻塞?从键盘读入的一行数据是每个线程都有拷贝,个线程都阻塞?从键盘读入的一行数据是每个线程都有拷贝,还是只有父进程有。还是只有父进程有。一个线程关闭文件而另一个正在读,怎么办?一个线程关闭文件而另一个正在读,怎么办?一个线程要求内存分配而此时正好线程切换,新线程同样一个

95、线程要求内存分配而此时正好线程切换,新线程同样发现内存不够而要求内存分配,这里算几次?发现内存不够而要求内存分配,这里算几次?问题本身是可以克服的,但表明仅仅向现有系统引入问题本身是可以克服的,但表明仅仅向现有系统引入线程而不进行重新设计是根本不行的。线程而不进行重新设计是根本不行的。第第3章章进程的同步与通信进程的同步与通信目的:为了改善资源的利用率和提高系统目的:为了改善资源的利用率和提高系统的吞吐量,引入了进程,但同时失去了程序的吞吐量,引入了进程,但同时失去了程序的封闭性及可再现性。本章讨论的封闭性及可再现性。本章讨论OS保证并发保证并发程序的封闭性和可再现性的机制及策略。程序的封闭性

96、和可再现性的机制及策略。3.1进程同步的基本概念进程同步的基本概念由于多进程在操作系统中的并发执行,诸进程之间存由于多进程在操作系统中的并发执行,诸进程之间存在相互制约的关系,表现为:在相互制约的关系,表现为:1)进程互斥:由于共享资源所要求的排它性,进程间要)进程互斥:由于共享资源所要求的排它性,进程间要相互竞争,以获得这些资源的使用权。相互竞争,以获得这些资源的使用权。2)进程同步:多个进程中发生的事件存在某种时序关系,)进程同步:多个进程中发生的事件存在某种时序关系,必须协同工作、相互配合,以共同完成一项任务。必须协同工作、相互配合,以共同完成一项任务。 在多进程系统中,可以把进程的相互

97、制约关系按在多进程系统中,可以把进程的相互制约关系按感知程度分成下标所列的三种类型感知程度分成下标所列的三种类型: 相互感知的程度相互感知的程度交互关系交互关系一个进程对其他进程一个进程对其他进程的影响的影响潜在的控制问题潜在的控制问题相互不感知相互不感知( (完完全不了解其它进全不了解其它进程的存在程的存在) )竞争竞争一个进程的操作对一个进程的操作对其它进程的结果无其它进程的结果无影响影响互斥,死锁(可互斥,死锁(可释放的资源),释放的资源),饥饿饥饿间接感知间接感知( (双方双方都与第三方交互,都与第三方交互,如共享资源如共享资源) )通过共享进通过共享进行协作行协作一个进程的结果依一个

98、进程的结果依赖于从其它进程获赖于从其它进程获得的信息得的信息互斥,死锁(可释互斥,死锁(可释放的资源),饥饿,放的资源),饥饿,数据一致性数据一致性直接感知直接感知( (双方直双方直接交互,如通信接交互,如通信) )通过通信进通过通信进行协作行协作一个进程的结果依赖一个进程的结果依赖于从其他进程获得的于从其他进程获得的信息信息死锁,饥饿死锁,饥饿3.1.1 3.1.1 临界资源临界资源临界资源:临界资源:必须互斥使用的资源。必须互斥使用的资源。可以是硬件,也可以是软件(如外设、共享代码段、共享可以是硬件,也可以是软件(如外设、共享代码段、共享数据结构),多个进程在对其进行访问时(主要指进行写入

99、数据结构),多个进程在对其进行访问时(主要指进行写入或修改),必须互斥地进行。(有些共享资源可以同时访问,或修改),必须互斥地进行。(有些共享资源可以同时访问,如只读数据。)如只读数据。)例:共享变量的修改冲突例:共享变量的修改冲突DB存存10万万取取5万万10111-510111+10服务器程序服务器程序process(id,m)在在DB中取记录中取记录id;帐号帐号id+m;修改记录送回修改记录送回DB;1011110例:共享变量的修改冲突例:共享变量的修改冲突DB存存10万万取取5万万10111-510111+10process(10111,+10)在在DB中取记录中取记录10111;帐

100、号帐号10111+10;修改记录送回修改记录送回DB;process(10111,-5)在在DB中取记录中取记录10111;帐号帐号10111-5;修改记录送回修改记录送回DB;1011110例:共享变量的修改冲突例:共享变量的修改冲突DB存存10万万取取5万万10111-510111+10process(10111,+10)在在DB中取记录中取记录10111;帐号帐号10111+10;修改记录送回修改记录送回DB;process(10111,-5)在在DB中取记录中取记录10111;帐号帐号10111-5;修改记录送回修改记录送回DB;1011110例:共享变量的修改冲突例:共享变量的修改冲

101、突DB存存10万万取取5万万10111-510111+10process(10111,+10)在在DB中取记录中取记录10111;帐号帐号10111+10;修改记录送回修改记录送回DB;process(10111,-5)在在DB中取记录中取记录10111;帐号帐号10111-5;修改记录送回修改记录送回DB;101115例:共享变量的修改冲突例:共享变量的修改冲突DB存存10万万取取5万万10111-510111+10process(10111,+10)在在DB中取记录中取记录10111;帐号帐号10111+10;修改记录送回修改记录送回DB;process(10111,-5)在在DB中取记录

102、中取记录10111;帐号帐号10111-5;修改记录送回修改记录送回DB;101115例:共享变量的修改冲突例:共享变量的修改冲突DB存存10万万取取5万万10111-510111+10process(10111,+10)在在DB中取记录中取记录10111;帐号帐号10111+10;修改记录送回修改记录送回DB;process(10111,-5)在在DB中取记录中取记录10111;帐号帐号10111-5;修改记录送回修改记录送回DB;1011120例:共享变量的修改冲突例:共享变量的修改冲突DB存存10万万取取5万万10111-510111+10process(10111,+10)在在DB中取

103、记录中取记录10111;帐号帐号10111+10;修改记录送回修改记录送回DB;process(10111,-5)在在DB中取记录中取记录10111;帐号帐号10111-5;修改记录送回修改记录送回DB;1011110例:共享变量的修改冲突例:共享变量的修改冲突DB存存10万万取取5万万10111-510111+10process(10111,+10)在在DB中取记录中取记录10111;帐号帐号10111+10;修改记录送回修改记录送回DB;process(10111,-5)在在DB中取记录中取记录10111;帐号帐号10111-5;修改记录送回修改记录送回DB;1011110例:共享变量的修

104、改冲突例:共享变量的修改冲突DB存存10万万取取5万万10111-510111+10process(10111,+10)在在DB中取记录中取记录10111;帐号帐号10111+10;修改记录送回修改记录送回DB;process(10111,-5)在在DB中取记录中取记录10111;帐号帐号10111-5;修改记录送回修改记录送回DB;1011120例:共享变量的修改冲突例:共享变量的修改冲突DB存存10万万取取5万万10111-510111+10process(10111,+10)在在DB中取记录中取记录10111;帐号帐号10111+10;修改记录送回修改记录送回DB;process(101

105、11,-5)在在DB中取记录中取记录10111;帐号帐号10111-5;修改记录送回修改记录送回DB;1011120例:共享变量的修改冲突例:共享变量的修改冲突DB存存10万万取取5万万10111-510111+10process(10111,+10)在在DB中取记录中取记录10111;帐号帐号10111+10;修改记录送回修改记录送回DB;process(10111,-5)在在DB中取记录中取记录10111;帐号帐号10111-5;修改记录送回修改记录送回DB;101115在前例中,记录在前例中,记录10111就是一个就是一个临界资源临界资源,所出现的情,所出现的情况必须解决,原则况必须解决

106、,原则不能在有修改的前提下,两个以上不能在有修改的前提下,两个以上的进程同时使用临界资源。的进程同时使用临界资源。process(id,m)在在DB中取记录中取记录id;帐号帐号id+m;修改记录送回修改记录送回DB;服务器进程服务器进程:使用临界资源的一段代码使用临界资源的一段代码3.1.2 3.1.2 临界区临界区1.临界区(段)的定义:临界区(段)的定义:临界区临界区( (critical section)critical section):在每个进程中,访问临在每个进程中,访问临界资源的一段代码。界资源的一段代码。互斥处理:互斥处理:进入区进入区( (entry section)ent

107、ry section):在进入临界区之前,加检查在进入临界区之前,加检查可否进入临界区的一段代码。如果可以进入临界区,可否进入临界区的一段代码。如果可以进入临界区,设置设置“正在访问临界区正在访问临界区”标志后进入。标志后进入。退出区退出区( (exit section)exit section):将将“正在访问临界区正在访问临界区”标志标志清除。清除。剩余区剩余区( (remainder section)remainder section):代码中的其余部分。代码中的其余部分。临界区临界区剩余部分剩余部分进入代码进入代码退出代码退出代码DijkstraDijkstra在在19651965年提

108、出了三条准则:年提出了三条准则:(1 1)每次至多一个进程处于临界区)每次至多一个进程处于临界区(2 2)若有多个进程同时要求进入它们的临界区,应该在有限的)若有多个进程同时要求进入它们的临界区,应该在有限的 时间内让其中一个进入而不应该相互阻塞时间内让其中一个进入而不应该相互阻塞(3 3)进程在临界区中逗留有限时间)进程在临界区中逗留有限时间2 2同步机制应遵循的准则:同步机制应遵循的准则:l空闲则入:其它进程均不处于临界区,则进入;空闲则入:其它进程均不处于临界区,则进入;l忙则等待:已有进程处于其临界区,则等待;忙则等待:已有进程处于其临界区,则等待;l有限等待:等待进入临界区的进程不能

109、有限等待:等待进入临界区的进程不能“死等死等”;l让权等待:不能进入临界区的进程,应释放让权等待:不能进入临界区的进程,应释放CPUCPU(如转换到阻塞状态)如转换到阻塞状态)3.1.3 3.1.3 利用软件方法解决进程互斥问题利用软件方法解决进程互斥问题算法算法1 1:关中断:关中断 进入关中断,出来开中断,由于在临界区中断被关,进入关中断,出来开中断,由于在临界区中断被关,所以不会有进程切换发生。所以不会有进程切换发生。问题:关中断交给用户是不明智的问题:关中断交给用户是不明智的算法算法2 2:单标志:单标志,依此循环,依此循环有两个进程有两个进程P Pi i, , P Pj j,其中的其

110、中的P Pi i while (turn != i);while (turn != i);critical sectioncritical sectionturn = j;turn = j;remainder sectionremainder section设立一个公用变量设立一个公用变量 turnturn:描述允许进入临界区的进程标识,描述允许进入临界区的进程标识,在进入区前循环检查是否允许本进程进入:在进入区前循环检查是否允许本进程进入:turnturn为为i i时,进程时,进程P Pi i可进入;可进入;在退出区修改允许进入进程标识:进程在退出区修改允许进入进程标识:进程P Pi i退出

111、时,改退出时,改turnturn为进程为进程P Pj j的标的标识识j j;缺点:强制轮流进入临界区,没有考虑进程的实际需要。容易造成资源缺点:强制轮流进入临界区,没有考虑进程的实际需要。容易造成资源利用不充分:在利用不充分:在P Pi i出让临界区之后,出让临界区之后,P Pj j使用临界区之前,使用临界区之前,P Pi i不可能再次使不可能再次使用临界区;用临界区;违反了原则违反了原则1算法算法3 3:双标志、先检查:双标志、先检查 while (flagj); while (flagj); a flagi = 1; flagi = 1; bcritical sectioncritical

112、 sectionflagi = 0;flagi = 0;remainder sectionremainder section设立一个标志数组设立一个标志数组flag:描述进程是否在临界区,初值均描述进程是否在临界区,初值均为为0。先检查,后修改:在进入区检查另一个进程是否在临界区,先检查,后修改:在进入区检查另一个进程是否在临界区,若不在,修改本进程在临界区的标志;若不在,修改本进程在临界区的标志;在退出区修改本进程在临界区的标志;在退出区修改本进程在临界区的标志;问题:问题:P Pi i和和P Pj j可能同时进入临界区。按下面序列执行:可能同时进入临界区。按下面序列执行:“P Pi i P

113、 Pj jPPi iP Pj j”。即在检查对方即在检查对方flagflag之后和切换之后和切换自己自己flagflag之前有一段时间,结果都检查通过。这里的问题出之前有一段时间,结果都检查通过。这里的问题出在检查和修改操作不能连续进行。在检查和修改操作不能连续进行。 算法算法4 4:双标志、后检查:双标志、后检查flagi = 1; flagi = 1; while (flagj); while (flagj); critical sectioncritical sectionflagi = 0;flagi = 0;remainder sectionremainder section问题:问

114、题:P Pi i和和P Pj j可能都进入不了临界区。按下面序列执行时,可能都进入不了临界区。按下面序列执行时,会都进不了临界区:会都进不了临界区:“P Pi i P Pj j P Pi i P Pj j”。即在切即在切换自己换自己flagflag之后和检查对方之后和检查对方flagflag之前有一段时间,结果都切之前有一段时间,结果都切换换flagflag,都检查不通过。都检查不通过。算法算法5(5(Petersons Algorithm)Petersons Algorithm):先修改、后检查、后修改先修改、后检查、后修改者等待者等待(1981年,年,G.L.Petterson) 结合算法

115、结合算法2 2和算法和算法4 4i i进程:进程:flagi=1; flagi=1; turn=j;turn=j;while(flagj&turn=j);while(flagj&turn=j);critical sectioncritical sectionflagi=0;flagi=0;remainder sectionremainder section 检查对方检查对方flagflag,如果不在临界区则自己进入空闲则入。如果不在临界区则自己进入空闲则入。几乎同时进入:保存的是较晚的一次赋值,较晚的进程等待,几乎同时进入:保存的是较晚的一次赋值,较晚的进程等待,较早的进程进入先到先入,后到等

116、待较早的进程进入先到先入,后到等待j j进程:进程:flagj=1; flagj=1; turn=i;turn=i;while(flagi&turn=i);while(flagi&turn=i);critical sectioncritical sectionflagj=0;flagj=0;remainder sectionremainder section算法算法5(5(Petersons Algorithm)Petersons Algorithm):先修改、后检查、后修改先修改、后检查、后修改者等待者等待(1981年,年,G.L.Petterson) 结合算法结合算法2 2和算法和算法4

117、4i i进程:进程:flagi=1;flagi=1; turn=j;turn=j;while(flagj&turn=j);while(flagj&turn=j);critical sectioncritical sectionflagi=0;flagi=0;remainder sectionremainder section 检查对方检查对方flagflag,如果不在临界区则自己进入空闲则入。如果不在临界区则自己进入空闲则入。几乎同时进入:保存的是较晚的一次赋值,较晚的进程等待,几乎同时进入:保存的是较晚的一次赋值,较晚的进程等待,较早的进程进入先到先入,后到等待较早的进程进入先到先入,后到等

118、待j j进程:进程:flagj=1; flagj=1; turn=i;turn=i;while(flagi&turn=i);while(flagi&turn=i);critical sectioncritical sectionflagj=0;flagj=0;remainder sectionremainder section算法算法5(5(Petersons Algorithm)Petersons Algorithm):先修改、后检查、后修改先修改、后检查、后修改者等待者等待(1981年,年,G.L.Petterson) 结合算法结合算法2 2和算法和算法4 4i i进程:进程:flagi=

119、1; flagi=1; turn=j;turn=j;while(flagj&turn=j);while(flagj&turn=j);critical sectioncritical sectionflagi=0;flagi=0;remainder sectionremainder section 检查对方检查对方flagflag,如果不在临界区则自己进入空闲则入。如果不在临界区则自己进入空闲则入。几乎同时进入:保存的是较晚的一次赋值,较晚的进程等待,几乎同时进入:保存的是较晚的一次赋值,较晚的进程等待,较早的进程进入先到先入,后到等待较早的进程进入先到先入,后到等待j j进程:进程:flagj

120、=1; flagj=1; turn=i;turn=i;while(flagi&turn=i);while(flagi&turn=i);critical sectioncritical sectionflagj=0;flagj=0;remainder sectionremainder section在进入临界区之前,进程试图去获取一个在进入临界区之前,进程试图去获取一个号码,持有最小号码的进程进入它的临界号码,持有最小号码的进程进入它的临界区。区。如果进程如果进程 P Pi i 和和 P Pj j 得到的是同样的号码,得到的是同样的号码,如果如果 i i j j, , 那么进程那么进程 P Pi

121、 i 先进入临界区,先进入临界区,否则进程否则进程P Pj j 进入临界区。进入临界区。系统生成的后一个号码总是大于等于前一系统生成的后一个号码总是大于等于前一个。例如:个。例如: 1,2,3,3,3,3,4,5. 1,2,3,3,3,3,4,5.- -解决解决n n个进程的临界区问题个进程的临界区问题算法算法6面包店算法面包店算法共享数据:共享数据:booleanboolean choosingn choosingn; ;intint numbern; numbern; 这些变量分别被初始化为这些变量分别被初始化为 false false 和和 0 0序对序对( (号码号码 #, #, 进程

122、进程 id #)id #)按字典序定义按字典序定义, ,即即: :l( (a,ba,b) () (c,dc,d) ) 如果如果 a a c c 或者或者 a a = = c c 且且 b b d dlmax (max (a a0 0, , , a an n-1-1) ) 得到整数得到整数k k, , 从而从而 k k a ai i 对对 i i = 0, = 0, , , n n 1 1do do choosingi = true;choosingi = true;numberi = max(number0, number1, numberi = max(number0, number1, ,

123、 number n , number n 1)+1; 1)+1;choosingi = false;choosingi = false;for (j = 0; j n; j+) for (j = 0; j n; j+) while (choosingj) ; while (choosingj) ; while (numberj != while (numberj != 0) & (numberj ,j ) (numberi ,i) ; 0) & (numberj ,j ) (numberi ,i) ; 临界区;临界区;numberi = 0;numberi = 0;剩余区;剩余区; while

124、 (1); while (1);说明说明:(1)choosingj保证若保证若j进程正在修改其进程正在修改其numberj,则等待修改完则等待修改完成再做第二个成再做第二个while检测检测do do choosingi = true;choosingi = true;numberi = maxnumber0, number1, numberi = maxnumber0, number1, , number n , number n 1+1; 1+1;choosingi = false;choosingi = false;for (j = 0; j n; j+) for (j = 0; j n

125、; j+) while (choosingj) ; while (choosingj) ; while (numberj != while (numberj != 0) & (numberj ,j ) (numberi ,i) ; 0) & (numberj ,j ) (numberi ,i) ; 临界区;临界区;numberi = 0;numberi = 0;剩余区;剩余区; while (1); while (1);说明说明:(2)若进程若进程Pi在其临界区在其临界区,而而Pk选择了选择了numberk不为不为0,则必有则必有(numberi,i)(numberk,k)do do choo

126、singi = true;choosingi = true;numberi = maxnumber0, number1, numberi = maxnumber0, number1, , number n , number n 1+1; 1+1;choosingi = false;choosingi = false;for (j = 0; j n; j+) for (j = 0; j n; j+) while (choosingj) ; while (choosingj) ; while (numberj != while (numberj != 0) & (numberj ,j ) (num

127、beri ,i) ; 0) & (numberj ,j ) (numberi ,i) ; 临界区;临界区;numberi = 0;numberi = 0;剩余区;剩余区; while (1); while (1);说明说明:(3)若进程若进程Pi在其临界区在其临界区,而而Pk要进入临界区要进入临界区,则则:numberi!=0(numberi,i)(numberk,k)成立成立3.1.4 3.1.4 利用硬件方法解决进程互斥问题利用硬件方法解决进程互斥问题完全利用软件方法,有很大局限性,如不适于多进完全利用软件方法,有很大局限性,如不适于多进程(大于程(大于2个)的情况,这里的主要问题是修改和

128、检查标个)的情况,这里的主要问题是修改和检查标志不能作为一个整体来执行,现在已不采用。志不能作为一个整体来执行,现在已不采用。利用某些硬件指令其读写操作由一条指令完成,因利用某些硬件指令其读写操作由一条指令完成,因而保证读操作与写操作不被打断而保证读操作与写操作不被打断;1.1.Test-and-SetTest-and-Set指令指令该指令读出标志后设标志置为该指令读出标志后设标志置为TRUETRUE TS( lock) TS( lock) old = lock; lock = 1; old = lock; lock = 1; return old; return old; 将一个存储器将一个

129、存储器lock值读到寄存器,值读到寄存器,存储器值置存储器值置1。 locklock表示资源的两种状态:表示资源的两种状态:1 1表示正被占用,表示正被占用,0 0表示空闲表示空闲利用利用TSTS实现进程互斥:每个临界资源设置一个公享变量实现进程互斥:每个临界资源设置一个公享变量locklock,初值为初值为0 0while TS(lock);while TS(lock);lock = 0;lock = 0;critical sectioncritical sectionremainder sectionremainder section2.2.swapswap指令(或指令(或Exchange

130、Exchange指令)指令)交换两个字(字节)的内容交换两个字(字节)的内容void void swap(intswap(int &a, &a, intint &b) &b) intint temp; temp; temp = a; a = b; b = temp; temp = a; a = b; b = temp; 利用利用swapswap实现进程互斥:每个临界资源设置一个公享变实现进程互斥:每个临界资源设置一个公享变量量locklock,初值为初值为0 0。每个进程设置一个私有变量每个进程设置一个私有变量keykeykey = 1;key = 1;dodo swap(lock, key)

131、; swap(lock, key); while (key);while (key);lock = 0;lock = 0;critical sectioncritical sectionremainder sectionremainder section硬件方法的优点硬件方法的优点l适用于任意数目的进程,在单处理器或多处理器上适用于任意数目的进程,在单处理器或多处理器上l简单,容易验证其正确性简单,容易验证其正确性l可以支持进程内存在多个临界区,只需为每个临界区可以支持进程内存在多个临界区,只需为每个临界区设立一个布尔变量设立一个布尔变量硬件方法的缺点硬件方法的缺点l等待要耗费等待要耗费CPU

132、CPU时间,不能实现时间,不能实现“让权等待让权等待”l可能可能“饥饿饥饿”:从等待进程中随机选择一个进入临界:从等待进程中随机选择一个进入临界区,有的进程可能一直选不上区,有的进程可能一直选不上l可能死锁可能死锁3.2 3.2 信号量机制信号量机制( (semaphore)semaphore) 前面的互斥算法都存在问题,它们是平等进程间的一前面的互斥算法都存在问题,它们是平等进程间的一种协商机制,需要一个地位高于进程的管理者来解决公有种协商机制,需要一个地位高于进程的管理者来解决公有资源的使用问题。资源的使用问题。OSOS可从进程管理者的角度来处理互斥的可从进程管理者的角度来处理互斥的问题,

133、信号量就是问题,信号量就是OSOS提供的管理公有资源的有效手段。信提供的管理公有资源的有效手段。信号量代表可用资源实体的数量。号量代表可用资源实体的数量。3.2.1 3.2.1 整型信号量机制整型信号量机制P P操作(也称为操作(也称为wait,down)wait,down):p(intp(int &s) &s) while( while(s=0s=0);); s - -;s - -; 注意:此处利用注意:此处利用C+来描述操作来描述操作功能,功能,=0=0表示当前的空闲资源数,若为负值其绝对值表示当表示当前的空闲资源数,若为负值其绝对值表示当前在该信号灯上(临界区)的阻塞进程数前在该信号灯上

134、(临界区)的阻塞进程数linklink为链表首指针,等待的进程利用它组成链表为链表首指针,等待的进程利用它组成链表2、记录型信号量的结构、记录型信号量的结构p(s)p(s)-s.value;-s.value;if (s.value 0)if (s.value =0=0表示当前的空闲资源数,若为负值其绝对值表示当表示当前的空闲资源数,若为负值其绝对值表示当前等待在该信号灯上(临界区)的阻塞进程数前等待在该信号灯上(临界区)的阻塞进程数linklink为链表首指针,等待的进程利用它组成链表为链表首指针,等待的进程利用它组成链表2、记录型信号量的结构、记录型信号量的结构v(s)v(s) s.valu

135、e+; s.value+;if (s.value =0)if (s.value =0=0表示当前的空闲资源数,若为负值其绝对值表示当表示当前的空闲资源数,若为负值其绝对值表示当前等待在该信号灯上(临界区)的阻塞进程数前等待在该信号灯上(临界区)的阻塞进程数linklink为链表首指针,等待的进程利用它组成链表为链表首指针,等待的进程利用它组成链表2、记录型信号量的结构、记录型信号量的结构valuelinkv(s)v(s) s.value+; s.value+;if (s.value =0)if (s.value =1 & S =1 & S2 2 = 1 & = 1 & & & S Sn n =

136、 1) = 1) for (i = 1; i = n; +i) - - for (i = 1; i = n; +i) - -S Si i; ; break; break; else else 调用进程进入第一个小于调用进程进入第一个小于1 1的信号量的等待队列的信号量的等待队列S Sj j.queue.queue; ; 阻塞调用进程阻塞调用进程; ; 解决:解决:n个资源只要有不满足条件的就阻塞个资源只要有不满足条件的就阻塞Ssignal(SSsignal(S1 1, S, S2 2, , , , S Sn n) ) for (i = 1; i = n; +i) for (i = 1; i =

137、 n; +i) + +S Si i; ; for (each process P waiting in for (each process P waiting in S Si i.queue.queue) ) 从等待队列从等待队列S Si i.queue.queue中取出进程中取出进程P P放入就绪队列放入就绪队列; ; 2. . 一般一般“信号量集信号量集” 一次需要一次需要n n个某类临界资源时,就要进行个某类临界资源时,就要进行n n次次waitwait操作低效又可能死锁操作低效又可能死锁, , 扩充扩充一次对一个资源可同时申请的量大于等于一次对一个资源可同时申请的量大于等于1 1。归还

138、也允许同时释放几个资源。归还也允许同时释放几个资源。Swait(SSwait(S1 1, t, t1 1, d, d1 1; .; ; .; S Sn n, , t tn n, , d dn n););Ssignal(SSsignal(S1 1, d, d1 1; .; ; .; S Sn n, , d dn n););S Si i,t,ti i,d,di i: : S Si i信号灯;信号灯; t ti i资源下限,小于时资源下限,小于时t ti i ,不再分配;,不再分配; d di i申请量申请量/ /释放量;释放量;以前的信号灯相当于以前的信号灯相当于t ti i=1=1, d di

139、i=1=1问题:问题:P、V同步谁做?同步谁做?操作系统本身都提供操作系统本身都提供P、V原语(以系统调用的方原语(以系统调用的方式给出,如式给出,如UNIX称为称为sleep()、wakeup());系统核心做?系统核心做?核心直接使用的临界资源比如一些互斥使用核心直接使用的临界资源比如一些互斥使用的表格等,我知道何时需要同步。但对于一的表格等,我知道何时需要同步。但对于一个用户,我事先不知道他什么时候,用哪个个用户,我事先不知道他什么时候,用哪个临界资源,我也无法知道最终计算机系统会临界资源,我也无法知道最终计算机系统会配哪些外部设备,配多少?我怎么去同步?配哪些外部设备,配多少?我怎么去

140、同步?所以,对于这种面向用户使用的临界资源,所以,对于这种面向用户使用的临界资源,应该用户在进入临界区时,用应该用户在进入临界区时,用P操作;退出操作;退出临界区时,用临界区时,用V操作。操作。问题:问题:P、V同步谁做?同步谁做?操作系统本身都提供操作系统本身都提供P、V原语(以系统调用的方原语(以系统调用的方式给出,如式给出,如UNIX称为称为sleep()、wakeup());用户做?用户做?我不知道系统所用的激光打印机的锁名字,我不知道系统所用的激光打印机的锁名字,怎么用你的怎么用你的sleep(),wakeup()去同步?这去同步?这些事情我来做工作量太大,你还必须公布些事情我来做工

141、作量太大,你还必须公布许多核心细节,增加了你的不安全性,我许多核心细节,增加了你的不安全性,我的程序也没有了兼容性。而且,我用的程序也没有了兼容性。而且,我用P后,后,若忘了用若忘了用V,系统资源不就很快没有了吗系统资源不就很快没有了吗?问题:问题:P、V同步谁做?同步谁做?操作系统本身都提供操作系统本身都提供P、V原语(以系统调用的方原语(以系统调用的方式给出,如式给出,如UNIX称为称为sleep()、wakeup());到底谁做?到底谁做?对于独享设备,由设备驱动程序做,设备使用前进行对于独享设备,由设备驱动程序做,设备使用前进行P操作,退出进行操作,退出进行V操作。操作。核心观点:设备

142、驱动程序一般在核心观点:设备驱动程序一般在OS支持下开发,凡是不属于我核心的都支持下开发,凡是不属于我核心的都是用户程序。是用户程序。用户观点:设备驱动程序一般是在用户观点:设备驱动程序一般是在OS支持下开发,但限制很大。比如须支持下开发,但限制很大。比如须严格按照严格按照OS规定的格式编写,否则联不上。规定的格式编写,否则联不上。OS提供的系统调用接口只提供的系统调用接口只有很小一部分能够使用。它通常由硬件开发商负责开发和发行。同决大有很小一部分能够使用。它通常由硬件开发商负责开发和发行。同决大部分通常意义下的用户无关。部分通常意义下的用户无关。一般用户的工作,安装新设备的驱动程序(一般用户

143、的工作,安装新设备的驱动程序(Window,DOS)或重新生成操或重新生成操作系统(作系统(UNIX),),设备驱动此时变成了操作系统的一部分,运行于核心设备驱动此时变成了操作系统的一部分,运行于核心态。态。3.3 3.3 经典同步问题经典同步问题3.3.13.3.1生产者生产者- -消费者问题消费者问题1)问题描述:)问题描述:有一个生产者和一个消费者,生产者生产有一个生产者和一个消费者,生产者生产商品并放在一个可以存放商品并放在一个可以存放n件商品的仓库中,消费者在仓件商品的仓库中,消费者在仓库中取出商品消费。库中取出商品消费。2)制约关系:)制约关系:生产者与消费者之间不直接发生联系,他

144、们通过仓库生产者与消费者之间不直接发生联系,他们通过仓库这个纽带发生制约关系,生产者生产商品,若仓库已满生这个纽带发生制约关系,生产者生产商品,若仓库已满生产者等待,直到仓库有空为止;消费者在仓库空时,等待产者等待,直到仓库有空为止;消费者在仓库空时,等待直到生产者的商品放入,否则,取一个商品消费。直到生产者的商品放入,否则,取一个商品消费。3)实现考虑:)实现考虑:仓库可以用队列表示,队头仓库可以用队列表示,队头front,队尾队尾rear为了实现互相协调,设两个信号量,为了实现互相协调,设两个信号量,full=0;表示当前队列中已有的数据个数表示当前队列中已有的数据个数empty=n;表示

145、当前队列中还可以放的数据个数表示当前队列中还可以放的数据个数生产者:生产者:生产商品生产商品x;p(empty);addqueue(rear,x);v(full);消费者:消费者:p(full);x=delqueue(front);v(empty);4)问题扩充:)问题扩充:若生产者与消费者变成多对多关系,我们要若生产者与消费者变成多对多关系,我们要做什么变动?做什么变动?生产者:生产者:生产商品生产商品x;p(empty);addqueue(rear,x);v(full);消费者:消费者:p(full);x=delqueue(front);v(empty);建立在缓冲队列上的制约关系没有变化

146、,所以建立在缓冲队列上的制约关系没有变化,所以empty同同full的操作不需变。的操作不需变。进队、退队本身不是原子操作进队、退队本身不是原子操作,所以生产者(或消费者)要竞争队列,必需有一个信号灯所以生产者(或消费者)要竞争队列,必需有一个信号灯能保证互斥使用队列,因为同时只能一人(一个进程)使能保证互斥使用队列,因为同时只能一人(一个进程)使用,所以初始值为用,所以初始值为1。初始化:front=rear=0;进队:voidaddqueue(front,x)if(rear+1)%n!=front)rear=(rear+1)%n;queuerear=x;else队上溢处理队上溢处理退队:d

147、elqueue(rear)if(front=rear)队下溢处理;队下溢处理;elsefront=(front+1)%n;x=queuefront;4)问题扩充:)问题扩充:若生产者与消费者变成多对多关系,我们要若生产者与消费者变成多对多关系,我们要做什么变动?做什么变动?增加信号量增加信号量:mutex=1;生产者进程:生产者进程:生产商品生产商品x;p(empty);p(mutex);addqueue(rear,x);v(mutex);v(full);消费者进程:消费者进程:p(full);p(mutex);x=delqueue(front);v(mutex);v(empty);生产者进程

148、:生产者进程:生产商品生产商品x;p(empty);addqueue(rear,x);v(full);消费者进程:消费者进程:p(full);x=delqueue(front);v(empty);4)问题进一步讨论:)问题进一步讨论:生产者进程:生产者进程:生产商品生产商品x;p(empty);p(mutex);addqueue(rear,x);v(mutex);v(full);消费者进程:消费者进程:p(full);p(mutex);x=delqueue(front);v(mutex);v(empty);A)生产者用生产者用rear指针进队,消费者利用指针进队,消费者利用front退队,两退

149、队,两者实际无联系,但现在信号灯是封锁了整个队,生产者者实际无联系,但现在信号灯是封锁了整个队,生产者使用队,消费者就不能使用,反之亦然。使用队,消费者就不能使用,反之亦然。解决:设立两个信号灯解决:设立两个信号灯mutex1、mutex2,其初值都为其初值都为1,分,分别控制别控制front与与rear的互斥问题的互斥问题4)问题进一步讨论:)问题进一步讨论:生产者进程:生产者进程:生产商品生产商品x;p(empty);p(mutex1);addqueue(rear,x);v(mutex1);v(full);消费者进程:消费者进程:p(full);p(mutex2);x=delqueue(f

150、ront);v(mutex2);v(empty);A)生产者用生产者用rear指针进队,消费者利用指针进队,消费者利用front退队,两退队,两者实际无联系,但现在信号灯是封锁了整个队,生产者者实际无联系,但现在信号灯是封锁了整个队,生产者使用队,消费者就不能使用,反之亦然。使用队,消费者就不能使用,反之亦然。解决:设立两个信号灯解决:设立两个信号灯mutex1、mutex2,其初值都为其初值都为1,分,分别控制别控制front与与rear的互斥问题的互斥问题4)问题进一步讨论:)问题进一步讨论:生产者进程:生产者进程:生产一件产品生产一件产品x;p(empty);p(mutex);addqu

151、eue(rear,x);v(mutex);v(full);消费者进程:消费者进程:p(full);p(mutex);x=delqueue(front);v(mutex);v(empty);B)进程中进程中P、V操作的次序是重要的操作的次序是重要的。对换对换4)问题进一步讨论:)问题进一步讨论:生产者进程:生产者进程:生产一件产品生产一件产品x;p(mutex);p(empty);addqueue(rear,x);v(mutex);v(full);消费者进程:消费者进程:p(full);p(mutex);x=delqueue(front);v(mutex);v(empty);B)进程中进程中P、

152、V操作的次序是重要的操作的次序是重要的。生产者封锁了队列,若此时队已满,生产者在上等待,生产者封锁了队列,若此时队已满,生产者在上等待,由于队列已经封锁,消费者也无法从仓库取产品由于队列已经封锁,消费者也无法从仓库取产品死锁死锁C)计算机中进程之间的同步问题大部分可以化为生产计算机中进程之间的同步问题大部分可以化为生产者和消费者问题。者和消费者问题。3.3.2 3.3.2 读者读者- -写者问题写者问题1 1)问题描述:)问题描述:一个公告版,许多人可以同时读,公告版一个公告版,许多人可以同时读,公告版有人负责维护。有人负责维护。2 2)制约关系:)制约关系:多人可同时读,之间没有制约联系;维

153、护者多人可同时读,之间没有制约联系;维护者只有在没有人读的情况下才能修改公告版。只有在没有人读的情况下才能修改公告版。注:类似问题,一个文件可能被多个进程共享,为了保证注:类似问题,一个文件可能被多个进程共享,为了保证读写的正确性和文件的一致性,就要求,当有读进程读文读写的正确性和文件的一致性,就要求,当有读进程读文件时,不允许任何写进程写,但允许多个读进程同时读;件时,不允许任何写进程写,但允许多个读进程同时读;当有写进程写时,不允许任何读者进行读。当有写进程写时,不允许任何读者进行读。3)实现考虑:)实现考虑:读者具有高的优先级,读者具有高的优先级,CourtoisCourtois等人的解

154、法等人的解法 A A) 一个记数器一个记数器r_countr_count,记录读者数,初值是记录读者数,初值是0 0,来一个读者加,来一个读者加1 1,走,走一个读者减一个读者减1;1;在在r_countr_count不不为为0 0时,写者不能进行写。时,写者不能进行写。 B B) wmutexwmutex信号灯,初值是信号灯,初值是1 1,控制写者,控制写者 C C) rmutexrmutex信号灯信号灯, ,初值是初值是1 1,控制对,控制对r_countr_count的修改,因为多个读者可能的修改,因为多个读者可能同时提出对同时提出对r_countr_count的修改。的修改。读者进程:

155、读者进程:p(rmutex);r_count+;if(r_count=1)p(wmutex);v(rmutex);读操作;读操作;p(rmutex);r_count-;if(r_count=0)v(wmutex);v(rmutex);写进程:写进程:p(wmutex);写操作;写操作;v(wmutex);3.3.3 3.3.3 哲学家进餐问题哲学家进餐问题1)1)问题描述:问题描述:6565年,年,DijkstraDijkstra提出并解决了一个他称之为提出并解决了一个他称之为哲学家进餐问题哲学家进餐问题; 问题是问题是:5:5个哲学家围绕一张圆桌而坐,每个哲学家前面个哲学家围绕一张圆桌而坐,

156、每个哲学家前面有一碟空心面,由于面很滑,所以要两把叉子才能夹住。有一碟空心面,由于面很滑,所以要两把叉子才能夹住。相邻两个碟子之间有一把叉子。相邻两个碟子之间有一把叉子。2)2)制约关系:制约关系:哲学家只有两种活动,哲学家只有两种活动,在感觉到饿时,分两次取左边和右在感觉到饿时,分两次取左边和右边的叉子(不分次序),如果成功边的叉子(不分次序),如果成功的得到两把叉子,就吃饭,吃完后的得到两把叉子,就吃饭,吃完后继续思考。继续思考。要求:要求:给出一个解决方法的描述。给出一个解决方法的描述。3)方法)方法(哲学家逆时针编号哲学家逆时针编号1-5,叉子也相应编号),叉子也相应编号)214352

157、3451voidphilosopher(i)while(1)思考思考();take_fork(i);take_fork(i%5+1);吃面;吃面;put_fork(i%5+1);put_fork(i);问题:所有哲学家拿起了左边的叉问题:所有哲学家拿起了左边的叉子,全部封锁在右边叉子上子,全部封锁在右边叉子上死死锁。锁。解决解决1:在拿到左叉子后,若右叉子:在拿到左叉子后,若右叉子不空,重新放下左叉子。不空,重新放下左叉子。不行不行,可能在某个瞬间哲学家同时拿起左叉,发现右叉不能用,又同,可能在某个瞬间哲学家同时拿起左叉,发现右叉不能用,又同时放下;一段时间后又同时拿左叉,时放下;一段时间后又

158、同时拿左叉,.,这样,进入了无限制的死,这样,进入了无限制的死循环。循环。饥饿饥饿3)方法)方法(哲学家逆时针编号(哲学家逆时针编号1-5,叉子也相应编号),叉子也相应编号)2143523451voidphilosopher(i)while(1)思考思考();take_fork(i);take_fork(i%5+1);吃面;吃面;put_fork(i%5+1);put_fork(i);问题:所有哲学家拿起了左边的叉问题:所有哲学家拿起了左边的叉子,全部封锁在右边叉子上子,全部封锁在右边叉子上死死锁。锁。解决解决2:在拿到左叉子后,若右叉不空,:在拿到左叉子后,若右叉不空,随机等待一段时间放下左

159、叉子。随机等待一段时间放下左叉子。一般可行一般可行,但更希望有完全正确的方案,这个方案不会依赖于一串不,但更希望有完全正确的方案,这个方案不会依赖于一串不可靠的随机数而失效。可靠的随机数而失效。3)方法)方法(哲学家逆时针编号(哲学家逆时针编号1-5,叉子也相应编号),叉子也相应编号)2143523451voidphilosopher(i)while(1)思考思考();take_fork(i);take_fork(i%5+1);吃面;吃面;put_fork(i%5+1);put_fork(i);问题:所有哲学家拿起了左边的叉问题:所有哲学家拿起了左边的叉子,全部封锁在右边叉子上子,全部封锁在右

160、边叉子上死死锁。锁。解决解决3:增加一个信号灯:增加一个信号灯mutex,初值是初值是1,拿叉子前执行拿叉子前执行p(mutex),放下叉子后执行放下叉子后执行v(mutex)。可行可行,五把叉允许两位哲学家同时进餐。但此解决方法,同一时刻只,五把叉允许两位哲学家同时进餐。但此解决方法,同一时刻只能有一个哲学家进餐,造成资源浪费。能有一个哲学家进餐,造成资源浪费。p(mutex)v(mutex)4)方法)方法2增加数组增加数组state,statei代表第代表第i个哲学家的状态个哲学家的状态,,一组信号灯,一组信号灯s,si对应第对应第i个哲个哲学家学家,在他想进餐时,而没有所需叉子时能阻塞,

161、初值是在他想进餐时,而没有所需叉子时能阻塞,初值是0。哲学家的编号为。哲学家的编号为0到到N-1。哲学家哲学家i的左邻右舍分别由宏的左邻右舍分别由宏LEFT与与RIGHT求得。求得。#defineN5/哲学家数(哲学家编号哲学家数(哲学家编号0到到N-1)#defineLEFT(i!=0)?i-1:N-1 /哲学家哲学家i的左邻居号的左邻居号#defineRIGHT(i+1)%N/哲学家哲学家i的右邻居号的右邻居号enumSTATETHINKING,HUNGRY,EATING;/分别对应思考、分别对应思考、饥饿想拿叉子、正在进餐饥饿想拿叉子、正在进餐STATEstateN;/记录每个人的状态数

162、组记录每个人的状态数组intmutex=1; /互斥信号灯,互斥信号灯,intsN;/全程量,初值是全程量,初值是0,当信号灯用,当信号灯用voidphilosopher(i)/i代表哲学家号,从代表哲学家号,从0到到N-1,以下同以下同while(1)/无限循环无限循环思考;思考;take_forks(i);/需要叉子或阻塞需要叉子或阻塞进餐;进餐;put_forks(i);/把两把叉子放回桌上把两把叉子放回桌上voidtake_forks(i)p(mutex);/进入临界区,保证对进入临界区,保证对state数组的互斥操作数组的互斥操作statei=HUNGRY;/记录哲学家饥饿的事实记录

163、哲学家饥饿的事实test(i);/试图得到两把叉子试图得到两把叉子v(mutex);/离开临界区离开临界区p(si);/如果得不到叉子,在对应自己的信号灯上阻塞如果得不到叉子,在对应自己的信号灯上阻塞续前页续前页voidput_forks(i)p(mutex);/进入临界区,保证对进入临界区,保证对state数组的互斥操作数组的互斥操作statei=THINKING;/哲学家进餐结束哲学家进餐结束test(LEFT);/检测左邻居现在能否进餐检测左邻居现在能否进餐test(RIGHT); /检测右邻居现在能否进餐检测右邻居现在能否进餐v(mutex);/离开临界区离开临界区voidtest(i

164、)if(statei=HUNGRY&stateLEFT!=EATING&stateRIGHT!=EATING)statei=EATING;v(si);续前页续前页哲学家进餐问题自从提出以后,每个发明新的同步原语哲学家进餐问题自从提出以后,每个发明新的同步原语的人都希望通过解决该问题来展示其同步原语的精妙之处。的人都希望通过解决该问题来展示其同步原语的精妙之处。3.3.3其它的经典同步问题其它的经典同步问题1)睡眠理发师)睡眠理发师理发店有一个理发师并有若干张椅子,没人理发时,理理发店有一个理发师并有若干张椅子,没人理发时,理发师睡眠。若有人来,理发师正在睡觉,则喊醒他;若在工发师睡眠。若有人来

165、,理发师正在睡觉,则喊醒他;若在工作且有空椅子则等待,否则回去。理发师理完一个人,若有作且有空椅子则等待,否则回去。理发师理完一个人,若有人人等待,等待的人继续理发,若没有人了继续睡觉。等待,等待的人继续理发,若没有人了继续睡觉。2)单行的独木桥)单行的独木桥跨在小河上的独木桥,两边都会有人要过桥。设计一个跨在小河上的独木桥,两边都会有人要过桥。设计一个安全的方案,使能顺利的过桥。安全的方案,使能顺利的过桥。管程简介管程简介Hore(74年)和年)和BrinchHansen(75年)提出了一种高级同年)提出了一种高级同步原语,称为步原语,称为管程管程。组成:组成:由过程、变量及数据结构等组成的

166、一个集合,它们组由过程、变量及数据结构等组成的一个集合,它们组成一个特殊的模块和软件包。进程可以在任何需要的时候调成一个特殊的模块和软件包。进程可以在任何需要的时候调用管程中的过程,但它们不能在管程外说明的过程中直接访用管程中的过程,但它们不能在管程外说明的过程中直接访问管程内的数据结构。问管程内的数据结构。目的:目的:简化简化P、V操作可能引起的不正确操作。操作可能引起的不正确操作。任任一时刻管程中只能有一个活跃进程。管程是一种编程语一时刻管程中只能有一个活跃进程。管程是一种编程语言的构件,编译器知道它们的特殊性。因此可以采用与其它言的构件,编译器知道它们的特殊性。因此可以采用与其它过程调用

167、不同的方法处理过程调用。过程调用不同的方法处理过程调用。典型典型用法:当一个进程调用管程中的过程时,前几条指令用法:当一个进程调用管程中的过程时,前几条指令将检查在管程中是否有其它的活跃进程。如果有,调用进程将检查在管程中是否有其它的活跃进程。如果有,调用进程将被挂起,直到有一个进程离开管程将其唤醒。如果没有活将被挂起,直到有一个进程离开管程将其唤醒。如果没有活跃进程,则调用进程进入管程。跃进程,则调用进程进入管程。进入管程时的互斥由编译器负责。进入管程时的互斥由编译器负责。生产者进程:生产者进程:生产一件产品生产一件产品x;p(empty);p(mutex);addqueue(rear,x)

168、;v(mutex);v(full);消费者进程:消费者进程:p(full);p(mutex);x=delqueue(front);v(mutex);v(empty);add(i)delete(k)3.5 3.5 进程之间的通信进程之间的通信低级通信和高级通信低级通信和高级通信低级通信:只能传递少量信息,如前述的进程互斥和同低级通信:只能传递少量信息,如前述的进程互斥和同步所采用的信号量。特点是传送信息量小:效率低,每步所采用的信号量。特点是传送信息量小:效率低,每次通信传递的信息量固定,若传递较多信息则需要进行次通信传递的信息量固定,若传递较多信息则需要进行多次通信。多次通信。高级通信:能够在

169、进程之间传送大量的数据。高级通信:能够在进程之间传送大量的数据。3.5.13.5.1进程通信的类型进程通信的类型 高高级级进进程程通通讯讯由由于于数数据据量量大大,进进程程可可采采用用多多种种通通信信方方式式:消消息息缓缓冲冲、信信箱箱、管管道道、共共享享文文件件和和共共享享内内存存区区等等。给给进进程程间间通通信信提提供供了了灵灵活活性性。并并为为计计算算机机网网络络的的开开发发控控制制奠奠定定了基础。了基础。一、消息缓冲一、消息缓冲 系系统统设设置置一一个个大大的的缓缓冲冲区区,作作为为消消息息缓缓冲冲池池,它它又又分分成成若干消息缓冲区,每个放一个消息。若干消息缓冲区,每个放一个消息。

170、两两个个进进程程之之间间的的通通信信隐隐含含着着两两者者之之间间的的同同步步方方式式:首首先先接收者必须有进程向它发来信息后才能接收信息。接收者必须有进程向它发来信息后才能接收信息。 进程发送消息,有两个可能:进程发送消息,有两个可能: 1 1)发送完信息后,不等信息被接收就继续前进;)发送完信息后,不等信息被接收就继续前进; 2 2)发送完信息后,阻塞等待,直到收到接收者的回答)发送完信息后,阻塞等待,直到收到接收者的回答消息才继续前进。消息才继续前进。 接收进程也存在两个可能:接收进程也存在两个可能: 1 1)若已有消息,则接收这个消息后继续前进;)若已有消息,则接收这个消息后继续前进;

171、2 2)若若消消息息还还沒沒有有发发来来,它它可可能能等等待待消消息息的的到到来来,或或者者放放弃接收而继续前进。弃接收而继续前进。 所所以以,接接收收者者和和发发送送者者进进程程在在采采用用消消息息通通信信方方式式时时,有有三种组合:三种组合:1 1)非阻塞发送,阻塞接收)非阻塞发送,阻塞接收 发送进程发完消息后继续前进,接收进程接收消息时,若消息未到发送进程发完消息后继续前进,接收进程接收消息时,若消息未到则阻塞等待。在这种方式下,允许一个进程尽快地向各接收进程发送则阻塞等待。在这种方式下,允许一个进程尽快地向各接收进程发送一个或多个消息,各接收进程要阻塞等待消息的到来。一个或多个消息,各

172、接收进程要阻塞等待消息的到来。2 2)非阻塞发送,非阻塞接收)非阻塞发送,非阻塞接收 这是目前多用户系统广泛采用的信件通信方式。发送进程发完消这是目前多用户系统广泛采用的信件通信方式。发送进程发完消息继续前进,接收进程在检测消息时,若有消息,它处理,否则继续息继续前进,接收进程在检测消息时,若有消息,它处理,否则继续前进。(比如,前进。(比如,UNIXUNIX系统在每次系统调用返回前,要检测有无消息到系统在每次系统调用返回前,要检测有无消息到达)达)这两种通信方式称为这两种通信方式称为单向通信方式单向通信方式3 3阻塞发送,阻塞接收阻塞发送,阻塞接收 发送进程在发送完消息后阻塞等待接收者进程发

173、送应发送进程在发送完消息后阻塞等待接收者进程发送应答信息后才能继续前进;接收者进程在接收到信息前,阻答信息后才能继续前进;接收者进程在接收到信息前,阻塞等待,直到接收到信息后再向发送者进程发送一个回答塞等待,直到接收到信息后再向发送者进程发送一个回答信息。这称之为双向通信。信息。这称之为双向通信。 发送发送进程进程发送信息发送信息信息信息缓冲区缓冲区接收信息接收信息接收接收进程进程发送发送进程进程发信息发信息接回答接回答信息信息缓冲区缓冲区接收接收进程进程接收信息接收信息发送回答发送回答 现在操作系统都提供有用于消息缓冲通信的系统调用接口现在操作系统都提供有用于消息缓冲通信的系统调用接口(原语

174、):(原语): ( (1) 1) 发送信息发送信息 send(send(接收者接收者, ,消息缓冲消息缓冲) ) 处理情况:当发送进程要发送信息时,便申请一信息缓冲区存放信息。然处理情况:当发送进程要发送信息时,便申请一信息缓冲区存放信息。然后将消息正文传送到该缓冲区中,并填入有关参数之后将信息始址及长度以后将消息正文传送到该缓冲区中,并填入有关参数之后将信息始址及长度以及本进程的进程标识号一起发送给接收者进程。(将该消息缓冲区挂到接收及本进程的进程标识号一起发送给接收者进程。(将该消息缓冲区挂到接收进程的消息链上)进程的消息链上)(2 2)接收信息接收信息 receive(receive(发

175、送者,消息缓冲发送者,消息缓冲) ) 其中其中“发送者发送者”是指发送信息的进程名。是指发送信息的进程名。接收原语接收原语receivereceive的主要的主要工作是检查消息链上是否有消息,若有,将消息接收到缓冲区;若无,工作是检查消息链上是否有消息,若有,将消息接收到缓冲区;若无,则阻塞等待消息的到来。则阻塞等待消息的到来。 receive(receive(消息缓冲消息缓冲) ):进程检查自己的消息链,若有消息处理,否则:进程检查自己的消息链,若有消息处理,否则返回,进程继续。返回,进程继续。两者差异:前者进程主动发出后等消息,后者则在一些特定条件下两者差异:前者进程主动发出后等消息,后者

176、则在一些特定条件下执行(比如系统调用返回前检测有无消息到达)执行(比如系统调用返回前检测有无消息到达)内部id已运行时间自最近一次占用CPU到现在的时间调度优先权进程状态用户id一个一个PCB的内容到目前为止应有:的内容到目前为止应有:进程代码位置指针进程数据位置指针进程栈空间位置指针进程运行现场消息链首指针阻塞原因父进程号用于文件管理的其它信息消息链尾指针发送进程发送进程 p p1 1发发“Hello”Hello”char s100;char s100;.strcpy(s,”Hellostrcpy(s,”Hello”);”);m_b=new M;m_b=new M;m_b.count=str

177、len(s)+1;m_b.count=strlen(s)+1;m_b.link=new charm_b.countm_b.link=new charm_b.countstrcpy(m_b.link,sstrcpy(m_b.link,s););send(p2,m_b)send(p2,m_b);delete m_b.link;delete m_b.link;delete m_b;delete m_b;.例:设消息例:设消息M格式为:格式为:字节数(count)缓冲地址(link)执行到执行到send后,转到操作系统后,转到操作系统内处理消息,内处理消息,send此时的此时的主要主要工作是:工作是:

178、(1)申请核心用缓冲,将用户申请核心用缓冲,将用户空间的消息按操作系统内定格空间的消息按操作系统内定格式复制到一个操作系统缓冲。式复制到一个操作系统缓冲。(2)找到接收进程的找到接收进程的PCB(3)做做P操作封锁进程消息链操作封锁进程消息链(4)消息插入链表消息插入链表(5)做操作解封消息链做操作解封消息链(6)结束结束receive工作:工作:(1)做做P操作封锁进程消息链操作封锁进程消息链(2)消息链空转消息链空转(7),(3)从消息链头摘下消息从消息链头摘下消息(4)消息复制到进程自己的数据空间消息复制到进程自己的数据空间(5)做操作解封消息链做操作解封消息链(6)结束结束(7)若是第

179、一种格式阻塞自己若是第一种格式阻塞自己(8)转转(5)send(p2,m_buffer)转到核心态完成转到核心态完成send分配核心空间分配核心空间数据从用户空数据从用户空间复制间复制Hello06NULL进程的进程的PCBNULLNULLreceive(buffer)Hello06NULL进程的进程的PCB封锁消息链封锁消息链摘除链尾结点摘除链尾结点receive(buffer)Hello06NULL进程的进程的PCB封锁消息链封锁消息链摘除链尾结点摘除链尾结点receive(buffer)Hello06NULL进程的进程的PCB封锁消息链封锁消息链摘除链尾结点摘除链尾结点receive(b

180、uffer)Hello06NULL进程的进程的PCB封锁消息链封锁消息链摘除链尾结点摘除链尾结点receive(buffer)Hello06NULL进程的进程的PCB封锁消息链封锁消息链摘除链尾结点摘除链尾结点receive(buffer)Hello06NULL进程的进程的PCB封锁消息链封锁消息链摘除链尾结点摘除链尾结点将摘下的消将摘下的消息缓冲区的息缓冲区的内容复制到内容复制到receive中给中给出的缓冲中出的缓冲中解封消息链解封消息链释放消息缓冲区释放消息缓冲区二、信箱二、信箱 高级通信第二种实现方法是系统为每个进程设立一高级通信第二种实现方法是系统为每个进程设立一个信箱。每个信箱可容

181、纳多封信件。个信箱。每个信箱可容纳多封信件。此信箱的信件由系此信箱的信件由系统执行发送原语将信件投入指定信箱,由接收者自行接统执行发送原语将信件投入指定信箱,由接收者自行接收信件并进行处理。信箱一般用在用户级,系统提供了收信件并进行处理。信箱一般用在用户级,系统提供了若干系统调用处理。若干系统调用处理。三三、客户客户-服务器通信服务器通信套接字(套接字(Sockets)远过程调用(远过程调用(RemoteProcedureCalls)远方法调用(远方法调用(RemoteMethodInvocation)Java套接字是网络通信的端点套接字是网络通信的端点。一个套接字由一个套接字由IP地址和地址

182、和port组成组成例如套接字例如套接字161.25.19.8:1625指的是指的是IP地址地址为为161.25.19.8主机上的主机上的1625号端口号端口。通信在一对套接字之间完成通信在一对套接字之间完成。套接字套接字146.86.5.20/1625套接字套接字161.25.19.8/80主机主机(146.86.5.20)网络服务器网络服务器(161.25.19.8)当客户机进程发出连接请求当客户机进程发出连接请求时时,被主机赋予一个端口号。被主机赋予一个端口号。(大于(大于1024,小于该数的端口,小于该数的端口是有约定的)是有约定的)套接字套接字146.86.5.20/1625套接字套接

183、字161.25.19.8/80主机主机(146.86.5.20)网络服务器网络服务器(161.25.19.8)当当IP为为146.85.5.20的主机的主机X的客户的客户机与机与IP为为161.25.19.8(监听端口监听端口80)建建立连接立连接,主机可能赋予端口号主机可能赋予端口号1625(服服务器端指定)。务器端指定)。一对套接字:一对套接字:主机:主机:161.25.19.8/1625服务器:服务器:161.25.19.8/80套接字套接字146.86.5.20/1625套接字套接字161.25.19.8/80主机主机(146.86.5.20)网络服务器网络服务器(161.25.19.

184、8)根据目的端口号,在机器间传输根据目的端口号,在机器间传输的数据包可给合适的进程。的数据包可给合适的进程。所有连接必须唯一,若所有连接必须唯一,若X上还有上还有其它进程希望同服务器建立连接,其它进程希望同服务器建立连接,则会被赋予另一个大于己于则会被赋予另一个大于己于1024但但不是不是1625的端口号。的端口号。客户机客户机/ /服务器过程服务器过程 在在TCP/IPTCP/IP网络中两个进程间的相互作用的主机模式是客户机网络中两个进程间的相互作用的主机模式是客户机/ /服服务器模式务器模式( (Client/Server model)Client/Server model)。该模式的建立

185、基于以下两点:该模式的建立基于以下两点:1 1、非、非对等作用;对等作用;2 2、通信完全是异步的。客户机、通信完全是异步的。客户机/ /服务器模式在操作过程中采服务器模式在操作过程中采取的是主动请示方式:取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务:首先服务器方要先启动,并根据请示提供相应服务:1 1、打开一通信通道并告知本地主机,它愿意在某一个公认端口上接收、打开一通信通道并告知本地主机,它愿意在某一个公认端口上接收客户请求。客户请求。2 2、等待客户请求到达该端口。、等待客户请求到达该端口。3 3、接收到重复服务请求,处理该请求并发送应答信号。、接收到重复服务请求,处

186、理该请求并发送应答信号。4 4、返回第二步,等待另一客户请求、返回第二步,等待另一客户请求5 5、关闭服务器。、关闭服务器。客户方:客户方:1 1、打开一通信通道,并连接到服务器所在主机的特定端口。、打开一通信通道,并连接到服务器所在主机的特定端口。2 2、向服务器发送服务请求报文,等待并接收应答;继续提出请求、向服务器发送服务请求报文,等待并接收应答;继续提出请求3 3、请求结束后关闭通信通道并终止。、请求结束后关闭通信通道并终止。特点:普遍和高效,属于较为特点:普遍和高效,属于较为低层的分布式通信;套接字只允低层的分布式通信;套接字只允许在通信线程之间交换无结构的许在通信线程之间交换无结构

187、的字节流。客户机或服务器要加上字节流。客户机或服务器要加上适当的数据结构。适当的数据结构。远过程调用远过程调用(RPC)(RPC) 是一种进程和网络服务之间是一种进程和网络服务之间抽象的过程调用机制。抽象的过程调用机制。RPCRPC通信交换的消息有通信交换的消息有很好的结构而不再仅仅是数据包。这些消息传很好的结构而不再仅仅是数据包。这些消息传递给远程系统监听端口的递给远程系统监听端口的RPCRPC后台,它们包含后台,它们包含要执行函数的名称和传递的参数。要执行函数的名称和传递的参数。第第4章章调度与死锁调度与死锁调度目的:处理机调度的工作是对调度目的:处理机调度的工作是对CPUCPU资源进行合

188、理资源进行合理的分配使用,以提高处理机利用率,并使各用户公平地的分配使用,以提高处理机利用率,并使各用户公平地得到处理机资源得到处理机资源。4.1 4.1 调度的类型和模型调度的类型和模型4.1.1调度类型调度类型1)低级(短期)调度)低级(短期)调度:确定选择哪个就绪的进程占有确定选择哪个就绪的进程占有CPU,所以也称为所以也称为处理机调度,进程调度处理机调度,进程调度2)高级(长期、作业)调度:)高级(长期、作业)调度:确定哪些作业从外存调入内存确定哪些作业从外存调入内存作业:作业:(用户)利用计算机进行一次运行所需工作的集合(用户)利用计算机进行一次运行所需工作的集合(比如,编辑、编译,

189、运行等)。要执行一个程序,用户必(比如,编辑、编译,运行等)。要执行一个程序,用户必须先提交一个作业。须先提交一个作业。通过批输入设备(卡片、纸带、磁带)通过批输入设备(卡片、纸带、磁带)批处理作业。批处理作业。通过终端启动的作业通过终端启动的作业交互式作业。交互式作业。提交作业方式提交作业方式 :注:注:用户进程在运行过程中,也可能会产生由系统管理的后用户进程在运行过程中,也可能会产生由系统管理的后台作业,比如打印作业。这些作业在条件满足时,由系统调度台作业,比如打印作业。这些作业在条件满足时,由系统调度执行。执行。3 3)中级(中期)调度:)中级(中期)调度:为提高效率,加快进程运行,调节

190、系为提高效率,加快进程运行,调节系统的负荷,统的负荷,有时需要在选择内存中阻塞或就绪的进程暂时放到外存(一有时需要在选择内存中阻塞或就绪的进程暂时放到外存(一般是硬盘),即所谓的般是硬盘),即所谓的挂起挂起。这种内外存的数据交换称为。这种内外存的数据交换称为对对换换。中级调度解决:中级调度解决:在阻塞或就绪的进程中选择哪个(些)进程挂起在阻塞或就绪的进程中选择哪个(些)进程挂起在条件允许下,在外存挂起的进程集合中如何选进程激活在条件允许下,在外存挂起的进程集合中如何选进程激活并调回内存并调回内存外存外存对换对换作业输入作业输入spooling输入程序输入程序spooling作业调度作业调度就就

191、绪绪阻阻塞塞就就绪绪运运行行完完成成阻塞阻塞后后备备作业输出作业输出4)三种调度之间的关系如图)三种调度之间的关系如图低级调度低级调度中级调度中级调度4.1.2 4.1.2 调度队列模型调度队列模型一、仅有进程调度的调度队列模型一、仅有进程调度的调度队列模型 特点:单就绪、单阻塞队列特点:单就绪、单阻塞队列就就队队 列列绪绪CPU进程调度进程调度进程完成进程完成时间片完时间片完阻阻队队 列列塞塞交互用户交互用户等待事件等待事件事事件件出出现现二、具有高级和低级的调度队列模型二、具有高级和低级的调度队列模型特点特点 :1)1)具有进程调度、作业调度具有进程调度、作业调度 2) 2)根据阻塞原因设

192、置了多个阻塞队列根据阻塞原因设置了多个阻塞队列后后队队 列列备备1阻阻队队 列列塞塞作作业业调调度度就就队队 列列绪绪CPU进程调度进程调度进程完成进程完成时间片完时间片完等待事件等待事件1事件事件1出现出现2阻阻队队 列列塞塞n阻阻队队 列列塞塞等待事件等待事件2等待事件等待事件n事件事件2出现出现事件事件n出现出现三、同时具有三级调度的调度队列模型三、同时具有三级调度的调度队列模型作作业业调调度度就就队队 列列绪绪CPU进程调度进程调度进程完成进程完成时间片完时间片完事事件件出出现现阻阻 塞塞列列、起起 队队挂挂阻阻队队 列列塞塞等待事件等待事件就绪、挂起队列就绪、挂起队列事件出现事件出现

193、挂起挂起中级调度中级调度后后队队 列列备备交互型作业交互型作业批量作业批量作业挂起挂起选择哪种模型应根据系统的规模及目标制定选择哪种模型应根据系统的规模及目标制定4.1.3 4.1.3 调度目标和若干术语及衡量标准调度目标和若干术语及衡量标准1、调度目标:、调度目标:1)公平公平确保每个进程获得合理的确保每个进程获得合理的CPU份额份额2)效率效率是百分之百地忙碌是百分之百地忙碌3)响应时间响应时间使交互用户的响应时间尽可能短使交互用户的响应时间尽可能短4)周转时间周转时间使批处理用户等待输出的时间尽可能短使批处理用户等待输出的时间尽可能短5)吞吐量吞吐量使每小时处理的作业数量多使每小时处理的

194、作业数量多以上调度目标有矛盾之处,不可能满足所有情况,取以上调度目标有矛盾之处,不可能满足所有情况,取决于系统设计目标决于系统设计目标2、有关术语及衡量标准、有关术语及衡量标准周转时间周转时间T:批处理系统的一个重要指标。指作业从提交到批处理系统的一个重要指标。指作业从提交到完成(得到结果)所经历的时间。完成(得到结果)所经历的时间。包括:包括:1)在外存后备队列中等待时间;)在外存后备队列中等待时间;2)CPU上执行时间;上执行时间;3)就绪队列和阻塞队列中等待时间;)就绪队列和阻塞队列中等待时间;4)结果输出等待时间。)结果输出等待时间。周转时间常用以下参数衡量周转时间常用以下参数衡量(原

195、则上越小越好)(原则上越小越好)平均周转时间平均周转时间:带权周转时间带权周转时间:其中其中:Ti/Tsi为第为第i个个作业的带权周转时间,作业的带权周转时间,Tsi系统为第系统为第i个作个作业提供的实际服务时间业提供的实际服务时间响应时间:响应时间:分时系统的一个重要指标。用户输入一个请求分时系统的一个重要指标。用户输入一个请求(如击键)到系统给出首次响应(如屏幕显示)的时间。(如击键)到系统给出首次响应(如屏幕显示)的时间。包括:包括:1 1)从终端的键盘输入的一个请求信息传送到处理机的)从终端的键盘输入的一个请求信息传送到处理机的时间;时间;2 2)处理机对请求的处理时间;)处理机对请求

196、的处理时间;3 3)处理结果送到终端)处理结果送到终端显示器的时间。显示器的时间。吞吐量:吞吐量:批处理系统的一个重要指标。单位时间内所完成的作批处理系统的一个重要指标。单位时间内所完成的作业数。业数。处理机利用率:处理机利用率:大中型主机多用户系统的性能指标,因为系统大中型主机多用户系统的性能指标,因为系统价格昂贵,所以非常重视其价格昂贵,所以非常重视其CPUCPU利用率。利用率。PCPC一般不考虑这个一般不考虑这个指标。指标。各种设备的均衡利用:各种设备的均衡利用:大中型主机多用户系统性能指标。如大中型主机多用户系统性能指标。如CPUCPU繁忙的作业和繁忙的作业和I/OI/O繁忙的作业搭配

197、。对繁忙的作业搭配。对PCPC及实时系统该指及实时系统该指标并不重要。标并不重要。4.2 4.2 调度算法调度算法一、调度的时机一、调度的时机 调度的时机是与调度方式有关,一般在以下情况下会发生调度的时机是与调度方式有关,一般在以下情况下会发生进程调度:进程调度:(1 1)正在执行的进程正常结束或由于某种错误而终止运行;)正在执行的进程正常结束或由于某种错误而终止运行;(2 2)执行中的进程提出)执行中的进程提出I/OI/O请求,在等待请求,在等待I/OI/O完成前,进程阻塞,完成前,进程阻塞,转进程调度;转进程调度;(3 3)在分时系统中,按照时间片轮转,分给进程的时间片用完)在分时系统中,

198、按照时间片轮转,分给进程的时间片用完时;时; (4 4)按照优先级调度,有更高优先级进程变为就绪时;)按照优先级调度,有更高优先级进程变为就绪时;(5 5)在进程通讯中,执行中的进程执行了某种原语操作,如在进程通讯中,执行中的进程执行了某种原语操作,如P操作、阻塞原语和唤醒原语时,都可能引起进程调度。操作、阻塞原语和唤醒原语时,都可能引起进程调度。二、常用的调度方法二、常用的调度方法1. 1. 先来先服务(先来先服务(FCFSFCFS算法)算法) 按照作业提交或进程变为就绪状态的先后次序,分派按照作业提交或进程变为就绪状态的先后次序,分派CPUCPU;当前作业或进程占用当前作业或进程占用CPU

199、CPU,直到执行完或阻塞,才主动地出让直到执行完或阻塞,才主动地出让CPUCPU。特点:非常简单,易于实现;但对短作业而言,带权周转时特点:非常简单,易于实现;但对短作业而言,带权周转时间可能太大。间可能太大。特点:特点:比比FCFSFCFS改善了平均周转时间和平均带权周转时间,缩短作业改善了平均周转时间和平均带权周转时间,缩短作业的等待时间,提高了系统的吞吐量;的等待时间,提高了系统的吞吐量;对长作业非常不利,可能长时间得不到执行;对长作业非常不利,可能长时间得不到执行;难以准确估计作业(进程)的执行时间,从而影响调度性能难以准确估计作业(进程)的执行时间,从而影响调度性能2.2.短作业(进

200、程)优先短作业(进程)优先 对执行时间短的作业(进程)优先分派处理机。对执行时间短的作业(进程)优先分派处理机。什么是短作业?什么是短作业?以前没有执行过!以前没有执行过!按什么标准:按什么标准: 时间?时间?程序长度?程序长度?while(1);特点:特点:比比FCFSFCFS改善了平均周转时间和平均带权周转时间,缩短作业改善了平均周转时间和平均带权周转时间,缩短作业的等待时间,提高了系统的吞吐量;的等待时间,提高了系统的吞吐量;对长作业非常不利,可能长时间得不到执行;对长作业非常不利,可能长时间得不到执行;难以准确估计作业(进程)的执行时间,从而影响调度性能难以准确估计作业(进程)的执行时

201、间,从而影响调度性能2.2.短作业(进程)优先短作业(进程)优先 对执行时间短的作业(进程)优先分派处理机。对执行时间短的作业(进程)优先分派处理机。什么是短作业?什么是短作业?由用户自己利用由用户自己利用作业控制语言说明程作业控制语言说明程序预计执行时间。序预计执行时间。3. 3. 时间片轮转时间片轮转 主要用于低级调度,是一种主要用于低级调度,是一种最古老、最简单、最公平且最古老、最简单、最公平且使用最广泛使用最广泛的方法。的方法。将将系统中所有的就绪进程按照系统中所有的就绪进程按照FCFSFCFS原则,排成一个队列。原则,排成一个队列。每次调度时将每次调度时将CPUCPU分派给队首进程,

202、让其执行一个时间片。分派给队首进程,让其执行一个时间片。在一个时间片结束时,发生时钟中断。调度程序据此暂停当在一个时间片结束时,发生时钟中断。调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾。(进程可以由于前进程的执行,将其送到就绪队列的末尾。(进程可以由于阻塞或已运行结束,在未用完一个时间片时,主动放弃阻塞或已运行结束,在未用完一个时间片时,主动放弃CPUCPU)。)。主要问题:主要问题:如何确定时间片的长短如何确定时间片的长短cpu效率效率=时间片长度时间片长度/(时间片长度时间片长度+调度切换时间调度切换时间)对一个系统,调度切换时间可近似看成定数。我们可以调对一个系统,调度切换时

203、间可近似看成定数。我们可以调整时间片长度改变整时间片长度改变cpu效率。效率。短:短:比如调度时间需比如调度时间需5050ms,ms,时间片时间片5050msms。效率效率=50%=50%。 用户的一次请求需要多个时间片才能处理完,切换次数增用户的一次请求需要多个时间片才能处理完,切换次数增加。加。长:长:时间片到时间片到500500msms,效率效率=99%=99%。 若有若有1010个进程,这十个用户若几乎同时按下键盘,从第个进程,这十个用户若几乎同时按下键盘,从第1 1个响个响应到他再次轮到运行要等应到他再次轮到运行要等 9*0.5=4.5 9*0.5=4.5秒秒远远超出能容忍的远远超出

204、能容忍的时间。时间。 等待时间一般不要超出等待时间一般不要超出1 1秒,因此应该有:秒,因此应该有:(时间片长度时间片长度+调度切换时间调度切换时间)*进程数进程数=1000ms所以:所以:时间片长度时间片长度=1000/进程数进程数-调度切换时间调度切换时间 1000/进程数进程数 对一个分时系统,联机的用户数是变化的。随进程数变化调对一个分时系统,联机的用户数是变化的。随进程数变化调整时间片长度是合理的。但由于进程数的变化几乎是连续不断整时间片长度是合理的。但由于进程数的变化几乎是连续不断的,所以没有必要随着实时的变化,这样系统开销也大。折衷的,所以没有必要随着实时的变化,这样系统开销也大

205、。折衷的办法是:进程数在一个区间范围内用一个时间片,在另一个的办法是:进程数在一个区间范围内用一个时间片,在另一个区间范围内,用另一个时间片。系统可以每间隔一段时间,检区间范围内,用另一个时间片。系统可以每间隔一段时间,检测当前进程数,确定有无必要调整时间片长度。测当前进程数,确定有无必要调整时间片长度。4 4、优先权调度、优先权调度 在分时基础上引入,下次运行进程按优先权调度,不再遵循在分时基础上引入,下次运行进程按优先权调度,不再遵循FCFSFCFS方法。方法。前者简单,在实时性要求不高或时间片不很长时可考虑;前者简单,在实时性要求不高或时间片不很长时可考虑;后者适合于实时要求高的场合,但

206、时刻要监视有否更高优后者适合于实时要求高的场合,但时刻要监视有否更高优先权的进程产生。先权的进程产生。1)优先权调度分为:优先权调度分为:非抢占式:非抢占式:除非主动地放弃除非主动地放弃CPUCPU或由于时间片到放弃或由于时间片到放弃CPUCPU,它不会被优先级更高的进程抢用它不会被优先级更高的进程抢用CPU。又可细分又可细分 用户态不可抢占用户态不可抢占 完全不可抢占完全不可抢占抢占方式:抢占方式:当前的进程在其时间片未用完时就可被优先级更当前的进程在其时间片未用完时就可被优先级更高的进程抢用高的进程抢用CPUCPU(自己进入就绪态)。自己进入就绪态)。抢占方式在实际的操作系统设计中也会有细

207、分:抢占方式在实际的操作系统设计中也会有细分:内核部分可抢占:内核部分可抢占:用户态时可以随时被抢占用户态时可以随时被抢占CPU,但当进程在核但当进程在核心态时则大部分时间都不可以抢用心态时则大部分时间都不可以抢用CPU,而只在某些时刻(称为而只在某些时刻(称为可抢占点,可抢占点,PreemptionPoint),),可以抢用可以抢用CPU。例:例:UNIXSVR4。内核完全不可抢占:内核完全不可抢占:用户态时可以随时被抢占用户态时可以随时被抢占CPU,但当进程但当进程在核心态时,则完全不可以被抢用在核心态时,则完全不可以被抢用CPU。例:例:UNIX(SVR3和和4.3BSDUNIX及其以前

208、的版本)、及其以前的版本)、WINDOWSNT。这些这些OS通通常在系统调用或中断处理时屏蔽大部分中断,系统调用返回或常在系统调用或中断处理时屏蔽大部分中断,系统调用返回或中断返回时再开放大部分中断。中断返回时再开放大部分中断。完全可抢占或内核完全可抢占:完全可抢占或内核完全可抢占:无论处于用户态还是核心态,无论处于用户态还是核心态,都可以随时被抢占都可以随时被抢占CPU。例:例:SUNSUN公司的公司的Solaris、Windows2000/XP。实际上,实际上,Solaris和和Windows2000/XP并不是并不是100%完全可抢占,只是将内核中不可抢占的代码段尽量减少而已。完全可抢占

209、,只是将内核中不可抢占的代码段尽量减少而已。任何任何OS都不可能是都不可能是100%的完全可抢占的。的完全可抢占的。2 2)优先权的类型)优先权的类型静态优先级静态优先级创建进程时就确定,直到进程终止前都不改变。通常是一个整创建进程时就确定,直到进程终止前都不改变。通常是一个整数。数。进程类型(系统进程优先级较高)进程类型(系统进程优先级较高) 依据依据 对资源的需求(对对资源的需求(对CPUCPU和内存需求较少的进程,优和内存需求较少的进程,优 先级较高)先级较高) 用户要求(紧迫程度和付费多少)用户要求(紧迫程度和付费多少)动态优先级动态优先级 创建进程时赋予的优先级,在进程运行过程中可以

210、自动改变,创建进程时赋予的优先级,在进程运行过程中可以自动改变,以便获得更好的调度性能(以便获得更好的调度性能(UNIXUNIX中采用)。中采用)。动态优先级的改变原则:动态优先级的改变原则: A A) 在就绪队列中,等待时间延长则优先级提高,从而使优先在就绪队列中,等待时间延长则优先级提高,从而使优先级较低的进程在等待足够的时间后,其优先级得到提高;级较低的进程在等待足够的时间后,其优先级得到提高; B B) 进程每执行一个时间片,就降低其优先级,从而一个进程进程每执行一个时间片,就降低其优先级,从而一个进程持续执行时,其优先级降低到出让持续执行时,其优先级降低到出让CPUCPU。5 5、高

211、响应比优先调度、高响应比优先调度响应比:响应比:R = (R = (等待时间等待时间 + + 要求执行时间要求执行时间) / ) / 要求执行时间要求执行时间是是FCFSFCFS(先来先服务)和先来先服务)和SJFSJF的折衷:的折衷:作业等待时间相同,服务时间越短,优先权越高作业等待时间相同,服务时间越短,优先权越高-SJFSJF;要求服务时间相同,等待时间越长,优先权越高要求服务时间相同,等待时间越长,优先权越高-FCFSFCFS;长长作业随着等待时间的增加,优先权增加。作业随着等待时间的增加,优先权增加。6 6、多级队列调度、多级队列调度使用多个就绪队列,各队列的区别对待,达到综合的调度

212、目使用多个就绪队列,各队列的区别对待,达到综合的调度目标。标。方法:方法:根据作业或进程的性质或类型的不同,将就绪队列再分为若根据作业或进程的性质或类型的不同,将就绪队列再分为若干个子队列(如前、后台进程,系统、用户进程等)。干个子队列(如前、后台进程,系统、用户进程等)。每个作业归入一个队列。每个作业归入一个队列。不同队列可有不同的优先级、时间片不同队列可有不同的优先级、时间片长度、调度策略等;在运行过程中还可改变进程所在队列。长度、调度策略等;在运行过程中还可改变进程所在队列。7 7、多级反馈队列调度、多级反馈队列调度 时间片轮转和优先级的综合及发展。时间片轮转和优先级的综合及发展。就绪队

213、列就绪队列1 1S1至至CPU就绪队列就绪队列2 2S2至至CPU就绪队列就绪队列3 3S3至至CPU就绪队列就绪队列n nSn至至CPU时间片:时间片:s1s2sn 多个就绪队列,赋予不同的优先级。队列多个就绪队列,赋予不同的优先级。队列1 1的优先级最高。的优先级最高。每个队列执行时间片的长度也不同,规定优先级越低则时间片每个队列执行时间片的长度也不同,规定优先级越低则时间片越长。越长。 新进程进入内存后,先投入队列新进程进入内存后,先投入队列1 1的末尾,按的末尾,按FCFSFCFS算法调算法调度;若一个时间片未完,投入到队列度;若一个时间片未完,投入到队列2 2的末尾,同样按的末尾,同

214、样按FCFSFCFS算算法调度;如此下去,降低到最后的队列。法调度;如此下去,降低到最后的队列。 仅当较高优先级的队列为空,才调度较低优先级的队列仅当较高优先级的队列为空,才调度较低优先级的队列中的进程执行。如果进程执行时有新进程进入较高优先级的中的进程执行。如果进程执行时有新进程进入较高优先级的队列,则抢先执行新进程,并把被抢先的进程投入原队列的队列,则抢先执行新进程,并把被抢先的进程投入原队列的末尾。末尾。8、公平分享调度策略、公平分享调度策略1986年年Bach提出:按进程组(用户)分配提出:按进程组(用户)分配CPU。以前的做法,按进程分配以前的做法,按进程分配CPU:A用户:用户:1

215、个进程个进程B用户用户:6个进程个进程C用户用户:3个进程个进程,10%的的CPU分额分额,60%的的CPU分额分额,30%的的CPU分额分额现在现在:每个用户都按:每个用户都按1/3的比例分配的比例分配CPUA用户的每个进程,用户的每个进程,1/3的的CPU分额分额B用户的每个进程,用户的每个进程,1/18的的CPU分额分额C用户的每个进程,用户的每个进程,1/9的的CPU分额分额 定义:假如在一个进程集合中的每个进程都在等待只能由定义:假如在一个进程集合中的每个进程都在等待只能由该集合中的其它一个进程才能引发的事件,这种状态被看成该集合中的其它一个进程才能引发的事件,这种状态被看成死死锁锁

216、。4.6 4.6 死锁的基本概念死锁的基本概念1 1、产生死锁的原因、产生死锁的原因 A A)竞争不可剥夺资源竞争不可剥夺资源 典型的打印机,磁带机等。典型的打印机,磁带机等。p2rel(r1)p2rel(r2)p2req(r2)p2req(r1)p1req(r1)p1req(r2)p1rel(r1)p1rel(r2)死死锁锁区区p1p2tt当进程推进到死锁区,进程必死当进程推进到死锁区,进程必死可通过增加资源来解决死锁,比如有两个可通过增加资源来解决死锁,比如有两个r1和两个和两个r2资源就不资源就不会发生死锁会发生死锁,但现实中是不可取的。但现实中是不可取的。资源不够一定死锁吗?资源不够一

217、定死锁吗?p1req(r1)p1req(r2)p1rel(r1)p1rel(r2)p1p2p2rel(r1)p2rel(r2)p2req(r2)p2req(r1)进程没有推进到死锁区,不会发生死锁进程没有推进到死锁区,不会发生死锁tt 定义:假如在一个进程集合中的每个进程都在等待只能由定义:假如在一个进程集合中的每个进程都在等待只能由该集合中的其它一个进程才能引发的事件,这种状态被看成该集合中的其它一个进程才能引发的事件,这种状态被看成死死锁锁。4.6 4.6 死锁的基本概念死锁的基本概念1 1、产生死锁的原因、产生死锁的原因 A A)竞争不可剥夺资源竞争不可剥夺资源 典型的打印机,磁带机等。

218、典型的打印机,磁带机等。B)B)进程推进顺序不当进程推进顺序不当2 2、产生死锁的必要条件、产生死锁的必要条件 C Coffmanoffman等人在等人在19711971年总结了年总结了4 4个个死锁的必要条件死锁的必要条件只有只有4 4个条件都满足时,才会出现死锁。个条件都满足时,才会出现死锁。(1)(1)互斥:一个资源要么分配给一个进程,要么空闲;互斥:一个资源要么分配给一个进程,要么空闲; (2)(2)请求和保持:进程可请求其余资源,但不主动释放请求和保持:进程可请求其余资源,但不主动释放已已 经占用的资源(部分分配)经占用的资源(部分分配)(3)(3)不剥夺:进程已经占用的资源,不会被

219、强制剥夺不剥夺:进程已经占用的资源,不会被强制剥夺(4)(4)环路等待:系统一定有两个或两个以上的进程组成环路等待:系统一定有两个或两个以上的进程组成的一条环路,该环路中的每个进程都在等待相邻进程正占用的一条环路,该环路中的每个进程都在等待相邻进程正占用的资源。的资源。4. 7 4. 7 死锁的解决死锁的解决一、鸵鸟策略(置之不理)鸵鸟策略(置之不理) 解决死锁的最简单方法就是鸵鸟算法。即像鸵鸟一样,解决死锁的最简单方法就是鸵鸟算法。即像鸵鸟一样,当遇到危险时,将头埋进沙子里,假装毫无问题。当遇到危险时,将头埋进沙子里,假装毫无问题。 当死锁在计算机中很少出现时,比如说每五年或更长时当死锁在计

220、算机中很少出现时,比如说每五年或更长时间才出现一次时,人们就不必花费更多的精力去解决它,间才出现一次时,人们就不必花费更多的精力去解决它,而是采用类似鸵鸟一样的办法忽略它。而是采用类似鸵鸟一样的办法忽略它。 以以UNIXUNIX系统为例,它潜在地存在死锁,但它并不花功系统为例,它潜在地存在死锁,但它并不花功夫去检测和解除死锁,而是忽略不去理它。夫去检测和解除死锁,而是忽略不去理它。如果死锁不花什么代价就能解决,那么什么问题也没有。如果死锁不花什么代价就能解决,那么什么问题也没有。但实际是代价很大,常会给进程带来很多不便的限制。所以,但实际是代价很大,常会给进程带来很多不便的限制。所以,需要在方

221、便性和正确性之间进行折衷,要充分考虑哪一个更重需要在方便性和正确性之间进行折衷,要充分考虑哪一个更重要,对象是谁,一般很难发现一般性的解决办法。要,对象是谁,一般很难发现一般性的解决办法。二、死锁的预防二、死锁的预防预防:是采用某种策略,限制并发进程对资源的请求,预防:是采用某种策略,限制并发进程对资源的请求,使系统在任何时刻都不满足死锁的必要条件。使系统在任何时刻都不满足死锁的必要条件。1)预先静态分配:)预先静态分配:预先分配所需全部所需资源,这样可保证不等待资源;预先分配所需全部所需资源,这样可保证不等待资源;降低了对资源的利用率(资源分配了可能不用)降低了对资源的利用率(资源分配了可能

222、不用)预先要知道所需资源;预先要知道所需资源;2)资源强制变为)资源强制变为“可剥夺可剥夺”的的在申请资源得不到时,占用资源也释放。在申请资源得不到时,占用资源也释放。实用中可行实用中可行吗?吗?3)破坏)破坏“环路等待环路等待”条件条件有序资源使用法:每个独享资源都给一个唯一序号,使用有序资源使用法:每个独享资源都给一个唯一序号,使用只能按序号申请资源,只能按序号申请资源,三、利用银行家算法避免死锁三、利用银行家算法避免死锁1 1、银行家算法思想、银行家算法思想 避免死锁的算法是避免死锁的算法是DijkstraDijkstra在在19651965年提出的,被称为银行年提出的,被称为银行家算法

223、。家算法。 这个算法是用来模拟一个小城镇的银行家为一批顾客贷款这个算法是用来模拟一个小城镇的银行家为一批顾客贷款的问题。的问题。 例:例: 有四个顾客:有四个顾客:A A,B B,C C,D D,每个顾客提出的最大贷每个顾客提出的最大贷款数量分别为款数量分别为6 6、5 5、4 4、7 7。银行家知道不是所有顾客都马上。银行家知道不是所有顾客都马上需要其全部贷款(需要其全部贷款(6+5+4+7=226+5+4+7=22)。)。因此,他只保留因此,他只保留1010个单位数量个单位数量( (而不是全部而不是全部2222个单位个单位) )为这些为这些顾客服务。顾客服务。银行家拥有量银行家拥有量:10

224、:10当前剩余量当前剩余量: 2: 2当当B B请求请求1 1个时,个时,当前剩余量当前剩余量:1 :1 当前剩余量当前剩余量:1 :1 现在银行家要破产了,剩余的现在银行家要破产了,剩余的资金贷给谁都不够,因此项目不资金贷给谁都不够,因此项目不能完成,银行家不能收回贷款。能完成,银行家不能收回贷款。错误发生在最后贷款给错误发生在最后贷款给B的的1个亿上个亿上当前剩余量当前剩余量: 2: 2B B请求:不贷款请求:不贷款C C请求请求2 2个亿:可以贷款个亿:可以贷款C完成项目后,还出完成项目后,还出4,这个,这个4银行银行家下次可贷给家下次可贷给B,也可贷给也可贷给D其中的其中的3,不管如何

225、处理,不管如何处理,B或或D都能完成归都能完成归还还5或归还或归还7;最后贷给;最后贷给A所需资金所需资金5。最终,最终,A、B、C、D都完成了项目,都完成了项目,银行家得到了贷款利润。银行家得到了贷款利润。存在的安全序列是:存在的安全序列是:C、B、D、A或或C、D、B、A2. 2. 银行家算法银行家算法假定顾客分成若干次借款;并在第一次借款时,假定顾客分成若干次借款;并在第一次借款时,能说明他的最大借款额。能说明他的最大借款额。具体算法:具体算法:l顾客的借款操作依次顺序进行,直到全部操作完成;顾客的借款操作依次顺序进行,直到全部操作完成;l银行家对当前顾客的借款操作进行判断,以确定其银行

226、家对当前顾客的借款操作进行判断,以确定其安全性(能否支持顾客借款,直到全部归还);安全性(能否支持顾客借款,直到全部归还);l安全时,贷款;否则,暂不贷款。安全时,贷款;否则,暂不贷款。 银行家算法可陈述如下:银行家算法可陈述如下:当当一一个个进进程程提提出出资资源源请请求求时时,假假定定分分配配给给它它,并并检检查查系系统统因因此此是是否否仍仍处处于于安安全全状状态态。如如果果安安全全,则则满满足足它它的的请请求求。否则,推迟它的请求。否则,推迟它的请求。为为了了检检查查状状态态是是否否安安全全,银银行行家家要要检检查查他他是是否否还还有有足足够够资资源源满满足足某某一一个个顾顾客客。如如果

227、果能能满满足足,这这个个顾顾客客就就能能很很快快将将贷贷款款归归还还。重重复复这这一一检检查查过过程程。如如果果所所有有顾顾客客的的贷贷款款都都能能满满足足,系系统统的的这这个个状状态态是是安安全全的的。可可实实施施实实际际的分配。如果不安全,则让其阻塞等待。的分配。如果不安全,则让其阻塞等待。上上述述算算法法可可简简单单归归纳纳如如下下:当当某某进进程程请请求求分分配配资资源源时时,系系统统假假定定先先分分配配给给它它,之之后后若若能能找找到到一一个个进进程程完完成成序序列列,说说明明系系统统是是安安全全的的,可可进进行行实实际际分分配配;否否则则,让让申请者等待。申请者等待。3、算法描述:

228、、算法描述:设有设有n个客户,个客户,maxi:第第i个客户的资金总需求数个客户的资金总需求数alloci:第第i个客户已得到的资金数,初值为个客户已得到的资金数,初值为0needi:第第i个客户还需要的资金数,初值为个客户还需要的资金数,初值为maxi(1=i=n)av:银行家目前可以贷出的资金银行家目前可以贷出的资金,开始为总资本开始为总资本三者关系:三者关系:maxi=alloci+needirequesti:第第i个客户当前需要的资金数个客户当前需要的资金数(必需有:(必需有:requesti=needi)if(requesti=av&requesti=needi)av-=reques

229、ti;alloci+=requesti;needi-=requesti;if(check()资金分配处理;资金分配处理;else拒决分配,恢复拒决分配,恢复av,needi,alloci的值的值;check:安全性检查安全性检查:work=av;finishi=False;i=1,2,nwhile(1)flag=1;for(k=1;k=n;k+)if(finishk=False&needkavii=1,2,.m代表第代表第i个银行家当前能提供的资金个银行家当前能提供的资金原来的一维数组扩充为二维原来的一维数组扩充为二维(n*m),如:如:alloci(i=1,2,.n):代表第代表第i个客户已

230、得到的资金个客户已得到的资金-alloci,j(i=1,2,n;j=1,2,.m):代表第代表第i个客户在第个客户在第j个银行家处已得到的资金个银行家处已得到的资金其它类推。其它类推。5、存在的问题:要求事先说明最大资源要求,在现实中很困、存在的问题:要求事先说明最大资源要求,在现实中很困难难4.8 4.8 死锁的检测和解除死锁的检测和解除一、死锁的检测一、死锁的检测 1 1、死锁模型、死锁模型 Holt1972Holt1972年年 指出,用有向图可以建立死锁四个必要条指出,用有向图可以建立死锁四个必要条件模型。图中用圆形结点表示进程,方形结点代表资源。从件模型。图中用圆形结点表示进程,方形结

231、点代表资源。从资源结点到进程结点的弧表示该资源已分配给该进程,从进资源结点到进程结点的弧表示该资源已分配给该进程,从进程到资源结点的弧表示进程请求资源。程到资源结点的弧表示进程请求资源。p1p2删除出度为删除出度为0 0的进程结点的所有弧(包括出度与入度)。的进程结点的所有弧(包括出度与入度)。(含义是:该结点对应进程不处于阻塞态),该点变为(含义是:该结点对应进程不处于阻塞态),该点变为孤立点。孤立点。重复上述过程,若最后所有进程结点是孤立点,则称该重复上述过程,若最后所有进程结点是孤立点,则称该资源图是完全可简化的,否则是不可完全简化的。资源图是完全可简化的,否则是不可完全简化的。不可完全

232、简化的资源分配图存在死锁,其中的有边进程不可完全简化的资源分配图存在死锁,其中的有边进程为死锁进程。为死锁进程。2 2、资源分配图的化简(类似于数据结构的拓扑排序)、资源分配图的化简(类似于数据结构的拓扑排序)3 3、死锁定理、死锁定理 状态状态S S为死锁状态的充分条件是:为死锁状态的充分条件是:当且仅当当且仅当S S状态的资源分状态的资源分配图是不可完全简化的。配图是不可完全简化的。本质是数据结构的拓扑排序本质是数据结构的拓扑排序4、死锁检测、死锁检测1)数据结构:类似于银行家算法中所使用的)数据结构:类似于银行家算法中所使用的(A)av代表所有不同类资源的代表所有不同类资源的当前可用资源

233、数当前可用资源数(一维数组)(一维数组)(B)allocii=1,2,.(n为进程数),为进程数),alloci代表第代表第i个进程的目前已得到个进程的目前已得到的不同种类资源的资源数(二维数组)的不同种类资源的资源数(二维数组)(C)reqii=1,2,.(n为进程数),为进程数),代表第代表第i个进程目前申请到的不同种类资个进程目前申请到的不同种类资源的资源数(二维数组)源的资源数(二维数组)(D)work,工作向量;初始为工作向量;初始为work=av;(一维数组)(一维数组)2)检测算法示意:)检测算法示意: A A)work=work=avav; ; B B) S= S=P Pi i

234、|alloci|alloci=(0,.,0) & =(0,.,0) & reqireqi=(0,0,.,0)=(0,0,.,0) C C)重复选重复选 k= i | k= i | P Pi i不属于不属于S S & & reqireqi=work 浮动项的位置中。浮动项的位置中。一、程序的装入一、程序的装入例:例:MZMZ10100201头标志头标志MOVE AX,MOVE AX,JMPJMP指令码指令码JMPJMP(200200)0100300300201头部分头部分代码部分代码部分200MZMZ10100201头部分头部分例:例:MOVE AX,MOVE AX,JMPJMP指令码指令码JM

235、PJMP(200200)0100300300201200MOVE AX,MOVE AX,JMPJMP指令码指令码JMPJMP(200)(200)0+1000100+1000300300201+10001000(2)装入)装入(1)头部分由)头部分由OS读入读入(3)OS根据读入根据读入的头对内存浮动项的头对内存浮动项装配装配MZMZ10100201头部分头部分例:例:MOVE AX,MOVE AX,JMPJMP指令码指令码JMPJMP(200200)0100300300201200MOVE AX,MOVE AX,JMPJMP指令码指令码JMPJMP( (12001200) )0+1000100

236、+1000300300201+10001000(2)装入)装入(1)头部分由)头部分由OS读入读入(3)OS根据读入根据读入的头对内存浮动项的头对内存浮动项装配装配MZMZ10100201头部分头部分例:例:MOVE AX,MOVE AX,JMPJMP指令码指令码JMPJMP(200200)0100300300201200MOVE AX,MOVE AX,JMPJMP指令码指令码JMPJMP( (12001200) )0+1000100+100013001300201+10001000(2)装入)装入(1)头部分由)头部分由OS读入读入(3)OS根据读入根据读入的头对内存浮动项的头对内存浮动项装

237、配装配二、二、 程序的链接程序的链接一个程序要经过编辑、编译,最后链接一个程序要经过编辑、编译,最后链接链接链接- -要解决多个目标模块在执行时的地址空间分配和相互引用,要解决多个目标模块在执行时的地址空间分配和相互引用,生成可执行的目标程序。生成可执行的目标程序。静态静态链接:链接:将一个程序运行中所有的目标文件、所需要的将一个程序运行中所有的目标文件、所需要的库文件等链接成一个可执行模块。库文件等链接成一个可执行模块。链接分类链接分类静态静态链接链接动态链接动态链接载入时动态链接载入时动态链接运行时动态链接运行时动态链接对多用户、多任务系统显然有冗余,比如用户用对多用户、多任务系统显然有冗

238、余,比如用户用sin(x),则目标则目标代码中都有这部分代码,装入到内存则也都有这部分代码。代码中都有这部分代码,装入到内存则也都有这部分代码。二、二、 程序的链接程序的链接一个程序要经过编辑、编译,最后链接一个程序要经过编辑、编译,最后链接链接链接- -要解决多个目标模块在执行时的地址空间分配和相互引用,要解决多个目标模块在执行时的地址空间分配和相互引用,生成可执行的目标程序。生成可执行的目标程序。链接分类链接分类静态静态链接链接动态链接动态链接载入时动态链接载入时动态链接运行时动态链接运行时动态链接动态链接:动态链接:在装入或运行时进行链接在装入或运行时进行链接。二、二、 程序的链接程序的

239、链接一个程序要经过编辑、编译,最后链接一个程序要经过编辑、编译,最后链接链接链接- -要解决多个目标模块在执行时的地址空间分配和相互引用,要解决多个目标模块在执行时的地址空间分配和相互引用,生成可执行的目标程序。生成可执行的目标程序。链接分类链接分类静态静态链接链接动态链接动态链接载入时动态链接载入时动态链接运行时动态链接运行时动态链接差异:差异:test.cpptest1.cpp#includeexternvoidprinterr();voidmain()inti;cini;if(i0)printerr();#includevoidprinterr()cout“errorn”;5.2 5.2

240、 连续分配存储管理方式连续分配存储管理方式 因为程序的执行是根据指令计数器顺序执行因为程序的执行是根据指令计数器顺序执行, ,在在执行本指令时执行本指令时, ,它已是下条指令的位置它已是下条指令的位置, ,跳转指令会跳转指令会自动置为跳转的目标地址自动置为跳转的目标地址, ,所以决定了程序必须占有所以决定了程序必须占有连续的一段存储区连续的一段存储区, ,连续分配是指为一个用户程序分连续分配是指为一个用户程序分配一个连续的内存空间。配一个连续的内存空间。5.2.1 5.2.1 单一连续分配单一连续分配 1)1)内存分为两个区域:系统区,用户区。应用程序装入内存分为两个区域:系统区,用户区。应用

241、程序装入 到用户区,可使用用户区全部空间。到用户区,可使用用户区全部空间。特点:适用于单用户、单任务的特点:适用于单用户、单任务的OSOS。DOSDOS驻留部分驻留部分用户程序区用户程序区COMMANDCOMMAND可覆盖部分可覆盖部分MS_DOSMS_DOS的分布的分布: :2)静态与动态重定位静态与动态重定位静态重定位:静态重定位:在程序装入内存时由在程序装入内存时由OSOS进行浮动项的定位进行浮动项的定位此后不再变化。此后不再变化。动态重定位:动态重定位:在程序装入内存时不进行装配,一般直接在程序装入内存时不进行装配,一般直接将程序装入内存。定位问题由系统提供的硬件解决。所以,将程序装入

242、内存。定位问题由系统提供的硬件解决。所以,前提是前提是动态重定位问题需借助于硬件支持动态重定位问题需借助于硬件支持,否则无法解决。否则无法解决。在为单用户、单任务设计的系统中一般不会有此硬件。如在为单用户、单任务设计的系统中一般不会有此硬件。如Intel 8080Intel 8080、80868086、80888088CPU界限界限寄存器寄存器重定位重定位寄存器寄存器基址基址内存内存逻辑地址逻辑地址物理地址物理地址+否否是是地址错地址错带有存储保带有存储保护的地址变换护的地址变换机构机构5.2.2 5.2.2 固定分区分配固定分区分配1 1、把内存划分为若干个固定的连续分区。、把内存划分为若干

243、个固定的连续分区。分区大小相等:只适合于多个相同程序的并发执行(处理多分区大小相等:只适合于多个相同程序的并发执行(处理多个类型相同的对象)。个类型相同的对象)。分区大小不等:多个小分区、适量的中等分区、少量的大分分区大小不等:多个小分区、适量的中等分区、少量的大分区。根据程序的大小,分配当前空闲的、适当大小的分区。区。根据程序的大小,分配当前空闲的、适当大小的分区。分配策略:分配策略:当作业到达时,选择适合作业要求的最小空闲区分给作业,若当作业到达时,选择适合作业要求的最小空闲区分给作业,若该分区不空,让其在该分区队列中等待。该分区不空,让其在该分区队列中等待。 为了充分利用存储器,系统只维

244、持一个等待存贮器的队列。为了充分利用存储器,系统只维持一个等待存贮器的队列。任何时候,只要有一个分区变为空闲,队列中的一个作业就可任何时候,只要有一个分区变为空闲,队列中的一个作业就可装入运行。装入运行。多输入作业队列多输入作业队列分区分区4分区分区3分区分区2分区分区1操作系统操作系统700K400K200K100K0单输入作业队列单输入作业队列分区分区4分区分区3分区分区2分区分区1操作系统操作系统这种操作员在清晨设置好,以后不能再修改的固定分区这种操作员在清晨设置好,以后不能再修改的固定分区的存储系统,曾经在的存储系统,曾经在IBMOS/360大型机上运行了许多年。大型机上运行了许多年。

245、多输入作业队列多输入作业队列分区分区4分区分区3分区分区2分区分区1操作系统操作系统700K400K200K100K0单输入作业队列单输入作业队列分区分区4分区分区3分区分区2分区分区1操作系统操作系统 管理:管理:采用分区表采用分区表记录分区的大小和使用情况记录分区的大小和使用情况见见Page140图图5.2.3 5.2.3 动态分区分配动态分区分配一、分区分配的数据结构:一、分区分配的数据结构:分区表可同时记录空闲和占用情况,也可用两张表分别记分区表可同时记录空闲和占用情况,也可用两张表分别记录空闲(空闲分区表)与占用(使用分区表),表项数目随着录空闲(空闲分区表)与占用(使用分区表),表

246、项数目随着内存的分配和释放而动态改变;对顺序组织,表容量就决定了内存的分配和释放而动态改变;对顺序组织,表容量就决定了分区的最大个数。分区的最大个数。见见p141图图5-75-8用分区表记录使用情况用分区表记录使用情况链表组织链表组织顺序存储顺序存储二、二、 分区分配算法分区分配算法 分区分配算法:分区分配算法:寻找某个空闲分区,其大小需大于或寻找某个空闲分区,其大小需大于或等于程序的要求。若是大于,则将该分区分割成两个分等于程序的要求。若是大于,则将该分区分割成两个分区,其中一个分区为要求的大小并标记为区,其中一个分区为要求的大小并标记为“占用占用”,而,而另一个分区为余下部分并标记为另一个

247、分区为余下部分并标记为“空闲空闲”。分区的先后。分区的先后次序通常是从内存低端到高端排列。次序通常是从内存低端到高端排列。 分区释放算法:分区释放算法:注意需要将相邻的空闲分区合并成一注意需要将相邻的空闲分区合并成一个空闲分区。个空闲分区。 依依寻找空闲分区的方法分成:寻找空闲分区的方法分成:1 1、首次适应法首次适应法( (first-fit)first-fit):按分区的先后次序,从头查按分区的先后次序,从头查找,找到符合要求的第一个分区。找,找到符合要求的第一个分区。 特点:特点:该算法的分配和释放的时间性能较好,较大的空该算法的分配和释放的时间性能较好,较大的空闲分区可以被保留在内存高

248、端。但随着低端分区不断划分闲分区可以被保留在内存高端。但随着低端分区不断划分而产生较多小分区,每次分配时查找时间开销会增大。而产生较多小分区,每次分配时查找时间开销会增大。3 3、最佳适应法最佳适应法( (best-fit)best-fit):找其容量与要求最接近的空闲分找其容量与要求最接近的空闲分区。区。 特点:特点:从个别来看,外碎片较小,但从整体来看,会形成从个别来看,外碎片较小,但从整体来看,会形成较多外碎片。较大的空闲分区可以被保留。另外,为了能较较多外碎片。较大的空闲分区可以被保留。另外,为了能较快的定位空闲块,所以空闲分区表若以链表方式组织,则表快的定位空闲块,所以空闲分区表若以

249、链表方式组织,则表应按空闲区大小递增排列。因此,在释放一个占用区时,应应按空闲区大小递增排列。因此,在释放一个占用区时,应按区大小插入链中并可能有区合并(此时合并比较麻烦)按区大小插入链中并可能有区合并(此时合并比较麻烦)2 2、下次适应法下次适应法( (next-fit)next-fit):按分区的先后次序,从上次分配按分区的先后次序,从上次分配的分区起查找(到最后分区时再回到开头),找到符合要求的的分区起查找(到最后分区时再回到开头),找到符合要求的第一个分区。第一个分区。 特点:特点:该算法的分配和释放的时间性能较好,使空闲分区分该算法的分配和释放的时间性能较好,使空闲分区分布得更均匀,

250、但较大的空闲分区不易保留。布得更均匀,但较大的空闲分区不易保留。5.2.4 5.2.4 动态重定位分区分配动态重定位分区分配在多任务前提下,分配一个区后大部分情况下都是有剩余零在多任务前提下,分配一个区后大部分情况下都是有剩余零头的,因此在一个新任务到达时,就有可能零头分区的和超过头的,因此在一个新任务到达时,就有可能零头分区的和超过新任务要求的分区,但每一个空闲区容量都不够。新任务要求的分区,但每一个空闲区容量都不够。一、一、紧凑紧凑 将各个占用分区向内存一端移动。使各个空闲分区聚集在将各个占用分区向内存一端移动。使各个空闲分区聚集在另一端,然后将各个空闲分区合并成为一个空闲分区。另一端,然

251、后将各个空闲分区合并成为一个空闲分区。操作系统操作系统用户程序用户程序130KB10KB用户程序用户程序9用户程序用户程序614KB用户程序用户程序326KB操作系统操作系统80KB用户程序用户程序9用户程序用户程序6用户程序用户程序3用户程序用户程序1问题:紧缩后程序如何重新执行?问题:紧缩后程序如何重新执行?没有重定位硬件支持是无法实现的。没有重定位硬件支持是无法实现的。二、二、动态重定位动态重定位2、什么时候紧缩、什么时候紧缩一旦有任务释放分区一旦有任务释放分区在找不到容量满足的空闲区时在找不到容量满足的空闲区时50001、重定位示意图、重定位示意图2500相对地址相对地址1000MOV

252、EMOVE AXAX,25002500.25003653651010010000MOVEMOVE AXAX,25002500.36536510000重定位寄存器重定位寄存器15000+125005.2.5 5.2.5 PC PC 微机中的存储管理(实方式)微机中的存储管理(实方式)1 1、重定位机构、重定位机构 四个段寄存器四个段寄存器CSCS、DSDS、ESES、SSSS,每个每个1616位;位; 段大小段大小:64:64K16K16位表示段内地址位表示段内地址; ; 逻辑地址:段址:段内偏移逻辑地址:段址:段内偏移 物理地址:段地址左移物理地址:段地址左移4 4位位+ +偏移偏移2020位

253、物理地址位物理地址 若程序不超过若程序不超过6464K K,可以写成,可以写成COMCOM格式的可执行文件格式的可执行文件 2 2、 DOSDOS存储管理接口存储管理接口 通过通过DOSDOS功能调用功能调用INT 21HINT 21H,涉及三个调用号,存储分配涉及三个调用号,存储分配(48(48H)H)、释放释放(49(49H)H)和改变分区大小和改变分区大小(4(4AH)AH) 3 3、 DOSDOS存储管理数据结构与算法存储管理数据结构与算法1)存储分配以存储分配以16字节为一个单位(称为节),所以最小字节为一个单位(称为节),所以最小分配单位是分配单位是1节节2)内存格式)内存格式看成

254、链表,链首指针(由看成链表,链首指针(由DOS保存)给出了第保存)给出了第一个内存结点位置(段地址),内存结点格式如下:一个内存结点位置(段地址),内存结点格式如下:tag:tag:1 1字节,值为字节,值为 MM或或ZZ其中其中Z Z表示为链中最后一块表示为链中最后一块。tagpspsize保留保留内存区内存区psp:psp:(2 2字节)字节)psppsp在在DOSDOS中中称为程序段前缀,占称为程序段前缀,占100H100H的的字节,作用同字节,作用同OSOS中的中的PCBPCB。这里记占用该内存这里记占用该内存的进程的的进程的PSP地址,若为地址,若为0为空闲。为空闲。size:(2字

255、节)内存块大小,以节为单位。字节)内存块大小,以节为单位。保留部分保留部分:(11字节),这样内存块的头正好字节),这样内存块的头正好1节,一个内存块节,一个内存块的字节数为(的字节数为(size+1)*16tagpspsize保留保留内存区内存区3)有关算法讨论有关算法讨论A)如果指针)如果指针p指向内存指向内存块的头块的头,则下块内存块的则下块内存块的头地址是头地址是:p+size+1;pB)若要将若要将p所指的内存块分配出去所指的内存块分配出去x节节(xtag=p-tag;/构造分出的新块数据构造分出的新块数据q-size=p-size-x-1;q-psp=0;c)p-size=x;/修

256、改原块数据修改原块数据p-tag=M;p-psp=当前运行进程的当前运行进程的PSP地址;地址;q qxC)49H调用调用:参数参数ES寄存器,待释放的内存段地址。寄存器,待释放的内存段地址。开始开始p=(ES)-1p-tag为为M或或AL=08H(内存格式错内存格式错)结束结束p-psp=0D)48H调用:参数调用:参数BX申请量申请量返回:返回:成功,成功,AX分配得到的段地址分配得到的段地址不成功,不成功,BX,内存中最大的内存块容量内存中最大的内存块容量AL=08,AH=0开始开始maxsize=0firstblock=NULLp=DOS首块内存指针首块内存指针p-tag=M或或ZAL

257、=07(格式错)格式错)返回返回nyq=pp-psp=0nq-tag=Znp=q+1+q-sizep-tag=M或或ZnyyAyBCDAp=q+1+q-sizeq-tag=Znp-tag=M或或ZnCyp-psp=0yq-size+=p-size+1q-tag=p-tagnyq-sizesizeyq-size申请量申请量firstblock=qfirstblock=NULLyynnDBp=firstblockp=NULLyAL=08(容量不够)容量不够)BX=maxsizen返回返回申请量申请量=p-sizenq=p-size+1+pq-size=p-size-1-申请量申请量p-size=申

258、请量申请量q-psp=0;q-tag=p-tagp-tag=Mp-psp=当前当前DOS的的PSP地址地址yAX=p+1结论:结论:DOS中的存储管理的原理在课程中都有体现中的存储管理的原理在课程中都有体现在实现时又不拘于基本的方法(链,释放空间)在实现时又不拘于基本的方法(链,释放空间)5.3 5.3 对换对换1 1、引入:引入:多个程序并发执行,在内存容量不够时,将暂时不能执多个程序并发执行,在内存容量不够时,将暂时不能执行的进程(阻塞或就绪)放到外存,从而腾出内存空间。(为了行的进程(阻塞或就绪)放到外存,从而腾出内存空间。(为了装入新进程;处理保存在外存中而目前到达就绪状态的进程;目装

259、入新进程;处理保存在外存中而目前到达就绪状态的进程;目的是加快已有进程的推进速度等)。交换单位为整个进程的地址的是加快已有进程的推进速度等)。交换单位为整个进程的地址空间。常用于多道程序系统或小型分时系统中,与分区存储管理空间。常用于多道程序系统或小型分时系统中,与分区存储管理配合使用。又称作配合使用。又称作“对换对换”或或“滚进滚进/ /滚出滚出”。2 2、原理:原理:暂停执行内存中的进程,选择一个处于阻塞(就绪)暂停执行内存中的进程,选择一个处于阻塞(就绪)的进程,将它的整个进程的地址空间保存到外存的交换区中的进程,将它的整个进程的地址空间保存到外存的交换区中,在适当的时候,需将外存中由阻

260、塞变为就绪的进程的地址空间在适当的时候,需将外存中由阻塞变为就绪的进程的地址空间读入到内存中,并将该进程送到就绪队列读入到内存中,并将该进程送到就绪队列。3 3、特点:特点:增加并发运行的进程数目,但换入和换出的控制增增加并发运行的进程数目,但换入和换出的控制增加处理机开销加处理机开销4 4、外存考虑的问题:外存考虑的问题:减少交换中传送的信息量,特别是对大程序;减少交换中传送的信息量,特别是对大程序;对外存交换区空间的管理不同于文件系统的管理思路,对外存交换区空间的管理不同于文件系统的管理思路,读写效读写效率是首要的,空间的利用率次要,如采用率是首要的,空间的利用率次要,如采用SISC高速硬

261、盘,设置高速硬盘,设置专用对换区甚至考虑添加专有硬盘。(在对换区中,专用对换区甚至考虑添加专有硬盘。(在对换区中,进程映象进程映象一般使用连续的磁盘块暂存)一般使用连续的磁盘块暂存)5.4分页存储管理方式分页存储管理方式连续分配的问题:连续分配的问题:形成许多碎片形成许多碎片紧凑带来开销。紧凑带来开销。 为解决以上问题,多任务的操作系统现在大多不再为解决以上问题,多任务的操作系统现在大多不再用连用连续分配的方式管理内存,而采用页式、段式或段页式的方式续分配的方式管理内存,而采用页式、段式或段页式的方式管理内存。(目前市场上商业的操作系统大都采用了页式管管理内存。(目前市场上商业的操作系统大都采

262、用了页式管理)硬件理)硬件CPU常提供了多种支持,如常提供了多种支持,如Intel从从80286开始,开始,CPU就开始支持就开始支持页式、段式或段页式。(一个操作系统只能使用页式、段式或段页式。(一个操作系统只能使用其中的一种)其中的一种)一、原理一、原理0000001000011000001101001001101101111010011001011110111111001101例:例:16个字节内存,逻辑上分成两组,称为两个页,每页个字节内存,逻辑上分成两组,称为两个页,每页8字节字节。一、原理一、原理0000001000011000001101001001101101111010011

263、001011110111111001101例:例:16个字节内存,逻辑上分成两组,称为两个页,每页个字节内存,逻辑上分成两组,称为两个页,每页8字节字节。地址地址0100可理解为可理解为0页,页内地址为页,页内地址为4地址地址1101可理解为可理解为1页,页内地址为页,页内地址为5这样,一个物理上的一维地址在逻这样,一个物理上的一维地址在逻辑上成为了二维地址(页号,页内地辑上成为了二维地址(页号,页内地址)址)因为是人为的划分,同样问题,因为是人为的划分,同样问题,也可以看成也可以看成4页,每页页,每页4字节(页号为字节(页号为高二位,高二位,00,01,10,11;页内地址;页内地址低二位,

264、低二位,00,01,10,11)在页式管理中:在页式管理中: 将程序的逻辑地址空间分成页将程序的逻辑地址空间分成页( (Page),Page),物理内存划分为物理内存划分为固定固定的的同样大小的同样大小的页框页框( (page framepage frame) )。程序加载时,分配其所需的全部。程序加载时,分配其所需的全部页,这些页不必连续。页,这些页不必连续。固定固定:一个计算机系统的内存容量是固定的,一个页的容量在一个计算机系统的内存容量是固定的,一个页的容量在硬件设计时也是确定了的。硬件设计时也是确定了的。二、程序装载二、程序装载在装入一个程序时,需找空闲页框,在装入一个程序时,需找空闲

265、页框,OS要将这些页框分配要将这些页框分配给装入的进程,进程地址空间的每个页占用一个页框,页框给装入的进程,进程地址空间的每个页占用一个页框,页框不要求连续。不要求连续。三、页面管理中所需要的数据结构三、页面管理中所需要的数据结构1)页框使用表:整个系统一张,描述物理内存空间的分配页框使用表:整个系统一张,描述物理内存空间的分配使用状况。组织:顺序、链表等都可以。使用状况。组织:顺序、链表等都可以。 2 2)进程页表:每个进程一张,给出了逻辑页号与物理页号的)进程页表:每个进程一张,给出了逻辑页号与物理页号的映射关系。映射关系。 3 3)请求表:整个系统有一张请求表,描述系统内各个进程页)请求

266、表:整个系统有一张请求表,描述系统内各个进程页表的位置和大小。表的位置和大小。(给出的是系统中所有进程的页面表地址)(给出的是系统中所有进程的页面表地址) 4 4)当前运行进程的进程页表地址(一般用一个称为)当前运行进程的进程页表地址(一般用一个称为页表寄存页表寄存器器的寄存器存储,在进程切换时,修改该寄存器,)的寄存器存储,在进程切换时,修改该寄存器,)注意:以上术语除注意:以上术语除2)比较一致外,其它的并不统一)比较一致外,其它的并不统一内存内存1000100110100001011页框使用表页框使用表1000进程进程idid103210011请求表请求表21页表地址页表地址310100

267、2110042100531020逻辑页号逻辑页号物理页框物理页框进程进程11的的进程表进程表.四、页面大小的选择四、页面大小的选择 通常几通常几KBKB到几十到几十KBKB,比较典型的是比较典型的是4 4K K、8K8K。较小的页面,减小内碎片,但加大页表的长度,从而形成新的开较小的页面,减小内碎片,但加大页表的长度,从而形成新的开销并增加换入、换出的开销;销并增加换入、换出的开销;较大的页面,减小页表的长度,加大内碎片;管理开销小,交换较大的页面,减小页表的长度,加大内碎片;管理开销小,交换时对外存时对外存I/OI/O效率高。效率高。五、地址变换五、地址变换逻辑上连续的目标程序在物理上已经不

268、能保证连续,因此指令逻辑上连续的目标程序在物理上已经不能保证连续,因此指令计数器从一个页到另一个页按计数器从一个页到另一个页按PC的实方式就不能正确处理了。所的实方式就不能正确处理了。所以,支持页式管理的机器硬件上都有一套地址变换机构完成逻辑以,支持页式管理的机器硬件上都有一套地址变换机构完成逻辑地址到物理地址的变换。地址到物理地址的变换。六、基本地址变换机构六、基本地址变换机构(PC或地址场中的)或地址场中的)逻辑地址逻辑地址页号(页号(3) 页内地址(页内地址(100)页表地址页表地址页表寄存器页表寄存器长度长度4 41 15 5.9 9进程页表进程页表 越界中断越界中断+ +9 9100

269、100物理地址物理地址对绝大部分系统,页表是利用内存存储的,因此进行一次对绝大部分系统,页表是利用内存存储的,因此进行一次内存操作需要两次访问内存,第一次读页表、第二次访问数内存操作需要两次访问内存,第一次读页表、第二次访问数据。据。如能将页表装在寄存器中访问就快得多,但如果将全部放如能将页表装在寄存器中访问就快得多,但如果将全部放在寄存器,则寄存器成本大的无法忍受。所以采用一种具有在寄存器,则寄存器成本大的无法忍受。所以采用一种具有并行查找功能的并行查找功能的“联想存储器联想存储器”,根据程序局部性原理,将,根据程序局部性原理,将页表的一部分放在里面。联想存储器的个数一般在页表的一部分放在里

270、面。联想存储器的个数一般在8到到32个。个。(超过(超过32个效果并不明显)个效果并不明显)七、具有快表的地址变换机构七、具有快表的地址变换机构页号(页号(3)逻辑地址逻辑地址页内地址(页内地址(100)页表地址页表地址页表寄存器页表寄存器长度长度4 41 15 5.9 9进程页表进程页表 越界中断越界中断+ +9 91001001 10 02 2.3 34 41 15 5.9 9页号页号块号块号输入寄存器八、两级和多级页表八、两级和多级页表 现代计算机系统,现代计算机系统,CPUCPU都支持非常大的逻辑地址空间都支持非常大的逻辑地址空间(32-6432-64位的地址空间)。这样页表非常大。如

271、果逻辑地址宽位的地址空间)。这样页表非常大。如果逻辑地址宽度为度为3232位,假设页面大小为位,假设页面大小为4 4K(K(2 21212) ),页表项达,页表项达1 1M M(2 22020)之多,之多,每个页表项为每个页表项为3 3个个BYTEBYTE,仅页表项就要占用仅页表项就要占用3 3MBMB的连续内存空的连续内存空间。解决方法:间。解决方法:两级页表两级页表当前需要的页表放在内存,其余的暂存于磁盘当前需要的页表放在内存,其余的暂存于磁盘1)1)两级页表结构(两级页表结构(3232位)位)外层页号(页表目录) 外层页内地址(页表)页内地址313122222121121211110 0

272、P1P1(目录位移)目录位移)P2P2(页表位移)页表位移)d d(页内位移)页内位移)第第0 0页页表页页表第第1 1页页表页页表页框号页框号011023页框号页框号011023页目录页表起始地址01n1 12 24 4页表页表页框(内存)页框(内存)物理地址物理地址0 05 5页表地址页表地址0 05 5页框地址页框地址页目录地址寄存器页目录地址寄存器页目录页目录(每个进(每个进程程1 1个)个)目录位移目录位移页内位移页内位移页内地址页内地址+ + +数据存取需通过数据存取需通过3次访问内存次访问内存2 2)多级页表)多级页表 对于对于6464位字长的机器,位字长的机器,即使采用两级页表

273、,进程表的项数仍即使采用两级页表,进程表的项数仍然很大。然很大。例如例如SUNSUN的的SPARCSPARC处理器,支持处理器,支持3 3级页表;而级页表;而MotorolaMotorola的的6803068030处理器甚至支持处理器甚至支持4 4级页表。级页表。九、反置页表九、反置页表以上方法,每个进程一张页表,页表按照进程的逻辑地以上方法,每个进程一张页表,页表按照进程的逻辑地址顺序排序,内容为物理块号(页框号)。址顺序排序,内容为物理块号(页框号)。 反置页表则按物理块号的顺序排序,内容为隶属的进程反置页表则按物理块号的顺序排序,内容为隶属的进程idid及其页号。实例:及其页号。实例:I

274、BM AS/100IBM AS/100、IBM RISC SYSTEM 6000IBM RISC SYSTEM 6000等。等。 在利用反置页表进行地址变换时,是利用进程在利用反置页表进行地址变换时,是利用进程idid和页号,和页号,检索反置页表,实际上可利用联想存储器来检索检索反置页表,实际上可利用联想存储器来检索分页管理的方法,提高内存的利用率,对程序员是透明分页管理的方法,提高内存的利用率,对程序员是透明的;分段管理的方法,满足了程序员在编程和使用上的的;分段管理的方法,满足了程序员在编程和使用上的要求,适应软件开发上的要求。要求,适应软件开发上的要求。将程序的地址空间划分为若干个段将程

275、序的地址空间划分为若干个段( (segment)segment),程序加程序加载时,分配其所需的所有段(内存分区),这些段不必载时,分配其所需的所有段(内存分区),这些段不必连续;物理内存的管理采用动态分区。需要连续;物理内存的管理采用动态分区。需要CPUCPU的硬件的硬件支持。支持。 5.5 5.5 分段存储管理分段存储管理一、特点:一、特点:1.1.方便编程方便编程 按逻辑关系划分段:有独立的段名,逻辑地址均从按逻辑关系划分段:有独立的段名,逻辑地址均从0 0开始。开始。程序通过分段程序通过分段( (segmentation)segmentation)划分为多个模块,如代码段、数划分为多个

276、模块,如代码段、数据段、共享段。据段、共享段。可以分别编写和编译。可以分别编写和编译。2.2.分段共享:分段共享:可以按段为单位来进行共享可以按段为单位来进行共享3.3.分段保护:分段保护:可以针对不同类型的段采取不同的保护可以针对不同类型的段采取不同的保护4.4.动态链接动态链接:通过动态链接进行代码共享:通过动态链接进行代码共享5.5.动态增长动态增长二、二、段式管理的数据结构:段式管理的数据结构:进程段表:每个进程一张,描述组成进程地址空间的各段进程段表:每个进程一张,描述组成进程地址空间的各段系统段表:系统内所有占用段系统段表:系统内所有占用段空闲段表:内存中所有空闲段,可以结合到系统

277、段表中空闲段表:内存中所有空闲段,可以结合到系统段表中段号段内地址0151631三、地址划分三、地址划分例:例:32位,后位,后16位代表段内地址,每段位代表段内地址,每段64K,前前16位代表段号,有位代表段号,有64K个不同的逻辑段,个不同的逻辑段,如何划分取决于机器硬件设计如何划分取决于机器硬件设计,比如后半部分,比如后半部分17,前,前15,则每个段最大可达,则每个段最大可达128K,不同段最多为,不同段最多为32K三、段表三、段表:由段基址和段长组成。由段基址和段长组成。作业空间作业空间(main)=0030K(X)=1020K(D)=2015K(S)=3010K段号 段长 段基址3

278、0K40K20K80K15K120K10K150K0123段表段表free内存内存040K120K80K150Kmain(0)30KX(1)20KD(2)15KS(3)10K四、地址变换机构四、地址变换机构 类似于页的变换类似于页的变换段表始址段表始址 段表长度段表长度控制寄存器控制寄存器2100逻辑地址逻辑地址段号段号s位移量位移量w + +越界越界010246K16004K32009K25008K段号段号段长段长基址基址+ +82928k8292主存主存存取一个数据访内存二次存取一个数据访内存二次五、分页和分段的主要区别五、分页和分段的主要区别(1)(1) 页是物理单位,而段是逻辑单位。分

279、页是出页是物理单位,而段是逻辑单位。分页是出于系统管理的需要,分段是出于用户应用的需要。因此,于系统管理的需要,分段是出于用户应用的需要。因此,一条指令或一个操作数可能会跨越两个页的分界处,而不一条指令或一个操作数可能会跨越两个页的分界处,而不会跨越两个段的分界处。会跨越两个段的分界处。(2)(2) 页大小是系统固定的,而段大小则通常不固页大小是系统固定的,而段大小则通常不固定。定。(3)(3) 逻辑地址表示:分页是一维的,各个模块在逻辑地址表示:分页是一维的,各个模块在链接时必须组织成同一个地址空间;而分段是二维的,各链接时必须组织成同一个地址空间;而分段是二维的,各个模块在链接时可以每个段

280、组织成一个地址空间。一个模个模块在链接时可以每个段组织成一个地址空间。一个模块,甚至一个子程序都能作为一个段,取决于编译如何处块,甚至一个子程序都能作为一个段,取决于编译如何处理。理。(4)(4) 通常段比页大,因而段表比页表短,可以缩通常段比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。短查找时间,提高访问速度。六、共享六、共享ed1进程进程1ed2.ed40data1.data10ed1进程进程2ed2.ed40data1.data1021页表页表22.6061.70页表页表2122.6071.80ed1.ed2.ed400212260data1data10.6170data1d

281、ata10.7180六、共享六、共享进程进程1editordata段长段长段表段表16040基基址址80240editordata进程进程2段长段长16040基基址址80380editoreditor80datadata.2403805.6 5.6 段页式存储管理方式段页式存储管理方式结合分段和分页的优点。结合分段和分页的优点。一、基本原理一、基本原理段内分页管理。段内分页管理。逻辑地址:逻辑地址:段号段号S S段内页号段内页号P P页内偏移地址页内偏移地址W W二、各种表格二、各种表格每个进程一张段表,段表寄存器给出了当前运行进程的每个进程一张段表,段表寄存器给出了当前运行进程的段表地址,进

282、程的每个段都有一张该段的分页表。段表地址,进程的每个段都有一张该段的分页表。段表大小段表大小段表首址段表首址段表寄存器段表寄存器051623段号段号页表大小页表大小页表首址页表首址01243051243页号页号页框页框操作系统操作系统主存主存三、地址变换机构三、地址变换机构存储一次数据三次访存存储一次数据三次访存段表始址段表始址段表长度段表长度段表寄存器段表寄存器逻辑地址逻辑地址段号段号s页号页号p页内地址页内地址 页表长页表长Y越界中断越界中断N检索快表检索快表快表中找到快表中找到Y访问页表访问页表N修改访问位与修改位修改访问位与修改位形成物理地址形成物理地址地址变换结束地址变换结束页在内存

283、页在内存y修改快表修改快表N缺页中缺页中断信号断信号2 2)地址变换机构)地址变换机构在原变换机构的基础上增加了缺页中断在原变换机构的基础上增加了缺页中断中断响应中断响应保留保留CPU现场现场在外存中找该页在外存中找该页内存满内存满在内存中按淘汰算法在内存中按淘汰算法选择一页或几页淘汰选择一页或几页淘汰到外存到外存y淘汰的页修改过淘汰的页修改过y修改页写回外存修改页写回外存nOS负责从外存读缺的页负责从外存读缺的页启动启动I/O硬件硬件将页从外存调入将页从外存调入修改页表修改页表指令重执行指令重执行恢复恢复CPU现场现场n在实际的在实际的OS中,中,由于启动由于启动I/O操作到操作到页从外存装

284、入页从外存装入CPU要等待一定的时间,要等待一定的时间,所以往往引起缺页所以往往引起缺页的进程要阻塞,让的进程要阻塞,让出出CPU,其它进程,其它进程运行,一旦调入结运行,一旦调入结束,束,CPU立即被抢立即被抢占,引起缺页的进占,引起缺页的进程立即从阻塞状态程立即从阻塞状态占有占有CPU。(这同。(这同一般的进程状态转一般的进程状态转换不同)换不同)缺页处理过程小结:缺页处理过程小结:(1)(1)硬件陷阱进入核心,保存硬件陷阱进入核心,保存PCPC到栈中,大多数机器将当前各种状态保存在到栈中,大多数机器将当前各种状态保存在特殊的寄存器中。特殊的寄存器中。(2)(2)启动一个汇编程序代码保存通

285、用寄存器和其它重要的动态信息,以免被启动一个汇编程序代码保存通用寄存器和其它重要的动态信息,以免被操作系统破坏。操作系统破坏。(3)(3)操作系统发现一个缺页时,查找需要哪个虚页。操作系统发现一个缺页时,查找需要哪个虚页。(通常一个硬件寄存器(通常一个硬件寄存器含有该信息)含有该信息)(4)(4)一旦知道了发生缺页的虚拟地址,操作系统检查这个地址是否有效,如一旦知道了发生缺页的虚拟地址,操作系统检查这个地址是否有效,如无效,向进程发一个信号或杀死进程(无效,向进程发一个信号或杀死进程(UNIXUNIX););若有效也没有保护错误发若有效也没有保护错误发生,系统则从空闲页框中选一个页框分配,如果

286、没有空闲页框,执行页面生,系统则从空闲页框中选一个页框分配,如果没有空闲页框,执行页面置换算法找一个页淘汰。置换算法找一个页淘汰。(5)(5)若选择淘汰的页框不若选择淘汰的页框不“脏脏”,直接到,直接到(6),(6),否则该页写回磁盘,并发生一否则该页写回磁盘,并发生一次进程切换(暂停本进程,让其它进程运行到页面写完成,在这期间,该页次进程切换(暂停本进程,让其它进程运行到页面写完成,在这期间,该页框标志忙,以免被占用)框标志忙,以免被占用)(6)(6)页框页框 “ “干净干净”后,操作系统查找磁盘上所需调入的页,通过磁盘操作后,操作系统查找磁盘上所需调入的页,通过磁盘操作策略将其装入策略将其

287、装入。(在这期间,产生缺页的进程仍然挂起,而其它正在运行。(在这期间,产生缺页的进程仍然挂起,而其它正在运行的进程也依然在运行)的进程也依然在运行)(8)(8)恢复发生缺页指令以前的状态,程序计数器重新指向这条指令。恢复发生缺页指令以前的状态,程序计数器重新指向这条指令。(7)(7)当传送完成,磁盘发生中断,表明该页已经装入,更新页表有关项以表当传送完成,磁盘发生中断,表明该页已经装入,更新页表有关项以表明正确的状态。明正确的状态。(9)(9)缺页进程恢复,操作系统返回调用它的汇编语言例程。缺页进程恢复,操作系统返回调用它的汇编语言例程。(10)(10)该例程恢复寄存器和其它重要的动态信息,回

288、到用户空间继续执行,该例程恢复寄存器和其它重要的动态信息,回到用户空间继续执行,就好象缺页没有发生过一样就好象缺页没有发生过一样二、页面分配二、页面分配1、保证进程能运行的最小页框、保证进程能运行的最小页框取决于机器硬件结构。取决于机器硬件结构。2、页面分配和置换策略、页面分配和置换策略A A)固定分配局部置换固定分配局部置换给每个进程分配固定数目的页框,当发生缺页中断时,只考虑从该进程给每个进程分配固定数目的页框,当发生缺页中断时,只考虑从该进程所属的页框中调出旧的页面,从而换入新的页面。所属的页框中调出旧的页面,从而换入新的页面。 困难在于分配多少个页框合适?少了中断频繁,多了内存装入的进

289、程困难在于分配多少个页框合适?少了中断频繁,多了内存装入的进程减少。减少。B)可变分配全局置换可变分配全局置换 预分配给进程一定数目的页框,预分配给进程一定数目的页框,OSOS控制一定数量的空闲页框,在进程控制一定数量的空闲页框,在进程的执行过程中,发生缺页时,的执行过程中,发生缺页时,OSOS就分配给该进程一个空闲的页框,当空闲就分配给该进程一个空闲的页框,当空闲的页框用完时,的页框用完时,OSOS可根据需要从其它的进程中调出一个页框。可根据需要从其它的进程中调出一个页框。C C)可变分配局部置换可变分配局部置换 预分配给进程一定数目的页框,预分配给进程一定数目的页框,OSOS控制一定数量的

290、空闲页框,在进程的控制一定数量的空闲页框,在进程的执行过程中,发生缺页时,执行过程中,发生缺页时,首先考虑从该进程所属的页框中调出旧的页面,首先考虑从该进程所属的页框中调出旧的页面,若发现该进程频繁发生缺页中断,这时可分配新的页框给该进程。若发现该进程频繁发生缺页中断,这时可分配新的页框给该进程。3 3、分配算法、分配算法A A)平均分配平均分配 系统中可供分配的页框平均分配给进程。系统中可供分配的页框平均分配给进程。B B)按比例分配按比例分配 按进程所需的页面数按正比例分配按进程所需的页面数按正比例分配C C)按优先权分配按优先权分配 按进程的优先权分配。按进程的优先权分配。三、页面调入策

291、略三、页面调入策略 B B)预调页预调页:在发生缺页需要调入某页时,一次调入该页以及在发生缺页需要调入某页时,一次调入该页以及相邻的几个页。相邻的几个页。A A)请求调页请求调页:只调入发生缺页时所需的页面。只调入发生缺页时所需的页面。优点:容易实现。优点:容易实现。缺点:外存缺点:外存I/OI/O次数多,开销较大,要求次数多,开销较大,要求I/OI/O速度快。速度快。1 1、调入页面的策略、调入页面的策略2 2、何处调页面、何处调页面 外存通常分为外存通常分为文件区文件区和和交换区交换区。通常外存交换区的。通常外存交换区的I/OI/O效率效率比文件区的高(通过采取文件连续存放,加大物理块容量

292、等措比文件区的高(通过采取文件连续存放,加大物理块容量等措施)。施)。 调入页面的来源,常用做法有:调入页面的来源,常用做法有: 进程装入时,将其全部页面复制到交换区,以后总是从交进程装入时,将其全部页面复制到交换区,以后总是从交换区调入。执行时调入速度快,要求交换区空间较大。换区调入。执行时调入速度快,要求交换区空间较大。 凡只读页面或未被修改的页面,直接从文件区调入,换出凡只读页面或未被修改的页面,直接从文件区调入,换出时不必写回磁盘,下次仍从文件区调入。已被修改的页面,被时不必写回磁盘,下次仍从文件区调入。已被修改的页面,被置换时需调出到交换区,以后从交换区调入。置换时需调出到交换区,以

293、后从交换区调入。 UNIXUNIX方式,第一次需要该页面时,直接从文件区调入,而方式,第一次需要该页面时,直接从文件区调入,而曾经运行过的页面,换出时放在对换区,下次调入时,应从对曾经运行过的页面,换出时放在对换区,下次调入时,应从对换区调入。在进程结束时,更新文件区内容。换区调入。在进程结束时,更新文件区内容。3 3)页面调入过程)页面调入过程 页面不在内存页面不在内存缺页中断缺页中断查页表查页表得到外存得到外存物理块号物理块号淘汰一页(如该页修改过,则要写回交换区)淘汰一页(如该页修改过,则要写回交换区)-调入新页调入新页修改页表修改页表重性执行该指令。重性执行该指令。缺页中断缺页中断选一

294、页准备选一页准备置换置换写回外存写回外存调入新页调入新页修改块表修改块表NoNoYesYes内存满?内存满?形成新的物形成新的物理地址理地址重执行指令重执行指令6.3 6.3 页面置换算法页面置换算法解决:解决:需要调入页面时,选择内存中哪个或哪些物理页面被置需要调入页面时,选择内存中哪个或哪些物理页面被置换。换。 目标:目标:把未来不再使用的或在以后一段时间内较少使用的页面把未来不再使用的或在以后一段时间内较少使用的页面调出。(通常只能在局部性原理指导下依据过去的统计数据进调出。(通常只能在局部性原理指导下依据过去的统计数据进行行预测预测;相反会有;相反会有“抖动抖动”)一、最佳置换算法一、

295、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 1 一、最佳置换算法一、最

296、佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 1 7 7 +1+1一、最佳

297、置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 07 7

298、 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:

299、1 10 07 7 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面

300、):):缺页次数:缺页次数:1 10 07 71 1+1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (

301、共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 07 71 1+1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页

302、框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 02 21 1+1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2

303、 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 02 21 1+1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2

304、0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 02 21 1+1+1 +1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0

305、 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 02 23 3+1+1 +1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评

306、价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 02 23 3+1+1 +1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。

307、可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 02 23 3+1+1 +1+1 +1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被

308、置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 14 42 23 3+1+1 +1+1 +1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出

309、现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 14 42 23 3+1+1 +1+1 +1+1 +1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再

310、使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 02 23 3+1+1 +1+1 +1+1 +1+1

311、 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:

312、缺页次数:1 10 02 23 3+1+1 +1+1 +1+1 +1+1 +1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走

313、势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 02 21 1+1+1 +1+1 +1+1 +1+1 +1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0

314、4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 02 21 1+1+1 +1+1 +1+1 +1+1 +1+1 +1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2

315、 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 07 71 1+1+1 +1+1 +1+1 +1+1 +1+1 +1+1 +1+1 +1+1一、最佳置换算法一、最佳置换算法 选择选择“未来不再使用的未来不再使用的”或或“在离当前最远位置上出现的在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知页面被置换。这是一种理想情况,是实际执行中无法预知的

316、,因而不能实现。可用作性能评价的依据。的,因而不能实现。可用作性能评价的依据。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1例:有例:有3 3个页框,页面走势如下个页框,页面走势如下( (共共2020次访问页面次访问页面):):缺页次数:缺页次数:1 10 07 71 1+1+1 +1+1 +1+1 +1+1 +1+1 +1+1 +1+1 +1+16 6次置换,缺页率:次置换,缺页率:9/209/20=9=9二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可

317、以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 2 队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的

318、页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 2 7 7队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIF

319、OFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 2 7 7队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页

320、面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 20 0 7 7队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 20 0 7

321、7队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 20 01 17 7队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换

322、。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 20 01 17 7队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。

323、性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 21 12 20 0队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访

324、问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 21 12 20 0队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:

325、例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 21 12 20 0队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27

326、 0 1 2 0 3 0 4 22 23 31 1队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 22 23 31 1队尾队尾队头队头二、先进先出页面置换算法二

327、、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 23 30 02 2队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页

328、面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 23 30 02 2队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,

329、立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 20 04 43 3队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法

330、下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 20 04 43 3队尾队尾队头队头二、先进先出页面置换算法二、先进先出页面置换算法 选择建立最早的页面被置换。可以通过链表来表示各页的建选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在这些页在FIFOFIFO算法下被反复调入和调出。算法下被反复调入和调出。例:例:3 3个页框,页面走势如下个页框,页面走

331、势如下: :7 0 1 2 0 3 0 4 27 0 1 2 0 3 0 4 24 42 20 0队尾队尾队头队头0 0 1 1 2 2 3 3 0 0 1 1 4 4 4 4 4 4 2 2 3 3 3 3 0 0 1 1 2 2 3 3 0 0 1 1 1 1 1 1 4 4 2 2 2 2 0 0 1 1 2 2 3 3 0 0 0 0 0 0 1 1 4 4 4 4 t t队头队头p p p p p pp pp pp pp pp pp p 0 0 1 1 2 2 2 2 2 2 3 3 4 4 0 0 1 1 2 2 3 3 0 0 1 1 1 1 1 1 2 2 3 3 4 4 0

332、0 1 1 2 2 0 0 0 0 0 0 1 1 2 2 3 3 4 4 0 0 1 1 t t队头队头p p p p p pp pp pp pp pp pp p0 0 1 1 2 2 3 3 3 3 3 3 4 4 0 0 1 1 2 2 3 3 4 4 p p这种页框数增多而中断次数反而增加的异常现象称为这种页框数增多而中断次数反而增加的异常现象称为BeladyBelady异常异常BeladyBelady 给的数据(给的数据(6969年):年): 0 1 2 3 0 1 4 0 1 2 3 40 1 2 3 0 1 4 0 1 2 3 4BeladyBelady异常异常: :三、最近最久

333、未使用三、最近最久未使用LRULRU置换算法置换算法 原理:在前面几条指令中使用频繁的页面很可能在后面的几原理:在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用;即:已经很久没有使用的页面很有可能在条指令中频繁使用;即:已经很久没有使用的页面很有可能在未来较长的一段时间内不会被用到。未来较长的一段时间内不会被用到。1 1、LRULRU算法描述算法描述 在淘汰一个页面时,选择在淘汰一个页面时,选择最近最久未使用最近最久未使用的页面。的页面。例:例: 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 0 1 2 0 3 0 4 2 3 0 3 2 1

334、 2 0 1 7 0 17 70 01 12 20 01 12 20 03 34 40 03 34 40 02 24 43 32 20 03 32 21 13 32 21 10 02 21 10 07 72 2、如何记最近最久没使用的页、如何记最近最久没使用的页1 1)硬件)硬件 每个页面一个寄存器,访问一个页最高位置每个页面一个寄存器,访问一个页最高位置1 1,每隔一个时间段所,每隔一个时间段所有寄存器右移一位。淘汰时选值最小的。有寄存器右移一位。淘汰时选值最小的。1 0 1 1 1 01 0 1 1 1 00 0 1 1 1 00 0 1 1 1 0在实际应用中成本太高以至无法实现。在实际

335、应用中成本太高以至无法实现。三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾 三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈

336、式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 4 三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调

337、到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 4 三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,

338、在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 4 7 7 三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7

339、0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 4 7 7 三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 4

340、0 0 7 7 三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 40 0 7 7 三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式

341、算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 47 7 0 0 三三、最近最久未使用、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中

342、则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 47 7 0 0 三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移

343、 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 47 7 0 01 1三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的

344、总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 47 7 0 01 1三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7

345、0 7 1 0 1 2 1 2 6队头队头队尾队尾4 41 1 7 70 0三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 41 1 7 70 0三、最近最久

346、未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 40 0 7 71 1三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算

347、是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 40 0 7 71 1三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则

348、调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 40 0 2 27 71 1三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是

349、队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 40 0 2 27 71 1三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是

350、相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 40 0 1 17 72 2三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7

351、 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 40 0 2 27 71 1三、最近最久未使用三、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾4 40 0 2 27 71

352、1三三、最近最久未使用、最近最久未使用LRULRU置换算法置换算法2 2)栈式算法)栈式算法 实际运算是一个队,实际运算是一个队, 访问的页不在队中则入队访问的页不在队中则入队 若在队中,则调到队尾,原在它后面的顺序前移若在队中,则调到队尾,原在它后面的顺序前移 淘汰总是队头淘汰总是队头按此算法,在队头的总是相对最近最久未使用的。按此算法,在队头的总是相对最近最久未使用的。例子例子 :4 7 0 7 1 0 1 2 1 2 64 7 0 7 1 0 1 2 1 2 6队头队头队尾队尾7 71 1 6 60 02 2问题:问题: 每次访问页表时都要每次访问页表时都要更新,表中查找被访问更新,表中

353、查找被访问的页,移动数据都非常的页,移动数据都非常费时,即使用硬件做,费时,即使用硬件做,也非常费时。也非常费时。四、四、ClockClock置换算法置换算法 也称最近未使用算法也称最近未使用算法( (NRU, Not Recently Used)NRU, Not Recently Used)或二次机会或二次机会算法,它是算法,它是LRULRU和和FIFOFIFO的折衷。的折衷。 每页一个访问位每页一个访问位,一旦该页被访问则置一旦该页被访问则置1 1。置换时采用一个置换时采用一个指针,从当前指针位置开始按地址先后检查各页,若该页的访指针,从当前指针位置开始按地址先后检查各页,若该页的访问位是

354、问位是1 1,改为,改为0 0,顺序看下一个页,直到找到一个,顺序看下一个页,直到找到一个访问位访问位0 0的的页面作为被置换页淘汰。(若页面作为被置换页淘汰。(若A A都为都为1 1,则为,则为FIFOFIFO)1 1)简单的)简单的ClockClock算法算法2 2、改进型、改进型ClockClock置换算法置换算法 每个页有访问位每个页有访问位A A和修改位和修改位M M,开始两个都为开始两个都为0 0,一旦访问,一旦访问该页,该页,A A置置1 1,修改该页,修改该页,M M置置1 1。(1 1) A=0 M=0 A=0 M=0 最近即没使用、也没修改最近即没使用、也没修改(2 2)

355、A=0 M=1 A=0 M=1 最近没使用、但已修改最近没使用、但已修改(3 3) A=1 M=0 A=1 M=0 最近使用过、但没修改最近使用过、但没修改(4 4) A=1 M=1 A=1 M=1 最近使用过、又修改过最近使用过、又修改过 第第1 1次找次找A=0 M=0 A=0 M=0 但不修改但不修改 A A,找到就为置换页;找到就为置换页; 找不到,第找不到,第2 2次顺序找次顺序找A=0 M=1 A=0 M=1 ,同时置同时置A A为为0 0 ,找到就为,找到就为置换页置换页 若没找到,则再按第若没找到,则再按第1 1次的方式找,若还找不到,在进行次的方式找,若还找不到,在进行第二次

356、,则定能找到。第二次,则定能找到。 五、其它置换算法五、其它置换算法1 1、最少使用置换算法、最少使用置换算法 选择到当前时间为止被访问次数最少的页面被置换;选择到当前时间为止被访问次数最少的页面被置换;每页设置访问计数器,每当页面被访问时,该页面的访问每页设置访问计数器,每当页面被访问时,该页面的访问计数器加计数器加1 1;发生缺页中断时,淘汰计数值最小的页面,并将所有计数发生缺页中断时,淘汰计数值最小的页面,并将所有计数清零;清零; 2 2、页面缓冲算法、页面缓冲算法 FIFOFIFO算法的发展,通过被置换页面的缓冲,有机会找算法的发展,通过被置换页面的缓冲,有机会找回刚被置换的页面;回刚

357、被置换的页面;方法:方法: 空闲页面链表空闲页面链表 设置两个链表设置两个链表 已修改页面链表已修改页面链表 被置换页面的选择和处理:用被置换页面的选择和处理:用FIFOFIFO算法选择被置换页,把被算法选择被置换页,把被置换的页面放入两个链表之一。如果页面未被修改,就将其归置换的页面放入两个链表之一。如果页面未被修改,就将其归入到空闲页面链表的末尾;否则将其归入到已修改页面链表。入到空闲页面链表的末尾;否则将其归入到已修改页面链表。 需要调入新的物理页面时,首先在两个页表中查找有无副本,需要调入新的物理页面时,首先在两个页表中查找有无副本,若有则若有则被访问的页面可以返还作为进程的内存页,被

358、访问的页面可以返还作为进程的内存页,链表只要做链表只要做相应处理即可;否则,空闲页面链表的第一项分配出去,启动相应处理即可;否则,空闲页面链表的第一项分配出去,启动硬盘调入。硬盘调入。 当已修改页面达到一定数目后,再将它们一起调出到外存,当已修改页面达到一定数目后,再将它们一起调出到外存,释放的页框归入空闲页面链表,这样大大减少了释放的页框归入空闲页面链表,这样大大减少了I/OI/O操作的次数。操作的次数。6.4 6.4 请求分页系统的性能分析请求分页系统的性能分析一、缺页率对有效访问时间的影响一、缺页率对有效访问时间的影响 设设mama为主存的访问时间,约为为主存的访问时间,约为1010ns

359、,ns,缺页率为缺页率为p,p,则则平均有效访问时间平均有效访问时间= =(1-1-p p)* ma + p* * ma + p* 缺页中断时间缺页中断时间 其中:主要时间为读新页时间,约为其中:主要时间为读新页时间,约为2424msms,其它两项按其它两项按1 1msms计,计,总总2525msms。缺页中断服务时间缺页中断服务时间读入新页的时间读入新页的时间进程重新执行的时间进程重新执行的时间缺页中断时间缺页中断时间平均有效访问时间平均有效访问时间= =(1-1-p p)*0.1 + p*25000= 0.1+24999.9*p*0.1 + p*25000= 0.1+24999.9*p当当

360、p=0.001p=0.001,则有效访问时间则有效访问时间=25=25ns,ns,降低为正常的降低为正常的0.1/25=1/2500.1/25=1/250。 若希望由于缺页引起的有效访问时间延长不超过若希望由于缺页引起的有效访问时间延长不超过10%10%,则根据,则根据公式:公式: 平均有效访问时间平均有效访问时间= =0.1+24999.9*0.1+24999.9*p p 24999.9*p10%=0.124999.9*p = p=0.0000004(p=0.0000004(意味着平均意味着平均250250万次访问万次访问才能有一次缺页)才能有一次缺页)因此磁盘速度及接口性能至关重要。因此磁

361、盘速度及接口性能至关重要。二、二、 工作集工作集1、缺页率与页框数的关系、缺页率与页框数的关系缺页率缺页率=缺页次数缺页次数/内存访问次数内存访问次数页框数页框数缺页率缺页率2 2、工作集、工作集1 1)常驻集)常驻集常驻集指虚拟页式管理中给进程分配的物理页面数目。常驻集指虚拟页式管理中给进程分配的物理页面数目。(1)(1)常驻集与缺页率的关系:常驻集与缺页率的关系: 每个进程的常驻集越小,则同时驻留内存的进程就越多,可以每个进程的常驻集越小,则同时驻留内存的进程就越多,可以提高并行度和处理器利用率;另一方面,进程的缺页率上升,使提高并行度和处理器利用率;另一方面,进程的缺页率上升,使调页的开

362、销增大。调页的开销增大。 进程的常驻集达到某个数目之后,再给它分配更多页面,缺进程的常驻集达到某个数目之后,再给它分配更多页面,缺页率不再明显下降。页率不再明显下降。(2)(2)常驻集大小的确定方式:依据常驻集大小在进程执行过程中常驻集大小的确定方式:依据常驻集大小在进程执行过程中是否可变,分为:是否可变,分为: 固定分配:常驻集大小固定。固定分配:常驻集大小固定。 可变分配可变分配:常驻集大小可变,按照缺页率动态调整(高或低常驻集大小可变,按照缺页率动态调整(高或低 增大或减小常驻集,以增加算法运行的开销为代价)。增大或减小常驻集,以增加算法运行的开销为代价)。(3)(3)置换范围置换范围全

363、局全局局部局部 固定分配固定分配+ +局部置换:主要问题是进程开始前按什么原则给局部置换:主要问题是进程开始前按什么原则给它分配页面数。多了会影响并发度,少了会使缺页率过高。它分配页面数。多了会影响并发度,少了会使缺页率过高。 可变分配可变分配+ +全局置换:主要问题是置换策略的选择,如何全局置换:主要问题是置换策略的选择,如何决定哪个进程的页面将被调出。决定哪个进程的页面将被调出。 可变分配可变分配+ +局部置换局部置换2 2、 工作集策略工作集策略( (working set strategy)working set strategy) 1968 1968年由年由DenningDennin

364、g提出,引入工作集的提出,引入工作集的目的是依据进程在过目的是依据进程在过去的一段时间内访问的页面来调整常驻集大小去的一段时间内访问的页面来调整常驻集大小。 (1)(1)工作集的定义工作集的定义:工作集是一个进程执行过程中所访:工作集是一个进程执行过程中所访问页面的集合,用一个二元函数问页面的集合,用一个二元函数W(t, W(t, ) )表示,其中:表示,其中: t t是执行时刻;是执行时刻; 是一个虚拟时间段,称为窗口大小是一个虚拟时间段,称为窗口大小( (window size)window size),它采它采用用“虚拟时间虚拟时间”单位单位( (即阻塞时不计时即阻塞时不计时) )。工作

365、集是在工作集是在 t - t - , t, t时间段内所访问的页面的集合,时间段内所访问的页面的集合,| |W(t, W(t, ) | ) | 指工作集大小即页面数目;指工作集大小即页面数目; (2 2) 工作集的性质:工作集的性质: 随随 单调递增:单调递增:W(t, W(t, ) ) W(t, W(t, + a) + a),其中其中a0a0(3 3) 工作集大小的变化:工作集大小的变化:进程开始执行后,随着访问新页面进程开始执行后,随着访问新页面逐步建立较稳定的工作集。当内存访问的局部性区域的位置大逐步建立较稳定的工作集。当内存访问的局部性区域的位置大致稳定时,工作集大小也大致稳定;局部性

366、区域的位置改变时,致稳定时,工作集大小也大致稳定;局部性区域的位置改变时,工作集快速扩张和收缩过渡到下一个稳定值。工作集快速扩张和收缩过渡到下一个稳定值。 工作集大小工作集大小过渡阶段过渡阶段时间时间稳定阶段稳定阶段(4 4) 利用工作集进行常驻集调整的策略:利用工作集进行常驻集调整的策略:记录一个进程的工作集变化;记录一个进程的工作集变化;定期从常驻集中删除不在工作集中的页面定期从常驻集中删除不在工作集中的页面总是让常驻集包含工作集;总是让常驻集包含工作集;(5 5)困难:困难: 工作集的过去变化未必能够准确预示工作集的将来大小工作集的过去变化未必能够准确预示工作集的将来大小与变化;与变化;

367、 记录工作集变化要求开销太大;记录工作集变化要求开销太大; 对工作集窗口大小对工作集窗口大小 的取值难以优化,而且通常该值是的取值难以优化,而且通常该值是不断变化的;不断变化的; 三、抖动产生的原因和预防方法三、抖动产生的原因和预防方法1 1、抖动产生原因、抖动产生原因 随着驻留内存的进程数目增加,或者说进程并发度的提高,随着驻留内存的进程数目增加,或者说进程并发度的提高,处理器利用率先上升,然后下降。这时处理器利用率下降的原处理器利用率先上升,然后下降。这时处理器利用率下降的原因通常称为虚拟存储器发生因通常称为虚拟存储器发生“抖动抖动”,也就是:每个进程的常,也就是:每个进程的常驻集不断减小

368、,缺页率不断上升,频繁调页使得调页开销增大。驻集不断减小,缺页率不断上升,频繁调页使得调页开销增大。OSOS要选择一个适当的进程数目,以在并发度和缺页率之间达到要选择一个适当的进程数目,以在并发度和缺页率之间达到一个平衡。一个平衡。 多道程序的度多道程序的度CPUCPU利用率利用率2 2、抖动的预防、抖动的预防 (1 1)局部置换策略。)局部置换策略。 (2 2)CPUCPU调度程序中引入工作集算法。调度程序中引入工作集算法。 (3 3)L=SL=S准则准则 产生缺页的平均时间产生缺页的平均时间= =系统处理进程的平均时间。系统处理进程的平均时间。 (4 4)挂起若干进程)挂起若干进程四、实现

369、中的其它一些问题四、实现中的其它一些问题1 1、指令恢复、指令恢复 在缺的页调入后,重新执行引起陷阱的指令,但由于指在缺的页调入后,重新执行引起陷阱的指令,但由于指令的执行都是在微程序控制下,此时令的执行都是在微程序控制下,此时PCPC不一定在指令位置处。不一定在指令位置处。解决:解决:(1 1)有第二个备份寄存器(事后软件可取出恢复)有第二个备份寄存器(事后软件可取出恢复)(2 2)微码将内部状态压栈以便重启动()微码将内部状态压栈以便重启动(Motorola 68010)Motorola 68010)(3 3)微码回退到发生中断前状态(微码回退到发生中断前状态(VAXVAX)(4 4)RI

370、SCRISC的的CPUCPU,缺页后处于一个及其复杂的状态,因为硬,缺页后处于一个及其复杂的状态,因为硬件设计者无能为力,扔给了操作系统设计人员。件设计者无能为力,扔给了操作系统设计人员。2 2、内存页锁定、内存页锁定 正在进行正在进行I/OI/O操作的页不应该换出,即要锁定。操作的页不应该换出,即要锁定。 另一种解决是另一种解决是I/OI/O操作在核心缓冲区进行(不占用页框)操作在核心缓冲区进行(不占用页框),操作完成后复制到用户页。(,操作完成后复制到用户页。(UNIXUNIX做法)做法)6.5 6.5 请求分段存储器管理方式请求分段存储器管理方式 原理上同请求分页系统,此时不要求所有段装

371、入主存,原理上同请求分页系统,此时不要求所有段装入主存,当发现段不在内存时,发生缺段中断,由中断处理程序负责当发现段不在内存时,发生缺段中断,由中断处理程序负责调入所缺的段,如果无内存空间,也有段淘汰问题。调入所缺的段,如果无内存空间,也有段淘汰问题。6.5.1 6.5.1 请求分段中的硬件支持请求分段中的硬件支持一、段表机制一、段表机制段段名名段段长长段基址段基址存取存取方式方式访问字访问字段段A A修改字修改字段段M M存在位存在位P P增补增补位位外存地址外存地址修改有关字段修改有关字段形成主存物理地形成主存物理地址址= =段始址段始址+ +偏移偏移量量二、地址变换机构工作流程二、地址变

372、换机构工作流程 访问访问 SWSWS=S=段长段长符合存取方式?符合存取方式?段段S S在主存?在主存?地址变换结束地址变换结束y yy yy yn n 中断信号中断信号分段越界中断处理分段越界中断处理n n 中断信号中断信号分段保护中断处理分段保护中断处理n n 中断信号中断信号缺段中断处理缺段中断处理阻塞请求进程阻塞请求进程从外存读入段从外存读入段S S修改段表及内修改段表及内存空闲区链表存空闲区链表唤醒请求进程唤醒请求进程淘汰一个或几个内淘汰一个或几个内存实段,以形成一存实段,以形成一个合适的空闲区个合适的空闲区空闲区拼接,以空闲区拼接,以形成一个合适的形成一个合适的空闲区空闲区y y三

373、、缺段中断处理三、缺段中断处理虚段虚段S S不在内存不在内存空闲区容量总空闲区容量总和能否满足?和能否满足?指令重执行指令重执行内存中有合适内存中有合适的空闲区吗?的空闲区吗?N Nn ny y6.5.2 6.5.2 分段共享与保护分段共享与保护一、共享段表一、共享段表 记录共享段的有关信息。记录共享段的有关信息。段名段名段长段长状态状态外存地址外存地址内存地址内存地址状态状态进程名进程名段号段号存取控制存取控制进程号进程号共享进程计数共享进程计数countcount.二、共享段的分配与回收二、共享段的分配与回收 1 1、 共享段的分配共享段的分配 首次使用时,将共享段调入内存,填写共享段表项

374、,置首次使用时,将共享段调入内存,填写共享段表项,置count=1count=1;其它进程再次使用该段时,只需填写共享段表项,其它进程再次使用该段时,只需填写共享段表项,countcount加加1 1即可。即可。 2 2、共享段的回收、共享段的回收 进程不再需要使用某个共享段时,修改共享段表项,将进程不再需要使用某个共享段时,修改共享段表项,将countcount减减1 1,若,若count = 0count = 0,表明没有进程需要使用该段,系统表明没有进程需要使用该段,系统可将该段占用的内存回收。可将该段占用的内存回收。 另外,共享段通常不被交换到外存。另外,共享段通常不被交换到外存。 第

375、第7 7章章 设备管理设备管理 操作系统中负责管理输入输出设备的部分称为操作系统中负责管理输入输出设备的部分称为I/OI/O系统,系统,用来完成设备管理功能,即控制这些设备完成期望的数据用来完成设备管理功能,即控制这些设备完成期望的数据传送。传送。I/OI/O设备种类多、情况复杂,其管理的效率,对设备种类多、情况复杂,其管理的效率,对OSOS影影响非常大,与处理机管理、存储管理密切相关,设备管理响非常大,与处理机管理、存储管理密切相关,设备管理因此常常作为操作系统内核的一部分。因此常常作为操作系统内核的一部分。从资源管理的角度:从资源管理的角度:设备的分配与回收(设备调度)。设备的分配与回收(

376、设备调度)。从扩展虚拟机的角度:从扩展虚拟机的角度:隐藏设备细节:发送命令、捕获中断、处理错误、获取隐藏设备细节:发送命令、捕获中断、处理错误、获取设备状态;设备状态;提供一个统一的接口:满足设备的独立性。提供一个统一的接口:满足设备的独立性。7.1 7.1 I/OI/O系统的组成系统的组成7.1.1 7.1.1 I/OI/O系统结构系统结构 I/OI/O系统的组成主要包括:系统的组成主要包括:I/OI/O设备、设备控制器及相设备、设备控制器及相关接口、总线等,大型主机还包括关接口、总线等,大型主机还包括I/OI/O通道。通道。一、微型机的一、微型机的I/OI/O系统系统 一般采用单总线结构一

377、般采用单总线结构I/O控制器CPUCPUDMA控制器主存主存I/O控制器打印机磁盘阵列系统总线系统总线系统总线CPUI/O总线I/O控制器控制器I/O控制器控制器I/O控制器控制器I/O控制器控制器主存主存通道通道处理器处理器PlotterDataScannerDisk arrayFloppy driveOptical driveASCII Printer二、主机的二、主机的I/OI/O系统系统多总线和专用多总线和专用I/O计算机(计算机(I/O通道)通道)7.1.2 7.1.2 I/OI/O设备设备一、一、I/OI/O设备的类型设备的类型1 1按传输速率分类:低、中、高速。按传输速率分类:低

378、、中、高速。2 2按信息交换单位分类(信息组织方式):块设备(适合按信息交换单位分类(信息组织方式):块设备(适合DMADMA方式)、字符设备方式)、字符设备3 3按设备共享属性分类:独占、共享、虚拟。按设备共享属性分类:独占、共享、虚拟。二、设备与控制器之间的接口二、设备与控制器之间的接口 设备不直接同计算机连接,一般是通过专用的电缆线连接设备不直接同计算机连接,一般是通过专用的电缆线连接控制器与设备。控制器与设备。 两者传递的信号主要是三类:两者传递的信号主要是三类:1 1数据信号:控制器到设备数据信号:控制器到设备(输出)、设备到控制器(输入)(输出)、设备到控制器(输入)2 2控制信号

379、:控制器到设备控制信号:控制器到设备3 3状态信号:设备到控制器状态信号:设备到控制器在小型机和微型机中,控制器一般直接做成印刷电路板插入在小型机和微型机中,控制器一般直接做成印刷电路板插入计算机(在微机中习惯称为卡,如图形加速卡,网卡)计算机(在微机中习惯称为卡,如图形加速卡,网卡)7.1.3 7.1.3 设备控制器设备控制器一、设备控制器的功能一、设备控制器的功能1 1接收和识别命令:能接收接收和识别命令:能接收CPUCPU发给外设的命令发给外设的命令2 2数据交换:作为数据交换:作为CPUCPU与设备的中介完成两者数据交换与设备的中介完成两者数据交换3 3设备状态的了解和报告:能反映设备

380、的情况,因此控制器设备状态的了解和报告:能反映设备的情况,因此控制器内含有一些状态寄存器内含有一些状态寄存器4 4地址识别:每个控制器都占有一个或若干个连续的地址识别:每个控制器都占有一个或若干个连续的I/OI/O地地址,(如址,(如RS232RS232口共占了口共占了1010个地址),所以内部有地址译码逻个地址),所以内部有地址译码逻辑。辑。 地址编码:专用地址编码:专用I/OI/O地址及专用地址及专用I/OI/O指令指令 存储器映象,一般没有专用存储器映象,一般没有专用I/OI/O指令指令二、设备控制器的组成二、设备控制器的组成1 1设备控制器与处理机的接口设备控制器与处理机的接口2 2设

381、备控制器与设备的接口设备控制器与设备的接口3 3I/OI/O逻辑逻辑控制器与设备接口控制器与设备接口数据寄存器数据寄存器控制控制/状态状态寄存器寄存器I/O逻辑逻辑地址线地址线控制线控制线控制器控制器与设备与设备接口接口控制器控制器与设备与设备接口接口.数据线数据线CPU与控制器接口与控制器接口数据数据状态状态控制控制数据数据状态状态控制控制7.1.4 7.1.4 I/OI/O通道通道一、通道设备的引入一、通道设备的引入 为减轻处理机的负担,引入通道。通道控制器为减轻处理机的负担,引入通道。通道控制器( (Channel Channel Processor)Processor)有自己的专用存储

382、器有自己的专用存储器( (为节省成本也可以利用主存)为节省成本也可以利用主存),可以执行由通道指令组成的通道程序,因此可以进行较为,可以执行由通道指令组成的通道程序,因此可以进行较为复杂的复杂的I/OI/O控制。通道程序通常由操作系统所构造,放在内存控制。通道程序通常由操作系统所构造,放在内存里。里。例:例:write(4,buffer,10000);将参数传递给打印机驱动程序;将参数传递给打印机驱动程序;后继语句后继语句打印驱动:打印驱动:计数器清计数器清0;p=buffer地址;地址;第一个数送打印机输出口;第一个数送打印机输出口;阻塞自己;阻塞自己;返回;返回;打印中断:打印中断:计数器

383、加计数器加1;计数已到计数已到10000则则调用唤醒原语;中断返回调用唤醒原语;中断返回p+;根据根据p送数到打印机输出口;送数到打印机输出口;中断返回中断返回用户进程:用户进程:非通道情况非通道情况CPU要处理要处理9999次中断次中断例:例:write(4,buffer,10000);将参数传递给通道主控程序;将参数传递给通道主控程序;1、参数检查,确定设备;、参数检查,确定设备;转到设备驱动;转到设备驱动;打印驱动:打印驱动:计数器清计数器清0;p=buffer地址;地址;第一个数送打印机输出口;第一个数送打印机输出口;控制器上阻塞自己;控制器上阻塞自己;通道软中断指令通知通道软中断指令

384、通知CPU通道任务完成;通道任务完成;(即通道中断(即通道中断CPU)打印中断(中断的是通道的打印中断(中断的是通道的CPU):):计数器加计数器加1;计数已到计数已到10000则则调用唤醒原语;中断返回调用唤醒原语;中断返回p+;根据根据p送数到打印机输出口;送数到打印机输出口;中断返回中断返回用户进程:用户进程:通道情况通道情况CPU对通道中断对通道中断的处理:的处理:打印结束善后工打印结束善后工作;作;唤醒通道上阻塞唤醒通道上阻塞进程;进程;中断返回中断返回启动通道启动通道后续语句后续语句阻塞自己阻塞自己CPU只处理只处理1次中断,次中断,其余的由通道自己处理其余的由通道自己处理二、通道

385、类型二、通道类型1 1 字节多路通道字节多路通道2 2 数组选择通道数组选择通道3 3 数组多路通道数组多路通道三、三、“瓶颈瓶颈”问题问题7.2 7.2 I/OI/O控制方式控制方式一、程序一、程序I/OI/O方式方式 I/OI/O操作由程序发起,并等待操作完成。数据的每次读写操作由程序发起,并等待操作完成。数据的每次读写通过通过CPUCPU。 缺点:在外设进行数据处理时,缺点:在外设进行数据处理时,CPUCPU只能等待。只能等待。二、中断驱动二、中断驱动I/OI/O控制方式控制方式I/O/O操作由程序发起,操作由程序发起,I/OI/O操作的工作准备好后,通过外设驱操作的工作准备好后,通过外

386、设驱动程序启动外设,自己阻塞(若需等数据)。动程序启动外设,自己阻塞(若需等数据)。I/OI/O在操作完成后在操作完成后(如数据可读或已经写入)由外设向(如数据可读或已经写入)由外设向CPUCPU发出中断,若进程阻塞发出中断,若进程阻塞则唤醒该进程。数据的每次读写通过则唤醒该进程。数据的每次读写通过CPUCPU。优点:在外设进行数据处理时,优点:在外设进行数据处理时,CPUCPU不必等待,可以继续执行该不必等待,可以继续执行该进程或其它进程。进程或其它进程。缺点:缺点:CPUCPU每次处理的数据量少(通常不超过几个字节),只适每次处理的数据量少(通常不超过几个字节),只适于数据传输率较低的设备

387、。于数据传输率较低的设备。四、四、I/OI/O通道控制方式通道控制方式 通道控制器通道控制器( (Channel Processor)Channel Processor)有自己的专用存储器,可有自己的专用存储器,可以执行由通道指令组成的通道程序,因此可以进行较为复杂的以执行由通道指令组成的通道程序,因此可以进行较为复杂的I/OI/O控制。通道程序通常由操作系统所构造,放在内存里。控制。通道程序通常由操作系统所构造,放在内存里。三、直接存储器访问三、直接存储器访问DMADMA控制方式控制方式 由程序设置由程序设置DMADMA控制器中的若干寄存器值(如内存始址,传控制器中的若干寄存器值(如内存始址

388、,传送字节数),然后发起送字节数),然后发起I/OI/O操作,而后者完成内存与外设的成操作,而后者完成内存与外设的成批数据交换,在操作完成时由批数据交换,在操作完成时由DMADMA控制器向控制器向CPUCPU发出中断。发出中断。 特点:特点:CPUCPU只需干预只需干预I/OI/O操作的开始和结束,而后的一批数操作的开始和结束,而后的一批数据读写无需据读写无需CPUCPU控制,适合于高速设备。控制,适合于高速设备。7.3 7.3 缓冲管理缓冲管理一、一、 缓冲引入目的缓冲引入目的1 1缓和缓和CPUCPU与与I/OI/O设备间速度不匹配的矛盾设备间速度不匹配的矛盾 匹配匹配CPUCPU或用户进

389、程与外设的不同处理速度。或用户进程与外设的不同处理速度。2 2减少对减少对CPUCPU的中断频率,放宽对中断相应时间的限制的中断频率,放宽对中断相应时间的限制3 3提高提高CPUCPU和和I/OI/O设备之间的并行性设备之间的并行性因此,缓冲区所在的位置:内存,控制器或外设。因此,缓冲区所在的位置:内存,控制器或外设。二、二、 单缓冲单缓冲 单缓冲单缓冲:一个缓冲区,一个缓冲区,CPUCPU和外设轮流使用,一方处理完和外设轮流使用,一方处理完之后接着等待对方处理。之后接着等待对方处理。三、三、 双缓冲双缓冲 双缓冲双缓冲:两个缓冲区,两个缓冲区,CPUCPU和外设都可以连续处理而无和外设都可以

390、连续处理而无需等待对方。要求需等待对方。要求CPUCPU和外设的速度相近。和外设的速度相近。四、循环缓冲四、循环缓冲 环形缓冲环形缓冲:多个缓冲区,多个缓冲区,CPUCPU和外设的处理速度可以相和外设的处理速度可以相差较大。差较大。7.4 7.4 设备分配设备分配 由于外设资源的有限,需解决进程间的外设共享问题,以提由于外设资源的有限,需解决进程间的外设共享问题,以提高外设资源的利用率。设备分配是对进程使用外设过程的管理。高外设资源的利用率。设备分配是对进程使用外设过程的管理。这里有两种作法:这里有两种作法:1)1)在进程间切换使用外设,如键盘和鼠标;在进程间切换使用外设,如键盘和鼠标;2)2

391、)通过一个虚拟设备把外设与应用进程隔开,只由通过一个虚拟设备把外设与应用进程隔开,只由虚拟设备来使用设备。虚拟设备来使用设备。7.4.1 7.4.1 设备分配中的数据结构设备分配中的数据结构一、设备控制表一、设备控制表( (DCT, Device Control Table)DCT, Device Control Table) 每个设备一张,反映设备的特性、状态、设备和控制器每个设备一张,反映设备的特性、状态、设备和控制器的连接情况。的连接情况。DCTDCT的内容主要包括:的内容主要包括:设备标识:用来区别不同的设备;设备标识:用来区别不同的设备;设备类型:反映设备的特性;如:块设备或字符设备

392、;设备类型:反映设备的特性;如:块设备或字符设备;设备配置:设备配置:I/OI/O地址等;地址等;设备状态:工作或空闲状态;设备状态:工作或空闲状态;等待队列:等待使用该设备的进程队列;等待队列:等待使用该设备的进程队列; 指向控制器表的指针指向控制器表的指针二、控制器控制表二、控制器控制表( (COCT, COCT, COntrollerCOntroller Control Table) Control Table) 每个设备控制器一张,描述每个设备控制器一张,描述I/OI/O控制器的配置和状态。控制器的配置和状态。如如DMADMA控制器所占用的中断号、控制器所占用的中断号、DMADMA数据

393、通道的分配情况等。数据通道的分配情况等。控制器标识符控制器状态:忙/空闲与控制器连接的通道指针等待控制器的进程队列指针三、通道控制表三、通道控制表( (CHCT, CHCT, CHannelCHannel Control Table) Control Table) 每个通道一张,描述通道工作状态。每个通道一张,描述通道工作状态。四、系统设备表四、系统设备表( (SDT, System Device Table)SDT, System Device Table) 系统一张,反映系统中设备资源的状态,记录所有设备的系统一张,反映系统中设备资源的状态,记录所有设备的状态及其设备控制表的入口(可以考虑

394、同设备控制表合)。状态及其设备控制表的入口(可以考虑同设备控制表合)。系统设备表系统设备表设备控制表设备控制表控制器控制器控制表控制表1 1通道控制表通道控制表设备设备控制表控制表1 1控制器控制器控制表控制表2 2控制器控制器控制表控制表n n设备设备控制表控制表n npcbpcbpcbpcb五、五、 表格之间的关系表格之间的关系pcbpcb7.4.27.4.2设备分配时应考虑的因素设备分配时应考虑的因素 设备分配的原则是合理使用外设设备分配的原则是合理使用外设( (公平和避免死锁公平和避免死锁) ),提高设备,提高设备使用率。使用率。一、考虑一、考虑设备的固有属性设备的固有属性1、独享设备

395、:、独享设备:打印机等。进程使用完自己释放,一般不能剥夺;打印机等。进程使用完自己释放,一般不能剥夺;2、共享设备:、共享设备:磁盘、网卡等。多个进程并发使用,需合理调度;磁盘、网卡等。多个进程并发使用,需合理调度;3、虚拟设备:、虚拟设备:虚拟打印机等。可有多个进程以先来先服务的方式虚拟打印机等。可有多个进程以先来先服务的方式用。用。二、二、设备分配算法设备分配算法静态分配:静态分配:在进程创建时分配,在进程退出时释放;在进程创建时分配,在进程退出时释放;不会出现死锁;不会出现死锁;设备利用率不高;设备利用率不高;动态分配:动态分配:在进程执行过程中根据需要分配,使用结束后释放;在进程执行过

396、程中根据需要分配,使用结束后释放;需要考虑死锁问题需要考虑死锁问题有利于提高设备利用率有利于提高设备利用率动态分配策略,动态分配策略,与进程调度类似;与进程调度类似;先来先服务先来先服务( (FCFS)FCFS):按按I/OI/O请求的先后顺序,排成请求的先后顺序,排成I/OI/O请求命令队请求命令队列;按列;按FCFSFCFS分配设备;分配设备;基于优先级:基于优先级:依据进程的优先级,指定依据进程的优先级,指定I/OI/O请求的优先级,排成请求的优先级,排成不同优先级队列;按优先级高低分配设备;不同优先级队列;按优先级高低分配设备;三、三、设备分配中的安全性设备分配中的安全性1 1安全分配

397、方式安全分配方式 进程发出进程发出I/OI/O请求后阻塞,完成后唤醒,即进程运行时不请求后阻塞,完成后唤醒,即进程运行时不占有任何设备资源,摈弃了占有任何设备资源,摈弃了“请求保持请求保持”条件。条件。2 2不安全分配方式不安全分配方式 进程发出进程发出I/OI/O请求后仍继续运行,又可发出其它请求后仍继续运行,又可发出其它I/OI/O请求,请求,仅当进程所请求的设备已被另一进程占用时,进程才进入阻仅当进程所请求的设备已被另一进程占用时,进程才进入阻塞状态。塞状态。 优点:多个设备并行操作;优点:多个设备并行操作; 缺点:可能造成死锁。缺点:可能造成死锁。7.4.3 7.4.3 设备的独立性设

398、备的独立性一、设备独立性的概念一、设备独立性的概念 设备独立性指除了直接与设备打交道的底层软件之外,设备独立性指除了直接与设备打交道的底层软件之外,其它部分的软件并不依赖与硬件。其它部分的软件并不依赖与硬件。 操作系统设备管理的总体结构,目前最常见的是化分为操作系统设备管理的总体结构,目前最常见的是化分为两层:两层:设备无关层(独立层)设备无关层(独立层)设备相关层(驱动层)设备相关层(驱动层)设备中断处理程序;设备中断处理程序;设备驱动程序;设备驱动程序;与设备无关的操作系统软件;与设备无关的操作系统软件;用户级软件(指用户空间的软件)。用户级软件(指用户空间的软件)。进一步细化为:进一步细

399、化为:1、设备管理软件的分层设备管理软件的分层用户空间软件用户空间软件与设备无关的系统软件与设备无关的系统软件设备驱动程序设备驱动程序中断处理程序中断处理程序硬件硬件I/O请求请求I/O回答回答操作系统核心完成操作系统核心完成操作系统提供软件操作系统提供软件接口标准(设备驱接口标准(设备驱动开发指南,设备动开发指南,设备驱动开发技术手册)驱动开发技术手册)各厂商为其提供驱各厂商为其提供驱动程序。动程序。2 2、中断层、中断层主要工作:主要工作:(1 1)寄存器级的寄存器级的I/OI/O,或或DMADMA操作结束,常利用缓冲区操作结束,常利用缓冲区; ;(2 2)检查状态;检查状态;(3 3)需

400、要时的后续驱动:发出后续命令。需要时的后续驱动:发出后续命令。(4 4)可能要改变有关进程的状态。如唤醒阻塞的进程。可能要改变有关进程的状态。如唤醒阻塞的进程。3 3、驱动层、驱动层 设备驱动程序是直接同硬件交互的软件模块,所有与设设备驱动程序是直接同硬件交互的软件模块,所有与设备相关的代码放在设备驱动程序中,每个设备驱动程序处理备相关的代码放在设备驱动程序中,每个设备驱动程序处理一种设备类型。一种设备类型。(1 1)解释命令,并向有关控制寄存器发出控制命令。解释命令,并向有关控制寄存器发出控制命令。(2 2)I/OI/O有关的队列管理。有关的队列管理。(3 3)执行特定的缓冲区策略执行特定的

401、缓冲区策略(4 4)比寄存器级别更高的一些特殊处理。如代码转换。比寄存器级别更高的一些特殊处理。如代码转换。 在设备驱动程序发出一条或多条命令后,有两种处理在设备驱动程序发出一条或多条命令后,有两种处理A A)阻塞自己,由中断程序唤醒阻塞自己,由中断程序唤醒B B)如果设备没有延迟(如状态查询),则继续后面工作。如果设备没有延迟(如状态查询),则继续后面工作。4 4、独立层独立层 负责实现对所有设备来说具有共性的功能。即提供设备负责实现对所有设备来说具有共性的功能。即提供设备驱动程序的统一接口。在驱动程序的统一接口。在UNIXUNIX中,独立层大部分是文件系统的中,独立层大部分是文件系统的组成

402、部分。组成部分。(1 1)同一命名:如同一命名:如UNIX UNIX 下的下的/ /dev/tty00dev/tty00(2 2)设备保护:防止未授权的使用设备保护:防止未授权的使用(3 3)提供与设备无关的逻辑块提供与设备无关的逻辑块(4 4)缓冲区的分配与释放缓冲区的分配与释放(5 5)存储设备的块分配:为文件创建服务,分配外存上的物存储设备的块分配:为文件创建服务,分配外存上的物理块。理块。(6 6)独占设备的分配和释放:根据设备的分配状况决定接受独占设备的分配和释放:根据设备的分配状况决定接受请求还是拒绝请求请求还是拒绝请求, ,调用进程的挂起与调度等。调用进程的挂起与调度等。(7 7

403、)错误处理。错误处理。5 5、用户空间软件用户空间软件 大部分大部分I/OI/O软件包含在操作系统之中,但仍然有一小部分软件包含在操作系统之中,但仍然有一小部分与用户程序链接在一起的库函数中的过程,以及运行于核外与用户程序链接在一起的库函数中的过程,以及运行于核外的整个程序。的整个程序。库过程库过程例如:例如:printfprintf();();APIAPI中的中的write();write();假脱机(运行于核外的整个程序)假脱机(运行于核外的整个程序)2.2.LUTLUT的设置的设置 二、逻辑设备名到物理设备名映射的实现二、逻辑设备名到物理设备名映射的实现1.1.逻辑设备表(逻辑设备表(L

404、UTLUT)逻辑设备名物理设备名驱动程序入口地址dev/tty31024dev/print52046.整个系统一个整个系统一个每个用户一个每个用户一个7.4.4 7.4.4 独占设备的分配程序独占设备的分配程序一、基本的设备分配程序一、基本的设备分配程序1 1分配设备分配设备2 2分配控制器分配控制器3 3分配通道分配通道二、设备分配程序的改进二、设备分配程序的改进1 1增加设备的独立性增加设备的独立性2 2考虑多路通路的情况考虑多路通路的情况7.4.5 7.4.5 SPOOLingSPOOLing技术技术 利用假脱机技术利用假脱机技术( (SPOOLingSPOOLing, Simultan

405、eous Peripheral , Simultaneous Peripheral Operation On Line, Operation On Line, 也称为虚拟设备技术也称为虚拟设备技术) )可把独享设备可把独享设备转变成具有共享特征的虚拟设备,从而提高设备利用率。转变成具有共享特征的虚拟设备,从而提高设备利用率。一、什么是一、什么是SPOOLingSPOOLing引入:在多道程序系统中,专门利用一道程序(引入:在多道程序系统中,专门利用一道程序(SPOOLingSPOOLing程程序)来完成对设备的序)来完成对设备的I/OI/O操作。无需使用外围操作。无需使用外围I/OI/O处理机

406、。处理机。虚拟虚拟I/O实际实际I/O设备设备SPOOLing程序程序应用程序应用程序A应用程序应用程序B原理:原理:lSPOOLingSPOOLing程序和外设进行数据交换,可以称为程序和外设进行数据交换,可以称为“实实际际I/O”I/O”。一方面,一方面,SPOOLingSPOOLing程序预先从外设输入程序预先从外设输入数据并加以缓冲(输入井),在以后需要的时候输数据并加以缓冲(输入井),在以后需要的时候输入到应用程序;另一方面,入到应用程序;另一方面,SPOOLingSPOOLing程序接受应用程序接受应用程序的输出数据并加以缓冲(输出井),在以后适程序的输出数据并加以缓冲(输出井),

407、在以后适当的时候输出到外设。当的时候输出到外设。l应用程序进行应用程序进行I/OI/O操作时,只是和操作时,只是和SPOOLingSPOOLing程序交程序交换数据,可以称为换数据,可以称为“虚拟虚拟I/O”I/O”。这时候的虚拟这时候的虚拟I/OI/O实际上是从实际上是从SPOOLingSPOOLing程序的缓冲池中读出数据或把程序的缓冲池中读出数据或把数据送入缓冲池,而不是跟实际的外设进行数据送入缓冲池,而不是跟实际的外设进行I/OI/O操操作。作。二、二、SPOOLingSPOOLing系统的组成系统的组成1 1输入井和输出井:在磁盘上。输入井和输出井:在磁盘上。2 2输入缓冲区和输出缓

408、冲区:在内存。输入缓冲区和输出缓冲区:在内存。3 3输入进程和输出进程:守护(输入进程和输出进程:守护(daemondaemon)进程进程三、三、SPOOLingSPOOLing系统的特点系统的特点优点:优点: 高速虚拟高速虚拟I/OI/O操作:应用程序的虚拟操作:应用程序的虚拟I/OI/O比实际比实际I/OI/O速度提速度提高,缩短应用程序的执行时间(尽快完成计算,并释放占用的高,缩短应用程序的执行时间(尽快完成计算,并释放占用的计算机资源)。另一方面,程序的虚拟计算机资源)。另一方面,程序的虚拟I/OI/O操作时间和实际操作时间和实际I/OI/O操作时间分离开来。操作时间分离开来。 实现对

409、独享设备的共享:由实现对独享设备的共享:由SPOOLingSPOOLing程序提供虚拟设备,程序提供虚拟设备,可以对独享设备依次共享使用。可以对独享设备依次共享使用。四、典型的四、典型的SPOOLingSPOOLing系统:系统: 打印机设备和可由打印机管理器管理的打印作业队列。打印机设备和可由打印机管理器管理的打印作业队列。如:如:Windows NTWindows NT中,应用程序直接向针式打印机输出需要中,应用程序直接向针式打印机输出需要1515分钟,而向打印作业队列输出只需要分钟,而向打印作业队列输出只需要1 1分钟,此后用户可分钟,此后用户可以关闭应用程序而转入其它工作,在以后适当的

410、时候由打以关闭应用程序而转入其它工作,在以后适当的时候由打印机管理器完成印机管理器完成1515分钟的打印输出而无需用户干预。分钟的打印输出而无需用户干预。 Internet Internet 上的上的USENETUSENET电子邮件系统,要向某人发邮电子邮件系统,要向某人发邮件,先调用一个称为件,先调用一个称为sendsend的程序,的程序,sendsend接到要发的邮件,接到要发的邮件,然后将它送入一个然后将它送入一个SPOOLingSPOOLing目录,待以后发送。目录,待以后发送。7.5 7.5 设备处理设备处理7.5.1 7.5.1 设备驱动的功能和特点设备驱动的功能和特点一、设备驱动

411、程序的功能一、设备驱动程序的功能1 1将抽象的要求转换为具体的要求将抽象的要求转换为具体的要求2 2检查检查I/OI/O参数的合法性参数的合法性3 3发出发出I/OI/O命令或生成通道程序并启动之命令或生成通道程序并启动之4 4中断处理中断处理二、设备处理方式(二、设备处理方式(OSOS通常采用下面的某种形式)通常采用下面的某种形式)1 1作为应用进程的一部分执行:与程序控制作为应用进程的一部分执行:与程序控制I/OI/O相对应,难相对应,难以对外设发出的中断作实时响应;以对外设发出的中断作实时响应;2 2作为系统进程执行:作为系统进程执行:为每类设备设置一个进程;或整个为每类设备设置一个进程

412、;或整个系统设置一个系统设置一个I/OI/O进程,负责对各类设备的进程,负责对各类设备的I/OI/O进程的管理;进程的管理;也可设置一个输入进程和一个输出进程;也可设置一个输入进程和一个输出进程;3 3不设进程,不设进程,作为作为OS核心中的设备驱动程序核心中的设备驱动程序,供用户或系,供用户或系统进程调用。统进程调用。三三、设备驱动程序的特点、设备驱动程序的特点1 1设备驱动程序是在设备驱动程序是在I/OI/O请求进程与设备控制之间的桥梁,完请求进程与设备控制之间的桥梁,完成成中转数据和控制中转数据和控制。2 2设备驱动程序与设备驱动程序与I/OI/O设备特性、控制方式及硬件密切相关,设备特

413、性、控制方式及硬件密切相关,一般由厂商提供。一般由厂商提供。3 3向上屏蔽设备细节:不同类型设备通常其设备驱动程序接向上屏蔽设备细节:不同类型设备通常其设备驱动程序接口不同,同类设备的接口相同。因此,同类设备的不同型号,口不同,同类设备的接口相同。因此,同类设备的不同型号,只要更换设备驱动程序则可由只要更换设备驱动程序则可由OSOS使用。使用。7.5.2 7.5.2 设备驱动程序的处理过程设备驱动程序的处理过程1 1将抽象要求转化为具体要求。将抽象要求转化为具体要求。2 2检查检查I/OI/O请求的合法性请求的合法性3 3读出和检查设备的状态读出和检查设备的状态4 4传送参数传送参数5 5设置

414、工作方式设置工作方式6 6启动启动I/OI/O设备(如果进程要较长的时间等待设备(如果进程要较长的时间等待I/OI/O完成,此完成,此时往往要阻塞进程)时往往要阻塞进程)7.5.3 7.5.3 中断处理程序的处理过程中断处理程序的处理过程1 1唤醒被阻塞的驱动程序进程唤醒被阻塞的驱动程序进程2 2保护被中断进程的上下文保护被中断进程的上下文3 3分析中断原因并转入相应的中断处理程序分析中断原因并转入相应的中断处理程序4 4中断处理中断处理5 5恢复中断前状态后中断返回。恢复中断前状态后中断返回。7.6 7.6 即插即用技术(即插即用技术(Plug and PlayPlug and Play)

415、是计算机系统是计算机系统I/OI/O设备与部件配置的应用技术。顾名设备与部件配置的应用技术。顾名思义:思义:插入就可用,不需要进行任何设置操作。插入就可用,不需要进行任何设置操作。1 1、PnPPnP技术的产生背景技术的产生背景 由于一个系统可以配置多种外部设备,设备也经常变动和由于一个系统可以配置多种外部设备,设备也经常变动和更换,它们都要占有一定的系统资源,彼此间在硬件和软件上更换,它们都要占有一定的系统资源,彼此间在硬件和软件上可能会产生冲突。因此在系统中要正确地对它们进行配置和资可能会产生冲突。因此在系统中要正确地对它们进行配置和资源匹配;当设备撤除、添置和进行系统升级时,配置过程往往

416、源匹配;当设备撤除、添置和进行系统升级时,配置过程往往是一个困难的过程。是一个困难的过程。2 2、PnPPnP技术的特点:技术的特点: (1 1)支持)支持I/OI/O设备及部件的自动配置,使用户能够简单方便设备及部件的自动配置,使用户能够简单方便地使用系统扩充设备。地使用系统扩充设备。 (2 2)减少由制造商装入的种种用户支持和限制,简化部件的)减少由制造商装入的种种用户支持和限制,简化部件的硬件跳接设置,使硬件跳接设置,使I/OI/O附加卡和部件不再具有人工跳接线设置附加卡和部件不再具有人工跳接线设置电路。电路。(3 3)在主机板和附加卡上保存系统资源的配置参数和分配状)在主机板和附加卡上

417、保存系统资源的配置参数和分配状态,有利于系统对整个态,有利于系统对整个I/OI/O资源的分配和控制。资源的分配和控制。 (4 4)支持和兼容各种操作系统平台,具有很强的扩展性和可)支持和兼容各种操作系统平台,具有很强的扩展性和可移植性。移植性。 (5 5)在一定程度上具有)在一定程度上具有“热插入热插入”、“热拼接热拼接”技术。技术。3 3、PnPPnP技术的功能:技术的功能: (1 1)附加卡的识别与确认)附加卡的识别与确认 (2 2)资源分配)资源分配 (3 3)附加卡自动配置)附加卡自动配置 多方面的支持:具有多方面的支持:具有PnPPnP功能的操作系统、配置管理软件、功能的操作系统、配

418、置管理软件、软件安装程序、设备驱动程序等;网络设备的软件安装程序、设备驱动程序等;网络设备的PnPPnP支持;系统支持;系统平台的支持(如:平台的支持(如:PnPPnP主机板、控制芯片组和主机板、控制芯片组和PnP BIOSPnP BIOS等);等);各种支持各种支持PnPPnP规范的总线的规范的总线的I/OI/O控制卡和部件。控制卡和部件。7.7 7.7 USBUSB技术技术 USBUSB(Universal Serial BusUniversal Serial Bus)通用串行总线,是一种通用串行总线,是一种连接连接I/OI/O串行设备的技术标准。串行设备的技术标准。 冲破了计算机技术发展

419、的两个历史局限性:冲破了计算机技术发展的两个历史局限性: (1 1)由于)由于I/OI/O设备的接口标准的不一致和有限的接口设备的接口标准的不一致和有限的接口 数量已无法满足各种应用迫切需要数量已无法满足各种应用迫切需要 (2 2)传统的)传统的I/OI/O设备的接口无法满足实时数据传输与设备的接口无法满足实时数据传输与 多媒体应用的需求多媒体应用的需求 USBUSB以以WDMWDM(Windows Driver ModelWindows Driver Model)模型为基础,模型为基础,WDMWDM包含一套通用的包含一套通用的I/OI/O服务和二进制兼容的设备驱动程序。服务和二进制兼容的设备

420、驱动程序。 USBUSB支持同步数据传输方式和异步数据传输方式,其数支持同步数据传输方式和异步数据传输方式,其数据传输率有低速据传输率有低速1.5 1.5 MbpsMbps和全速和全速1212MbpsMbps两种,比标准串口快两种,比标准串口快100100倍,比标准并口快倍,比标准并口快1010倍。倍。 USBUSB可以主动为外部设备提供电源,允许外部设备快速可以主动为外部设备提供电源,允许外部设备快速连接,具有即插即用的功能;允许外部设备的热插拔。连接,具有即插即用的功能;允许外部设备的热插拔。USBUSB的结构的结构控制器:控制器主要负责执行由控制器驱动程序发出控制器:控制器主要负责执行由

421、控制器驱动程序发出的命令的命令控制器驱动程序:控制器驱动程序在控制器与控制器驱动程序:控制器驱动程序在控制器与USBUSB设备设备之间建立通信信道之间建立通信信道USBUSB芯片驱动程序:芯片驱动程序:USBUSB芯片驱动程序提供了对芯片驱动程序提供了对USBUSB的支的支持持USBUSB设备分为两类:设备分为两类: (1 1)USBUSB集线器:本身可再接其它集线器:本身可再接其它USBUSB外围设备外围设备 (2 2)USBUSB设备:连接在计算机上用来完成特定功能设备:连接在计算机上用来完成特定功能并符合并符合USBUSB规范的规范的I/OI/O设备单元,如鼠标、键盘等。设备单元,如鼠标

422、、键盘等。USBUSB的数据传输方式:的数据传输方式:(1 1)等时传输方式)等时传输方式 以固定的传输速率,连续不断传输数据,发生错误时,以固定的传输速率,连续不断传输数据,发生错误时,USBUSB不处理,而是继续传送新的数据。用于需要连续传输,且不处理,而是继续传送新的数据。用于需要连续传输,且对数据的正确性要求不高而对时间极为敏感的外部设备,如麦对数据的正确性要求不高而对时间极为敏感的外部设备,如麦克风、音箱以及电话等。克风、音箱以及电话等。(2 2)中断传输方式)中断传输方式 该方式传送的数据量很小,但这些数据需要及时处理,以该方式传送的数据量很小,但这些数据需要及时处理,以达到实时效

423、果,此方式主要用在键盘、鼠标以及游戏手柄等外达到实时效果,此方式主要用在键盘、鼠标以及游戏手柄等外部设备上。部设备上。(3 3)控制传输方式)控制传输方式 处理主机的处理主机的USBUSB设备的数据传输,包括设备控制指令、设设备的数据传输,包括设备控制指令、设备状态查询及确认命令。当备状态查询及确认命令。当USBUSB设备收到这些数据和命令后将设备收到这些数据和命令后将按照先进先出的原则按队列方式处理到达的数据。按照先进先出的原则按队列方式处理到达的数据。(4 4)批传输方式)批传输方式 用来传输要求正确无误的数据。通常打印机、扫描仪和数用来传输要求正确无误的数据。通常打印机、扫描仪和数码相机

424、以这种方式与主机连接。码相机以这种方式与主机连接。 除等时传输方式外,其它除等时传输方式外,其它3 3种方式在数据传输发生错误时种方式在数据传输发生错误时都会试图重新发送数据以保证其准确性。都会试图重新发送数据以保证其准确性。7.8Linux驱动程序框架驱动程序框架接口:接口:1)驱动程序于操作系统内核接口,通过)驱动程序于操作系统内核接口,通过file_operation(include/linux/fs.h)数据结构来完成数据结构来完成2)驱动程序与系统引导的接口:利用驱动程序对设备进行初)驱动程序与系统引导的接口:利用驱动程序对设备进行初始化。始化。3)驱动程序与设备接口:描述了驱动程序

425、如何与设备交互,)驱动程序与设备接口:描述了驱动程序如何与设备交互,与具体设备密切相关。与具体设备密切相关。Linux驱动程序代码组成:驱动程序代码组成:驱动程序的注册与注销驱动程序的注册与注销设备的打开与释放设备的打开与释放设备的读写操作设备的读写操作设备的控制操作设备的控制操作设备的中断与轮询处理设备的中断与轮询处理Linux驱动程序代码组成:驱动程序代码组成:驱动程序的注册与注销驱动程序的注册与注销设备的打开与释放设备的打开与释放设备的读写操作设备的读写操作设备的控制操作设备的控制操作设备的中断与轮询处理设备的中断与轮询处理注册与注销:注册与注销:可以在系统启动时初始化,也可以在需要时可

426、以在系统启动时初始化,也可以在需要时动态加载动态加载Linux驱动程序代码组成:驱动程序代码组成:驱动程序的注册与注销驱动程序的注册与注销设备的打开与释放设备的打开与释放设备的读写操作设备的读写操作设备的控制操作设备的控制操作设备的中断与轮询处理设备的中断与轮询处理设备打开与设备打开与释放释放:打开由打开由open()完成,(如打印机完成,(如打印机lp_open()主要工作:主要工作:增加设备的使用计数增加设备的使用计数检查设备相关错误,如设备没准备好或类似的硬件问题检查设备相关错误,如设备没准备好或类似的硬件问题如果首次打开,则初始化设备如果首次打开,则初始化设备识别次识别号识别次识别号分

427、配或修改有关设备用数据结构分配或修改有关设备用数据结构Linux驱动程序代码组成:驱动程序代码组成:驱动程序的注册与注销驱动程序的注册与注销设备的打开与释放设备的打开与释放设备的读写操作设备的读写操作设备的控制操作设备的控制操作设备的中断与轮询处理设备的中断与轮询处理设备打开与设备打开与释放释放:释放由释放由release()完成,(如打印机完成,(如打印机lp_release()主要工作:主要工作:释放有关数据结构表释放有关数据结构表减少设备的使用计数减少设备的使用计数如果是最后一个如果是最后一个释放释放,则关闭设备,则关闭设备Linux驱动程序代码组成:驱动程序代码组成:驱动程序的注册与注

428、销驱动程序的注册与注销设备的打开与释放设备的打开与释放设备的读写操作设备的读写操作设备的控制操作设备的控制操作设备的中断与轮询处理设备的中断与轮询处理设备的读写操作:设备的读写操作:字符设备使用各自的字符设备使用各自的read()和和write()进进行,块设备用行,块设备用generic_file_read()和和generic_file_write进行。进行。Linux驱动程序代码组成:驱动程序代码组成:驱动程序的注册与注销驱动程序的注册与注销设备的打开与释放设备的打开与释放设备的读写操作设备的读写操作设备的控制操作设备的控制操作设备的中断与轮询处理设备的中断与轮询处理设备的控制操作:设备

429、的控制操作:通过设备驱动程序中的通过设备驱动程序中的ioctl()(如如IDE硬盘硬盘的控制可以用的控制可以用hd_ioctl()来完成。来完成。Linux驱动程序代码组成:驱动程序代码组成:驱动程序的注册与注销驱动程序的注册与注销设备的打开与释放设备的打开与释放设备的读写操作设备的读写操作设备的控制操作设备的控制操作设备的中断与轮询处理设备的中断与轮询处理设备的中断与轮询:设备的中断与轮询:对于不支持中断的设备,读写时需要对于不支持中断的设备,读写时需要轮询设备状态,以决定是否继续进行数据传输。轮询设备状态,以决定是否继续进行数据传输。如果设备支持中断,则可以按照中断方式进行。如果设备支持中

430、断,则可以按照中断方式进行。7.9Windows2000/XP驱动程序结构驱动程序结构I/O系统系统启动启动I/O例程例程中断服务中断服务例程例程ISR中断服务中断服务DPC例程例程初始化例程初始化例程添加设备例程添加设备例程调度例程调度例程7.9Windows2000/XP驱动程序结构驱动程序结构I/O系统系统启动启动I/O例程例程中断服务中断服务例程例程ISR中断服务中断服务DPC例程例程初始化例程初始化例程添加设备例程添加设备例程调度例程调度例程初始化例程:初始化例程:当当I/O管理器把驱动程序加载到操作系统中时,管理器把驱动程序加载到操作系统中时,它执行驱动程序的初始化例程。它执行驱动

431、程序的初始化例程。7.9Windows2000/XP驱动程序结构驱动程序结构添加例程:添加例程:用于支持用于支持PnP管理器的操作。管理器的操作。I/O系统系统启动启动I/O例程例程中断服务中断服务例程例程ISR中断服务中断服务DPC例程例程初始化例程初始化例程添加设备例程添加设备例程调度例程调度例程7.9Windows2000/XP驱动程序结构驱动程序结构一系列调度例程:一系列调度例程:调度例程是设备驱动程序提供的主要函调度例程是设备驱动程序提供的主要函数。例如打开、关闭、读取、写入以及设备、文件系统或数。例如打开、关闭、读取、写入以及设备、文件系统或网络支持的任何功能。网络支持的任何功能。

432、I/O系统系统启动启动I/O例程例程中断服务中断服务例程例程ISR中断服务中断服务DPC例程例程初始化例程初始化例程添加设备例程添加设备例程调度例程调度例程7.9Windows2000/XP驱动程序结构驱动程序结构启动启动I/O例程:例程:驱动程序可以使用启动驱动程序可以使用启动I/O例程来初始化与例程来初始化与设备之间的数据传输。设备之间的数据传输。I/O系统系统启动启动I/O例程例程中断服务中断服务例程例程ISR中断服务中断服务DPC例程例程初始化例程初始化例程添加设备例程添加设备例程调度例程调度例程7.9Windows2000/XP驱动程序结构驱动程序结构中断服务例程(中断服务例程(IS

433、R):):当一个设备中断时,内核的中断当一个设备中断时,内核的中断调度程序把控制转交给这个例程。调度程序把控制转交给这个例程。ISR运行在高的设备中运行在高的设备中断请求级上,所以它们越简单越好。以避免对低优先级中断请求级上,所以它们越简单越好。以避免对低优先级中断产生不希望的阻塞。断产生不希望的阻塞。I/O系统系统启动启动I/O例程例程中断服务中断服务例程例程ISR中断服务中断服务DPC例程例程初始化例程初始化例程添加设备例程添加设备例程调度例程调度例程7.9Windows2000/XP驱动程序结构驱动程序结构中断服务中断服务DPC例程:例程:DPC例程执行在例程执行在ISR执行以后的大部执

434、行以后的大部分中断处理工作。分中断处理工作。DPC例程在低于例程在低于ISR的中断优先级上执的中断优先级上执行,从而避免对其它中断产生不希望的阻塞。行,从而避免对其它中断产生不希望的阻塞。I/O系统系统启动启动I/O例程例程中断服务中断服务例程例程ISR中断服务中断服务DPC例程例程初始化例程初始化例程添加设备例程添加设备例程调度例程调度例程7.10时钟时钟功能:负责提供一天的时间,并且防止一个进程垄断功能:负责提供一天的时间,并且防止一个进程垄断CPU或其它资源,时钟软件通常采用设备驱动程序的形式。或其它资源,时钟软件通常采用设备驱动程序的形式。时钟硬件时钟硬件每个脉冲计数器减每个脉冲计数器

435、减1使用存放寄存器装载计数器使用存放寄存器装载计数器晶体振荡器晶体振荡器时钟硬件时钟硬件每个脉冲计数器减每个脉冲计数器减1使用存放寄存器装载计数器使用存放寄存器装载计数器晶体振荡器晶体振荡器当计数器为当计数器为0时产生中断,存储寄存器的值自动拷贝到计时产生中断,存储寄存器的值自动拷贝到计数器,该过程不断地重复下去。数器,该过程不断地重复下去。此周期性中断称为此周期性中断称为时钟嘀时钟嘀答(答(clocktick)可编程时钟:可编程时钟:若存储寄存器的值是可以软件设定的。若存储寄存器的值是可以软件设定的。可编程时钟芯片通常包含两到三个独立的可编程时钟可编程时钟芯片通常包含两到三个独立的可编程时钟

436、时钟软件时钟软件硬件每隔一定时间间隔产生中断,涉及时间的所有其它工硬件每隔一定时间间隔产生中断,涉及时间的所有其它工作由时钟软件驱动完成,通常包括:作由时钟软件驱动完成,通常包括:1)维护日期、时间)维护日期、时间2)防止进程超时运行)防止进程超时运行3)对)对CPU的使用情况计帐的使用情况计帐4)处理用户进程提出的)处理用户进程提出的ALARM系统调用系统调用5)为系统本身各部分提供监视定时器)为系统本身各部分提供监视定时器6)绘制运行直方图,完成监视和统计信息收集)绘制运行直方图,完成监视和统计信息收集在有些操作系统(在有些操作系统(UNIX)进程可以请求操作系统在一定进程可以请求操作系统

437、在一定的间隔之后向它报警。由于没有足够的物理时钟,所以用若干的间隔之后向它报警。由于没有足够的物理时钟,所以用若干虚拟时钟解决。虚拟时钟解决。方法:系统设一张链表,所有待处理的定时器信号记入表方法:系统设一张链表,所有待处理的定时器信号记入表中。每当发生时钟中断,中断处理程序就检查链表开始的进程中。每当发生时钟中断,中断处理程序就检查链表开始的进程要否要唤醒处理。要否要唤醒处理。时钟头指针时钟头指针330001730010930021例:假定目前时钟值是例:假定目前时钟值是30030,运行进程是,运行进程是5号,代码为:号,代码为:#includevoidmain()cout“ThisisTe

438、st”endl;sleep(3);cout“ThisisTest2”endl;例:假定目前时钟值是例:假定目前时钟值是30030,运行进程是,运行进程是5号,代码为:号,代码为:#includevoidmain()cout“ThisisTest”endl;sleep(3);cout“ThisisTest2”endl;时钟头指针时钟头指针330001730010930021530030第第8章章文件系统文件系统信息是计算机系统中的重要资源,是操作系统中的一个信息是计算机系统中的重要资源,是操作系统中的一个重要组成部分。文件系统负责信息的组织、存储和访问。功重要组成部分。文件系统负责信息的组织、存

439、储和访问。功能是提供高效、快速和方便的信息存储和访问功能。能是提供高效、快速和方便的信息存储和访问功能。系统考虑的问题:系统考虑的问题:文件如何构造(链、顺序、索引、一个逻辑块中有多少物文件如何构造(链、顺序、索引、一个逻辑块中有多少物理块等)、命名规则、存取、保护和实现方法是主要内容。理块等)、命名规则、存取、保护和实现方法是主要内容。用户考虑的问题:用户考虑的问题:文件由什么组成、怎么命名,怎样保护以及对文件能进行文件由什么组成、怎么命名,怎样保护以及对文件能进行什么操作。什么操作。文件管理的目的文件管理的目的: :(1)(1)方便的文件访问和控制:以符号名称作为文件标方便的文件访问和控制

440、:以符号名称作为文件标识,便于用户使用;识,便于用户使用;(2)(2)并发文件访问和控制:在多道程序系统中支持并发文件访问和控制:在多道程序系统中支持对文件的并发访问和控制;对文件的并发访问和控制;(3)(3)统一的用户接口:在不同设备上提供同样的接统一的用户接口:在不同设备上提供同样的接口,方便用户操作和编程;口,方便用户操作和编程;(4)(4)多种文件访问权限:在多用户系统中的不同用多种文件访问权限:在多用户系统中的不同用户对同一文件会有不同的访问权限;户对同一文件会有不同的访问权限;(5)(5)优化性能:存储效率、检索性能、读写性能;优化性能:存储效率、检索性能、读写性能;(6)(6)差

441、错恢复:能够验证文件的正确性,并具有差错恢复:能够验证文件的正确性,并具有一定的差错恢复能力;一定的差错恢复能力;8.1.1 8.1.1 文件、记录和数据项文件、记录和数据项一、数据项一、数据项1 1基本数据项基本数据项 :可命名的最小数据单位,原子数据,有数:可命名的最小数据单位,原子数据,有数据类型(如数据库中的字段)。据类型(如数据库中的字段)。2 2组合数据项:由若干数据项组成。组合数据项:由若干数据项组成。二、记录:记录一组相关数据项集合二、记录:记录一组相关数据项集合, ,有一个主关键字。有一个主关键字。三、文件三、文件 具有符号名信息的集合。文件名是文件的标识符号。文件具有符号名

442、信息的集合。文件名是文件的标识符号。文件包括两部分:包括两部分:文件体:文件本身的信息;文件体:文件本身的信息;文件说明:文件存储和管理信息(如:文件名、文件内部文件说明:文件存储和管理信息(如:文件名、文件内部标识、文件存储地址、访问权限、访问时间等)标识、文件存储地址、访问权限、访问时间等)8.1 8.1 文件和文件系统文件和文件系统四、文件属性:四、文件属性:(1 1)文件类型文件类型(2 2)文件长度文件长度(3 3)文件的物理位置文件的物理位置(4 4)文件的存取控制文件的存取控制(5 5)文件创建者、创建时间、最后修改时间文件创建者、创建时间、最后修改时间8.1.2 8.1.2 文

443、件类型文件类型不同的角度有不同的分类:不同的角度有不同的分类:用途:用途:系统文件、用户文件、库文件系统文件、用户文件、库文件文件中的数据形式:文件中的数据形式:源文件、目标文件、可执行代码文源文件、目标文件、可执行代码文件。件。存取属性:存取属性:可执行文件、只读文件、读写文件可执行文件、只读文件、读写文件文件逻辑结构:文件逻辑结构:有结构文件(记录、数据项)、无结构有结构文件(记录、数据项)、无结构文件(流式文件)文件(流式文件)文件结构类型:文件结构类型:顺序文件、链接文件、索引文件顺序文件、链接文件、索引文件8.1.3 8.1.3 文件系统模型文件系统模型一、一、层次文件系统模型层次文

444、件系统模型文件系统接口文件系统接口逻辑文件系统逻辑文件系统基本文件系统(物理基本文件系统(物理I/OI/O层)层)基本基本I/OI/O管理程序(文件组织模块)管理程序(文件组织模块)I/OI/O控制层(设备驱动层)控制层(设备驱动层)BIOSDOS文件操作命令文件操作命令盘号,逻辑扇区号盘号,逻辑扇区号扇区数扇区数文件号,读写缓冲,文件号,读写缓冲,字节数字节数盘号,磁头号,盘号,磁头号,道号,扇区号道号,扇区号DOS例子例子文件系统接口:命令接口,程序接口文件系统接口:命令接口,程序接口8.1.3 8.1.3 文件系统模型文件系统模型一、一、层次文件系统模型层次文件系统模型文件系统接口文件系

445、统接口逻辑文件系统逻辑文件系统基本文件系统(物理基本文件系统(物理I/OI/O层)层)基本基本I/OI/O管理程序(文件组织模块)管理程序(文件组织模块)I/OI/O控制层(设备驱动层)控制层(设备驱动层)BIOSDOS文件操作命令文件操作命令盘号,逻辑扇区号盘号,逻辑扇区号扇区数扇区数文件号,读写缓冲,文件号,读写缓冲,字节数字节数盘号,磁头号,盘号,磁头号,道号,扇区号道号,扇区号DOS例子例子逻辑文件系统:目录管理,逻辑文件系统结构逻辑文件系统:目录管理,逻辑文件系统结构8.1.3 8.1.3 文件系统模型文件系统模型一、一、层次文件系统模型层次文件系统模型文件系统接口文件系统接口逻辑文

446、件系统逻辑文件系统基本文件系统(物理基本文件系统(物理I/OI/O层)层)基本基本I/OI/O管理程序(文件组织模块)管理程序(文件组织模块)I/OI/O控制层(设备驱动层)控制层(设备驱动层)BIOSDOS文件操作命令文件操作命令盘号,逻辑扇区号盘号,逻辑扇区号扇区数扇区数文件号,读写缓冲,文件号,读写缓冲,字节数字节数盘号,磁头号,盘号,磁头号,道号,扇区号道号,扇区号DOS例子例子基本基本I/OI/O管理程序:文件组织模块,完成与磁盘管理程序:文件组织模块,完成与磁盘I/OI/O有关的事有关的事物:设备目录管理、逻辑块到物理块的转换、空闲磁盘块的物:设备目录管理、逻辑块到物理块的转换、空

447、闲磁盘块的管理、管理、I/OI/O缓冲区的指定。缓冲区的指定。8.1.3 8.1.3 文件系统模型文件系统模型一、一、层次文件系统模型层次文件系统模型文件系统接口文件系统接口逻辑文件系统逻辑文件系统基本文件系统(物理基本文件系统(物理I/OI/O层)层)基本基本I/OI/O管理程序(文件组织模块)管理程序(文件组织模块)I/OI/O控制层(设备驱动层)控制层(设备驱动层)BIOSDOS文件操作命令文件操作命令盘号,逻辑扇区号盘号,逻辑扇区号扇区数扇区数文件号,读写缓冲,文件号,读写缓冲,字节数字节数盘号,磁头号,盘号,磁头号,道号,扇区号道号,扇区号DOS例子例子基本文件系统(物理基本文件系统

448、(物理I/OI/O层):向设备驱动程序发命令,实现层):向设备驱动程序发命令,实现磁盘(带)与缓冲区的数据交换。磁盘(带)与缓冲区的数据交换。二、二、虚拟文件系统模型虚拟文件系统模型 SUNSUN及及LinuxLinux的的VFSVFS。通过通过VFSVFS,可以支持许多不同文件系统,可以支持许多不同文件系统,如:如:minix,isofs,hpfs,ntfsminix,isofs,hpfs,ntfs.minixhpfs.VFSVFS缓冲区缓冲缓冲区缓冲磁盘驱动磁盘驱动索引节点缓存索引节点缓存目录项缓存目录项缓存8.1.4 8.1.4 文件操作文件操作一、对记录的操作一、对记录的操作 检索、插

449、入、删除、修改。检索、插入、删除、修改。二、对文件的操作二、对文件的操作 创建、删除、读写、截断、设置读写位置。创建、删除、读写、截断、设置读写位置。8.2 8.2 文件逻辑结构文件逻辑结构1. 1. 文件的逻辑结构文件的逻辑结构: : 文件的组织方式文件的组织方式,从用户观点讨论文件内部的逻辑结从用户观点讨论文件内部的逻辑结构或用户访问模式;它可以独立于在外存上的物理存储。构或用户访问模式;它可以独立于在外存上的物理存储。 文件逻辑结构的设计要求:文件逻辑结构的设计要求:访问性能:便于检索;便于修改访问性能:便于检索;便于修改存储性能:向物理存储转换方便,节省空间存储性能:向物理存储转换方便

450、,节省空间2 2文件的物理结构:指文件的存储结构,文件在外存上组织文件的物理结构:指文件的存储结构,文件在外存上组织形式,与存储介质的存储性能有关。形式,与存储介质的存储性能有关。8.2.1 8.2.1 文件逻辑结构的类型文件逻辑结构的类型一、有结构文件一、有结构文件记录式文件记录式文件(1 1)定长记录:寻址简单定长记录:寻址简单(2 2)变长记录:变长记录:数据项数目不同;数据项数目不同;数据项本身长度不定数据项本身长度不定组织方式:组织方式:(1 1)顺序文件:适合于定长记录文件)顺序文件:适合于定长记录文件(2 2)索引文件:处理变长)索引文件:处理变长(3 3)索引顺序文件)索引顺序

451、文件二、无结构文件二、无结构文件文件体为字节流,不划分记录,顺序访问,每次读写访问文件体为字节流,不划分记录,顺序访问,每次读写访问可以指定任意数据长度,系统不对文件进行格式处理。当前可以指定任意数据长度,系统不对文件进行格式处理。当前操作系统中常用的文件组织。操作系统中常用的文件组织。8.2.2 8.2.2 (结构化的)顺序文件(结构化的)顺序文件一、逻辑记录的排序一、逻辑记录的排序(1 1)串结构:记录顺序与关键字无关串结构:记录顺序与关键字无关(2 2)顺序结构:记录按关键字排序,检索效率高。顺序结构:记录按关键字排序,检索效率高。 由一个主文件和一个临时文件组成。关键字域由一个主文件和

452、一个临时文件组成。关键字域( (key key field)field),存放在主文件存放在主文件( (master file)master file)中。新记录暂时保存中。新记录暂时保存在日志或事务文件在日志或事务文件( (log file or transaction file)log file or transaction file)中,中,定期归并入主文件。定期归并入主文件。二、对顺序文件的读写:二、对顺序文件的读写:ptrptr = ptr+1 = ptr+1 三、优缺点三、优缺点优点:对一次处理大批数据,快!介质:磁带。优点:对一次处理大批数据,快!介质:磁带。缺点:对单个记录处理

453、困难,插入尤其如此。缺点:对单个记录处理困难,插入尤其如此。8.2.3 8.2.3 索引文件索引文件 记录大小不必相同,不必排序,数据存放在主文件中。记录大小不必相同,不必排序,数据存放在主文件中。另外建立索引,每个索引项指向一个记录,索引项按照记另外建立索引,每个索引项指向一个记录,索引项按照记录中的某个关键字域排序。对同一主文件,可以针对不同录中的某个关键字域排序。对同一主文件,可以针对不同的关键字域相应建立多个索引(注意:和多级索引并不相的关键字域相应建立多个索引(注意:和多级索引并不相同)。索引文件的记录项通常较小,查找速度快,便于随同)。索引文件的记录项通常较小,查找速度快,便于随机

454、访问机访问。8.2.4 8.2.4 索引顺序文件索引顺序文件关键字逻辑地址姓名其它属性ABZAn BingAn KangAn QingBao RongBao RongBon Long索引文件顺序文件8.2.5 8.2.5 哈希文件或直接文件哈希文件或直接文件检索时给出记录编号(关键字),通过哈希函数计算出检索时给出记录编号(关键字),通过哈希函数计算出该记录在文件中的相对位置。该记录在文件中的相对位置。8.3 8.3 目录管理目录管理目录是由文件说明索引组成的用于文件检索的数据结构。目录是由文件说明索引组成的用于文件检索的数据结构。在现代操作系统中,往往作为一种在现代操作系统中,往往作为一种特

455、殊文件特殊文件看待。看待。 文件目录的内容主要是文件访问和控制的信息功能要求:文件目录的内容主要是文件访问和控制的信息功能要求:(1 1) 按名存取按名存取(2 2) 快速检索:合理组织结构快速检索:合理组织结构(3 3) 文件共享文件共享(4 4) 文件重名的解决文件重名的解决一、一、文件控制块(文件控制块(File Control BlockFCBFile Control BlockFCB) FCBFCB是文件存在的标识,是文件存在的标识,FCBFCB记录了系统对于文件进行管理记录了系统对于文件进行管理所需要的全部信息,每一个实体文件都有至少一个所需要的全部信息,每一个实体文件都有至少一个

456、FCBFCB对应。对应。 一个文件控制块保存在文件目录中,作为一个目录项。一个文件控制块保存在文件目录中,作为一个目录项。FCBFCB一般应包含的信息:一般应包含的信息:1 1基本信息类基本信息类(1 1)文件名:字符串,通常在不同系统中允许不同文件名:字符串,通常在不同系统中允许不同的最大长度。可以修改。有些系统允许同一个文件有多的最大长度。可以修改。有些系统允许同一个文件有多个别名个别名( (alias)alias);(2 2)别名的数目;别名的数目;(3 3)文件的物理位置:文件的物理位置:文件卷或文件卷或设备号设备号盘块号盘块号盘块数(或文件长度(一般按字节计算)盘块数(或文件长度(一

457、般按字节计算)(4 4)文件逻辑结构:记录式、流式文件逻辑结构:记录式、流式(5 5)文件物理结构:与文件存储器的类型有关文件物理结构:与文件存储器的类型有关连续分配:连续文件连续分配:连续文件链式块方式:串链文件链式块方式:串链文件索引文件,记录号,标识索引文件,记录号,标识 ,物理块号,物理块号哈希文件哈希文件2 2存取控制信息类:存取控制信息类:(1 1)文件主的存取权限文件主的存取权限(2 2)核准用户的存取权限核准用户的存取权限(3 3)一般用户的存取权限一般用户的存取权限3 3使用信息类使用信息类(1 1)文件的建立日期和时间)文件的建立日期和时间(2 2)文件的修改日期和时间)文

458、件的修改日期和时间(3 3)当前使用信息:打开的进程数、文件锁的状态、修改状态)当前使用信息:打开的进程数、文件锁的状态、修改状态等。等。例:例:DOS文件目录格式:文件目录格式:文件名文件名扩展名扩展名属性属性保留保留时间时间日期日期 物理位置物理位置 大小大小一个目录项共有一个目录项共有32个字节个字节0-70-7H: H: 文件名,第一个字节:文件名,第一个字节:0000H H 空空E5HE5H 已删除文件的目录已删除文件的目录 . . 子目录描述子目录描述 . . . 上级目录描述(占用第二字节)上级目录描述(占用第二字节)8-08-0AHAH:扩展名扩展名0 0BH BH :属性属性

459、01FH 更更改改子目子目录录卷卷标标隐隐含含只只读读0C-15H:保留保留16H-17H:文件建立时间文件建立时间18H-19H:文件建立日期文件建立日期1A-1BH:文件开始的位置(文件开始的位置(PC文件系统的物理存储为链结构)文件系统的物理存储为链结构)1C-1FH:文件长度(字节数,可以达文件长度(字节数,可以达232)二、二、索引节点(索引节点(i-nodei-node)1.1.索引节点的引入索引节点的引入 在在UNIXUNIX中,将文件名和文件描述信息分开存放,即将中,将文件名和文件描述信息分开存放,即将FCBFCB拆分为两部分:拆分为两部分:(1 1)文件目录部分:文件名字(字

460、符)、索引节点编文件目录部分:文件名字(字符)、索引节点编号号(2 2)i i节点:记录文件描述信息的部分的数据结构。节点:记录文件描述信息的部分的数据结构。好处:加速文件名的检索。好处:加速文件名的检索。目录表目录表abcxtest.cpp.311abc文件描述文件描述.0132i i节点表节点表主目录表区主目录表区i i节点表节点表用户区用户区2 2、磁盘索引节点主要内容、磁盘索引节点主要内容(1 1)文件主标识文件主标识(2 2)文件类型文件类型(3 3)文件存取权限文件存取权限(4 4)文件物理地址文件物理地址(5 5)文件长度文件长度(6 6)文件链接计数(共享)文件链接计数(共享)

461、(7 7)文件存取时间文件存取时间3 3、内存索引节点、内存索引节点 当文件打开后,将磁盘上当文件打开后,将磁盘上i-nodei-node拷贝到内存的索引节点表拷贝到内存的索引节点表中,以便文件使用。中,以便文件使用。 内存内存i-nodei-node主要内容(增加的):主要内容(增加的):(1 1)i-nodei-node编号,即内存编号,即内存i-nodei-node标识标识(2 2)状态:)状态:i-nodei-node上锁或修改等上锁或修改等(3 3)访问计数)访问计数, ,为了进程共享为了进程共享(4 4)文件所在的逻辑设备号)文件所在的逻辑设备号8.3.2 8.3.2 单级目录结构

462、单级目录结构目录结构讨论目录的组织结构,设计目标是检索效率。目录结构讨论目录的组织结构,设计目标是检索效率。整个目录组织是一个线性结构,系统中的所有文件都建整个目录组织是一个线性结构,系统中的所有文件都建立在一张目录表中,每个文件占用一个目录项。它主要用立在一张目录表中,每个文件占用一个目录项。它主要用于早期的单用户操作系统。于早期的单用户操作系统。特点:特点:结构简单;结构简单;文件多时,目录检索时间长;文件多时,目录检索时间长;文件名不能有重复文件名不能有重复8.3.3 8.3.3 两级目录结构两级目录结构在主目录或根目录(第一级目录)下,每个用户对应一个在主目录或根目录(第一级目录)下,

463、每个用户对应一个用户文件目录用户文件目录(第二级目录),在用户目录下是该用户的文第二级目录),在用户目录下是该用户的文件,而不再有下级目录。适用于多用户系统,各用户可有自件,而不再有下级目录。适用于多用户系统,各用户可有自己的专用目录。己的专用目录。(1 1) 可以重名可以重名(2 2) 提高检索速度提高检索速度(3 3) 部分解决共享问题部分解决共享问题8.3.4 8.3.4 树型目录结构树型目录结构一、树状目录一、树状目录树状目录树状目录(tree-like)或称为多级目录。在文件数目较多时,或称为多级目录。在文件数目较多时,便于系统和用户将文件分散管理。适用于较大的文件系统管便于系统和用

464、户将文件分散管理。适用于较大的文件系统管理。目录级别太多时,会增加路径检索时间。理。目录级别太多时,会增加路径检索时间。根目录根目录ABCABDGAELMNABCAIJHKEDFBDEEP相关术语:相关术语:l目录名:可以修改。目录名:可以修改。l目录树:主目录是根,中间结点是目录,叶子结点是目目录树:主目录是根,中间结点是目录,叶子结点是目录或文件。录或文件。l目录的上下级关系:当前目录目录的上下级关系:当前目录、父目录父目录、子目录子目录、根目根目录等;录等;二、路径二、路径路径路径( (path)path):达到目标文件所经过的所有节点。达到目标文件所经过的所有节点。绝对路径:绝对路径:

465、每个目录或文件,由根目录(以每个目录或文件,由根目录(以“/”“/”或或“”“”表示)开始依次经由的各级目录名,加上最终的目录名或表示)开始依次经由的各级目录名,加上最终的目录名或文件名来表示;文件名来表示;相对路径:从当前目录开始相对路径:从当前目录开始。三、当前目录和工作目录三、当前目录和工作目录当前目录:应用程序当前目录:应用程序/ /系统程序在当前工作时所处的目录节系统程序在当前工作时所处的目录节点。点。四、目录的创建与删除四、目录的创建与删除1 1权限问题:原则上只能删除自己所建立的目录权限问题:原则上只能删除自己所建立的目录2 2非空目录与空目录的不同处理非空目录与空目录的不同处理

466、五、树型目录的优点:五、树型目录的优点: 层次和隶属关系清晰,便于实现不同级别的存取保护和层次和隶属关系清晰,便于实现不同级别的存取保护和文件卷的动态装卸。文件卷的动态装卸。目录查询目录查询- -FCB(i-node)-FCB(i-node)-文件的物理地址(盘块号)文件的物理地址(盘块号)- -文件的物理位置。文件的物理位置。查寻方法:线性查询、查寻方法:线性查询、HashHash表技术。表技术。8.3.5 8.3.5 目录查询技术目录查询技术例:查询文件例:查询文件mboxmbox的物理地址(盘块号),已知路径为:的物理地址(盘块号),已知路径为:/ /usr/ast/mboxusr/as

467、t/mbox根(主)目录根(主)目录节点节点6 6中查中查找找usrusr字段字段序号序号6 6是是/ /usrusr目录的目录的i- i- nodenode1.1. .4binbin7devdev14liblib9etcetc8tmptmp6usrusr索引结点索引结点系统区系统区用户磁盘区用户磁盘区位置位置描述描述文件属文件属性描述性描述1326节点节点2626是是/ /usrusr/ / astast目录目录的的i-nodei-node161930512645132#132#块是块是/ /usrusr的目的目录录. .diskdiskerikerikjimjimastastbalbal4

468、96#496#块是块是/ / usr/astusr/ast的目的目录录6.26. .64grantsgrants92booksbooks60mbokmbok81minixminix17srcsrc49626.mbox描述描述608.4 8.4 文件共享文件共享8.4.18.4.1早期实现文件共享的办法早期实现文件共享的办法1 1、绕弯路法、绕弯路法 . .abcxabcx2 2、连访法连访法3 3、利用基本文件目录、利用基本文件目录用户用户wangwang的目录的目录用户用户lele的目录的目录i-nodei-nodetestcount=2testsam8.4.2 8.4.2 基于索引节点的共

469、享方式基于索引节点的共享方式 通过多个文件名链接通过多个文件名链接( (link)link)到同一个索引结点,可建立同一到同一个索引结点,可建立同一个文件的多个彼此平等的别名。别名的数目记录在索引结点的个文件的多个彼此平等的别名。别名的数目记录在索引结点的链接计数中,若其减至链接计数中,若其减至0 0,则文件被删除。,则文件被删除。8.4.3 8.4.3 利用符号链实现文件共享利用符号链实现文件共享一种特殊类型的文件,其内容是到另一个目录或文件路一种特殊类型的文件,其内容是到另一个目录或文件路径的链接。建立符号链接文件,并不影响原文件,实际上它径的链接。建立符号链接文件,并不影响原文件,实际上

470、它们各是一个文件。可以建立任意的别名关系,甚至原文件是们各是一个文件。可以建立任意的别名关系,甚至原文件是在其它计算机上。在其它计算机上。88# 88# i-nodei-node用户用户wangwang的目录的目录用户用户lele的目录的目录58# 58# i-nodei-nodetest/ /usrusr/ /wangwang/ /testtestcount=2count=2盘块号盘块号count=2count=2盘块号盘块号samplesampletesttest8.5 8.5 文件保护文件保护一、安全性一、安全性主要是防止数据丢失和防止入侵主要是防止数据丢失和防止入侵数据丢失的主要原因数

471、据丢失的主要原因(1 1)人为因素:错误数据输入、磁带或磁盘安装错、)人为因素:错误数据输入、磁带或磁盘安装错、 程序运行错,磁盘(带)丢失。程序运行错,磁盘(带)丢失。(2 2)系统因素:硬件或软件错误(系统因素:硬件或软件错误(CPUCPU错、不能读磁带、磁盘错、不能读磁带、磁盘 、程序故障、通讯错等)、程序故障、通讯错等)(3 3)自然因素:火灾、水灾、地震、老鼠啃坏磁带等自然因素:火灾、水灾、地震、老鼠啃坏磁带等常见入侵常见入侵(1 1)偶然的非技术人员窥视)偶然的非技术人员窥视(2 2)内行的窥视)内行的窥视(3 3)明确的盗窃企图)明确的盗窃企图(4 4)商业或军事的间谍活动)商业

472、或军事的间谍活动入侵技术入侵技术AndersonAnderson标识了三种类型的入侵者:标识了三种类型的入侵者:伪装者伪装者( (masquerader)masquerader):一个未经授权使用计算机的个人,使用一个未经授权使用计算机的个人,使用一个合法用户的帐号,穿过系统的访问控制。一个合法用户的帐号,穿过系统的访问控制。违法行为者违法行为者( (misfeasor)misfeasor):一个合法的用户,他访问了数据,程一个合法的用户,他访问了数据,程序和资源,而这种访问对他来说是未经授权的或虽经授权却错误序和资源,而这种访问对他来说是未经授权的或虽经授权却错误地使用了他的特权。地使用了他

473、的特权。秘密的用户秘密的用户( (clandestine user)clandestine user):夺取了对系统的管理控制,并夺取了对系统的管理控制,并使用这一控制躲避审核和访问控制,或取消审核的人。使用这一控制躲避审核和访问控制,或取消审核的人。著名的安全缺陷著名的安全缺陷(1 1)UNIXUNIX的的lprlpr打印打印(2 2)MULTICSMULTICS的批处理的批处理(3 3)DEC-10DEC-10机器的机器的TENEXTENEX操作系统操作系统(4 4)InternetInternet蠕虫蠕虫 88 88年年1111月月2 2日,日, C Cornellornell大学研究生

474、大学研究生 Robert Tappan MorrisRobert Tappan Morris把一个把一个蠕虫程序放到了蠕虫程序放到了InternetInternet网上,在发现并消灭前,导致网上,在发现并消灭前,导致了全世界成千上万台工作在大学、公司和政府实验室的计算机了全世界成千上万台工作在大学、公司和政府实验室的计算机的崩溃。的崩溃。TENEXTENEX支持分页,为了用户能监控程序,在页出错时允支持分页,为了用户能监控程序,在页出错时允许用户调用自己的函数处理。许用户调用自己的函数处理。 TENEXTENEX文件保护采用口令。文件保护采用口令。要使用一个文件要给出口令,要使用一个文件要给出

475、口令,OSOS每次检测一个字符,发现每次检测一个字符,发现错误,停止执行。错误,停止执行。蠕虫蠕虫感染主机的方法感染主机的方法 UNIXUNIX的的rshrsh运行远程运行远程shellshell 利用利用BSDBSD的的fingerfinger程序(用来显示用户信息的命令)程序(用来显示用户信息的命令) finger namefinger name 电子邮件系统的错误电子邮件系统的错误四种普通的威胁类型:四种普通的威胁类型: 切切断断:系系统统的的资资源源被被破破坏坏或或变变的的不不可可用用或或不不能能用用。这这是是对对可可用性的威胁用性的威胁,如破坏硬盘、切断通信线路或使文件管理失效。,如

476、破坏硬盘、切断通信线路或使文件管理失效。 截截取取:未未经经授授权权的的用用户户、程程序序或或计计算算机机包包获获得得了了对对某某资资源源的的访访问问。这这是是对对机机密密性性的的威威胁胁,如如在在网网络络中中窃窃取取数数据据及及非非法法拷拷贝文件和程序。贝文件和程序。 篡篡改改:未未经经授授权权的的用用户户不不仅仅获获得得了了对对某某资资源源的的访访问问,而而且且进进行行篡篡放放。这这是是对对完完整整性性的的攻攻击击,如如修修改改数数据据文文件件中中的的值值,修修改网络中正在传送的消息内容。改网络中正在传送的消息内容。 伪伪造造:未未经经授授权权的的用用户户将将伪伪造造的的对对象象插插入入到

477、到系系统统中中。这这是是对对合合法法性性的的威威胁胁,如如非非法法用用户户把把伪伪造造的的消消息息加加到到网网络络中中或或向向当当前文件加入记录前文件加入记录。一般的安全性攻击一般的安全性攻击(1 1)请求内存页、磁盘空间和磁带反读其中的内容。(因为)请求内存页、磁盘空间和磁带反读其中的内容。(因为 大部分系统在重新分配时不删除以前内容)大部分系统在重新分配时不删除以前内容)(2 2)试验非法的系统调用,或用带非法参数的合法系统调用,)试验非法的系统调用,或用带非法参数的合法系统调用,或是带有合法而不合理的参数的合法系统调用。此时很多系统或是带有合法而不合理的参数的合法系统调用。此时很多系统会

478、引起混淆。会引起混淆。(3 3)登入时键入)登入时键入DELDEL、RUBOUTRUBOUT和和BREAKBREAK。在一些系统中,口令在一些系统中,口令检测被终止,于是登入成功。检测被终止,于是登入成功。(4 4)尝试修改在用户空间保存的、复杂的数据结构。)尝试修改在用户空间保存的、复杂的数据结构。(5 5)写段程序哄骗用户。(比如写一个登入界面)写段程序哄骗用户。(比如写一个登入界面)(6 6)仔细查看有关手册中关于:)仔细查看有关手册中关于:“请不要做请不要做X”X”,然后用变通然后用变通的方法尝试去做它。的方法尝试去做它。(7 7)劝告系统程序员改变系统或贿赂管理人员)劝告系统程序员改

479、变系统或贿赂管理人员(8 8)病毒攻击)病毒攻击安全性设计原则安全性设计原则(1 1)假定入侵者不知道系统的工作方式是自欺欺人)假定入侵者不知道系统的工作方式是自欺欺人(2 2)不可访问应该是缺省的属性)不可访问应该是缺省的属性(3 3)检查当前的权限。系统先检查权限,然后保留以后使用的)检查当前的权限。系统先检查权限,然后保留以后使用的方法不可取。方法不可取。(4 4)对每个进程赋予一个尽可能小的权限。)对每个进程赋予一个尽可能小的权限。二、保护机制二、保护机制1、保护域、保护域域:域:一组或一个对象及其对该对象所允许的操作的集合。一组或一个对象及其对该对象所允许的操作的集合。对象:对象:硬

480、件实体,软件。硬件实体,软件。须知原则:须知原则:只允许进程以合法的方式去访问那些可以去访问只允许进程以合法的方式去访问那些可以去访问的对象。的对象。文件文件1R文件文件2RW域域1文件文件3R文件文件4RWX文件文件5RW文件文件6RWX绘图仪绘图仪2W打印机打印机域域2域域3进程与域的联系:进程与域的联系:1 1)静态联系:进程可用资源在整个进程生命其中是固定的,)静态联系:进程可用资源在整个进程生命其中是固定的,但实际上呼吁改变域中内容的要求,需要某种机制,实现在不但实际上呼吁改变域中内容的要求,需要某种机制,实现在不同阶段可以改变域中的内容,以满足须知原则。同阶段可以改变域中的内容,以

481、满足须知原则。2 2)动态联系:进程可用资源在整个进程生命期中是变化的,)动态联系:进程可用资源在整个进程生命期中是变化的,即随着进程的推进,进程从一个域切换到另一个域。该机制应即随着进程的推进,进程从一个域切换到另一个域。该机制应满足进程可以创建新域也可以改变域中的内容。满足进程可以创建新域也可以改变域中的内容。三、访问矩阵三、访问矩阵 1 1、 访问矩阵是实现域管理的一种方法。矩阵的行代表域,访问矩阵是实现域管理的一种方法。矩阵的行代表域,列代表对象。列代表对象。对象对象域域文件文件1 文件文件2 文件文件3打印机打印机2打印机打印机1绘图仪绘图仪D1RR,WD2R,W,EWWWD3RW

482、2 2、为了实现域的动态切换,访问矩阵中增加对切换的描述、为了实现域的动态切换,访问矩阵中增加对切换的描述对象和切换操作。对象和切换操作。(S代表代表Switch,即切换)即切换)对象对象域域文件文件1 文件文件2 文件文件3域域D2域域D1域域D3D1RR,WSD2R,W,ESD3R3 3 、访问矩阵的修改访问矩阵的修改1 1)拷贝权)拷贝权 2 2)所有权所有权3 3)控制权控制权4 4、访问矩阵太大,难于实现。访问矩阵太大,难于实现。四、访问控制表四、访问控制表 按列(对象)划分,每个对象建立一张访问控制表,该表的按列(对象)划分,每个对象建立一张访问控制表,该表的内容为:(域,权集)。

483、内容为:(域,权集)。文件文件1:(:(D1,D3,R)文件文件3:(:(D2,RWE)对象对象域域文件文件1 文件文件2 文件文件3打印机打印机2打印机打印机1绘图仪绘图仪D1RR,WD2R,W,EWWWD3RW五、访问权限表五、访问权限表按行(域)划分,构成访问权限表。按行(域)划分,构成访问权限表。对象对象域域文件文件1 文件文件2 文件文件3打印机打印机2打印机打印机1绘图仪绘图仪D1RR,WD2R,W,EWWWD3RWD D2 2: :RWX RWX 文件文件3 3- -W- W- 打印机打印机1 1- -W- W- 打印机打印机2 2- -W- W- 绘图仪绘图仪六、六、UNIX的

484、做法的做法一个用户号由(组号,组内号)组成,组号、组内号在一个用户号由(组号,组内号)组成,组号、组内号在用户登记时由系统管理员给定。文件的权利有文件主(文件用户登记时由系统管理员给定。文件的权利有文件主(文件建立者)的权利、同组用户权利(组号相同的)和其它用户建立者)的权利、同组用户权利(组号相同的)和其它用户权利,权利分为:权利,权利分为:读、写、可执行(读、写、可执行(r,w,x,-表示,表示,-代表无此权)。代表无此权)。test.cpprw-r-红色为文件主红色为文件主权利权利兰色为同组兰色为同组用户权利用户权利黄色为其它黄色为其它用户权利用户权利UNIX的的chmodtest.cp

485、p644使使得该文件对一般用户也可以读得该文件对一般用户也可以读七、七、分级安全管理分级安全管理1 1、系统级安全系统级安全1 1) 注册注册2 2)(口令)登陆)(口令)登陆口令获取技术:口令获取技术: 尝试标准描述所使用的缺省口令,很多系统管理员都不尝试标准描述所使用的缺省口令,很多系统管理员都不 会去修改默认设置。会去修改默认设置。 试遍所有短口令(一个到三个字符)。试遍所有短口令(一个到三个字符)。 尝试系统联机字典中的单词或可能的口令表中的词。黑尝试系统联机字典中的单词或可能的口令表中的词。黑 客公告板可能会有口令表。客公告板可能会有口令表。 收集用户信息,例如他们的全名,配偶和子女

486、的名字,收集用户信息,例如他们的全名,配偶和子女的名字, 业余爱好等。业余爱好等。 尝试用户的电话号码,身份证号和房间号。尝试用户的电话号码,身份证号和房间号。 尝试该地区的所有合法牌照号码。尝试该地区的所有合法牌照号码。 使用特洛伊木马绕过对访问的限制。使用特洛伊木马绕过对访问的限制。 窃听远程用户和主机系统之间的线路。窃听远程用户和主机系统之间的线路。2 2、用户级安全用户级安全1 1)用户分类:用户分类: 文件主、伙伴、一般用户;文件主、伙伴、一般用户; 超级用户、系统管理员、用户超级用户、系统管理员、用户、顾客顾客2 2)文件访问权:建立、删除、打开、读、写、查询、修改、)文件访问权:

487、建立、删除、打开、读、写、查询、修改、父权、子权父权、子权3 3)文件加密或加口令)文件加密或加口令3 3)措施:定期修改口令、限制终端、限制时间)措施:定期修改口令、限制终端、限制时间4 4)物理鉴定:指纹、瞳孔等)物理鉴定:指纹、瞳孔等3 3、目录级安全管理目录级安全管理 目录读、目录写(创建、删除)、目录目录读、目录写(创建、删除)、目录“执行执行”(在目(在目录中检索文件名)录中检索文件名)系统核心才具有写目录的权利(创建、删除)系统核心才具有写目录的权利(创建、删除)用户的访问权是目录访问权和文件访问权的交集。用户的访问权是目录访问权和文件访问权的交集。4 4、文件级安全管理文件级安

488、全管理 只执行、只读、读写、修改、追加、隐含、索引、系统、只执行、只读、读写、修改、追加、隐含、索引、系统、存档、共享等。存档、共享等。八、八、入侵检测的方法入侵检测的方法 (1)(1)统计异常检测:统计异常检测:收集一段时间内与合法用户的行为有收集一段时间内与合法用户的行为有关的数据。然后对观察到的行为进行统计试验,来确定该行关的数据。然后对观察到的行为进行统计试验,来确定该行为是否是合法的行为。为是否是合法的行为。 1) 1) 临界值检测:为不同用户的各种事件出现频率定义临界值检测:为不同用户的各种事件出现频率定义临界值。临界值。 2) 2) 基于直方图检测:构造用户行为的直方图,用于检基

489、于直方图检测:构造用户行为的直方图,用于检测个人行为的变化情况。测个人行为的变化情况。 (2)(2)基于规则的检测:基于规则的检测:定义一组规则集,用于决定一个已定义一组规则集,用于决定一个已知行为是否是入侵者行为。知行为是否是入侵者行为。 1) 1) 异常检测:开发规则来检测与以前的使用模式的偏异常检测:开发规则来检测与以前的使用模式的偏差。差。 2) 2) 渗透检测:使用专家系统的方法来搜寻可疑行为。渗透检测:使用专家系统的方法来搜寻可疑行为。入侵检测的基本工具是审计记录,使用两种方法:入侵检测的基本工具是审计记录,使用两种方法: 本地审计记录:本地审计记录:用来收集用户行为的信息,由于所

490、有用来收集用户行为的信息,由于所有的多用户操作系统都有收集用户行为的软件,好处是不的多用户操作系统都有收集用户行为的软件,好处是不需要另外的收集软件了。但缺点是本地审计记录可能未需要另外的收集软件了。但缺点是本地审计记录可能未包含所需要的信息或者不是所需的形式。包含所需要的信息或者不是所需的形式。 检测专用的审计记录:检测专用的审计记录:可以用一种收集装置来生成可以用一种收集装置来生成只包含入侵检测需要的审计记录,好处在于可独立运行,只包含入侵检测需要的审计记录,好处在于可独立运行,并可对大量系统,其不足之处在于需要额外开销。并可对大量系统,其不足之处在于需要额外开销。按照按照ISO通过的通过

491、的“信息技术安全评价通用准则信息技术安全评价通用准则”关于操关于操作系统、数据库这类系统的安全等级从低到高分为七个级别:作系统、数据库这类系统的安全等级从低到高分为七个级别:D最低安全性最低安全性C1自主存取控制自主存取控制C2较完善的自主存取控制、审计较完善的自主存取控制、审计B1强制存取控制强制存取控制B2良好的结构化设计、形式化安全模型良好的结构化设计、形式化安全模型B3全面的访问控制、可信恢复全面的访问控制、可信恢复A1形式化认证形式化认证目前流行的几个操作系统的安全性分别为:目前流行的几个操作系统的安全性分别为:DOS:D级;级;WindosNT和和Saloris:C2级;级;OSF

492、/1:B1级;级;UnixWare2.1:B2级。级。Windows2000:C2级级安全设计要考虑实际的需要,安全性高则系统也复杂,安全设计要考虑实际的需要,安全性高则系统也复杂,对用户的限定也大。因此对单用户操作系统的保护考虑就非对用户的限定也大。因此对单用户操作系统的保护考虑就非常简单。甚至在常简单。甚至在UNIX系统,操作系统本身对安全保护功能系统,操作系统本身对安全保护功能也非常简单。也非常简单。第第9章章磁盘存储器管理磁盘存储器管理磁盘存储器:随机读写共享设备,可移动介质磁盘存储器:随机读写共享设备,可移动介质特点特点:容量大,速度快。容量大,速度快。管理要求:合理分配空间、访问效

493、率高,容错能管理要求:合理分配空间、访问效率高,容错能力强。其性能直接影响文件系统的性能指标。力强。其性能直接影响文件系统的性能指标。9.1磁盘磁盘I/O和调度算法和调度算法提高磁盘提高磁盘I/O速度的途径:速度的途径:(1)硬件解决硬件解决(2)好的调度算法好的调度算法(3)缓冲区缓冲区9.1.1磁盘性能简述磁盘性能简述一、一、数据的组织数据的组织1标识符字段:磁道号、磁头号、扇区号标识符字段:磁道号、磁头号、扇区号2数据字段数据字段二、二、磁盘的类型磁盘的类型1固定头磁盘固定头磁盘2移动头磁盘移动头磁盘三、三、磁盘访问时间磁盘访问时间1寻道时间寻道时间2旋转延迟时间旋转延迟时间3传输时间传

494、输时间9.1.2早期磁盘调度算法早期磁盘调度算法来自不同进程的磁盘来自不同进程的磁盘I/O请求构成一个请求队列。磁盘请求构成一个请求队列。磁盘I/O调调度的主要目标是度的主要目标是减少请求队列对应的平均柱面定位时间减少请求队列对应的平均柱面定位时间。一、先来先服务(一、先来先服务(FCFS)磁盘磁盘I/O执行顺序为磁盘执行顺序为磁盘I/O请求的先后顺序。该算法的特请求的先后顺序。该算法的特点是公平性;在磁盘点是公平性;在磁盘I/O负载较轻且每次读写多个连续扇区时,负载较轻且每次读写多个连续扇区时,性能较好。性能较好。二、最短寻道时间优先二、最短寻道时间优先SSTF(ShortSeekTimeF

495、irst)考虑磁盘考虑磁盘I/O请求队列中各请求的磁头位置,选择从当前磁请求队列中各请求的磁头位置,选择从当前磁头位置出发,移动最少的磁盘头位置出发,移动最少的磁盘I/O请求。请求。该算法的目标是使每次该算法的目标是使每次磁头移动时间最少。磁头移动时间最少。特点:特点:(1)访问磁道与当前磁头所在位置最近,但不能保证平均寻道)访问磁道与当前磁头所在位置最近,但不能保证平均寻道时间最短时间最短(2)比)比FIFO算法有更好的性能算法有更好的性能(3)进程有可能进程有可能“饿死饿死”。55 4555 45 58 58 3 3 39 39 19 19 18 18 21 21 90 72 90 72

496、160 160 70 70 150 10 150 10 38 38 112 112 184 184 146 146被访问的下被访问的下移动距离移动距离一个磁道号一个磁道号(磁道数)(磁道数)平均寻道长度:平均寻道长度:55.355.3FCFS调度算法示例调度算法示例90 1090 10 58 58 32 32 55 55 3 3 39 39 16 16 38 1 38 1 18 18 20 20 150 132 150 132 160 160 10 10 184 184 24 24被访问的下被访问的下移动距离移动距离一个磁道号一个磁道号(磁道数)(磁道数)平均寻道长度:平均寻道长度:27.52

497、7.5SSTF调度算法示例调度算法示例两者都以两者都以100# #磁道开始磁道开始三、后进先出算法:三、后进先出算法:后产生的磁盘后产生的磁盘I/O请求,先执行。该算法是基于事务系统中请求,先执行。该算法是基于事务系统中顺序文件中磁盘顺序文件中磁盘I/O的局部性特征,相邻访问的位置也相邻。它的局部性特征,相邻访问的位置也相邻。它的问题在于系统负载重时,可能有进程的磁盘的问题在于系统负载重时,可能有进程的磁盘I/O永远不能执行,永远不能执行,处于饥饿状态。处于饥饿状态。四、优先级算法:四、优先级算法:依据进程优先级来调整磁盘依据进程优先级来调整磁盘I/O请求的执行顺序。该算法反请求的执行顺序。该

498、算法反映进程在系统的优先级特征,目标是系统目标的实现,而不是映进程在系统的优先级特征,目标是系统目标的实现,而不是改进磁盘改进磁盘I/O性能。性能。9.1.3各种扫描算法各种扫描算法一、扫描一、扫描(SCAN)算法:算法:电梯调度算法。选择在电梯调度算法。选择在磁头磁头前进方向前进方向上从当前位置上从当前位置移动最少的磁盘移动最少的磁盘I/O请求执请求执行,没有前进方向上的请求行,没有前进方向上的请求时才改变方向。该算法是对时才改变方向。该算法是对SSTF算法的改进,磁盘算法的改进,磁盘I/O较好,且没有进程会饿死。较好,且没有进程会饿死。150 50150 50 160 160 10 10

499、184 184 24 24 90 90 94 94 58 32 58 32 55 55 3 3 39 16 39 16 38 38 1 1 18 18 20 20被访问的下被访问的下移动距离移动距离一个磁道号一个磁道号(磁道数)(磁道数)平均寻道长度:平均寻道长度:27.827.8SCANSCAN调度算法示例调度算法示例以以100# #磁道开始,方向朝磁道递增方向磁道开始,方向朝磁道递增方向二、循环扫描算法二、循环扫描算法CSCAN:在一个方向上在一个方向上使用扫描算法,当到达边沿使用扫描算法,当到达边沿时直接移动到另一沿的第一时直接移动到另一沿的第一个位置,即磁头向一个方向个位置,即磁头向一

500、个方向移动,到头后立即返回。移动,到头后立即返回。150 50150 50 160 160 10 10 184 184 24 24 18 18 166 166 38 20 38 20 39 39 1 1 55 16 55 16 58 58 3 3 90 90 32 32被访问的下被访问的下移动距离移动距离一个磁道号一个磁道号(磁道数)(磁道数)平均寻道长度:平均寻道长度:35.835.8CSCANCSCAN调度算法示例调度算法示例以以100# #磁道开始,方向朝磁道递增方向磁道开始,方向朝磁道递增方向三、三、N-Step-SCAN和和FSCAN调度算法调度算法1N-Step-SCAN算法:算法

501、:把磁盘把磁盘I/O请求队列分成长度为请求队列分成长度为N的段,每次使用扫描算法处理的段,每次使用扫描算法处理这这N个请求,即将请求的任务分成长度为个请求,即将请求的任务分成长度为N的若干个队列,以的若干个队列,以FCFS方式处理任务队列方式处理任务队列,以以SCAN方式处理队列内部的请求方式处理队列内部的请求。该。该算法的目标是改进前几种算法可能在多磁头系统中出现磁头静止算法的目标是改进前几种算法可能在多磁头系统中出现磁头静止在一个磁道上,导致其它进程无法及时进行磁盘在一个磁道上,导致其它进程无法及时进行磁盘I/O。当当N值很大时,该算法接近于值很大时,该算法接近于SCAN;而而N=1时该算

502、法变为时该算法变为FCFS。2FSCAN调度算法调度算法将将N-Step-SCAN算法中的队列数目定为算法中的队列数目定为2(N=2)。把磁盘把磁盘I/O请求分成两个队列,交替使用扫描算法处理一个队列,新生成请求分成两个队列,交替使用扫描算法处理一个队列,新生成的磁盘的磁盘I/O请求放入另一队列中。该算法的目标与请求放入另一队列中。该算法的目标与N步扫描算法步扫描算法一致。一致。9.2外存分配方法外存分配方法目的:目的:(1)提高存储空间的利用率)提高存储空间的利用率(2)提高文件的访问速度)提高文件的访问速度9.2.1连续分配连续分配按相邻接的盘块号分配物理块,称按相邻接的盘块号分配物理块,

503、称物理顺序文件物理顺序文件。主要问题:随着使用,磁盘碎片增多,性能下降,需要磁盘主要问题:随着使用,磁盘碎片增多,性能下降,需要磁盘整理。整理。优点:顺序访问速度快,定位容易,只需记录第一个盘块的优点:顺序访问速度快,定位容易,只需记录第一个盘块的位置位置.可以通过紧缩可以通过紧缩(compact)将外存空闲空间合并成连续的将外存空闲空间合并成连续的区域。区域。缺点:因需要连续的空间,当文件长度变化时难于处理。缺点:因需要连续的空间,当文件长度变化时难于处理。9.2.2链接分配链接分配一、隐式链接一、隐式链接解决顺序文件的离散存储的问题,随机访问效率差。解决顺序文件的离散存储的问题,随机访问效

504、率差。目录中只存放第一块的盘块号,在每个盘块中有指向下一目录中只存放第一块的盘块号,在每个盘块中有指向下一个盘块的指针。个盘块的指针。二、显式链接二、显式链接存储信息存放在一张表中,称文件分配表(存储信息存放在一张表中,称文件分配表(FAT),),文件目文件目录中存放文件首地址,录中存放文件首地址,FAT表中的序号域与物理块号建立对应表中的序号域与物理块号建立对应关系。关系。例:例:DOS的方法:的方法:(1 1)文件存储单位:)文件存储单位:簇簇 每个簇包含若干个连续的扇区每个簇包含若干个连续的扇区sectorsector簇的大小簇的大小 两个极端:大到能容纳整个文件,小到一个外存存储块。两

505、个极端:大到能容纳整个文件,小到一个外存存储块。簇较大:提高簇较大:提高I/OI/O访问性能,减小管理开销访问性能,减小管理开销簇较小:簇内的碎片浪费较小,特别是大量小文件时有利。簇较小:簇内的碎片浪费较小,特别是大量小文件时有利。MSMS中在不同版本、不同类型盘中有所不同。中在不同版本、不同类型盘中有所不同。(2)磁盘组织)磁盘组织引导区FAT表1FAT表2主目录区数据区0#1#(3 3)FATFAT表结构表结构 每每1212位(位(DOS 2.0DOS 2.0,1.0 1.0 版)代表一个版)代表一个簇,簇,FATFAT表首字节表首字节为盘类型。(为盘类型。(F8-F8-硬盘,硬盘,F9-

506、F9-高密度软盘等)高密度软盘等)FAT表表F8FF8FFFFFFF006006000000FF7FF7009009FFFFFF.0000000010010020020030030050050060060070070080080090090000A A其中其中000:空闲:空闲簇簇FF7FF7:坏扇区坏扇区FF8-FFFFF8-FFF:文件文件结束结束其它其它: :下个簇号下个簇号test.c.002002文件位置文件位置2,6 ,9test.c文件所占的文件所占的簇簇(4)(4)一个一个簇中首磁盘块逻辑块号簇中首磁盘块逻辑块号 (簇号(簇号-2)*-2)*每簇扇区数每簇扇区数+ +数据区开始

507、块号数据区开始块号逻辑块号到物理地址转换:逻辑块号到物理地址转换:扇区号扇区号=逻辑块号逻辑块号%每道扇区数每道扇区数道号道号=逻辑块号逻辑块号/每道扇区数每道扇区数/磁头数磁头数磁头号(柱面号)磁头号(柱面号)=(逻辑块号(逻辑块号/每道扇区数)每道扇区数)%磁头数磁头数设设数据区开始块号为数据区开始块号为2828# #,每簇,每簇4 4扇区,则文件扇区,则文件test.ctest.c占有占有的的2 2,6,9簇则对应占有的磁盘逻辑块为:簇则对应占有的磁盘逻辑块为:2828,2929,3030,3131;4444,4545,4646,4747;5656,5757,5858,5959到到DOS

508、3.0为改为为改为16位代表一簇,即所谓的位代表一簇,即所谓的FAT16特点:最大分区特点:最大分区GB,兼容性好,几乎所有操作系统都兼容性好,几乎所有操作系统都支持(支持(DOS、Win3.X、Win95、Win97、Win98、WinNt、Win2000/XP和部分和部分Linux)FAT32:现在主流的操作系统大多采用现在主流的操作系统大多采用此格式。提供此格式。提供32位文位文件分配表,运行速度慢于件分配表,运行速度慢于FAT16。兼容性差。兼容性差。DOS,Linux系系统不支持。统不支持。NTFS:使用过程不易产生碎片,安全性好。支持的操作系使用过程不易产生碎片,安全性好。支持的操

509、作系统:统:WinNT、Win2000、WinXP。9.2.3索引分配索引分配文件的首块记录了该文件的其它块的位置。文件的首块记录了该文件的其它块的位置。一、单级索引一、单级索引为每个文件分配一个索引块(标)。记录分配给该文件的块为每个文件分配一个索引块(标)。记录分配给该文件的块号,号,FCB中记录指向该索引块的指针。(中记录指向该索引块的指针。(P267图图9-10)问题:浪费外存空间,特别是对小文件。问题:浪费外存空间,特别是对小文件。二、多级索引二、多级索引对于大文件,一个块装不下一个索引,需要多个块。即索引对于大文件,一个块装不下一个索引,需要多个块。即索引块的索引块的索引多级索引。

510、(多级索引。(P268图图9-11)三、混合方式(三、混合方式(UNIX)(1)直接地址:直接地址:10个,每个直接指向记录数据块(个,每个直接指向记录数据块(4KB),),即文件大小最大为即文件大小最大为40KB。(2)一次间接索引:一次间接索引:1个,指向下一级索引块,一个索引块个,指向下一级索引块,一个索引块存放存放1K个块号,即个块号,即1MB空间,此时文件的大小最大为:空间,此时文件的大小最大为:4MB+40KB。(3)多次(两次)间接索引:多次(两次)间接索引:1个,个,1K个一级索引块:个一级索引块:1K*1K*4KB=4GB。(4)三次间接索引:三次间接索引:1个,个,1K个两

511、次间接索引,个两次间接索引,1K*4GB=4TB。9.3空闲存储空间管理空闲存储空间管理一、空闲表法一、空闲表法分配:首次适应、下次适应、最佳、最坏。分配:首次适应、下次适应、最佳、最坏。 与内存不同,应以连续分配为主。一般采用首次适应算法,与内存不同,应以连续分配为主。一般采用首次适应算法,回收时合并。回收时合并。序号起始空闲盘块号空闲盘块数12429331554二、空闲链表法二、空闲链表法 空闲空间链接空闲空间链接:每个空闲盘区中有指向下一个空闲盘每个空闲盘区中有指向下一个空闲盘位置的指针,所有空闲区构成一个链表。不需要磁盘分配位置的指针,所有空闲区构成一个链表。不需要磁盘分配表,每次申请

512、空闲簇只需取出链表开头的空闲簇即可。表,每次申请空闲簇只需取出链表开头的空闲簇即可。 空闲块链接:以磁盘块为单位进行链接空闲块链接:以磁盘块为单位进行链接空闲区链接:以空闲区(一个区可能有若干磁盘块)为单位链接空闲区链接:以空闲区(一个区可能有若干磁盘块)为单位链接三、位示图法三、位示图法 位示图位示图:每一位表示一个块,取值每一位表示一个块,取值0 0和和1 1分别表示空闲和分别表示空闲和占用。占用。四、四、 成组链接法(成组链接法(UNIXUNIX) 空闲空间索引空闲空间索引( (indexed free space)indexed free space):在一个空闲块中记录在一个空闲块中

513、记录其它几个空闲块的位置信息。其它几个空闲块的位置信息。一、空闲块的组织一、空闲块的组织 从尾向前按从尾向前按N N块分组(开始的一块有块分组(开始的一块有N-1N-1个块),将块号信个块),将块号信息记在前面一组的最后一块中,最后分出的一组信息放在磁盘息记在前面一组的最后一块中,最后分出的一组信息放在磁盘的操作系统保留区中,在文件卷安装时,由操作系统读入内存。的操作系统保留区中,在文件卷安装时,由操作系统读入内存。保留区数据区3003002992992012014004007900790039939978997899799979993013017801780179017901空闲盘空闲盘块号

514、栈块号栈s.frees.free0 01 1.9899100100300300299299. . . .20220220120110040039930110099079997901.数据区(盘块号为数据区(盘块号为2017999)空闲盘空闲盘块号栈块号栈系统区系统区78017801# #到到79007900# #共共100100块的块块的块信息放在信息放在78007800# #块中块中301301# #到到400400# #共共100100块的块信块的块信息放在息放在300300# #块块中中79017901# #到到79997999# #共共9999块的块块的块信息放在信息放在7900790

515、0# #块中块中201201# #到到300300# #共共100100块的块信块的块信息放在系统息放在系统区(空闲盘区(空闲盘块栈)中块栈)中二、空闲块的分配与回收二、空闲块的分配与回收1 1、分配、分配空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.98992300300299299. . . .s s.free.free减减1 1s.free为为0栈顶块号分配栈顶块号分配ny栈顶块中内栈顶块中内容读入工作容读入工作区,该块分区,该块分配配返回返回二、空闲块的分配与回收二、空闲块的分配与回收1 1、分配、分配空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.989

516、91300300299299. . . .s s.free.free减减1 1s.free为为0栈顶块号分配栈顶块号分配ny栈顶块中内栈顶块中内容读入工作容读入工作区,该块分区,该块分配配返回返回二、空闲块的分配与回收二、空闲块的分配与回收1 1、分配、分配空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.98991300300299299. . . .s s.free.free减减1 1s.free为为0栈顶块号分配栈顶块号分配ny栈顶块中内栈顶块中内容读入工作容读入工作区,该块分区,该块分配配返回返回299#分配分配出去出去二、空闲块的分配与回收二、空闲块的分配与回收1 1、分

517、配、分配空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.98991300300299299. . . .s s.free.free减减1 1s.free为为0栈顶块号分配栈顶块号分配ny栈顶块中内栈顶块中内容读入工作容读入工作区,该块分区,该块分配配返回返回二、空闲块的分配与回收二、空闲块的分配与回收1 1、分配、分配空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.98990300300299299. . . .s s.free.free减减1 1s.free为为0栈顶块号分配栈顶块号分配ny栈顶块中内栈顶块中内容读入工作容读入工作区,该块分区,该块分配配返回返回二

518、、空闲块的分配与回收二、空闲块的分配与回收1 1、分配、分配空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.98990300300299299. . . .s s.free.free减减1 1s.free为为0栈顶块号分配栈顶块号分配ny栈顶块中内栈顶块中内容读入工作容读入工作区,该块分区,该块分配配返回返回300#分配分配出去出去二、空闲块的分配与回收二、空闲块的分配与回收1 1、分配、分配空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.98990300300299299. . . .s s.free.free减减1 1s.free为为0栈顶块号分配栈顶块号分配n

519、y栈顶块中内栈顶块中内容读入工作容读入工作区,该块分区,该块分配配返回返回100400399301二、空闲块的分配与回收二、空闲块的分配与回收1 1、分配、分配空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.9899100400400399399. . . .301s s.free.free减减1 1s.free为为0栈顶块号分配栈顶块号分配ny栈顶块中内栈顶块中内容读入工作容读入工作区,该块分区,该块分配配返回返回二、空闲块的分配与回收二、空闲块的分配与回收2 2、回收、回收空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.989999400400318318. .

520、 . .305回收的块号为回收的块号为X X# #s.free为为100按按s.free的值的值登记块号登记块号X,s.free加加1ny空闲盘块号空闲盘块号栈内容写入栈内容写入X X# #返回返回栈工作区清栈工作区清除,除,s.free置置1,X写在写在0位置位置现在释放现在释放201#块块二、空闲块的分配与回收二、空闲块的分配与回收2 2、回收、回收空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.989999400400318318. . . .305201回收的块号为回收的块号为X X# #s.free为为100按按s.free的值的值登记块号登记块号X,s.free加加1

521、ny空闲盘块号空闲盘块号栈内容写入栈内容写入X X# #返回返回栈工作区清栈工作区清除,除,s.free置置1,X写在写在0位置位置二、空闲块的分配与回收二、空闲块的分配与回收2 2、回收、回收空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.9899100400400318318. . . .305201回收的块号为回收的块号为X X# #s.free为为100按按s.free的值的值登记块号登记块号X,s.free加加1ny空闲盘块号空闲盘块号栈内容写入栈内容写入X X# #返回返回栈工作区清栈工作区清除,除,s.free置置1,X写在写在0位置位置释放释放308#块块二、空闲

522、块的分配与回收二、空闲块的分配与回收2 2、回收、回收空闲盘空闲盘块号栈块号栈s.frees.free0 01 1.9899100400400318318. . . .305201100400400318318. . . .305201308#回收的块号为回收的块号为X X# #s.free为为100按按s.free的值的值登记块号登记块号X,s.free加加1ny空闲盘块号空闲盘块号栈内容写入栈内容写入X X# #返回返回栈工作区清栈工作区清除,除,s.free置置1,X写在写在0位置位置二、空闲块的分配与回收二、空闲块的分配与回收2 2、回收、回收空闲盘空闲盘块号栈块号栈s.frees.f

523、ree0 01 1.98991308. . . .100400400318318. . . .305201308#回收的块号为回收的块号为X X# #s.free为为100按按s.free的值的值登记块号登记块号X,s.free加加1ny空闲盘块号空闲盘块号栈内容写入栈内容写入X X# #返回返回栈工作区清栈工作区清除,除,s.free置置1,X写在写在0位置位置9.4 9.4 磁盘容错技术磁盘容错技术 容错技术是通过在系统中设置冗余部件来提高系统可靠容错技术是通过在系统中设置冗余部件来提高系统可靠性的一种技术。磁盘容错技术和是通过增加冗余的磁盘驱动性的一种技术。磁盘容错技术和是通过增加冗余的

524、磁盘驱动器、磁盘控制器等来提高磁盘系统的可靠性。磁盘容错技术器、磁盘控制器等来提高磁盘系统的可靠性。磁盘容错技术往往也称为系统容错技术。它分为三个级别:往往也称为系统容错技术。它分为三个级别:SFT-SFT-低级磁盘容错技术低级磁盘容错技术,主要用于防止磁盘表面发生缺陷,主要用于防止磁盘表面发生缺陷所引起的数据丢失。所引起的数据丢失。 1 1)双目录、双文件分配表)双目录、双文件分配表 2 2)热修复和写校验(一般现在由硬件完成)热修复和写校验(一般现在由硬件完成)SFT-SFT-中级磁盘容错技术中级磁盘容错技术,主要用于防止磁盘驱动器和磁盘控,主要用于防止磁盘驱动器和磁盘控制器故障所引起的系

525、统不能正常工作。制器故障所引起的系统不能正常工作。 1 1)磁盘镜像)磁盘镜像 2 2)磁盘双工)磁盘双工主机主机磁盘磁盘控制控制器器磁盘磁盘驱动驱动器器通道通道磁盘镜像磁盘镜像主机主机磁盘磁盘驱动驱动器器磁盘双工磁盘双工通道通道磁盘磁盘控制器控制器通道通道磁盘磁盘控制器控制器9.4.3 9.4.3 廉价磁盘冗余阵列廉价磁盘冗余阵列19871987加州大学伯克利分校一个研究组提出。加州大学伯克利分校一个研究组提出。RAID: Redundant Array of Inexpensive DisksRAID: Redundant Array of Inexpensive DisksSLED: S

526、ingle Large Expensive DiskSLED: Single Large Expensive Disk一、特点一、特点 RAIDRAID的提出填补了的提出填补了CPUCPU速度快与磁盘设备速度慢之间的速度快与磁盘设备速度慢之间的间隙间隙, ,其策略是其策略是: :1 1、用一组较小容量的、独立的、可并行工作的磁盘驱动器、用一组较小容量的、独立的、可并行工作的磁盘驱动器组成阵列来代替单一的大容量磁盘组成阵列来代替单一的大容量磁盘, ,再加进冗余技术;再加进冗余技术;2 2、数据能用多种方式组织和分布存储;、数据能用多种方式组织和分布存储;3 3、独立的、独立的I/OI/O请求能被

527、并行处理请求能被并行处理, ,数据分布的单个数据分布的单个I/OI/O请求也请求也能并行地从多个磁盘驱动器同时存取数据能并行地从多个磁盘驱动器同时存取数据, ,从而从而, ,改进了改进了I/OI/O性能和系统可靠性。性能和系统可靠性。RAIDRAID样式共有样式共有6 6级组成:级组成: RAID0RAID0至至RAID5RAID5,后来又扩充了后来又扩充了RAID6RAID6和和RAID7RAID7,它们它们之间并不隐含层次关系,而是标明了不同的设计结构,之间并不隐含层次关系,而是标明了不同的设计结构,有三个共同特性有三个共同特性: :RAIDRAID是一组物理磁盘驱动器,可以被操作系统看作

528、是是一组物理磁盘驱动器,可以被操作系统看作是单一的逻辑磁盘驱动器单一的逻辑磁盘驱动器; ;数据被分布存储在阵列横跨的物理驱动器上数据被分布存储在阵列横跨的物理驱动器上; ;冗余磁盘的作用是保存奇偶校验信息,当磁盘出现失冗余磁盘的作用是保存奇偶校验信息,当磁盘出现失误时它能确保数据的恢复。误时它能确保数据的恢复。二、二、 RAIDRAID分级分级RAID0RAID0不支持第三个特性不支持第三个特性,它采用把大块数据分割成数据,它采用把大块数据分割成数据子块子块( (strip)strip),交替间隔地分布存储,但未引入冗余磁盘,交替间隔地分布存储,但未引入冗余磁盘,适用于性能要求高,但非要害数据

529、这类应用。适用于性能要求高,但非要害数据这类应用。 DAID1DAID1采用镜像技术采用镜像技术,适用于做系统驱动器,存放关键,适用于做系统驱动器,存放关键的系统文件。的系统文件。 RAID2RAID2和和RAID3RAID3主要采用了并行存取技术,分别还引入海主要采用了并行存取技术,分别还引入海明明( (Hamming code)Hamming code)校验码和位插入校验码和位插入( (bit interleaved)bit interleaved)奇偶奇偶校验码改进可靠性,适用于大数据量校验码改进可靠性,适用于大数据量I/OI/O请求,如图像和请求,如图像和CADCAD这类的应用。这类的

530、应用。 RAID4RAID4和和RAID5RAID5主要采用了独立存取技术,主要采用了独立存取技术, 分别还引入块分别还引入块插入插入( (block interleaved) block interleaved) 奇偶校验码和块插入分布式奇偶校验码和块插入分布式 ( (block interleaved distributed)block interleaved distributed)奇偶校验码。改进了可奇偶校验码。改进了可靠性,适用于靠性,适用于I/OI/O请求频繁的事务处理。请求频繁的事务处理。三、各级三、各级RAIDRAID简介简介1、RAIDlevel0数据划成子块被分布存储在横跨

531、阵列中的所有磁盘上,数据划成子块被分布存储在横跨阵列中的所有磁盘上,逻辑上连续的数据子块,在物理上可被依次存储在横向相逻辑上连续的数据子块,在物理上可被依次存储在横向相邻的磁盘驱动器上,邻的磁盘驱动器上,通过一个阵列管理软件进行逻辑地址空间到物理地址空间通过一个阵列管理软件进行逻辑地址空间到物理地址空间的映射。的映射。特点:特点:与单个大磁盘相比有着明显优点,它能并行地处理与单个大磁盘相比有着明显优点,它能并行地处理要求位于不同磁盘上数据的不同要求位于不同磁盘上数据的不同I/O请求。请求。RAIDlevel0并不能并不能真正划入真正划入RAID家族,因为它没有引入冗余校验来改进性能,家族,因为

532、它没有引入冗余校验来改进性能,导致磁盘系统的可靠性差,容易丢失数据,故己较少使用。导致磁盘系统的可靠性差,容易丢失数据,故己较少使用。RAIDLevel0Strip12Strip8Strip4Strip0Strip13Strip9Strip5Strip1Strip14Strip10Strip6Strip2Strip15Strip11Strip7Strip3DatamappingforaRAIDLevel0ArrayArrayManagementsoftwareStrip12Strip8Strip4Strip0Strip13Strip9Strip5Strip1Strip14Strip10Stri

533、p6Strip2Strip15Strip11Strip7Strip3strip0 strip1strip4strip2strip3strip5.2 2、 RAID1 RAID1 RAID1 RAID1简单地采用双份所有数据的办法,数据划成子块简单地采用双份所有数据的办法,数据划成子块被分布存储在横跨阵列中的所有磁盘上,但是,每个数据子被分布存储在横跨阵列中的所有磁盘上,但是,每个数据子块被存储到两个独立的物理磁盘上,故阵列中的每个盘都有块被存储到两个独立的物理磁盘上,故阵列中的每个盘都有一个包含相同数据的它的镜像盘。一个包含相同数据的它的镜像盘。这种数据组织方法的主要可取之处在于:这种数据组织

534、方法的主要可取之处在于: 读请求能通过包含相同请求数据中的任何一个磁盘来提读请求能通过包含相同请求数据中的任何一个磁盘来提供服务,其中的一个所化查找和搜索时间最少供服务,其中的一个所化查找和搜索时间最少; ; 写操作时,要求改写对应的两个数据子块,但这一点可写操作时,要求改写对应的两个数据子块,但这一点可采用并行操作实现,写操作的性能由并行操作中较慢的一个采用并行操作实现,写操作的性能由并行操作中较慢的一个决定决定; ; 出现故障后的恢复很简单,当一个驱动器出现故障,数出现故障后的恢复很简单,当一个驱动器出现故障,数据可以从镜像盘获得。据可以从镜像盘获得。 特点:特点:RAID1RAID1缺点

535、是价格太贵,空间利用率仅有一半,往往缺点是价格太贵,空间利用率仅有一半,往往作为存放系统软件、关键数据和要害文件的驱动器作为存放系统软件、关键数据和要害文件的驱动器; ;但是当但是当磁盘故障时,它提供了一个实时的数据备份,所有的数据信磁盘故障时,它提供了一个实时的数据备份,所有的数据信息立即可用。息立即可用。RAIDLevel1(Mirrored)Strip12Strip8Strip4Strip0Strip13Strip9Strip5Strip1Strip14Strip10Strip6Strip2Strip15Strip11Strip7Strip3Strip12Strip8Strip4Stri

536、p0Strip13Strip9Strip5Strip1Strip14Strip10Strip6Strip2Strip15Strip11Strip7Strip33 3、 RAID2 RAID2 RAID2 RAID2采用了并行存取技术。在并行存取阵列中,所有采用了并行存取技术。在并行存取阵列中,所有的磁盘参与每个的磁盘参与每个I/OI/O请求的执行,且每个驱动器的移动臂同步请求的执行,且每个驱动器的移动臂同步工作,使得任何时刻每个磁盘的磁头都在相同的位置。工作,使得任何时刻每个磁盘的磁头都在相同的位置。RAID2RAID2和和RAID3RAID3的数据子块非常小,常常小到单个字节或一个字。对的数

537、据子块非常小,常常小到单个字节或一个字。对于于RAID2RAID2纠错码按照横跨的每个数据盘的相应位进行计算,并纠错码按照横跨的每个数据盘的相应位进行计算,并存储在多只奇偶校验盘的相应位的位置。典型地使用海明校存储在多只奇偶校验盘的相应位的位置。典型地使用海明校验码,它能纠正单位错,发现双位错。验码,它能纠正单位错,发现双位错。特点:特点:虽然虽然RAID2RAID2所需磁盘数少于所需磁盘数少于RAID1RAID1,但价格仍然很贵。但价格仍然很贵。所需奇偶校验磁盘的数量与数据盘的多少成比例。在执行单所需奇偶校验磁盘的数量与数据盘的多少成比例。在执行单个读操作时,所有的磁盘要被同时存取,请求的数

538、据和关联个读操作时,所有的磁盘要被同时存取,请求的数据和关联的纠错码都提交给阵列控制器,如果发现有一个二进位错,的纠错码都提交给阵列控制器,如果发现有一个二进位错, 阵列控制器能立即确认和纠正错误,所以读操作时间并未变阵列控制器能立即确认和纠正错误,所以读操作时间并未变慢慢; ;在执行单个写请求时,所有的数据盘和奇偶校验盘必须被在执行单个写请求时,所有的数据盘和奇偶校验盘必须被存取。存取。RAIDLevel2(RedundancythroughHammingCode)b0b1b2b3f0(b)f1(b)f2(b)4 4、 RAID3RAID3 RAID3 RAID3的组织与的组织与RAID2R

539、AID2相似,其差别是它仅使用一只冗余相似,其差别是它仅使用一只冗余盘,而不论是多大的磁盘阵列。当出现磁盘故障时,要使用盘,而不论是多大的磁盘阵列。当出现磁盘故障时,要使用奇偶校验盘的信息,数据可以用剩下的磁盘中的信息来重新奇偶校验盘的信息,数据可以用剩下的磁盘中的信息来重新构造,考虑有五个磁盘驱动器组成的阵列,若构造,考虑有五个磁盘驱动器组成的阵列,若X X0 0到到X X3 3存放数据,存放数据,X X4 4为奇偶校验盘,对于第为奇偶校验盘,对于第i i位的奇偶校验位可如下计算位的奇偶校验位可如下计算: : X X4 4(i)=X(i)=X3 3(i)X(i)X2 2(i)X(i)X1 1

540、(i)X(i)X0 0(i)(i) 假定驱动器假定驱动器X X1 1出故障,如果把出故障,如果把X X4 4(i)(i)、X X1 1(i)(i)异或加到上面异或加到上面等式的两边,得到等式的两边,得到 X X1 1(i)=X(i)=X4 4(i)X(i)X3 3(i)X(i)X2 2(i)X(i)X0 0(i)(i) 因此,在阵列中的任何一只数据盘上的任一数据子块的内因此,在阵列中的任何一只数据盘上的任一数据子块的内容,都能从阵列中剩余下来的其它磁盘的对应数据子块的内容,都能从阵列中剩余下来的其它磁盘的对应数据子块的内容来重新生成,这个原理适用于容来重新生成,这个原理适用于RAID3RAID

541、3、RAID4RAID4和和RAID5RAID5。 RAIDLevel3(BitinterleavedParity)b0b1b2b3p(b)5 5、 RAID4RAID4和和RAID5 RAID5 RAID4 RAID4和和RAID5RAID5使用了独立存取技术,在一个独立使用了独立存取技术,在一个独立存取的磁盘阵列中,每个驱动器都可以独立地工作,所存取的磁盘阵列中,每个驱动器都可以独立地工作,所以,独立的以,独立的I/OI/O请求可以被并行地得到满足。因此独立请求可以被并行地得到满足。因此独立存取阵列适合于有频繁存取阵列适合于有频繁I/OI/O请求的应用。请求的应用。 RAIDLevel4(

542、BlocklevelParity)P(0-3)block12block8block4block0block13block9block5block1block14block10block6block2block15block11block7block3p(12-15)p(8-11)p(4-7)p(0-3) 每当执行一个小数据量写操作时,阵列管理软件不旦要每当执行一个小数据量写操作时,阵列管理软件不旦要修改数据,而且也要修改对应的奇偶校验位。考虑有五个驱修改数据,而且也要修改对应的奇偶校验位。考虑有五个驱动器组成的一个阵列,动器组成的一个阵列,X X0 0到到X X3 3存储数据,存储数据,X X

543、4 4是奇偶校验磁盘。是奇偶校验磁盘。假如执行一个仅仅涉及磁盘假如执行一个仅仅涉及磁盘X X1 1上数据的写操作。开始的时候,上数据的写操作。开始的时候,对每一个二进位对每一个二进位i i,有下列关系式有下列关系式: : X X4 4(i)=X(i)=X3 3(i)X(i)X2 2(i)X(i)X1 1(i)X(i)X0 0(i)(i) 在数据修改之后,对于改变了的二进位用在数据修改之后,对于改变了的二进位用符号来指出,符号来指出,得到得到: : X X4 4(i)=X(i)=X3 3(i)X(i)X2 2(i)X(i)X1 1(i)X(i)X0 0(i)(i) =X =X3 3(i)X(i)

544、X2 2(i)X(i)X1 1(i)X(i)X0 0(i)X(i)X1 1(i)X(i)X1 1(i)(i) =X =X4 4(i)X(i)X1 1(i)X(i)X1 1(i)(i) 为了计算新的奇偶校验位,阵列管理软件必须读出老的数为了计算新的奇偶校验位,阵列管理软件必须读出老的数据子块和老的奇偶校验码,因此每个数据写操作包含了两次据子块和老的奇偶校验码,因此每个数据写操作包含了两次读操作和两次写操作。读操作和两次写操作。6 6、 RAID5RAID5 RAID5 RAID5的组织形式与的组织形式与RAID4RAID4类似,差别仅奇偶校验类似,差别仅奇偶校验码是分布横跨存放在所有的磁盘上,典

545、型的存放方法为码是分布横跨存放在所有的磁盘上,典型的存放方法为轮转法,设有轮转法,设有n n个磁盘的一个阵列,则开头的个磁盘的一个阵列,则开头的n n个奇偶校个奇偶校验码螺旋式地位于验码螺旋式地位于n n个磁盘上个磁盘上( (即每个盘上有一个奇偶校即每个盘上有一个奇偶校验码验码) ),接着按这个模式再次重复。采用螺旋式把奇偶,接着按这个模式再次重复。采用螺旋式把奇偶校验码分布横跨存放在所有的磁盘上,能避免校验码分布横跨存放在所有的磁盘上,能避免RAID4RAID4中中发生的奇偶校验盘瓶颈口问题。发生的奇偶校验盘瓶颈口问题。RAIDLevel5(BlocklevelDistributedpari

546、ty)P(0-3)block12block8block4block0p(12-15)block9block5block1block13p(8-11)block6block2block14block10p(4-7)block3block15block11block7p(0-3)7 7、 RAID6RAID6、RAIDlevel7 增强型增强型RAIDRAID。RAID6RAID6中设置了专用快速的异步校验磁盘,中设置了专用快速的异步校验磁盘,具有独立的数据访问通路,比低级具有独立的数据访问通路,比低级RAIDRAID性能更好,但价格昂性能更好,但价格昂贵。贵。RAID7RAID7对对RAID6R

547、AID6作了改进,该阵列中的所有磁盘都有较高作了改进,该阵列中的所有磁盘都有较高传输速率,性能优异,但价格也很高。传输速率,性能优异,但价格也很高。9.4.4 9.4.4 后备系统后备系统一、一、后备系统的设备类型后备系统的设备类型1 1磁带机(库)磁带机(库)2 2硬盘:活动硬盘、磁盘阵列硬盘:活动硬盘、磁盘阵列3 3光盘:塔光盘:塔/ /库库二、备份方法二、备份方法完全转储完全转储增量转储增量转储三、备份软件三、备份软件ARCSERVERARCSERVERVERITASVERITAS四、存储系统四、存储系统 向虚拟化方向发展,由于历史原因,许多企业采购了不同向虚拟化方向发展,由于历史原因,

548、许多企业采购了不同供应商的存储系统和服务器,而这些系统需要包含在同一存储供应商的存储系统和服务器,而这些系统需要包含在同一存储区域网络(区域网络(SANSAN)中,而且必须通过一个统一的界面和管理模中,而且必须通过一个统一的界面和管理模式来管理。式来管理。目的:将存储管理的级别从普通的手工操作水平提升到自动化目的:将存储管理的级别从普通的手工操作水平提升到自动化与智能化的管理水平,减轻应用程序服务器对本地物理存储设与智能化的管理水平,减轻应用程序服务器对本地物理存储设备的管理工作,将各种异构的存储系统整合成为能够作为单一备的管理工作,将各种异构的存储系统整合成为能够作为单一资源易于管理的单一存

549、储池。资源易于管理的单一存储池。产品:产品:IBM:1IBMTivoliStorageManager2Magstar虚拟磁带服务器虚拟磁带服务器HP:HPStorageAppssv3000HPSANlinkHPSANmasterStorageTek:SVA9500,SN6000,ASM,VSMVeritas:VeritasVolumeManager,V3SANXlotech:REDI软件族软件族新基:新基:Z-Box,SAN-Genie9.5 9.5 文件性能的改善文件性能的改善 提高文件访问速度,可从硬件和软件两个角度来改善。在提高文件访问速度,可从硬件和软件两个角度来改善。在操作系统(软件

550、)方面,主要通过两种角度:减少访盘次数操作系统(软件)方面,主要通过两种角度:减少访盘次数和减少访盘时间。和减少访盘时间。(1 1)改进文件目录结构及检索方法)改进文件目录结构及检索方法(2 2)选择好的文件存储结构)选择好的文件存储结构(3 3)提高磁盘)提高磁盘I/OI/O速度速度(4 4)交错因子进行磁盘格式化)交错因子进行磁盘格式化1 1减少访盘次数:避免重复访盘和增大访盘单位长度减少访盘次数:避免重复访盘和增大访盘单位长度()()内存卷结构内存卷结构()()目录缓冲目录缓冲()()文件的打开与关闭文件的打开与关闭()()文件共享文件共享()()缓冲技术缓冲技术2 2减少访盘时间:磁头

551、调度减少访盘时间:磁头调度9.5.1 9.5.1 磁盘高速缓存磁盘高速缓存一、一、形式:固定大小和动态控制形式:固定大小和动态控制二、二、数据交付:尽量从缓存中提取数据,又分直接交付和指数据交付:尽量从缓存中提取数据,又分直接交付和指针交付针交付三、三、置换算法置换算法四、四、周期性写回磁盘周期性写回磁盘9.5.2 9.5.2 优化数据的分布优化数据的分布一、一、优化物理块的分布优化物理块的分布二、二、优化索引节点的分布:中间位置优化索引节点的分布:中间位置9.5.3 9.5.3 提高磁盘速度的其它方法提高磁盘速度的其它方法一、一、提前读提前读二、二、延迟写延迟写三、三、虚拟盘虚拟盘9.6 9

552、.6 数据一致性控制数据一致性控制9.6.1 9.6.1 事务事务 实际上是一种原子操作,失败要实际上是一种原子操作,失败要rollbackrollback。要设立事务要设立事务记录(记录(LOGLOG):):事务名、数据项名、旧值、新值。恢复算法:事务名、数据项名、旧值、新值。恢复算法:undoundo和和redoredo。9.6.2 9.6.2 检查点检查点记录一个事物的起点。记录一个事物的起点。9.6.3 9.6.3 并发控制并发控制事务具有顺序性,互斥。事务具有顺序性,互斥。1 1互斥锁互斥锁2 2共享锁共享锁9.6.4 9.6.4 若干个具体的数据一致性问题若干个具体的数据一致性问题

553、一、一、重复文件的一致性重复文件的一致性二、二、盘块号一致性检查盘块号一致性检查三、三、链接数一致性检查链接数一致性检查第第10章章操作系统接口操作系统接口本章中,讨论本章中,讨论OS提供的用户接口,即系统命令接口和提供的用户接口,即系统命令接口和系统调用接口。系统调用接口。系统命令接口系统命令接口可完成用户作业的组织和控制可完成用户作业的组织和控制,分为作分为作业控制语言,联机命令行和图形用户接口。业控制语言,联机命令行和图形用户接口。系统调用系统调用提供用户编程时向操作系统提请服务。提供用户编程时向操作系统提请服务。作为操作系统的设计者要仔细考虑能提供些什么作为操作系统的设计者要仔细考虑能

554、提供些什么样的操作命令,用户使用是否方便,是否容易记住等因素。样的操作命令,用户使用是否方便,是否容易记住等因素。接口就是一个门面,内部是如何构造的,是否先进对一般接口就是一个门面,内部是如何构造的,是否先进对一般用户是无法感受的,他们能直接接触到的是用户界面。所用户是无法感受的,他们能直接接触到的是用户界面。所以可以说,以可以说,接口的设计是一个门面工程。接口的设计是一个门面工程。10.1联机命令接口联机命令接口1. 1. 命令行命令行 一行可有一个或多个命令:每次一行,包含一个一行可有一个或多个命令:每次一行,包含一个或多个命令。或多个命令。 给出提示符时可输入,以回车键提交。给出提示符时

555、可输入,以回车键提交。 lsls -l (UNIX) -l (UNIX) dir dir a:(DOSa:(DOS) ) 一个命令可有命令参数:格式包括选项一个命令可有命令参数:格式包括选项/开关开关(option/switch)或参数或参数(argument)。如如formatc:/s命令分成:内部命令和外部命令命令分成:内部命令和外部命令l内部命令:对应的处理程序驻留在内存、主要是使用频内部命令:对应的处理程序驻留在内存、主要是使用频繁或处理简单的命令;繁或处理简单的命令;l如:如:DOS的的copy命令。命令。l外部命令:平时驻留在外存(磁盘上)运行时调入后执外部命令:平时驻留在外存(磁

556、盘上)运行时调入后执行。行。l如:如:DOS的的xcopy命令。命令。l利用参数替换可简化命令输入:通配符利用参数替换可简化命令输入:通配符(?,*)用于匹配用于匹配一组文件名一组文件名如如:dira:a?b.exedira*.*2. 2. 环境变量环境变量 环境变量环境变量( (environment variable)environment variable)应用进程地址空应用进程地址空间中的特殊变量区。间中的特殊变量区。 环境变量是传递参数的另一种途径。环境变量是传递参数的另一种途径。cdcd $HOME; (HOME $HOME; (HOME为一个环境变量为一个环境变量) ) 环境变量

557、可按名字访问,可以新建、赋值或撤销。环境变量可按名字访问,可以新建、赋值或撤销。有效范围:有效范围:只对本进程里的环境变量能够直接进行操作。此只对本进程里的环境变量能够直接进行操作。此外,在执行新进程时(外,在执行新进程时(UNIX中是中是exec()调用),可以给出环调用),可以给出环境变量的初始值,通常就是直接复制当前进程的所有环境变境变量的初始值,通常就是直接复制当前进程的所有环境变量继承。量继承。环境变量也可以直接从键盘输入,如命令提示符的式样,环境变量也可以直接从键盘输入,如命令提示符的式样,外部命令的查找目录路径等。外部命令的查找目录路径等。如:如:PATH=/bin;/usr/b

558、in;/usr/sbinHOME=/home/thisuser通过系统调用接口也可使用系统命令。通过系统调用接口也可使用系统命令。C语言里的语言里的system()函数:调用函数:调用shell来完成命令来完成命令如如UNIX系统:系统:system(“cp-rdoc/tmp”)10.1.1命令格式命令格式10.1.2联机命令的类型联机命令的类型(1 1)系统访问类:如登录)系统访问类:如登录(2 2)磁盘操作类:如格式化、磁盘复制)磁盘操作类:如格式化、磁盘复制(3 3)文件操作类:如拷贝文件)文件操作类:如拷贝文件(4 4)目录操作类:如创建目录)目录操作类:如创建目录(5 5)其它命令:

559、修改时间等等)其它命令:修改时间等等10.1.3终端处理程序终端处理程序(1)接受用户从终端上键入的字符)接受用户从终端上键入的字符qq面向字符的方式面向字符的方式qq面向行的方式面向行的方式(2)字符缓冲)字符缓冲qq公用缓冲池公用缓冲池qq专用缓冲池专用缓冲池回送显示:硬件和软件方法回送显示:硬件和软件方法(3)屏幕编辑:移动光标、删除、复制、插入、滚屏)屏幕编辑:移动光标、删除、复制、插入、滚屏(4)特殊字符的处理:转义字符、中断字符)特殊字符的处理:转义字符、中断字符10.1.4命令解释程序(命令解释程序(Shell)一、一、作用作用二、二、组成组成(1)常驻部分常驻部分(2)初始化部

560、分初始化部分(3)暂存部分暂存部分三、三、工作流程工作流程接收命令接收命令合法性检查合法性检查区分内部区分内部/外部命令外部命令执行执行10.2程序接口程序接口 系统调用是操作系统提供给软件开发人员的唯一系统调用是操作系统提供给软件开发人员的唯一接口,开发人员可利用它使用系统功能。接口,开发人员可利用它使用系统功能。OSOS核心中都有核心中都有一组实现系统功能的过程(子程序),系统调用就是对一组实现系统功能的过程(子程序),系统调用就是对上述过程的调用上述过程的调用。系统调用与普通过程调用的区别:系统调用与普通过程调用的区别:(1)(1) 执行状态不同:调用和返回经历了不同的系执行状态不同:调

561、用和返回经历了不同的系统状态。通常核心和应用程序的代码分别运行在统状态。通常核心和应用程序的代码分别运行在CPUCPU的的不同的状态下(系统态不同的状态下(系统态/ /管态和用户态管态和用户态/ /目态),所用地目态),所用地址空间也不同址空间也不同核心的代码可以直接访问应用进程的核心的代码可以直接访问应用进程的地址空间,反之不然。地址空间,反之不然。l状态切换:系统调用、中断、异常状态切换:系统调用、中断、异常ltraptrap陷入,陷入,l特权指令(访问关键寄存器、停机指令)和特权指令(访问关键寄存器、停机指令)和I/OI/O敏感敏感指令(中断屏蔽、端口读写)指令(中断屏蔽、端口读写)(2

562、)(2) 进入方式不同:通过执行不同的指令来进入:进入方式不同:通过执行不同的指令来进入:利用利用intint或或traptrap指令进行系统调用;利用指令进行系统调用;利用callcall或或jmpjmp指令指令进入普通的过程调用;进入普通的过程调用;(3)(3) 与进程调度的关系不同:采用抢先式调度的与进程调度的关系不同:采用抢先式调度的系统,在系统调用返回时,要进行重新调度的检查系统,在系统调用返回时,要进行重新调度的检查是否有更高优先级的任务就绪(创建或唤醒)。是否有更高优先级的任务就绪(创建或唤醒)。10.2.2系统调用的类型系统调用的类型1.1.设备管理:设备的读写和控制;设备管理

563、:设备的读写和控制;2.2.文件管理:文件读写和文件控制;文件管理:文件读写和文件控制;3.进程控制:创建、中止、暂停等控制;进程控制:创建、中止、暂停等控制;4.4.进程通信:消息队列、共享存储区、进程通信:消息队列、共享存储区、socketsocket等通信渠道等通信渠道的建立、使用和删除;的建立、使用和删除;5.5.存储管理:内存的申请和释放;存储管理:内存的申请和释放;6.6.系统管理:设置和读取时间、读取用户和主机标识等;系统管理:设置和读取时间、读取用户和主机标识等;10.2.3系统调用的实现系统调用的实现(1)(1)设置系统调用号和参数,然后执行设置系统调用号和参数,然后执行tr

564、aptrap指令。指令。 调用号作为指令的一部分(如早期调用号作为指令的一部分(如早期UNIXUNIX),),或装入到特或装入到特定寄存器里(如:定寄存器里(如:DOSDOS的的INT 21HINT 21H,AH=AH=调用号。)调用号。) 参数装入到特定寄存器里,或以寄存器指针指向参数表参数装入到特定寄存器里,或以寄存器指针指向参数表(内存区域)。(内存区域)。(2)(2)入口的一般性处理。入口的一般性处理。 保护保护CPUCPU现场,改变现场,改变CPUCPU执行状态(处理机状态字执行状态(处理机状态字PSWPSW切切换,地址空间表切换)换,地址空间表切换),将参数取到核心空间将参数取到核

565、心空间(3)(3)查入口跳转表,跳转到相应功能的过程查入口跳转表,跳转到相应功能的过程(4)(4)恢复恢复CPUCPU现场,将执行结果装入适当位置,执行现场,将执行结果装入适当位置,执行中断返回指令中断返回指令陷入指陷入指令令系统子程序系统子程序陷入处理机构陷入处理机构. . . . .系统调用系统调用. . . . .用户程序用户程序1)保护处理机现场2)取系统用户功能号并寻找子程序入口3)恢复处理机现场并返回入口地址表A0.A1AnA A0:0:A A1:1:A Ai:i:A An:n:sub 0sub 0sub 1sub 1sub isub isub nsub n10.3 10.3 图形

566、用户接口图形用户接口 在命令行方式下,用户与操作系统的交互要求用户在命令行方式下,用户与操作系统的交互要求用户记忆命令格式。在图形用户接口方式下,用户可利用鼠记忆命令格式。在图形用户接口方式下,用户可利用鼠标对屏幕上的图标进行操作,完成与操作系统的交互,标对屏幕上的图标进行操作,完成与操作系统的交互,从而减少记忆内容,方便用户使用。它的技术基础是高从而减少记忆内容,方便用户使用。它的技术基础是高分辩显示器和鼠标。分辩显示器和鼠标。窗口系统的特点:窗口系统的特点:l利用图形元素表示功能:将各种图形元素显示在屏幕上,利用图形元素表示功能:将各种图形元素显示在屏幕上,用户可以通过操纵图形元素(如菜单

567、、图标)来执行相用户可以通过操纵图形元素(如菜单、图标)来执行相应的功能应的功能l同屏多窗口与并发进程相对应:屏幕上同时显示多个窗同屏多窗口与并发进程相对应:屏幕上同时显示多个窗口;一个进程可以对应一个或多个窗口;窗口动态创建、口;一个进程可以对应一个或多个窗口;窗口动态创建、改变、撤销改变、撤销l输入方式:鼠标指针点击(或其它定位设备)和键盘输输入方式:鼠标指针点击(或其它定位设备)和键盘输入;通常是即时交互入;通常是即时交互l一致的图形元素风格可方便用户学习和使用:如按钮、一致的图形元素风格可方便用户学习和使用:如按钮、滚动条滚动条l优点:操作直观(不必记命令行参数),可与多个进程优点:操

568、作直观(不必记命令行参数),可与多个进程交互,便于进行多媒体处理交互,便于进行多媒体处理10.3.1 10.3.1 窗口窗口窗口窗口( (window)window):屏幕上的矩形区域屏幕上的矩形区域包括:标题条包括:标题条( (title bar)title bar)、边框边框( (border)border)、窗口角窗口角( (corner)corner)、系统菜单框系统菜单框( (system menu box)system menu box)、最大化最大化/ /最小化按钮最小化按钮( (maximize/minimize)maximize/minimize)、滚动条滚动条( (scro

569、ll scroll bar)bar)(不一定都有)不一定都有)l状态:当前状态:当前/ /非当前窗口非当前窗口( (active/inactive) active/inactive) 接受输入,最大化接受输入,最大化/ /最小化最小化/ /恢复原大小恢复原大小( (restore)restore),窗口的前后遮盖窗口的前后遮盖Z Z轴,焦点轴,焦点( (focus)focus)接受接受键盘输入(而非鼠标)键盘输入(而非鼠标)l桌面桌面( (desktop)desktop)和墙纸和墙纸( (wallpaper)wallpaper)10.3.2 10.3.2 图标图标 图标图标( (icon)ic

570、on): 一个小图象一个小图象( (如如3232x32x32或或6464x64 pixel)x64 pixel),通常供鼠标指针通常供鼠标指针点击。通过不同的图标可以标识不同的对象。如:可执行点击。通过不同的图标可以标识不同的对象。如:可执行程序、最小化的窗口、文件程序、最小化的窗口、文件- -动画图标动画图标10.3.3 10.3.3 菜单菜单菜单菜单( (menu)menu):临时窗口,菜单条临时窗口,菜单条( (menu bar)menu bar)弹出式菜单弹出式菜单下拉式菜单(上下文相关菜单)下拉式菜单(上下文相关菜单)10.3.4 10.3.4 对话框对话框 对话框对话框( (dia

571、log box)dialog box): 临时窗口,显示提示信息临时窗口,显示提示信息( (message)message)或填写用户设置。或填写用户设置。10.3.5 10.3.5 鼠标指针鼠标指针 鼠标指针通常对应屏幕上的光标鼠标指针通常对应屏幕上的光标( (cursor)cursor)。光标光标在屏幕上只有一个,在不同屏幕位置(上下文)可以在屏幕上只有一个,在不同屏幕位置(上下文)可以呈现不同形状,可以独立于鼠标来直接操纵光标。鼠呈现不同形状,可以独立于鼠标来直接操纵光标。鼠标点击:左键标点击:左键/ /右键右键/ /中键中键( (left/right/middle left/right

572、/middle button)button), 单击单击( (click)/click)/双击双击( (double-click)double-click), 拖曳拖曳( (drag)/drag)/拖放拖放( (drag-and-drop)drag-and-drop);10.3.6 10.3.6 按钮按钮( (button)button) 鼠标点击或按回车键鼠标点击或按回车键/ /空格键时执行相应功能,如空格键时执行相应功能,如 menu menu buttonbutton;提供单项或多项选择,如提供单项或多项选择,如radiobuttonradiobutton和和checkbuttonche

573、ckbutton;当前按钮及其切换。当前按钮及其切换。10.3.7 10.3.7 窗口管理器窗口管理器形成统一的使用风格形成统一的使用风格1.处理窗口的普遍特性,如:窗口的大小、位置(窗口处理窗口的普遍特性,如:窗口的大小、位置(窗口的标题条、边框、控制菜单框)窗口中由应用程的标题条、边框、控制菜单框)窗口中由应用程序管理的部分称为序管理的部分称为”客户区客户区( (client area)”client area)”2.2.协调各窗口间的相互关系,如:窗口之间的前后遮盖协调各窗口间的相互关系,如:窗口之间的前后遮盖关系关系第第11章章UNIX进程控制子系统进程控制子系统11.1UNIX系统概

574、述系统概述伯克利的伯克利的UNIX加州大学的伯克利分校在美国国防高级研究规划局的资助加州大学的伯克利分校在美国国防高级研究规划局的资助下下,为为PDP11设计并发布了一个改进的版本。取名为设计并发布了一个改进的版本。取名为1BSD(FirstBerkeleysoftwareDistribution),很快有了很快有了2BSD。定型的是定型的是4BSD(4.1BSD4.2BSD,4.3BSD和和4.4BSD)UNIX的标准化的标准化80年代后期两个互不相同、互不兼容的年代后期两个互不相同、互不兼容的UNIX版本版本4.3BSD和和SystemVRelease3都在广泛使用,另外,每个都在广泛使用

575、,另外,每个UNIX提供商提供商事实上又在原有的事实上又在原有的UNIX系统的基础上加入了自己的非标准东系统的基础上加入了自己的非标准东西。西。目前这些系统还都朝着各自的方向发展着,混乱依然存在。目前这些系统还都朝着各自的方向发展着,混乱依然存在。促使促使UNIXUNIX系统成功的因素:系统成功的因素: 首先,首先,由于由于UNIXUNIX是用是用C C语言编写,因此它是可移植的,语言编写,因此它是可移植的,UNIX UNIX 是世界上唯一能在笔记本计算机、是世界上唯一能在笔记本计算机、PCPC机、工作站直至巨型机上机、工作站直至巨型机上运行的操作系统;运行的操作系统; 第二,第二,系统源代码

576、非常有效,系统容易适应特殊的需求;系统源代码非常有效,系统容易适应特殊的需求; 最后,最后,也是最重要的一点,它是一个良好的、通用的、多用也是最重要的一点,它是一个良好的、通用的、多用户、多任务、分时操作系统。户、多任务、分时操作系统。11.1.2UNIX系统的特性和特点系统的特性和特点一、一、特性特性1开放性开放性2多用户多任务多用户多任务3功能强大、性能稳定、实现高效功能强大、性能稳定、实现高效4提供丰富的网络功能提供丰富的网络功能二、二、特点特点(1)(1) 字符用户界面和图形用户界面字符用户界面和图形用户界面GUI(X GUI(X Window)Window)。(2)(2) 抢先式多任

577、务,多线程。支持动态链接。抢先式多任务,多线程。支持动态链接。支持对称式多处理。支持对称式多处理。(3)(3) 虚拟存储:(段)页式,有存储保护。虚拟存储:(段)页式,有存储保护。(4)(4) 文件系统:多级目录,文件卷可以在子目文件系统:多级目录,文件卷可以在子目录下动态装卸。无文件属性,可有别名。录下动态装卸。无文件属性,可有别名。(5)(5) 采用设备文件的形式(读写,参数控制)。采用设备文件的形式(读写,参数控制)。设备驱动程序修改后需要重新编译连接生成内核。设备驱动程序修改后需要重新编译连接生成内核。(6)(6) 支持多种硬件平台。支持多种硬件平台。(7)(7) 易移植:主要代码用易

578、移植:主要代码用C C语言写成;语言写成;(8)(8) 变种很多,很难标准化。变种很多,很难标准化。11.1.3UNIX系统的核心结构系统的核心结构硬件硬件层硬件控制设备驱动程序缓冲区管理文件子系统系统调用接口函数库内核层用户程序进程控制子系统进程通信进程调度存储管理用户层字符设备块设备用户标准实用程序(shell、编译器、编辑器)标准库(打开、关闭、读、写、创建等)UNIX操作系统(进程管理、存储器管理、文件系统、I/O等)硬件(CPU、内存、硬盘、终端等)用户接口用户接口库接口库接口系统调系统调用接口用接口核心态核心态用户态用户态一、一、进程控制子系统进程控制子系统1.进程控制:创建等。进

579、程控制:创建等。2进程通信:同步、互斥、通信等进程通信:同步、互斥、通信等3存储区管理:段页式存储管理方式,存储区管理:段页式存储管理方式,UNIX中,将中,将“段段”称为称为“区区”(Region)。)。4进程调度进程调度二、二、文件子系统文件子系统1文件管理:存储空间管理、文件操作管理等文件管理:存储空间管理、文件操作管理等2高速缓冲机制高速缓冲机制3.设备驱动程序设备驱动程序11.2进程的描述进程的描述UNIXUNIX中的进程,由中的进程,由PCBPCB、程序区(程序区(texttext区)、数据区、堆栈区)、数据区、堆栈区(用户、系统)四部分组成。区(用户、系统)四部分组成。 进程的管

580、理信息存放在进程的管理信息存放在PCBPCB中。中。UNIXUNIX将一个将一个PCBPCB分为分为procproc和和useruser结构两部分(结构两部分(U U区)。区)。一、一、procproc结构结构 procproc结构存放即使进程不在运行态时,核心也需要的结构存放即使进程不在运行态时,核心也需要的信息,如进程号,进程的优先级等等。信息,如进程号,进程的优先级等等。procproc结构常驻内存结构常驻内存核心数据区中,集中存放,称为核心数据区中,集中存放,称为procproc数组,数组的大小就数组,数组的大小就是一个是一个UNIXUNIX系统允许的最大进程数。系统允许的最大进程数。

581、二、二、useruser结构结构 useruser结构存放当进程不运行态时,通常不关心的信息。结构存放当进程不运行态时,通常不关心的信息。useruser结构存放在相应的进程的数据区中同进程一同换进换结构存放在相应的进程的数据区中同进程一同换进换出。出。三、三、text区表区表为了共享代码(正文)区,系统设置了一个为了共享代码(正文)区,系统设置了一个text数组,所数组,所有在内存的正文区在表中都有登记,主要内容有:有在内存的正文区在表中都有登记,主要内容有:正文段在主存地址正文段在主存地址段的大小段的大小使用此段的进程数使用此段的进程数四、表格之间的关系四、表格之间的关系proc数组数组u

582、ser系统栈系统栈数据区数据区text区区用户栈x_daddr:若进程换出,若进程换出,此部分存磁此部分存磁盘块号盘块号ppda(进程数据区进程数据区,大小是固定的)大小是固定的)p_addrx_caddrx_daddrp_textp一个进程的一个进程的proctext表表11.2.2进程状态及转换进程状态及转换用户态用户态运行运行被被剥夺剥夺内存中内存中就绪就绪创建创建fork()就绪且就绪且换出换出睡眠且睡眠且换出换出内存中内存中睡眠睡眠核心态核心态运行运行僵死僵死内存不足内存不足换换入入换换出出换换出出唤醒唤醒唤醒唤醒内存满足内存满足返回用户态返回用户态返回返回系统调用系统调用中断中断调

583、度调度睡眠睡眠完成完成剥夺剥夺11.2.3进程映像进程映像进程上下文(进程上下文(context):指进程的用户地址空间内容、寄存器指进程的用户地址空间内容、寄存器内容及与进程相关的核心数据结构;包括三部分内容及与进程相关的核心数据结构;包括三部分“上下文上下文”:用户级、寄存器级、系统级用户级、寄存器级、系统级一、用户级一、用户级正文段即代码正文段即代码(text):只读;数据段只读;数据段(data);栈段栈段(userstack);用户态执行时的过程调用;共享存储区用户态执行时的过程调用;共享存储区(sharedmemory)二、寄存器级二、寄存器级程序计数器、处理机状态字、栈指针和通用

584、寄存器。程序计数器、处理机状态字、栈指针和通用寄存器。三、系统级三、系统级proc结构:总在内存,内容包括阻塞原因等;结构:总在内存,内容包括阻塞原因等;user结构:可以调出到外存,进程处于执行状态时才用得结构:可以调出到外存,进程处于执行状态时才用得着,各种资源表格;着,各种资源表格;进程区表:从虚拟地址到物理地址的映射;进程区表:从虚拟地址到物理地址的映射;核心栈:核心态执行时的过程调用的栈结构。核心栈:核心态执行时的过程调用的栈结构。进程被剥夺进程被剥夺CPU后为了再次运行必须保留的信息后为了再次运行必须保留的信息11.3进程的控制与调度进程的控制与调度11.3.1进程控制进程控制(1

585、)fork()fork创建一个新进程(子进程),创建一个新进程(子进程),fork()是是UNIX中建子中建子进程的唯一方法。子进程继承了父进程的所有环境,甚至开进程的唯一方法。子进程继承了父进程的所有环境,甚至开始执行的执行位置始执行的执行位置(子进程不从(子进程不从main()开始执行,而是从开始执行,而是从fork()的后继语句处执行)的后继语句处执行)(2)wait()wait(变量地址),等待子进程结束,并将系统结束码放在变量地址),等待子进程结束,并将系统结束码放在给定的单元中,若为空则不保存结束状态。给定的单元中,若为空则不保存结束状态。(3 3)exec() exec() 改变

586、原有进程的代码改变原有进程的代码 用一个新代码覆盖原有代码。它的参数包括新代码对应的用一个新代码覆盖原有代码。它的参数包括新代码对应的文件和命令行参数。成功调用时,不再返回;否则,返回出错文件和命令行参数。成功调用时,不再返回;否则,返回出错原因原因。( (execexec有多种格式)有多种格式)(4 4)exit() exit() 实现进程的自我终止实现进程的自我终止 向父进程给出一个退出码(向父进程给出一个退出码(8 8位的整数)。位的整数)。 子进程从父进程继承了进程组子进程从父进程继承了进程组IDID和终端组和终端组IDID(控制终端),控制终端),因此子进程对发给该进程组或终端组的信

587、号敏感。终端关闭时,因此子进程对发给该进程组或终端组的信号敏感。终端关闭时,以该终端为控制终端的所有进程都收到以该终端为控制终端的所有进程都收到SIGHUPSIGHUP信号。信号。 子进程终止时,向父进程发送子进程终止时,向父进程发送SIGCHLDSIGCHLD信号,父进程截获此信信号,父进程截获此信号并通过号并通过wait3()wait3()系统调用来释放子进程系统调用来释放子进程PCBPCB。(5 5) sleepsleep()()暂停一段时间(阻塞)暂停一段时间(阻塞)(6 6) pausepause()()暂停并等待信号(阻塞)暂停并等待信号(阻塞)(7 7) nice() nice(

588、) 改变进程优先数改变进程优先数(8 8)getpidgetpid()()或取进程标识符或取进程标识符(9 9)ptraceptrace()()调试调试11.3.2进程调度进程调度UNIX未设置作业调度,进程调度采用基于时间片的多级反馈未设置作业调度,进程调度采用基于时间片的多级反馈队列轮转方式。队列轮转方式。1调度时机调度时机调度由始终在核心态执行的调度由始终在核心态执行的0号进程完成(它是在系统启动号进程完成(它是在系统启动时由操作系统建立,也是唯一的不用时由操作系统建立,也是唯一的不用fork()生成的进程)。生成的进程)。时机:时机:进程由核心态转入用户态时:进程由核心态转入用户态时:

589、在每次执行核心代码之后返在每次执行核心代码之后返回用户态之前,检查各就绪进程的优先级并进行调度。回用户态之前,检查各就绪进程的优先级并进行调度。进程主动放弃处理机时:进程主动放弃处理机时:进程申请系统资源而未得到满足进程申请系统资源而未得到满足(如(如read),),或进行进程间同步而暂停(如或进行进程间同步而暂停(如wait或或pause),),或或进程退出(如进程退出(如exit),),此时运行进程进入阻塞队列或此时运行进程进入阻塞队列或exit状态。状态。2进程优先级的分类进程优先级的分类核心优先级和用户优先级。核心优先级和用户优先级。用户优先级用户优先级用户态进程的优先级是基于执行时间

590、的动态优先级,进程用户态进程的优先级是基于执行时间的动态优先级,进程优先级可为优先级可为0127之间的任一整数。优先数越大,优先级越低。之间的任一整数。优先数越大,优先级越低。049之间的优先级为系统内核保留,用户态下的进程优先级为之间的优先级为系统内核保留,用户态下的进程优先级为50127之间。在之间。在UNIXSystemV中:中:进程优先数:进程优先数: p_prip_pri = P_CPU / 2 + PUSER + = P_CPU / 2 + PUSER + p_nicep_nice + NZERO + NZERO 系统设置部分:系统设置部分:PUSERPUSER和和NZERONZE

591、RO是基本用户优先数的阈值,分是基本用户优先数的阈值,分别为别为2525和和2020用户设置部分:用户设置部分:p_nicep_nice是用户可以通过系统调用设置的一个是用户可以通过系统调用设置的一个优先级偏移值。默认为优先级偏移值。默认为2020。超级用户可以设置其在。超级用户可以设置其在0 0到到3939之间,之间,而普通用户只能增大该值(即降低优先级)。而普通用户只能增大该值(即降低优先级)。CPUCPU使用时间部分:使用时间部分:P_CPUP_CPU表示该进程从最近一次表示该进程从最近一次CPUCPU使用到现使用到现在的时间。每次时钟中断则该值加在的时间。每次时钟中断则该值加1 1(最

592、多可达(最多可达8080)。如果时钟)。如果时钟中断的周期为中断的周期为16.616.6msms,则则1 1秒钟后该值将增加秒钟后该值将增加6060。新创建进程的。新创建进程的P_CPUP_CPU值为值为0 0,因而具有较高的优先级。,因而具有较高的优先级。核心优先级核心优先级 内核把进程阻塞事件与一个睡眠优先级(内核把进程阻塞事件与一个睡眠优先级(0 0到来到来4949)联系起)联系起来;当进程从阻塞中醒来时,可及时进行处理。来;当进程从阻塞中醒来时,可及时进行处理。 核心优先级分为可中断和不可中断两类优先级。当一个软中核心优先级分为可中断和不可中断两类优先级。当一个软中断信号到达时,若进程

593、正在可中断优先级上阻塞,则进程立即被断信号到达时,若进程正在可中断优先级上阻塞,则进程立即被唤醒;若正在不可中断优先级上,则继续阻塞。其中:唤醒;若正在不可中断优先级上,则继续阻塞。其中: 不可中断优先级:不可中断优先级:对换,等待磁盘对换,等待磁盘I/O,等待缓冲区,等待等待缓冲区,等待文件索引结点关键操作文件索引结点关键操作可中断优先级:可中断优先级:等待等待tty(虚终端)虚终端)I/O,等待子进程退出等待子进程退出P403图图13-711.3.3进程切换进程切换一、中断时现场的保存与恢复一、中断时现场的保存与恢复二、进程调度时运行进程现场的保存与被调度到的进程现场二、进程调度时运行进程

594、现场的保存与被调度到的进程现场的恢复的恢复p40411.4进程的同步与通信进程的同步与通信内核:内核:sleep(),wakeup()用户级:用户级:早期:信号和管道机制,后又增加了消息机制、共享内早期:信号和管道机制,后又增加了消息机制、共享内存和信号量。存和信号量。13.4.1信号(信号(signals)一、信号的基本概念一、信号的基本概念信号相当于给进程的信号相当于给进程的“软件软件”中断;进程可发送信号,指中断;进程可发送信号,指定信号处理例程;它是单向和异步的。进程对信号的响应与定信号处理例程;它是单向和异步的。进程对信号的响应与处理,与中断类似。处理,与中断类似。信号是信号是1-1

595、9种的某个整数,代表同一用户的进程之间传送事种的某个整数,代表同一用户的进程之间传送事先约定的信息类型,用于通知某进程发生了某异常事件先约定的信息类型,用于通知某进程发生了某异常事件。中断与信号的类似之处中断与信号的类似之处(1)异步性;异步性;(2)暂定当前的程序的执行,转去执行相应的处理程暂定当前的程序的执行,转去执行相应的处理程序,并结束后返回;序,并结束后返回;(3)可屏蔽。可屏蔽。中断与信号之间的差异中断与信号之间的差异(1)中断有优先级而信号没有;中断有优先级而信号没有;(2)中断处理程序运行在核心态而信号处理程序运行在用中断处理程序运行在核心态而信号处理程序运行在用户态;户态;(

596、3)中断响应是及时的,信号的响应一般有时间延迟。中断响应是及时的,信号的响应一般有时间延迟。二、信号机制的功能二、信号机制的功能(1)发送信号发送信号(2)预置对信号的处理方式)预置对信号的处理方式(3)接受信号并按事先的约定完成对事件的处理。)接受信号并按事先的约定完成对事件的处理。三、信号的发送三、信号的发送一个进程向另一个进程或进程组(或自己)发送:发送者一个进程向另一个进程或进程组(或自己)发送:发送者必须具有接收者同样的有效用户必须具有接收者同样的有效用户id(同组用户)同组用户),或者发送者,或者发送者是超级用户。发送信号是将接受进程是超级用户。发送信号是将接受进程PCB中信号域的

597、相应位中信号域的相应位置为置为1。如果接收进程正在一个可被中断的优先级上睡眠,核心则如果接收进程正在一个可被中断的优先级上睡眠,核心则将它唤醒。将它唤醒。四、预置对信号的处理方式四、预置对信号的处理方式系统调用:系统调用:singal(sig,funcsingal(sig,func) )(1)func=SIG_IGN, (1)func=SIG_IGN, 进程对信号不予理睬,即屏蔽该信号进程对信号不予理睬,即屏蔽该信号(2)(2)funcfunc=SIG_DFL=SIG_DFL为缺省值,进程在接到信号后应终止自为缺省值,进程在接到信号后应终止自己己( (SIGCLDSIGCLD和和SIGPWRS

598、IGPWR除外)除外),并留映象文件,并留映象文件( (core)core)。(3)func=(3)func=非(非(1 1)、非()、非(2 2)时,转去处理事件,)时,转去处理事件,funcfunc的值的值即为信号处理程序的指针。即为信号处理程序的指针。五、信号类型五、信号类型值信号名说明1SIGHUP挂断控制终端2SIGINT控制终端发出DELETE或BREAK中断信号3SIGQUIT控制终端发出QUIT信号4SIGILL错误指令5SIGTRAP程序追踪之后中断点6SIGIOT输入/输出之中断点7SIGEMT硬件模拟器的中断点8SIGFPE浮点运算错误9SIGKILL传送给一个进程或一组

599、进程,并停止该进程的执行10SIGBUS总线错误11SIGSEGV 分段冲突12SIGSYS系统调用参数错13SIGPIPE只对管道写入而未读数据14SIGALRM 闹钟中断15SIGTERM 软件结束中断16SIGUSR1用户定义信号117SIGUSR2用户定义信号218SIGCLD子进程死亡19SIGPWR电源故障六、对信号的处理六、对信号的处理检查信号是否到来的时机(检查信号是否到来的时机(“捕获捕获”该信号的时机):该信号的时机):进入或退出一个低优先级的睡眠状态进入或退出一个低优先级的睡眠状态进程从核心态返回到用户态进程从核心态返回到用户态时钟中断前为用户态,则每隔一秒,检测当前进程

600、是否时钟中断前为用户态,则每隔一秒,检测当前进程是否收到信号收到信号处理方式:处理方式:忽略:忽略:func=1时时(SIG_IGN)立即退出:立即退出:func=0时(时(SIG_DFL)执行用户设值的软中断程序执行用户设值的软中断程序例子:当终端按下例子:当终端按下DELETEDELETE键后输出键后输出“Good Bye”Good Bye”后终止后终止#include#includevoidcatch_in()printf(“GoodByen”);exit(0);voidmain().signal(SIGINT,catch_in);在此语句后,一旦在终端在此语句后,一旦在终端键盘按下键盘

601、按下DELETE键,程键,程序输出信息后终止序输出信息后终止11.4.2管道管道(pipe)管道是一条在进程间以字节流方式传送的通信通道,能管道是一条在进程间以字节流方式传送的通信通道,能连接一个读进程和一个写进程,是操作系统按以生产者连接一个读进程和一个写进程,是操作系统按以生产者-消消费者方式进行管理与通信的一个共享文件。它由费者方式进行管理与通信的一个共享文件。它由OS核心建核心建立的缓冲区(通常几十立的缓冲区(通常几十KB)来实现,是单向的;常用于命来实现,是单向的;常用于命令行所指定的输入输出重定向和管道命令。在使用管道前要令行所指定的输入输出重定向和管道命令。在使用管道前要建立相应

602、的管道,然后才可使用。建立相应的管道,然后才可使用。一、管道的类型一、管道的类型1无名管道(无名管道(UnnamedPipes)通过调用通过调用pipe()建立,用文件描述符来使用,只有调用建立,用文件描述符来使用,只有调用pipe()的进程及其子孙进程才可识别此文件描述符,从而才可利用的进程及其子孙进程才可识别此文件描述符,从而才可利用该管道(文件)进行通信,该管道(文件)进行通信,即只适用于父子进程之间或父进程即只适用于父子进程之间或父进程安排的各个子进程之间的通信。安排的各个子进程之间的通信。当进程不再使用时当进程不再使用时,核心收回,核心收回其索引节点。其索引节点。2有名管道(有名管道

603、(NamedPipes)有名管道是利用有名管道是利用mknod()系统调用建立的,可在文件系统中系统调用建立的,可在文件系统中长期存在、具有路径名的文件,系统中所有进程都知道它的存长期存在、具有路径名的文件,系统中所有进程都知道它的存在,可以利用它进行通信。在,可以利用它进行通信。二、二、pipepipe文件的建立文件的建立 通过通过pipepipe系统调用创建管道,得到两个文件描述符,分别用系统调用创建管道,得到两个文件描述符,分别用于写和读。于写和读。intint pipe(intpipe(int fildes2); fildes2); 文件描述符文件描述符fildes0fildes0为读

604、端,为读端,fildes1fildes1为写端;为写端;通过系统调用通过系统调用writewrite和和readread进行管道的写和读;进行管道的写和读;进程间双向通信,通常需要两个管道;进程间双向通信,通常需要两个管道;例子:创建一个管道,父进程往里写数据,子进程读数据例子:创建一个管道,父进程往里写数据,子进程读数据#include#includevoidmain()intfifo2;charline81;char*message=“Thismessagecomesfromthechild”;if(pipe(fifo)=-1printf(“不能建立管道不能建立管道n”);exit(1);

605、if(fork()=0)write(fifo1,message,strlen(message)+1);elseread(fifo0,line,81);printf(“Message=%sn”,line);pipepipe文件的建立过程文件的建立过程1 1 分配磁盘和内存索引节点分配磁盘和内存索引节点2 2 为读进程分配文件表项为读进程分配文件表项3 3 为写进程分配文件表项为写进程分配文件表项4 4 分配文件描述符分配文件描述符用户文件描述符表用户文件描述符表文件表文件表内存索引节点内存索引节点外存外存pipepipe文件文件fpfpf-nodef-nodeIPEIPEPEPEf_offset

606、f_offsetf_nodef_nodeFREAD|FPIPEFREAD|FPIPEf_offsetf_offsetf_nodef_nodeFWRITE|FPIPEFWRITE|FPIPE第第i个个索引结点索引结点二、对无名管道的读写二、对无名管道的读写1 1 对对pipepipe文件大小的限制:只使用直接地址,即最大文件大小的限制:只使用直接地址,即最大4040KBKB。2 2 进程互斥方法:索引节点设置进程互斥方法:索引节点设置“锁锁”。3 3 进程写管道:若有足够的空间,则写入数据、修改指针、进程写管道:若有足够的空间,则写入数据、修改指针、唤醒读进程;若无足够空间,则睡眠。唤醒读进程;

607、若无足够空间,则睡眠。4 4 进程读管道:若有数据则读、修改指针、唤醒写进程;若进程读管道:若有数据则读、修改指针、唤醒写进程;若无数据或数据不足则睡眠。无数据或数据不足则睡眠。11.4.3消息消息(message)与窗口系统中的与窗口系统中的“消息消息”不同。通常是不定长数据块。消不同。通常是不定长数据块。消息的发送不需要接收方准备好,随时可发送。息的发送不需要接收方准备好,随时可发送。一、消息机制的数据结构一、消息机制的数据结构消息队列头表消息首部消息首部消息首部消息首部索引表项.索引表项.消息缓冲区消息缓冲区消息缓冲区消息首部消息首部(消息实消息实例例)记录消息类型、记录消息类型、大小、

608、消息数据区大小、消息数据区的指针、消息队列的指针、消息队列的链接指针等。的链接指针等。11.4.3消息消息(message)与窗口系统中的与窗口系统中的“消息消息”不同。通常是不定长数据块。消不同。通常是不定长数据块。消息的发送不需要接收方准备好,随时可发送。息的发送不需要接收方准备好,随时可发送。一、消息机制的数据结构一、消息机制的数据结构消息队列头表消息首部消息首部消息首部消息首部索引表项.索引表项.消息缓冲区消息缓冲区消息缓冲区索引表。内含关键索引表。内含关键字(索引表项的名字(索引表项的名字)、访问控制信字)、访问控制信息、操作状态信息,息、操作状态信息,指针信息、数据量指针信息、数据

609、量等。等。二、二、 消息队列的建立和消息队列描述符的获取消息队列的建立和消息队列描述符的获取 关键字(关键字(keykey)由用户指定即消息队列的名字。由用户指定即消息队列的名字。建立:建立:intint msgget(key_tmsgget(key_t key, key, intint msgflgmsgflg) ) , msgflgmsgflg 访问方式,如:访问方式,如:IPC_CREATEIPC_CREATE成功返回:系统分配的消息号成功返回:系统分配的消息号 msgidmsgid三、三、 消息的发送消息的发送intint msgsnd(intmsgsnd(int msgidmsgid

610、, , structstruct msgbufmsgbuf * *msgpmsgp, , intint msgszmsgsz, , intint msgflgmsgflg) )structstruct msgbufmsgbuf long long mtypemtype; /*; /*消息类型消息类型*/*/char char mtextmtext;/*;/*消息的文本消息的文本*/*/ 对于对于msgsnd系统调用,核心完成的工作:系统调用,核心完成的工作:1消息队列的描述符和许可权及消息长度的检查;消息队列的描述符和许可权及消息长度的检查;2核心为消息分配消息数据区。将消息缓冲区的消息拷贝到

611、核心为消息分配消息数据区。将消息缓冲区的消息拷贝到消息数据区。消息数据区。3分配消息首部,并链入消息对列尾部,填写消息首部有关分配消息首部,并链入消息对列尾部,填写消息首部有关信息。信息。4修改消息队列头中的有关数据。修改消息队列头中的有关数据。四、消息的接收四、消息的接收intmsgrcv(intmsgid,structmsgbuf*msgp,intmsgsz,longmsgtpyintmsgflg)对于对于msgrcv系统调用,核心完成的工作:系统调用,核心完成的工作:1消息队列的描述符和许可权的检查;消息队列的描述符和许可权的检查;2根据根据msgtpy的不同分成三种情况处理:的不同分成

612、三种情况处理:msgtpy=0,核心寻找消息队列中的第一个消息,并核心寻找消息队列中的第一个消息,并将它返回给调用者将它返回给调用者msgtpy为正数时,核心返回给定消息类型的第一个为正数时,核心返回给定消息类型的第一个消息。消息。msgtpy为负数时,核心应在其类型值小于或等于为负数时,核心应在其类型值小于或等于msgtpy绝对值的所有消息中,选出其类型值最低的一个绝对值的所有消息中,选出其类型值最低的一个消息。消息。3当所返回消息的大小等于或小于用户请求时,核心便将当所返回消息的大小等于或小于用户请求时,核心便将消息正文拷贝到用户的消息缓冲区,并从消息队列中删除此消息正文拷贝到用户的消息缓

613、冲区,并从消息队列中删除此消息,然后唤醒睡眠的发送进程。但若消息长度比用户要求消息,然后唤醒睡眠的发送进程。但若消息长度比用户要求的大时,则报错返回。用户也可以不规定消息的大小,此时的大时,则报错返回。用户也可以不规定消息的大小,此时核心不理会消息的大小,而一律拷贝到用户消息缓冲区。核心不理会消息的大小,而一律拷贝到用户消息缓冲区。五、消息队列的操纵五、消息队列的操纵读取消息队列的状态并进行修改,如查询消息队列描述符、读取消息队列的状态并进行修改,如查询消息队列描述符、修改消息队列的许可权等。修改消息队列的许可权等。intmsgctl(intmsggid,intcmd,structmsggid

614、ds*buf)cmd命令:命令:(1)查询消息队列情况:如消息数、最大字节数,最查询消息队列情况:如消息数、最大字节数,最后发送消息的进程标识符、发送时间等。后发送消息的进程标识符、发送时间等。(2)设置和改变有关消息队列属性的命令,如改变用设置和改变有关消息队列属性的命令,如改变用户标识符、消息队列许可权等。户标识符、消息队列许可权等。(3)消除消息队列的标识符。消除消息队列的标识符。11.4.4共享存储区共享存储区相当于内存,可以任意读写和使用任意数据结相当于内存,可以任意读写和使用任意数据结构构,需要进程互斥和同步的辅助来确保数据一需要进程互斥和同步的辅助来确保数据一致性。致性。该机制可

615、以使若干进程共享主存的某一个区域,该机制可以使若干进程共享主存的某一个区域,且使该区域出现在多个进程的虚地址空间中。且使该区域出现在多个进程的虚地址空间中。另一方面,一个进程的虚地址空间又可连接多另一方面,一个进程的虚地址空间又可连接多个共享区,每个共享区都有自己的名字,由用个共享区,每个共享区都有自己的名字,由用户创建时予以指定。户创建时予以指定。一、共享存储区的建立及描述符的获取一、共享存储区的建立及描述符的获取intsmhget(key_tkey,intsize,intmsgflg),msgflg访问方式,访问方式,如:如:IPC_CREATE检查共享内存表(共享存储区表),若不存在(检

616、查共享内存表(共享存储区表),若不存在(key),),则创建之;若已存在则创建之;若已存在(key),则返回描述符则返回描述符shmid。二、共享存储区的连接与断开二、共享存储区的连接与断开1共享存储区的连接:共享存储区的连接:char*shmat(intshmid,char*shmaddr,intshmflg)shmflg:=0时,表示可读时,表示可读/写;写;=SHM_RDINLY时,表示只读。时,表示只读。shmaddr是由用户指定的。是由用户指定的。返回值是:返回值是:viraddr,即进程的虚地址。即进程的虚地址。2共享存储区的断开:共享存储区的断开:intshmdt(char*sh

617、maddr)三、共享存储区的操纵三、共享存储区的操纵intshmctl(intshmid,intcmd,structshmid_ds*buf)cmd命令类型:命令类型:(1)查询状态:长度、当前的连接的进程数、共享区的查询状态:长度、当前的连接的进程数、共享区的创建标识符等;创建标识符等;(2)设制或改变共享存储区的属性:许可权、最大的连设制或改变共享存储区的属性:许可权、最大的连接进程数等;接进程数等;(3)加锁加锁/解锁;解锁;(4)删除共享区的表识符。删除共享区的表识符。11.4.5信号量信号量与信号量集机制相似,对若干信号量可同时操作,对信号与信号量集机制相似,对若干信号量可同时操作,

618、对信号量加减操作时变化值可以大于量加减操作时变化值可以大于1。信号量机制的数据结构包括:信号量集合表、信号量表、信号量机制的数据结构包括:信号量集合表、信号量表、恢复表和初始化表。恢复表和初始化表。信号量信号量集合表集合表信号量表信号量表0sem01sem12sem24sem43sem30sem00sem51sem62sem71、信号量集合表、信号量集合表信号量集合的索引结构数组,它的每一个元素对信号量集合的索引结构数组,它的每一个元素对应一组信号量。包括应一组信号量。包括访问权限结构、指向第一个信号访问权限结构、指向第一个信号量的指针、信号量的数目及有关时间信息。量的指针、信号量的数目及有关

619、时间信息。信号量信号量集合表集合表信号量表信号量表0sem01sem12sem24sem43sem30sem00sem51sem62sem72、信号量结构数组、信号量结构数组每个信号量用一个结构表示,包括信号量值、最近一每个信号量用一个结构表示,包括信号量值、最近一次对它操作的进程次对它操作的进程pid、等待该信号量值为等待该信号量值为0的进程数。的进程数。3.恢复表恢复表恢复结构数组,用于进程在结束是将它所改变的信号量恢复成恢复结构数组,用于进程在结束是将它所改变的信号量恢复成原值。包括链指针、原值。包括链指针、undo数组结构及其活动元素。数组结构及其活动元素。Undo结构有一结构有一个信

620、号量个信号量ID、该信号量在集合中的下标和一个修正值组成。该信号量在集合中的下标和一个修正值组成。4.初始化表初始化表定义信号量机制初始化信息,包括上述表的长度、每个信号定义信号量机制初始化信息,包括上述表的长度、每个信号量集合所容纳的信号量的最大值、系统调用量集合所容纳的信号量的最大值、系统调用semop每次最多能处每次最多能处理的操作数目、信号量的最大值等。理的操作数目、信号量的最大值等。信号量集的建立信号量集的建立intsemget(key_tkey,intnsems,intmsgflg)key:信号量集合的名字信号量集合的名字nsems:信号量集合中信号量的数目,信号量集合中信号量的数

621、目,msgflg访问方式,如:访问方式,如:IPC_CREATE,函数返回值:信号量集合的描述符函数返回值:信号量集合的描述符semid。信号量集的操纵信号量集的操纵intsemop(intsemid,structsembuf*sops,unsignednsops)semid:信号量描述符信号量描述符sops:指向信号量操作结构数组的指针指向信号量操作结构数组的指针nsops:信号量结构数组的数目信号量结构数组的数目p41511.5存储器管理存储器管理11.5.1请求调页管理的数据结构请求调页管理的数据结构页表盘块描述表进程的每个区进程的每个区一张一张页表项页框号年龄写时拷贝修改位访问位有效位

622、保护页框数据表页状态页状态逻辑设备内存引用计数块号链表指针注:空闲页面或散列队列链表系统一张,描述了内存物理块的使用情况系统一张,描述了内存物理块的使用情况磁盘描述表对换设备号类型(对换、文件等)设备块号一、页表一、页表二、磁盘块描述表二、磁盘块描述表(DiskBlockDescriptor)三、页框数据表三、页框数据表(PageFrameDataTable)(1)页状态:对换区、文件、页状态:对换区、文件、DMA过程中、可重新分配过程中、可重新分配(2)内存引用计数内存引用计数(3)逻辑设备逻辑设备(4)块号块号(5)指向空闲页面页表指针或指向散列对列链表指针指向空闲页面页表指针或指向散列对

623、列链表指针空闲块按逻辑设备号空闲块按逻辑设备号+块号组成散列表块号组成散列表blkno%4= =0四、对换使用表四、对换使用表 对换设备上的每一对换设备上的每一“页页”都占用对换使用表的一个表都占用对换使用表的一个表项,内容为引用计数,即表示有多少页表项指向该页。项,内容为引用计数,即表示有多少页表项指向该页。五、表格之间的关系五、表格之间的关系页框数据表的第794项虚地址1493K物理页794对换设备块对换设备块27432743对换使用表项页表项磁盘块描述项页框号794对换设备:1;块号:2743引用数1对换设备:1块号:2743引用数:1块号2743.11.5.2换页进程换页进程换页进程又

624、称页面淘汰进程(守护进程),是一个核心进换页进程又称页面淘汰进程(守护进程),是一个核心进程,它负责将已经不在是进程工作集部分的页换出内存。程,它负责将已经不在是进程工作集部分的页换出内存。换页进程是在系统初启时由核心创建,在系统活动期间它换页进程是在系统初启时由核心创建,在系统活动期间它一直存在。当空闲页面减少到约定的数量时,它就被调度程一直存在。当空闲页面减少到约定的数量时,它就被调度程序唤醒工作。它检查所有活动的、未封锁的分区(跳过封锁序唤醒工作。它检查所有活动的、未封锁的分区(跳过封锁的分区)遍历整个分区表,并增加所有合法页面的年龄。的分区)遍历整个分区表,并增加所有合法页面的年龄。如

625、果多个进程共享一个分区,则相应的页面可在多个进程如果多个进程共享一个分区,则相应的页面可在多个进程的工作集中,这时对换页进程的工作无关,只要页面是任何的工作集中,这时对换页进程的工作无关,只要页面是任何进程工作集中的一部分,它就留在内存中;仅当它不在任何进程工作集中的一部分,它就留在内存中;仅当它不在任何进程的工作集中时,它才适于换出。进程的工作集中时,它才适于换出。一、增加有效页年龄一、增加有效页年龄(2个比特)扫描到每个活动的、非上锁的页面,对其年龄个比特)扫描到每个活动的、非上锁的页面,对其年龄字段加字段加1(已为(已为11的不加)。当页面被访问时,年龄字段清零。的不加)。当页面被访问时

626、,年龄字段清零。年龄字段的取值:年龄字段的取值:0,1,2,3。二、对换出页的几种处理方法二、对换出页的几种处理方法(1)若在对换设备上已有被换出页的拷贝,且被换出页的内若在对换设备上已有被换出页的拷贝,且被换出页的内容未被修改,则核心清除该页表项中的有效位,将页框数据表容未被修改,则核心清除该页表项中的有效位,将页框数据表项的引用数减项的引用数减1,若为,若为0,把该页放到自由链的末尾。,把该页放到自由链的末尾。(2)若在对换设备上没有被换出页的拷贝,则页面淘汰进程若在对换设备上没有被换出页的拷贝,则页面淘汰进程把它放到准备换出的队列上,然后继续找其它可以被换出的页,把它放到准备换出的队列上

627、,然后继续找其它可以被换出的页,逻辑上认为对换已完成。当队列长度达到一定限度式(依赖于逻辑上认为对换已完成。当队列长度达到一定限度式(依赖于磁盘控制程序的能力),核心才把该队列上的页面写到对换设磁盘控制程序的能力),核心才把该队列上的页面写到对换设备上。这样把换出的页面备上。这样把换出的页面“延迟延迟”换出,可减少换出,可减少I/O次数,加快次数,加快处理速度。处理速度。(3)若在对换设备上已有被换出页的拷贝,但该页的内容已若在对换设备上已有被换出页的拷贝,但该页的内容已被修改,则核心将该页换出,并且释放它刚才占用过的对换区。被修改,则核心将该页换出,并且释放它刚才占用过的对换区。三、将换出页

628、写到对换设备上三、将换出页写到对换设备上当准备换出页面数目已经达到规定值时,核心应将它们换当准备换出页面数目已经达到规定值时,核心应将它们换出。出。(1)在对换设备找到足够大的连续空间,如有则写出;在对换设备找到足够大的连续空间,如有则写出;(2)清除该页表项的有效位,并将页框数据表项的引用数减)清除该页表项的有效位,并将页框数据表项的引用数减1,若为,若为0或已长期未被访问(年龄值为或已长期未被访问(年龄值为4),则把该页放到自),则把该页放到自由链的末尾。由链的末尾。将对换空间地址添入磁盘描述表项中,并将对换使用表将对换空间地址添入磁盘描述表项中,并将对换使用表的计数加的计数加1。11.5

629、.3 11.5.3 请求调页请求调页当进程试图访问有效位为当进程试图访问有效位为0的页面时,发生缺页异常。的页面时,发生缺页异常。1.在磁盘描述表中在磁盘描述表中找不到找不到所需的页:非法访问所需的页:非法访问2.在磁盘描述表中在磁盘描述表中找到找到所需的页:合法访问,但需调页。所需的页:合法访问,但需调页。二、缺页在可执行文件上二、缺页在可执行文件上在磁盘描述表中类型项是在磁盘描述表中类型项是“FILE”,表示该页尚未运行表示该页尚未运行过,从磁盘上可执行文件调入:根据该文件所对应的系统区过,从磁盘上可执行文件调入:根据该文件所对应的系统区表项中的索引节点指针,找到该文件的索引节点,再从磁盘

630、表项中的索引节点指针,找到该文件的索引节点,再从磁盘块描述表项中得到该页的逻辑块号作为偏移量,查找索引节块描述表项中得到该页的逻辑块号作为偏移量,查找索引节点中磁盘块号表,便可找到该页的磁盘块号,于是将该页调点中磁盘块号表,便可找到该页的磁盘块号,于是将该页调入内存。入内存。一、缺页在内存页面缓冲区中一、缺页在内存页面缓冲区中首先在准备换出的队列上查找,若找不到则进行下面处理首先在准备换出的队列上查找,若找不到则进行下面处理三、缺页在对换设备上三、缺页在对换设备上在磁盘描述表中类型项是在磁盘描述表中类型项是“DISK”,则核心从对换设备则核心从对换设备上将该页调入内存:核心先为缺页分配一内存页

631、,修改该页上将该页调入内存:核心先为缺页分配一内存页,修改该页表项,链入散列队列,然后读入对换区中的内容,唤醒有关表项,链入散列队列,然后读入对换区中的内容,唤醒有关进程。进程。第第12章章UNIX文件子系统文件子系统UNIX文件文件一般文件一般文件目录文件目录文件特殊文件特殊文件12.1设备缓冲管理设备缓冲管理按设备按设备I/OI/O的不同情况,的不同情况,UNIXUNIX系统的系统的I/OI/O分成分成2 2种:种:1 1)无缓存)无缓存I/O (Buffered I/O)I/O (Buffered I/O):在进程在进程I/OI/O区域与系统区域与系统I/OI/O模模块间直接进行数据交换

632、;块间直接进行数据交换;2 2)有缓存)有缓存I/O (I/O (UnbufferedUnbuffered I/O) I/O):有缓存有缓存I/OI/O要经过系统的缓要经过系统的缓冲区管理机构;它又分成:冲区管理机构;它又分成: 系统缓冲区系统缓冲区( (system buffer caches)system buffer caches) 字符队列字符队列( (character queues)character queues)两种。两种。12.1.1字符设备缓冲管理字符设备缓冲管理一、空闲缓冲区链一、空闲缓冲区链1)字符缓冲区采用缓冲池结构,构成一个字符队列字符缓冲区采用缓冲池结构,构成一个

633、字符队列(CharacterQueue),它不同于块设备缓冲区的多次读写,缓它不同于块设备缓冲区的多次读写,缓冲区中每个字符只能读一次,读后被破坏。字符缓冲区根据冲区中每个字符只能读一次,读后被破坏。字符缓冲区根据其不同的用途构成多个队列,每个缓冲区仅能在一个队列中。其不同的用途构成多个队列,每个缓冲区仅能在一个队列中。每个队列由一个称为每个队列由一个称为clist控制块标志,其中含有队列中可用控制块标志,其中含有队列中可用字符计数,队列首缓冲区和对尾缓冲区的指针。整个系统有字符计数,队列首缓冲区和对尾缓冲区的指针。整个系统有一个空闲一个空闲cblock队列。队列。字符缓冲池的基本分配单位为字

634、符缓冲区字符缓冲池的基本分配单位为字符缓冲区cblock:供各供各种字符设备(的设备驱动程序)使用。种字符设备(的设备驱动程序)使用。缓冲区内容包括:第一个字符和最后一个字符的位置缓冲区内容包括:第一个字符和最后一个字符的位置(便于从开头移出字符和向末尾添加字符),指向下一个缓(便于从开头移出字符和向末尾添加字符),指向下一个缓冲区的指针冲区的指针c_next,可存放可存放64个字符的数据区。个字符的数据区。#defineLLSIZE64#defineNLIST150structcblockstructcblock*c_next;charc_first;charc_last;chardataL

635、LSIZE;structcblockcfreeNLIST;structcheadstructcblock*c_next;intc_size;/64intc_flag;/信号灯信号灯;structcheadcfreelist;开始,所有的缓冲都是空,由开始,所有的缓冲都是空,由cfreelist指向:指向:cfreelist64c_flagc_firstc_last容量为64字节的缓冲区cfree0c_firstc_last容量为64字节的缓冲区cfree1c_firstc_last容量为64字节的缓冲区cfreeNLIST-13)3)字符设备缓冲队列字符设备缓冲队列clistclist:每个字

636、符设备的驱动程序都有每个字符设备的驱动程序都有一个一个clistclist结构的控制块结构的控制块。 structstruct clistclist intint c_ccc_cc; /* I/O; /* I/O队列中可用的字符数队列中可用的字符数*/*/ structstruct cblockcblock * *c_cfc_cf; ; structstruct cblockcblock * *c_clc_cl; ;PrinterLaser680NULLNULLPrinterJet3)3) 字符设备缓冲区的操作字符设备缓冲区的操作 空闲缓冲区操作:申请空闲缓冲区给一个驱动程序、空闲缓冲区操作:

637、申请空闲缓冲区给一个驱动程序、驱动程序释放一个驱动程序释放一个cblockcblock链入空闲缓冲区队列首部;链入空闲缓冲区队列首部; 字符设备缓冲队列操作:从队首读出一个字符、向队尾字符设备缓冲队列操作:从队首读出一个字符、向队尾写入一个字符、读出队首缓冲区的所有字符、向队尾加入一写入一个字符、读出队首缓冲区的所有字符、向队尾加入一个有数据的缓冲区、从队首读出个有数据的缓冲区、从队首读出n n个字符、向队尾写入个字符、向队尾写入n n个字个字符;符;UNIXUNIX系统中终端驱动程序使用系统中终端驱动程序使用3 3条队列:条队列:(1 1)原始队列。存放输入使用户键入的没有进行过编辑原始队列

638、。存放输入使用户键入的没有进行过编辑处理的字符,即输入字符的原样。处理的字符,即输入字符的原样。(2 2)加工队列。把原始队列中的特殊字符加工转换之后建加工队列。把原始队列中的特殊字符加工转换之后建立的输出队列。包括:把输入串分成行、处理立的输出队列。包括:把输入串分成行、处理“抹字符抹字符”(eraseerase)、)、处理处理“抹行字符抹行字符”等。等。(3 3)输出队列。存放输出到终端的数据。输出队列。存放输出到终端的数据。二、字符缓冲区的分配与回收二、字符缓冲区的分配与回收getcf()和和putcf()调用。调用。12.1.2块设备缓冲队列的结构块设备缓冲队列的结构块设备缓冲区主要用

639、于磁盘、磁带等外存的缓存。块设备缓冲区主要用于磁盘、磁带等外存的缓存。目的:目的:1)提高)提高CPU与外设的并行程度与外设的并行程度2)力争重复使用已在缓冲区中的数据)力争重复使用已在缓冲区中的数据一、块设备缓冲区组成一、块设备缓冲区组成缓存块是缓存使用的基本单位,它与外设数据块相对应;每缓存块是缓存使用的基本单位,它与外设数据块相对应;每个缓存块由分立的两部分组成:缓冲控制块和缓冲数据区。前者个缓存块由分立的两部分组成:缓冲控制块和缓冲数据区。前者用于缓冲区管理,而后者用于存放数据(长度为用于缓冲区管理,而后者用于存放数据(长度为512字节)字节)#defineNBUF15charbuff

640、erNBUF514;NBUF个块缓冲区,每个区可以存储一个磁盘块的数据,个块缓冲区,每个区可以存储一个磁盘块的数据,2个个字节用于校验。字节用于校验。structbufintb_flags;structbuf*b_forw;structbuf*b_back;structbuf*av_forw;structbuf*av_back;dev_tb_dev;/设备号设备号+次设备号次设备号unsignedb_bcount;caddr_t*b_addr;缓冲控制块:缓冲控制块:也称为缓冲首部也称为缓冲首部(bufferheader)。内容包括:内容包括:逻辑设备号,物理块号,缓冲区状态(如空闲、忙逻辑设

641、备号,物理块号,缓冲区状态(如空闲、忙(B_BUSY)、)、延迟写延迟写(B_DELWRI)、锁定等标志),指向缓锁定等标志),指向缓冲数据区的指针,哈希队列的前后向指针,空闲队列的前后冲数据区的指针,哈希队列的前后向指针,空闲队列的前后向指针。向指针。二、盘块缓冲池的构成二、盘块缓冲池的构成1 1、空闲缓冲队列:通过、空闲缓冲队列:通过avav链双向链接,头指针链双向链接,头指针bfreelistbfreelist2 2、空设备队列:空闲空设备队列:空闲b b链,通过链,通过b b指针链接,设备号为指针链接,设备号为NODEVNODEV(- -1 1)。)。3 3、设备缓冲区队列:设备、设备

642、缓冲区队列:设备b b链,连接各类设备使用过的缓冲,头链,连接各类设备使用过的缓冲,头部为部为hbufhbuf指针指针数组,共数组,共6464个队列,初始全空。队列按杂凑组织,个队列,初始全空。队列按杂凑组织,杂凑函数为:杂凑函数为: (设备号(设备号+ +次设备号)次设备号)%64%642846417597563401.63hbuf4 4、设备、设备I/OI/O请求请求队列:设备队列:设备avav链,每个块设备有一个,单向链接。链,每个块设备有一个,单向链接。(1)初始,所有缓冲只属于两个队列)初始,所有缓冲只属于两个队列空闲队列(空闲队列(av指针链接)指针链接)空设备队列(空设备队列(b

643、指针链接)指针链接)(2)有)有I/O请求:申请缓冲,从上述两个队列(若该缓冲也在请求:申请缓冲,从上述两个队列(若该缓冲也在空设备队列中)上摘下,挂入:空设备队列中)上摘下,挂入:设备设备I/O请求队列(请求队列(av指针链)指针链)设备缓冲区队列(设备缓冲区队列(b链)链)(3)I/O完成:设备完成:设备I/O队列摘下,加入空闲队列,设备缓冲区队列摘下,加入空闲队列,设备缓冲区队列暂不动,直到该缓冲再分配时,摘下并根据设备号计算后队列暂不动,直到该缓冲再分配时,摘下并根据设备号计算后链入设备缓冲区队列。链入设备缓冲区队列。缓存块可同时链入设备缓冲区队列和空闲缓冲队列:一个缓存块可同时链入设

644、备缓冲区队列和空闲缓冲队列:一个缓存块在分配给一个外设后,一直与该外设相关缓存块在分配给一个外设后,一直与该外设相关(即使该缓存即使该缓存块在空闲缓冲队列中块在空闲缓冲队列中),直到分配给另一外设。即:,直到分配给另一外设。即:设备释放设备释放缓冲区后,该缓冲区可处于缓冲区后,该缓冲区可处于“延迟写延迟写”状态,等待被写入到外状态,等待被写入到外设;该缓冲区被重新分配之前,要将其内容写入到外设。设;该缓冲区被重新分配之前,要将其内容写入到外设。空闲表头标记284641759778501056340123.结论:结论:(1)任何一个缓冲区只可能也必须同时属于两个队列)任何一个缓冲区只可能也必须同

645、时属于两个队列(2)空闲队列中缓冲区可能属于空设备队列,也可能属于)空闲队列中缓冲区可能属于空设备队列,也可能属于设备缓冲队列设备缓冲队列(3)设备缓冲队列中的缓冲区可能属于空闲链也可能属于)设备缓冲队列中的缓冲区可能属于空闲链也可能属于设备请求链设备请求链(4)空设备队列中的缓冲肯定在空闲缓冲队列中,设备请)空设备队列中的缓冲肯定在空闲缓冲队列中,设备请求队列中的缓冲区肯定在设备缓冲区队列中求队列中的缓冲区肯定在设备缓冲区队列中缓冲区的置换算法:缓冲区的置换算法:LRULRU算法算法( (最近最久未使用)。最近最久未使用)。缓冲区数据读写:缓冲区数据读写: 外设与核心缓冲区间采用:外设与核心

646、缓冲区间采用: 一般读和预先读(适用于对文件的顺序访问):一般读和预先读(适用于对文件的顺序访问): 一般读一般读是从外设读入指定的数据块;是从外设读入指定的数据块; 预先读预先读是在一般读的基础上,异步读入另一块(通常是逻是在一般读的基础上,异步读入另一块(通常是逻辑上的后一块),以提高数据读取速度;辑上的后一块),以提高数据读取速度;一般写一般写(立即起动(立即起动I/O并等待完成)并等待完成)异步写异步写(立即起动(立即起动I/O而不等待完成,以提高写速度)而不等待完成,以提高写速度)延迟写延迟写(不立即起动(不立即起动I/O,以减少不必要的以减少不必要的I/O操作,在进操作,在进程结束

647、、缓冲满、缓冲要重新分配、进程发出刷新缓冲命令程结束、缓冲满、缓冲要重新分配、进程发出刷新缓冲命令等条件下写出,在系统突发故障时,可能会产生内、外存数等条件下写出,在系统突发故障时,可能会产生内、外存数据不一致的错误)据不一致的错误)12.1.3块设备缓冲区的分配与回收块设备缓冲区的分配与回收getblk()和和brelse()过程。过程。一、块缓冲区的分配一、块缓冲区的分配1getblk()过程过程首先检查空闲块缓冲区队列是否为空,若空,则睡眠等首先检查空闲块缓冲区队列是否为空,若空,则睡眠等待,直到有空缓冲区为止。否则,取得一个空缓冲区,若该待,直到有空缓冲区为止。否则,取得一个空缓冲区,

648、若该缓冲区首部有延迟写标志,则调用缓冲区首部有延迟写标志,则调用bawrite()过程,将缓冲区过程,将缓冲区中的数据写到磁盘中,置中的数据写到磁盘中,置B_BUSY标志,返回缓冲区指针。标志,返回缓冲区指针。2getblk(dev,blkno)过程过程首先在散列队列上查找,找到,上锁、置首先在散列队列上查找,找到,上锁、置“忙忙”位,使位,使用;若找不到,获取一空缓冲区,链入散列队列使用。用;若找不到,获取一空缓冲区,链入散列队列使用。二、块缓冲区的回收二、块缓冲区的回收使用完缓冲区的数据,调用使用完缓冲区的数据,调用brelse()过程,将其回收。过程,将其回收。1唤醒等待空闲缓冲区的所有

649、进程唤醒等待空闲缓冲区的所有进程2将空闲缓冲区放入空闲队列将空闲缓冲区放入空闲队列在缓冲区首部置空闲标志,空闲缓冲区计数加在缓冲区首部置空闲标志,空闲缓冲区计数加1。12.2设备处理程序设备处理程序在在UNIX系统中,每类设备都有一个驱动程序,用系统中,每类设备都有一个驱动程序,用它来控制该类设备。它来控制该类设备。12.2.1核心与驱动程序的接口核心与驱动程序的接口UNIX设备驱动程序通过相应的块设备开关表和字符设备开关设备驱动程序通过相应的块设备开关表和字符设备开关表来描述与文件系统的接口。开关表是每个设备驱动程序的一表来描述与文件系统的接口。开关表是每个设备驱动程序的一系列接口过程的入口

650、表,给出了一组标准操作的驱动程序入口系列接口过程的入口表,给出了一组标准操作的驱动程序入口地址,文件系统可通过开关表中的各函数入口地址转向适当的地址,文件系统可通过开关表中的各函数入口地址转向适当的驱动程序入口。驱动程序入口。开关表在开关表在conf.h中定义:中定义:structbdevswint(*d_open)();int(*d_close)();int(*d_strategy)();int(*d_print)();externstructbdevswbdevsw;structcdevswint(*d_open)();int(*d_close)();int(*d_read)();int(

651、*d_write)();structtty*d_ttys;externstructbdevswbdevsw;在在conf.c中定义了中定义了cdevsw和和bdevsw,在在UNIX中增加一个设备中增加一个设备驱动程序,需要修改驱动程序,需要修改conf.c,在在cdevsw(若是字符设备)或若是字符设备)或bdevsw(若是块设备)中增加一项。若是块设备)中增加一项。cdevsw=conopen,conclose,conread,conwrite,conioctl,NULL,/0propen,prclose,NULL,prwrite,prioctl,NULL,/.;文件系统文件系统openc

652、losereadwriteioctlopenclosemountunmountreadwrite缓冲区管理字符设备开关表块设备开关表字符设备驱动程序中断处理程序块设备驱动程序中断处理程序中断向量设备中断中断向量一个设备驱动程序可同时提供块接口和字符接口,在一个设备驱动程序可同时提供块接口和字符接口,在两个开关表中各占一个表项;两个开关表中各占一个表项;一个设备驱动程序不必支持所有的入口点,可仅返一个设备驱动程序不必支持所有的入口点,可仅返回错误码或返回成功。如:打印机的读入口点;回错误码或返回成功。如:打印机的读入口点;12.2.2磁盘驱动程序磁盘驱动程序在在UNIX的磁盘驱动程序中,包含一系

653、列的过程,除了的磁盘驱动程序中,包含一系列的过程,除了gdopen、gdclose和和gdstategy外,还有以下过程:外,还有以下过程:1.gdopen过程过程打开指定的磁盘驱动器。打开指定的磁盘驱动器。2.gdstart过程过程从磁盘驱动器的从磁盘驱动器的I/O队列中,取得第一个缓冲区首部,并队列中,取得第一个缓冲区首部,并启动磁盘控制器。初始化磁盘控制器各个寄存器。启动磁盘控制器。初始化磁盘控制器各个寄存器。3.gdstrategy过程过程把指定的缓冲区首部排在磁盘控制器把指定的缓冲区首部排在磁盘控制器I/O队列末尾,然后队列末尾,然后调用调用gdstart过程,启动磁盘控制器。过程,

654、启动磁盘控制器。4.gdintr过程过程磁盘中断处理程序。判断磁盘是否出错,并做出错后的磁盘中断处理程序。判断磁盘是否出错,并做出错后的处理。处理。12.2.3磁盘读写程序磁盘读写程序一、一、读过程读过程1.bread输入参数:逻辑设号、块号。输入参数:逻辑设号、块号。先调用先调用getblk过程申请一个缓冲区,若缓冲区有效,无需过程申请一个缓冲区,若缓冲区有效,无需读入,直接返回,否则,填写缓冲区首部,在通过设备开关读入,直接返回,否则,填写缓冲区首部,在通过设备开关表,转入相应的策略过程,启动磁盘传送,调用表,转入相应的策略过程,启动磁盘传送,调用sleep()使自使自己等待完成,最后由中

655、断唤醒。己等待完成,最后由中断唤醒。2.breada输入参数:当前逻辑设号、块号及提前读的逻辑设备号、输入参数:当前逻辑设号、块号及提前读的逻辑设备号、块号。块号。读读一般读一般读提前(预)读提前(预)读一般写一般写异步写异步写延迟写延迟写写写二、二、写过程写过程1bwrite输入参数:缓冲区指针输入参数:缓冲区指针bp。根据根据bp找到该缓冲区的首部,设置缓冲区首部的初值,在找到该缓冲区的首部,设置缓冲区首部的初值,在通过设备开关表,转入相应的策略过程,启动磁盘,等待通过设备开关表,转入相应的策略过程,启动磁盘,等待I/O完成,调用完成,调用sleep()使自己等待完成,最后由中断唤醒。使自

656、己等待完成,最后由中断唤醒。2bawrite启动设备,但不等待启动设备,但不等待I/O完成就返回。完成就返回。3bdwrite设置延迟写标志,调用设置延迟写标志,调用brelse过程将该缓冲区释放并链入过程将该缓冲区释放并链入空闲列表的尾部。其后当某进程调用空闲列表的尾部。其后当某进程调用getblk获得该缓冲区时,获得该缓冲区时,再用异步写方式将缓冲区的内容写入磁盘。再用异步写方式将缓冲区的内容写入磁盘。charbuffer20;strcpy(buffer,”Thisistest.”);write(1,buffer,strlen(buffer)+1);strcpy(buffer,”Thisi

657、stest2.”);n=write(1,buffer,strlen(buffer)+1)if(n=strlen(buffer)+1)cout“输出成功!输出成功!”endl;exit(0);处理成处理成立即写立即写处理成处理成延迟写延迟写或异步写或异步写输出结果在输出结果在UNIX上可能是:上可能是:Thisistest2.输出成功!输出成功!Thisistest.12.3UNIX文件的管理文件的管理12.3.1文件存储空间的管理文件存储空间的管理一、文件卷的组织一、文件卷的组织引导块引导块超级块超级块磁盘索引结点区磁盘索引结点区用户文件区用户文件区对换区对换区二、二、空闲盘块的组织空闲盘块的

658、组织成组链接法。成组链接法。三、三、空闲盘块的分配与回收空闲盘块的分配与回收1空闲盘块的分配空闲盘块的分配2空闲盘块的回收空闲盘块的回收12.3.2文件的物理结构文件的物理结构一、一、寻址方式寻址方式1直接寻址方式直接寻址方式2一次间接寻址方式一次间接寻址方式3多次间接寻址方式多次间接寻址方式二、二、地址转换地址转换1.将字节偏移量转换为文件逻辑块号将字节偏移量转换为文件逻辑块号文件读、写指针的值是下次要读、写的字节偏移量。将文件读、写指针的值是下次要读、写的字节偏移量。将该值除以一个磁盘块的字节数该值除以一个磁盘块的字节数,其商为文件逻辑块号,余数其商为文件逻辑块号,余数是块内偏移量。是块内

659、偏移量。12.3.3用户文件描述表和文件表的管理用户文件描述表和文件表的管理一、一、用户文件描述符表的管理用户文件描述符表的管理1用户文件描述符表用户文件描述符表用户使用一个文件首先要打开它,每个打开的文件有一用户使用一个文件首先要打开它,每个打开的文件有一个内部表示号个内部表示号fd,每个进程打开的文件的信息存在自己的每个进程打开的文件的信息存在自己的user区。区。为防止使用文件频繁的访问外存,所以首先要打开一个为防止使用文件频繁的访问外存,所以首先要打开一个文件,功能是要将文件的有关信息读到内存中保存,保存文件,功能是要将文件的有关信息读到内存中保存,保存的表称为打开文件表。表的大小决定

660、了允许同时打开的文的表称为打开文件表。表的大小决定了允许同时打开的文件的个数。每个文件有一个读件的个数。每个文件有一个读/写指针,每次读写指针,每次读/写都以该写都以该点为基准,读点为基准,读/写后系统要给予修改,打开文件时,该指针写后系统要给予修改,打开文件时,该指针置为置为0。2ufalloc过程:在过程:在user区区用户文件描述符表中找到一个空用户文件描述符表中找到一个空项,将项,将fd填入。填入。二、二、文件表管理文件表管理UNIXUNIX引入引入文件表文件表,同进程打开文件表分离同进程打开文件表分离,存放读存放读/写文件指写文件指针、文件内存针、文件内存i节点指针、文件引用计数等。

661、节点指针、文件引用计数等。UNIX保存了一张内存保存了一张内存i索引结点表索引结点表(表的大小决定了系统允表的大小决定了系统允许同时打开的文件数,而进程的打开文件表决定了一个进程允许同时打开的文件数,而进程的打开文件表决定了一个进程允许同时打开的文件数),许同时打开的文件数),UNIX在打开文件时,在系统索引结在打开文件时,在系统索引结点表中找一个空闲表目,然后将对应文件磁盘索引结点的绝大点表中找一个空闲表目,然后将对应文件磁盘索引结点的绝大部分内容拷贝到内存索引结点表中,文件读部分内容拷贝到内存索引结点表中,文件读/写指针存在文件写指针存在文件表中表中,进程打开文件表给出打开文件在文件表中位

662、置。进程打开文件表给出打开文件在文件表中位置。目的:文件共享目的:文件共享用户文件描述符表用户文件描述符表(useruser中)中)第i个内存索引节点内存索引内存索引i i节点节点.第j个内存索引节点.第k个内存索引节点.第l个内存索引节点.文件表文件表f_offsetf_inodef_countf_offsetf_inodef_countf_offsetf_inodef_count.f_offsetf_inodef_count.f_offsetf_inodef_countfpA用用户户fpB用用户户fpC用用户户fpD用用户户fpE用用户户fpF用用户户A、B用户打开各自用户打开各自文件进行

663、操作文件进行操作用户文件描述符表用户文件描述符表(useruser中)中)第i个内存索引节点内存索引内存索引i i节点节点.第j个内存索引节点.第k个内存索引节点.第l个内存索引节点.文件表文件表f_offsetf_inodef_countf_offsetf_inodef_countf_offsetf_inodef_count.f_offsetf_inodef_count.f_offsetf_inodef_countfpA用用户户fpB用用户户fpC用用户户fpD用用户户fpE用用户户fpF用用户户C、D用户打开同一个用户打开同一个文件文件,但读但读/写位置各写位置各自独立自独立,互不干涉互不

664、干涉用户文件描述符表用户文件描述符表(useruser中)中)第i个内存索引节点内存索引内存索引i i节点节点.第j个内存索引节点.第k个内存索引节点.第l个内存索引节点.文件表文件表f_offsetf_inodef_countf_offsetf_inodef_countf_offsetf_inodef_count.f_offsetf_inodef_count.f_offsetf_inodef_countfpA用用户户fpB用用户户fpC用用户户fpD用用户户fpE用用户户fpF用用户户E、F用户打开同一个用户打开同一个文件文件,读读/写指针也共写指针也共享享12.4目录管理目录管理12.4.

665、1对索引节点的管理对索引节点的管理一一、索引结点索引结点1、磁盘索引结点、磁盘索引结点structdinodeushortdi_mode;/*文件属性和类型文件属性和类型*/shortdi_nlink;/*文件链接计数文件链接计数*/ushortdi_uid;/*文件主标识文件主标识*/ushortdi_gid;/*同组用户表识同组用户表识*/off_tdi_size;/*文件字节(长度)文件字节(长度)*/chardi_addr40;/*盘块地址盘块地址*/time_tdi_atime;/*最近存取时间最近存取时间*/time_tdi_mtime;/*最近修改时间最近修改时间*/time_t

666、di_ctime;/*创建时间创建时间*/2 2 、内存索引节点、内存索引节点在磁盘索引结点的基础上增加:在磁盘索引结点的基础上增加:(1 1)散列指针()散列指针(i_forwi_forw和和i_backi_back)和自由链指针(和自由链指针(av_forwav_forw和和av_backav_back)(2 2)状态标志(状态标志(i_flagi_flag):):表示表示i i节点是否被封锁节点是否被封锁(3 3)访问计数(访问计数(i_counti_count):):为为0 0表示空闲表示空闲(4 4)i i节点所在的设备号(节点所在的设备号(i_devi_dev):):表明文件卷可由

667、多表明文件卷可由多台逻辑设备构成。台逻辑设备构成。(5 5) i i节点号(节点号(i_numberi_number):):磁盘磁盘i i结点的顺序号。结点的顺序号。二、二、磁盘索引节点的分配与回收磁盘索引节点的分配与回收ialloc和和ifree过程。过程。三、三、内存索引节点的分配与回收内存索引节点的分配与回收12.4.2构造目录和删除目录构造目录和删除目录12.5文件系统的系统调用文件系统的系统调用12.5.1系统调用系统调用opon12.5.2系统调用系统调用creat12.5.3系统调用系统调用close12.5.4系统调用系统调用link和和unlink12.5.5系统调用系统调用read和和write12.5.6其它系统调用其它系统调用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号