《教学课件·操作系统》由会员分享,可在线阅读,更多相关《教学课件·操作系统(315页珍藏版)》请在金锄头文库上搜索。
1、操操 作作 系系 统统主讲教师:OperatingSystem本章教学目标了解操作系统的发展过程掌握操作系统的定义和基本类型熟悉操作系统的主要功能和特征第第1章章 操作系统概述操作系统概述本章主要内容1.1 操作系统的概述1.2 操作系统的发展1.3 操作系统的分类1.4 操作系统的特征1.5 操作系统的基本功能1.1操作系统的概述1.1.1 计算机系统的组成1.1.1计算机系统的组成计算机系统组成硬件系统 计算机硬件是指组成计算机系统的设备或机器,是“看得见,摸得着”的物理部件,它是组成计算机系统的基础。 计算机硬件一般包括中央处理器(CPU)、内存储器、外存储器、输入设备和输出设备,其中C
2、PU与内存储器合称为主机,外存储器、输入设备和输出设备合称为外部设备。软件系统 计算机软件是指组成计算机系统的程序、数据和文档。程序是指令的有序集合;数据是信息在计算机中的表示,是计算机处理的对象;文档是各种说明文本,是软件操作的辅助性资源。 系统软件:是支持和管理计算机硬件的软件,是服务于硬件的,它创立的是一个平台。系统软件包括操作系统、数据库管理系统、计算机编译语言和各种系统服务性程序。 应用软件 :应用软件是完成用户某项要求的软件,是服务于特定用户的,它满足某一个应用领域。应用软件包括计算机源程序和应用软件包。 1.1.2什么是操作系统一、 理解操作系统的三个观点二、 操作系统的定义 一
3、、理解操作系统的三个观点从用户观点来理解,操作系统是用户与计算机之间的接口;从资源管理观点来理解操作系统是管理和控制计算机系统的软件、硬件资源 ;从程序控制观点来理解操作系统是对程序的管理。二、操作系统的定义操作系统的一般定义:合理组织计算机的工作流程合理组织计算机的工作流程有效控制和管理计算机的各类资源有效控制和管理计算机的各类资源方便用户使用的程序的集合方便用户使用的程序的集合总之,计算机配置操作系统的目的是提高总之,计算机配置操作系统的目的是提高资源利用率。资源利用率。1.2操作系统的发展推动操作系统发展的动力1不断提高资源利用率的需要 2方便用户操作 3硬件的不断更新换代 4计算机体系
4、结构的不断发展 1.2.1无操作系统阶段1.人工阶段 在20世纪50年代末期以前的第一代(19461955)计算机中,操作系统尚未出现,那里只是人工操作。操作员通过控制台上的各种开关来控制各部件的运行(如装入卡片或纸带、按电钮和查看存储单元等)。 ENIAC计算机计算机 ( 美国宾夕法尼亚大学)运算速度:运算速度: 5000次/每秒 真空管:真空管: 18000个 占地面积:占地面积: 182平方米 重重 量量 : 130吨 功功 耗耗 : 140kW50年代早期出现了穿孔卡片,程序写在卡片上然后读入计算机。但计算过程则依然如旧。 早期计算机的工作,基本上采用人工操作方式:由操作员将纸带(或卡
5、片)装入纸带输入机(或卡片输入机),把程序和数据输入计算机,当程序行完毕,由用户取走纸带和计算结果后,才让下一个用户上机操作。 人工操作方式具有以下特点特点: 用户独占全机。 CPU等待人工操作。 串行性 人工操作方式具有以下缺点缺点: 计算机的有效机时严重浪费 效率低 2.脱机输入脱机输入/ /输出输出 脱机输入/输出阶段的技术是为解决CPU与I/O设备之间的速度不匹配而提出的。它减少了CPU的空闲等待时间,提高了I/O速度。外围机输入设备输出设备输入作业输出结果主机脱机输入/输出20世纪50年代末至60年代初,计算机进入第二代(19551965)。 管理程序(能对计算机硬件和软件进行管理的
6、调度程序 )。 批处理程序,解决了作业间的自动转换 。 早期的监管程序和这种批处理软件称为初级操作系统。 1.2.2初级操作系统阶段20世纪60年代,计算机进入第三代后19651980)。 IBMSystem360上运行的OS/360操作系统被认为是真正的(完整的)操作系统 。 多道程序设计技术,提高CPU的利用率,充分发挥并行性 。 1.2.3操作系统形成阶段第四代计算机系统发展时期(19801994) ,其上配置的操作系统称为现代操作系统。 这一代最有代表性的操作系统是UNIX操作系统(分时系统)。 1.2.4现代操作系统阶段1.3操作系统的分类批处理操作系统分时系统实时系统网络操作系统分
7、布式操作系统1.3.1批处理系统批处理系统主要是采用了批处理技术。批处理技术是指计算机系统对一批作业自动进行处理的一种技术。方式:单道批处理系统:原理和特点多道批处理系统:原理和特点http:/ 系统吞吐量,在60年代中期又引入了多道程序设计技术,由此而形成了多道批处理系统。在该系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享 CPU和系统中的各种资源。 http:/ 1.3.2分时操作系统概念: 所谓分时系统就是采用了分时技术的操作系统。一台主机连接多台带显示器和键盘及控制器的本地或远程终
8、端,每个用户可以在自己的终端按时间片轮流地以交互的方式使用主机,共享系统资源,典型代表UNIX系统。(OS成熟期)分时:两个或多个事件按时间的划分轮流使用计算机某一资源。时间片:系统规定进程一次使用处理机的最长时间分时系统的特征有多路性、独立性、及时性和交互性。 1.3.3实时系统概念实时系统是指系统能及时响应外部事件的请求,在规定的时间内,完成对该事件的处理,并控制所有实时任务协调一致地运行。 类型实时控制系统实时信息处理系统 实时系统的特征有多路性、独立性、及时性、交互性和可靠性。 1.3.4网络操作系统概念 网络操作系统用于管理网络中的各种资源,为用户提供各种服务。其主要功能有网络通信管
9、理、网络资源管理、网络安全管理和网络服务等。功能网络通信:这是网络最基本的功能。资源管理:对网络中的共享资源实施管理,使资源在各用户间合理的流通、使用。网络服务:主要有电子邮件服务,文件传输、存取和管理服务,共享硬盘服务等。网络管理:最基本的是通过各种方法实现网络安全管理,防止用户有意或无意地对网络资源造成破坏。 1.3.5分布式操作系统概念: 分布式处理系统是指由多个分散的处理单元经互联网络的连接而形成的系统。在分布式系统上配置的操作系统称为分布式操作系统。 特征 分布式系统最基本的特征是在处理上的分布,其实质是资源、功能、任务和控制都是分布的。还有并行性、共享性强,系统处理的透明度高、效率
10、高以及易于维护等优点。1.4操作系统的特征1并发性并发性 在多道程序环境下,并发性是指两个或多个事件在同一时间间隔内发生,即宏观上有多道程序同时执行,而微观上,在单处理机系统中每一个时刻仅能执行一道程序。 (并发、并行)2共享性共享性 共享是指系统中的资源可供多个用户或并发执行的进程同时使用。 3虚拟性虚拟性 是指通过某种技术把一个物理实体变成若干个逻辑上的对应物。如虚拟内存,虚拟处理机等 4异步性(不确定性)异步性(不确定性) 也称不确定性,是指在多道程序环境下,允许多个进程并发执行,由于资源的限制,进程的执行不是“一气呵成”的,是“走走停停”的。 1.5操作系统的基本功能操作系统是用户与硬
11、件之间的桥梁,它主要负责管理计算机系统中的所有资源,并负责它们的调度和使用,充分发挥这些资源的作用和方便用户使用计算机。从资源管理的角度来看,操作系统的功能主要有处理机的管理处理机的管理:协调系统中多个程序正确有效地占用处理机。存储器的管理存储器的管理:内存的分配与回收,程序相对地址到绝对地址的转换,内存的共享与保护及逻辑扩充。设备的管理设备的管理:I/O设备的分配、共享、驱动调度和方便使用。文件的管理文件的管理:文件存储介质的管理,文件的存取、保护和共享等。接口管理接口管理:用户提供使用计算机的手段 ,命令接口和程序接口。本章小结本章小结计算机系统由硬件系统和软件系统组成。软、硬件系统的组成
12、就是计算机系统资源,当不同的用户使用计算机时都要占用系统资源并且有不同的控制需求。操作系统就是计算机系统的一种系统软件,由它统一管理计算机系统的资源并控制程序的执行。操作系统的形成过程: 早期没有操作系统原始汇编系统管理程序操作系统,可以看到,操作系统是随着计算机硬件的发展和应用需求的推动而形成的。按照操作系统提供的服务,大致可以把操作系统分为以下几类: 批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统。其中批处理操作系统、分时操作系统、实时操作系统是基本的操作系统。作业1、操作系统的定义2、操作系统的功能3、操作系统的基本类型4、操作系统的特征第二章进程管理2.1 进
13、程管理2.2 线程2.3 作业管理2.4 作业与进程的区别本章目标本章目标理解和掌握进程的定义、状态、进程控制块和进程队列等知识。理解和掌握进程的调度算法。理解线程知识。理解作业管理和作业调度。2.1进程管理 1.程序的顺序执行:程序在机器中严格按顺序执行并独占系统资源;程序执行的速度与结果无关。v封闭性:程序一旦执行,其结果只取决于程序本身;v可再现性:机器在同一数据集上重复执行同样的程序,其结果相同v程序的并发执行:多个程序同时在一台计算机中运行,各程序不再独自占有所需资源,而是在轮流使用共享资源时相互制约,执行过程往往是走走停停,失去了封闭性和可再现性,但是却提高了资源利用率。2.1.1
14、 程序的执行程序的执行2.并发执行输入第一批输入第二批输入第三批处理第一批处理第二批处理第三批输出第一批输出第二批输出第三批并发性。即指系统中有多个程序同时执行。在单个CPU系统中,多个并发执行的程序虽然从宏观上并行执行,但是从微观上来看,它们是分时,轮流地占用CPU时间,所以是串行的。随机性。在多道程序环境下,尤其是在多用户环境下,程序和数据的输入与执行时间都是随机的。资源共享。任何一个计算机系统中的软、硬件资源数量总是有限的,这就要求系统资源允许被多个并发执行的程序所共享。进程与程序的关系 1.程序是静态的概念,进程是动态的概念; 2.进程是一个能独立运行的单位,能与其他进程并发执行而程序
15、则不能 3.程序和进程无一一对应的关系 4.各进程在并发执行中会产生相互制约,而程序本身是静态的,没有这种异步特征。进程进程是一个程序在一个数据集上的一次运行。2.1.2 进程概念的引入进程概念的引入进程的特征进程的特征动态性:进程有一定的生命期,“它由创建而产生,由调度而执行,由撤消而消亡”。并发性:多个进程并发执行。独立性:能独立运行、独立分配资源和独立调度的基本单位。异步性:进程按各自独立的、不可预知的速度向前推进,按异步方式运行。结构特征:进程实体包括程序段、数据集和进程控制块。2.1.3、进程的状态及其转换进程的基本状态:就绪态、运行态、阻塞态。各状态的相互转换: 就绪运行 运行阻塞
16、 阻塞就绪 运行就绪等待某事件发生进程调度时间片到所等待事件发生运行运行就绪就绪阻塞阻塞2.1.4、进程控制块进程组成:进程控制块,程序段,数据集合。 进程控制块 进程标识信息、说明信息、现场信息和管理信息(进程名、 状态信息、调度优先权、通信信息、现场保护区、资源供求和分配控制信息、族关系信息等) 程序段 各种基本结构组成的指令集合 数据集合 各种类型的数据 PCB程序部分数据集合PCB是进程存在的唯一标识思考题: 为什么PCB是进程存在的唯一标识?提示:操作系统根据PCB对进程实施控制和管理;进程队列:将具有相同状态的PCB按一定的方式组织起来,构成的队列。分三种队列:执行队列、就绪队列、
17、阻塞队列。2.1.5进程队列执行队列头指针PCB4就绪队列头指针PCB2PCB3PCB5PCBn阻塞队列头指针PCB1PCB6-1-1图 PCB的各种队列线性方式:线性队列链接方式:链接表索引方式:索引表线性表队列250036004800250025022504链接表队列索引表PCB0PCB1PCB2 PCBn 内存中的专用区域2.1.6 进程控制进程控制原语操作:机器指令编制的一段完成特殊功能的系统程序。进程控制的作用:系统对所有进程整个生命期的有效管理和控制。 1、创建原语 2、撤销原语 3、阻塞原语 4、唤醒原语 1 创建原语创建原语一个进程可借助于创建原语来创建一个新进程。创建一个新进
18、程的主要工作是:申请一空闲PCB无空闲PCB,则创建失败;否则产生PID(进程标识)申请必要的资源初始化PCB插入就绪队列 2 撤消进程原语撤消进程原语找出被撤消进程的PCB该进程若正在执行,则终止该进行的执行该进程若有子进程,则撤消其所有子进程将该进程所拥有的全部资源,归还给父进程或系统将被撤消进程的PCB从所在队列(或链表)中清除,放回到空闲PCB队列。3进程的阻塞原语进程的阻塞原语 正在执行的进程,当出现请求操作系统服务、启动某种操作、新数据尚未到达、无新工作可做等事件时,由于无法继续运行,于是自己便通过调用block原语,把自己阻塞起来。保存CPU现场置该进程的状态被阻塞进程入等待队列
19、转进程调度。4进程的唤醒原语进程的唤醒原语被阻塞进程等待的事件到,由与之相关的被阻塞进程等待的事件到,由与之相关的进程将其唤醒(被阻塞的进程不能自己唤醒自己)进程将其唤醒(被阻塞的进程不能自己唤醒自己)把被阻塞进程从相应阻塞队列中取出;将现行状态把被阻塞进程从相应阻塞队列中取出;将现行状态由阻塞改为就绪;然后插入到就绪队列;根据优先由阻塞改为就绪;然后插入到就绪队列;根据优先情况调整调度标志情况调整调度标志调度算法调度算法 先来先服务(FCFS)调度算法:这种调度算法是按照进程进入就绪队列的先后次序来选择可占用处理器的进程。时间片轮转:将所有的就绪进程按到达的先后顺序排队,并将CPU的时间分成
20、固定大小的时间片,如果一个进程被调度选中后用完了时间片,但并未完成要求的任务,则它将自行释放自己所占的CPU而重新排列就绪队列的末尾,等待下一次调度。 优先级调度算法:为进程设置不同的优先级,就绪队列按进程优先级的不同而排列,每次总是从就绪队列中选取优先级最高的进程运行。2.1.7 进程调度进程调度2.2线程2.2.1线程的概念 1.定义:线程是进程中的一个可执行实体,是系统进行调度和执行的基本单位。 2.状态:就绪、运行、阻塞。 3.线程与进程比较2.2.2线程的种类与实现(了解) 线程与进程的区别可以归纳为以下几点:1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共
21、享。某进程内的线程在其它进程不可见。 2)通信:线程间可以直接读写进程数据段(如全局变量)来进行通信需要进程同步和互斥手段的辅助,以保证数据的一致性。 3)调度和切换:线程上下文切换比进程上下文切换要快得多。 4)在多线程OS中,进程不是一个可执行的实体。 2.3作业管理2.3.1什么是作业和作业步 从用户角度说,作业作业是要求计算机系统处理的一个问题或一个事务处理过程中要求计算机系统所做工作的集合,包括用户程序、所需的数据及命令等。 把计算机系统在完成一个作业过程中所做一些相对独立的工作称为作业步作业步。 2.3.2 作业的状态作业的状态作业状态的相互转换时间片完等待某个事件发生等待事件结束
22、等待就绪运行进 程 调度作 业 调度后后备状状态作 业 提交完成状完成状态作 业 调度运行状运行状态2.3.3 作业调度作业调度1.处理器的两级调度处理器的两级调度(1)高级调度 高级调度又称为作业调度。其主要功能是根据一定的算法,把处于后备队列中的那些作业调入内存,分配必要的资源,并为它们建立相应的用户作业进程和为其服务的系统的进程(如输入/输出进程),然后将创建的进程送入就绪队列,等待进程调度程序对其执行调度,并在作业完成后作善后处理工作,回收系统资源。(2)低级调度 低级调度又称进程调度,这在前面我们已经介绍过。这里就不再重复讲述。2.作业调度 作业调度的主要功能是按照某种原则从后备作业
23、队列中选取作业进入内存,并为作业做好运行前的准备工作和作业完成后的处理工作。常见的作业调度算法有:(1 1)先来先服务()先来先服务(FCFSFCFS)(2)短作业优先()短作业优先(SJF) (3)响应比高者优先()响应比高者优先(HRN) (4)优先级法)优先级法2.4作业与进程区别(1)作业是用户向计算机提交任务的任务实体任务实体。在用户向计算机提交作业后,系统将它放入外存中的作业等待队列中等待执行。而进程则是完成用户任务的执行实体执行实体,是向系统申请分配资源的基本单位。任一进程,只要它被创建,总有相应的部分存在于内存内存中。(2)一个作业可由多个进程组成,且必须至少由一个进程组成,反
24、过来则不成立。(3)作业的概念主要用在批处理系统中,像UNIX这样的分时系统中就没有作业的概念。而进程的概念则用在几乎所有的多道程序系统中。本章小结本章小结1、进程的引入、定义、进程控制块、进程状态及状态间的转换,进程调度算法。2、线程的概念3、作业、作业步、作业状态、作业调度第3章 存储管理 本章学习目标 3.1 存储管理概述 3.2 连续分配存储管理方式 3.3 页式存储器管理 3.4 段式存储管理3.5 段页式存储管理3.6 虚拟存储器3.7 请求分页存储管理3.8 请求分段存储管理本章目标本章目标 理解与掌握存储管理的功能。理解与掌握单用户连续、固定分区和可变分区存储管理方式。理解与掌
25、握页式存储管理方式。了解段式、段页式存储管理方式。理解请求页式虚拟存储管理方式。本章学习目标 本章首先介绍了存储管理的研究对象和目的,明确了存储管理的基本功能和有关的基本概念;然后从实存和虚存两个角度,分别介绍了常用的几种存储管理方案;最后对各种存储管理方案存在的问题,主要是碎片和抖动问题进行了总结。 本章的主要内容如下:(1)存储管理的目的和四大基本功能。 (2)实存管理中讲述了固定分区存储管理、可变式分区存储管理、纯分页存储管理三种存储管理方案的实现原理(3)虚存管理以请求式分页存储管理为重点 (4)总结各种存储管理方案中存在的碎片和抖动问题及解决方法3.1存储管理的概述3.1.1存储器的
26、层次结构 3.1.2存储管理的功能3.1.3地址重定位 多级存储器体系示意图多级存储器体系示意图3.1.1存储器的层次结构内存空间的分配和保护。内存储器中允许同时容纳各种软件和多个用户程序时,必须解决内存空间如何分配以及各存储区域内的信息如何保护等问题。内存空间的重定位。配合硬件做好地址转换工作,把一组逻辑地址空间转换成绝对地址空间,以保证处理器的正确执行。内存空间的共享。在多道程序设计的系统中,同时进入内存储器执行的作业可能要调用共同的程序。内存空间的扩充。提供虚拟存储器,使用户编制程序时不必考虑内存储器的实际容量,使计算机系统似乎有一个比实际内存储器容量大的多的内存空间。 3.1.2存储器
27、的功能1程序的装入(1)绝对装入方式。也称直接分配方式。这种方式指程序在编写程序或编译程序对源程序编译时采用实际存储地址。采用这种方式,必须事先划定作业的可用空间,因此这种绝对装入方式的存储分配,存储空间的利用率不高,对用户使用也不方便。(2)可重定位方式。也称静态分配方式。在将作业装入内存时才确定它们在内存中的位置。也就是说,存储空间的分配是在作业装入内存时实现的。采用这种装入方式,在一个作业装入时必须分配其要求的全部存储量;如果没有足够的存储空间,就不能装入该作业。此外,作业一旦进入内存后,在整个运行过程中不能在内存中移动,也不能再申请内存空间。这种装入方式实际上就是静态重定位静态重定位。
28、(3)动态运行时装入方式。 3.1.3地址重定位2地址重定位基本概念地址重定位基本概念(1)逻辑地址)逻辑地址 一个应用程序经编译后,通常会形成若干个目标程序,这些目标程序再经过连接而形成可装入程序。这些程序的地址都从“0”开始的,程序中的其他地址都是相对于起始地址计算;由这些地址所形成的地址范围称为地址空间,其中的地址称为逻辑地址逻辑地址或相对地址。(2)绝对地址)绝对地址 当用户把作业交给计算机执行时,存储管理就为其分配一个合适的内存空间,这个分配到的内存空间可能是从“A”单元开始的一个连续地址空间,称为“绝对地址”空间,其中的地址称为物理地址或绝对地址。(3)地址重定位)地址重定位 由于
29、逻辑地址经常与分到的内存空间的绝对地址不一致,而且对于每个逻辑地址在内存储器中也没有一个固定的绝对地址与之对应。因此,不能根据逻辑地址直接到内存储器中去存取信息。由于处理器执行指令是按绝对地址进行的,为了保证作业的正确执行,必须根据分配到的内存区域对它的指令和数据进行重定位,即把逻辑地址转换成绝对地址。把逻辑地址转换成绝对地址的工作称为地地址转换址转换或地址重定位地址重定位或地址映射地址映射。 3静态、动态重定位静态、动态重定位 重定位的方式可以有静态定位静态定位和动态定位动态定位两种。(1)静态重定位)静态重定位 静态重定位在装入一个作业时,把作业中的指令地址和数据地址全部转换成绝对地址。由
30、于地址转换工作是在作业执行前集中一次完成的,所以在作业执行过程中就无需进行地址转换工作。这种定位方式称静态重定位静态重定位。 (2)动态重定位)动态重定位 动态重定位是在程序执行过程中,每当访问指令或数据时,将要访问的程序或数据的逻辑地址转换成物理地址。由于重定位过程是在程序执行期间随着指令的执行逐步完成的,故称为动态重定位动态重定位。 150011001250作业地址空间存储地址空间0LOAD1,25031002505001000LOAD1,12503图3.3动态重定位过程重定位寄存器具+逻辑地址作业地址空间存储地址空间0LOAD1,25031002505001000LOAD1,125031
31、100125015002501000(b)采用动态重定位时内存空间及地址重定位示意图(a)采用静态重定位后的内存空间 静态地址重定位和动态地址重定位示意图静态地址重定位和动态地址重定位示意图3.2连续分配存储管理方式3.2.1 单用户连续存储管理3.2.2 固定分区存储管理3.2.3 可变分区存储管理1. 单用户连续存储管理单用户连续存储管理 单用户连续存储管理方式是一种最简单的存储管理方式,它只能用于单用户、单任务的操作系统中。在这种管理方式下操作系统占了一部分内存空间,其余剩下的内存空间都分配给一个作业使用,即在任何时刻内存储器中最多只有一个作业。 3.2.1单用户连续存储管理单用户连续存
32、储管理示意图用户区作业队列cb0aOS区用户作业空闲区CPU界限寄存器a作业1 作业2 覆盖技术示意图cb0aOS区覆盖区1驻留区用户区D可覆盖的段覆盖区2主程序段DCAB2. 覆盖(覆盖(Overly)技术)技术 所谓覆盖覆盖就是指一个作业中的若干程序段和数据段共享内存的某个区域。其实现的方法是将一个大的作业划分成一系列的覆盖(程序段),每个覆盖是一个相对独立的程序单位,执行时并不要求同时装入内存的覆盖组成一组,并称其为覆盖段,将一个覆盖段分配到同一存储区域。3.交换(交换(Swapping)技术)技术 交换(对换)技术就是把暂时不用的某个程序或数据部分(或全部)从内存移到外存中去,以便腾出
33、必要的内存空间;或把指定的程序或数据从外存读到相应的内存中,并将控制权转给它,让其在系统上运行的一种内存扩充技术。内存外存交换交换示意图固定分区存储管理是在作业装入前,内存用户区被划分成若干个大小不等连续区域,每一个连续区称为一个分区,每个分区可以存放一个作业。一旦划分好后,内存储器中分区的个数就固定了。各个分区的大小可以相同,也可以不同,每个分区的大小固定不变,因此,也把固定分区称为静态分区。各分区的使用情况,用“分区分配表”来说明。3.2.2固定分区存储管理固定分区存储管理示意图e作业队列b0aOS区CPU上限寄存器d作业1 作业2c3下限寄存器正运行作业分区分区1分区2分区3空闲区d分区
34、号起始地址长度占用标志1aL102bL203cL31分区分配表分区分配表下限地址绝对地址块号页内地址p页表始址页表长度bmnbd物理地址越界中断页号页内地址逻辑地址pdCPU+3.3.3快表具有快表地址变换机构示意图快表页号块号b页表块号页内地址p页表始址页表长度页表寄存器bmnbd物理地址越界中断页号页内地址逻辑地址pd输入寄存器内存分页式存储管理把内存储器的可分配区域按页面大小分成若干块,分配内存空间按块为单位。可用一张内存分配表来记录已分配的块和尚未分配的块以及当前剩余的空闲块数。由于块的大小是固定的,所以可以用一张“位示图”来构成内存分配表。 3.3.4分页式存储空间的分配与回收031
35、0/10/1 0/1 0/1 0/10/1 0/1 0/1 0/1 0/1剩余块数0/10/10/10/10/10/1分页存储管理内存分配表分页存储管理能方便地实现多个作业共享程序和数据。 页的共享可节省内存空间,但实现信息共享必须解决共享信息的保护问题。通常的办法是在页表中增加一些标志,指出该页的信息可读/写、只读、只可执行等等。3.3.5页的共享与保护第100块第200块内存作业1页表页号 标志块号0只执行 1001读/写2002读/写3003只读30作业2页表页号 标志块号0只执行 1001读/写2322读/写4243读/写5684只读200共享程序共享数据目前,大多数计算机系统都支持非
36、常大的逻辑地址空间。在这样的环境下,页表就变得非常大,要占用很大的内存空间。而且页表还要求存放在连续的存储空间中,显然这是不现实的,可以采用以下两种途径解决这一问题。 (1)对页表所需的内存空间,采用离散的分配方式; (2)只将当前需要的部分页表项调入内存,其余的页表项当需要时再调入。 3.3.6两级和多级页表两级页表:两级页表:对于支持32位逻辑地址空间的计算机系统可以采用两级页表。就是将页表再分页,形成两级页表,。比如当一个32位系统的页大小为4KB,那么逻辑地址被分为20bit的页号和12bit页内地址。如果采用两级页表结构,对页表进行再分页,使每个页中包含1024个页表项,最多允许有1
37、024个页表分页,或者说,外层页表中的外层页内地址p2为10位,外层页号p1也为10位。多级页表多级页表:两级页表结构适合32位的机器,但是对于64位机器,两级页表结构就不再合适了。 外层页号外层页内地址页内地址31222112110p1p2d两级页表地址结构3.4段式存储管理3.4.1 引入的原因3.4.2 段式存储管理基本思想3.4.3 地址变换机构与存储保护3.4.1引入的原因在分页存储管理中,用户程序的地址空间是从0开始编址的单一连续的逻辑地址。虽然操作系统可把程序划分成若干个页面,但是页面与源程序无逻辑关系,也就难以实现对源程序以模块为单位进行分配、共享和保护。 在段式存储管理中,段
38、是一组逻辑信息(独立信息段)的集合。在单纯的分页存储管理中,这些信息都混在一起,并统一编址,显然,分页系统并不是编程人员愿意接受的信息组织方式。因此按照信息原有的方式组织数据是必要的,也是支持高级语言必要的。 3.4.2段式存储管理基本思想在编制程序时每一段都可独立编制,每一段的逻辑地址都是从“0”开始编址,每段的长度不一定相同,形成了段内地址是连续段内地址是连续的,而段与段之间的地址是不连续段与段之间的地址是不连续的。 当作业被装入内存储器时,以段为单位为作业的每一段分配一个连续的内存区域 ,各段之间也可不必连续 ,分配方法同可变分区方式 。 装入作业时,用一张段表记录该作业每个分段在内存中
39、起始地址和长度 。3116150段号S段内地址d段式存储管理地址结构段式存储管理原理图作业空间040K120K160K200K210段长基址8KB10KB5KB18KB120K160K200K40KS0段号3S1S2S3内存空间S018KBS210KBS35KBS18KB段表3.4.3地址变换机构与存储保护1.地址变换机构地址变换机构段式地址变换过程0段号段长基址pp-1段表内存段表始址段表长度段表寄存器mfsn物理地址越界中断段号段内地址逻辑地址pdCPU2.共享与保护共享与保护 段是信息的逻辑单位,段式存储管理方式可以方便地实现内存的信息共享,并进行有效的内存保护。段式存储管理的保护主要有
40、地址越界保护和存取方式控制保护。段的共享200K400K100K200K内存作业1段表段长 标志始址200K 只执行 100K100K 读/写200K300K 读/写300K400K 只读50K作业2段表段长 标志始址200K 只执行 100K200K 读/写232K320K 读/写424K100K 读/写568K400K 只读200K共享程序共享数据始址 段长(1)页是信息的物理单位,分页是由于系统管理的需要。段是信息的逻辑单位,它含有意义相对完整的信息(程序段或数据段等)。分段的目的是为了更好的满足用户的需要;(2)页的大小是固定并且由系统决定,段的长度不定,取决于用户所编写的程序,通常由
41、编译程序在对源程序进行编译时,根据信息的性质来划分;(3)页式在存储管理中的逻辑地址空间是一维的,段的逻辑地址空间是二维的;(4)页式存储管理的优点是在管理内存空间上,而段式存储管理的优点是在管理逻辑地址空间上。3.段式与页式存储的区别段式与页式存储的区别 3.5段页式存储管理3.5.1段页式存储管理原理3.5.2地址变换3.5.1 段页式存储管理原理段页式存储管理原理段页式存储管理基本原理是分段和分页相结合。内存采用分页存储管理方式,将内存划分成大小相等的物理块,用户程序的逻辑地址空间采用分段方式,按程序的逻辑关系把地址空间分成若干个逻辑段,每一段不是按单一的连续整体存放到内存中,而是把每段
42、再分成若干个页面,每一段不必占据连续的内存空间,可把它按页存放在不连续的内存块中,每一段中的所有页必须在其所在每一段中的所有页必须在其所在的段内,即段内的页是离散分配的的段内,即段内的页是离散分配的。 段号s段内地址d段页式存储管理逻辑地址格式段内页号p内存段表段表寄存器段表长度 段表始址段号 状态 页表长度 页表始址0123页号 状态0123块号页号 状态0123块号操作系统段页式存储管理的地址映射3.5.2 地址变换地址变换图3.32段页式地址变换过程块号块内地址p0121ss-1页表内存段表始址段表长度段表寄存器mn物理地址越界中断段号页号页内地址逻辑地址CPUspd页表长度页表始址3.
43、6虚拟存储器3.6.1局部性原理3.6.2虚拟存储器的定义和特征3.6.3虚拟存储器的实现方法早在1968年P.Denning就指出过,程序在执行时将呈现出局部性规律,即在一较短的时间内,程序的执行仅限于某个部分;相应的它所访问的存储空间也局限于某个区域。 局部性表现如下。 (1)时间局部性。如果程序中的某条指令一旦执行,则不久以后该指令可能再次被执行;如果某个存储单元被访问,则不久以后该存储单元可能再次被访问,产生时间局部性的典型原因是在程序中存在大量的循环操作。 (2)空间局部性。一旦程序访问了某个存储单元。则不久以后,其附近的存储单元也将被访问,即是程序在一段时间内访问的地址可能集中在一
44、定范围内,引起空间局部性的典型原因是程序的顺序执行。3.6.1 局部性原理局部性原理3.6.2 虚拟存储器的定义和特征虚拟存储器的定义和特征1.虚拟存储器定义虚拟存储器定义 :就是指把用户的作业的一部分装入内存便可运行作业的存储系统。其实际上用户看到的大容量只是一种感觉,是虚的,故而称为虚拟存储器。2. 虚拟存储器特征虚拟存储器特征(1)离散性。指在内存分配时采用离散分配方式。(2)多次性。指一个作业运行时分成多次装入内存。(3)对换性。指作业运行过程中在内存和外存的对换区之间换进换出。(4)虚拟性。指能够从逻辑上扩充内存容量,使用户感觉到的存储器容量远远大于实际的内存容量。 3.6.3 虚拟
45、存储器的实现方法虚拟存储器的实现方法(1)请求页式存储管理 请求页式存储管理是在页式存储管理基础上增加了请求调页功能、页面置换功能所形成的页式虚拟存储分配系统。程序启动运行时装入部分用户程序页和数据页,在以后的运行过程中,访问到其他逻辑页时,再陆续将所需的页调入内存中。请求调页和置换时,需要页表机构、缺页中断机构、地址变换机构等硬件支持。(2)请求段式存储管理 请求段式存储管理是在段式存储管理方式的基础上增加了请求调段和分段置换功能而形成的段式虚拟存储管理,只需装入部分程序段和数据段即可启动运行,以后出现缺段时再动态调入。实现请求分段同样需要分段的段表机制、缺段中断机构、地址变换机构等软硬件支
46、持。3.7请求分页存储管理3.7.1页表机制3.7.2缺页中断3.7.3地址变换3.7.4页面分配3.7.5页面淘汰算法3.7.1 页表机制页表机制在请求分页存储管理的方式中,页表仍然是重要的数据结构,其主要作用是实现用户逻辑地址空间中逻辑地址到内存空间中的物理地址的变换。在虚拟存储器中,由于应用程序并没有完全调入内存,所以页表结构根据虚拟存储器的需要增加了若干项,如图所示。其中:(1)状态位P用于该页是否已调入内存,供程序访问时参考;(2)访问字段A用于记录本页在一段时间内被访问的次数,或最近多长时间未被访问,供转换算法选择换出页面时参考;(3)修改位M表示该页在调入内存后是否被修改过。(4
47、)外存地址用于指出该页在外存上的地址,通常是物理块(簇)号,供调入该页时使用。请求分页虚拟存储管理方式的页表结构页号块号状态位P访问字段A修改位M外存地址3.7.2 缺页中断缺页中断在请求分页存储管理中,当所要访问的页不在内存时,便要产生缺页中断,请求操作系统将所缺页调入内存。缺页中断与一般中断不同,区别如下。 (1)缺页中断是在执行一条指令期间时产生的中断,并立即转去处理,而一般中断则是在一条指令执行完毕后,当发现有中断请求时才去响应和处理; (2)缺页中断处理完成后,仍返回到原指令去重新执行,因为那条指令并未执行。而一般中断则是返回到下一条指令去执行,因为上一条指令已经执行完毕了。3.7.
48、3 地址变换地址变换请求分页系统中进行地址变换时,首先要检测该页面是否在内存,如果该页面在内存中,则地址变换方式与页式存储管理方式相同;如果该页不在内存中,则进行缺页中断处理。进行缺页中断处理时首先判断内存空间是否够用,如果内存没有可用空间,必须进行置换以腾出可用空间。越界中断NNY开始(程序访问第一页)页号页表长度?访问页面Y页是否在内存?调整页表形成物理地址地址变换结束从外存中找到缺页缺页中断处理NY内存满否?淘汰一个页面Y该页是否修改过?N将该页写回内存将缺页调入内存调整页表请求分页存储管理的地址变换过程3.7.4 页面分配页面分配在为进程分配物理块时,首先考虑的是:保证进程能正常运行所
49、需要的最少物理块数。若系统为某进程分配的物理块数小于此值时进程将无法运行。其次,要考虑的问题是页面的分配和置换策略。在请求分页存储管理中可采用固定和可变两种分配策略。在进程置换时,也可采用全局置换和局部置换两种策略。组合成如下三种策略。 (1)固定分配局部置换策略 (2)可变分配全局置换策略 (3)可变分配局部置换策略3.7.5 页面淘汰算法页面淘汰算法发生缺页时,就要从外存上把所需要的页面调入到内存。如果当时内存中有空闲块,那么页面的调入问题就解决了;如果当时内存中已经没有空闲块可供分配使用,那么就必须在内存中选择一页,然后把它调出内存,以便为即将调入的页面让出块空间。这就是所谓的“页面淘汰
50、”问题。选择淘汰对象有很多种策略可以采用,比如: 1.先进先出(FIFO)页面淘汰算法 (firstinfirstout,FIFO)2.最近最久未使用页面淘汰算法(LeastRecentlyUsed,LRU) 3.最近最少用页面淘汰算法(LeastFrequentlyUsed,LFU) 4.最佳页面淘汰算法(Optimal,OPT)1最最优算法(算法(OPT算法)算法)最理想的页面置换算法是:从内存中移出以后不再使用的页面;如无这样的页面,则选择以后最长时间内不需要访问的页。这就是最优算法的思想。这种算法本身不是一种实际的方法,因为页面访问的顺序是很难预知的。但是,可把它作为一种评价标准,比较
51、其他实用方法的优劣,所以,最优算法只具有理论上的意义。2先先进先出算法(先出算法(FIFO算法)算法)这种算法的基本思想是:总是先淘汰那些驻留在内存时间最长的页面,即先进入内存的页面先被置换掉。理由是:最先进入内存的页面不再被访问的可能性最大。 3最久未使用最久未使用页面置面置换算法(算法(LRU算法)算法)这种算法的基本思想是,如果某一页被访问了,那么它很可能马上又被访问;反之,如果某一页很长时间没有被访问,那么最近也不太可能会被访问。这种算法考虑了程序设计的局部性原理。其实质是,当需要置换一页时,选择在最近一段时间最久未使用的页面予以淘汰。实现这种算法可通过周期性地对“引用位”进行检查,并
52、利用它来记录一页面自上次被访问以来所经历的时间t,淘汰时选择t最大的页面。 4LRU近似算法近似算法这种算法,只要在存储分块表(或页表)中设一个“引用位”,当存储分块表中的某一页被访问时,该位由硬件自动置1,并由页面管理软件周期性把所有引用位置0。这样,在一个时间周期T内,某些被访问过的页面其引用位为1,而未被访问过的页面其引用位为0。因此,可根据引用位的状态来判别各页面最近的使用情况。当需要置换一页面时,选择其引用位为0的页,如图4.21所示的算法 。图4.22是这种近似算法的一个例子。 【例题】在请求页式存储管理系统中,设一个作业访问页面的序列为4,3,2,1,4,3,5,4,3,2,1,
53、5,设分配给该作业的存储空间有4块,且最初未装入任何页。试计算FIFO和LRU算法的缺页率。解:采用FIFO页面淘汰算法,该作业运行时缺页情况如表所示时刻123456789101112访问页面432143543215内存页面432111543215432221543214333215432444321543缺页+从表中可以看出,缺页中断次数为10;缺页率为f=10/12=83%采用LRU页面淘汰算法,该作业运行时缺页情况如表所示时刻123456789101112访问页面432143543215内存页面432143543215432143543214321435432432111543缺页+从表
54、中可以看出,缺页中断次数为8;缺页率为f=8/12=67%3.8.1请求分段存储管理基本思想 3.8.2 缺段中断 3.8.3 地址变换和共享保护 3.8请求分段存储管理3.8.1请求分段存储管理基本思想请求分段存储管理基本思想为了实现请求分段存储管理方式,段表中增加一些控制项,如图所示,请求分段表项,缺段中断处理和地址变换机构也有相应的变化。 其中:(1)存取方式:用于标记本分段存取属性是只执行、只读或读/写;(2)访问字段:用于记录该字段被访问的频繁程度;(3)修改位:用于表示该段进入内存后是否被修改过;(4)增补位:用于表示本段在运行过程中是否进行过动态增长;(5)外存地址:指示本段在外
55、存中的起始地址。请求分段虚拟存储管理方式的页表结构段号段长段的基址存取方式访问字段修改位 存在位增补位 外存地址3.8.2 缺段中断缺段中断在被访问的段不在内存时产生一个缺段中断。缺段中断的处理与缺页中断处理类似,但比缺页中断复杂。因为各段的段长不固定,系统在处理缺段中断时,首先在内存中查找是否有足够大的空闲区分给该段,如果有则将该段调至这个空闲分区,否则查找空闲分区的总和。如果能够满足需要则对空闲分区进行拼接,形成一个合适的空闲分区,然后调入该段。如果空闲分区总和仍不能满足要求,则必须置换出内存中的一个或几个分段后再进行拼接,其后再调入该段。3.8.3 地址变换和共享保护地址变换和共享保护1
56、. 地址变换地址变换 段号、段长和内存起始地址这三个信息是进行段式地址变换所必须的。当要访问的段在内存时,地址变换过程与分段存储管理相同;当要访问的段不在内存时,则先将该段调入内存后再进行地址变换,这样的话,在地址变换机构中增加了某些功能,如缺段中断的请求及处理等。2. 分段的共享与保护分段的共享与保护 实现分段共享需要在段表中设置相应的表项来指向共享段在内存中的起始地址。为了分段共享,应配置相应的共享段表,用来对共享段进行操作。本章小结本章小结本章介绍各种常用的内存管理办法,它们是单一用户连续存储管理、固定分区、可变分区存储管理、页式存储管理、段式存储管理和段页式存储管理。内存管理的核心问题
57、是如何解决内存和外存的统一,以及它们之间的数据交换问题。内存和外存的统一管理使得内存的利用率得到提高,用户程序不再受内存可用区大小的限制。与此相关联,内存管理要解决内存扩充、内存的分配与释放、虚拟地址到内存物理地址的变换、内存保护与共享、内外存之间数据交换的控制等问题。 系统地对几种存储管理方法所提供的功能和所需硬件支持作了一个比较。第4章文件管理本章学习目标 4.1文件系统概述4.2文件的结构及存取方式4.3目录管理4.4文件的使用4.5文件的共享与安全本章目标本章目标 理解与掌握文件与文件系统的基本知识。理解与掌握文件的存储结构和存取方式。理解与掌握文件的存储空间的管理。理解与掌握目录管理
58、知识。本章学习目标文件、文件系统、文件目录、目录项、文件共享等基本概念及文件的分类文件的两种逻辑结构及两种存取方法文件的三种物理结构:连续结构、链接结构及索引结构三种目录结构:单级、两级、多级目录结构 文件的共享及保护外存空间的管理方法 4.1 文件系统的功能文件系统的功能 4.1.1文件与文件系统4.1.2文件的分类、文件名及属性4.1.3文件系统的功能 4.1.1 文件与文件系统文件与文件系统1. 文件的概念文件的概念 文件是具有符号名的一段程序或数据的集合,通常存储在计算机系统的外存上。文件具有如下三个基本特征。 (1)文件的内容是一组信息的集合,比如源程序、可执行的二进制代码程序、待处
59、理的数据、表格、声音及图像等。 (2)文件可以保存,文件被存放在如磁盘、磁带和光盘等存储介质上,内容可以被长期保存和多次使用。 (3)文件可按名存取,每个文件都具有自己的标识名,用户操作时可通过这个标识名来存取文件,而无需了解文件在存储介质上的具有物理位置。2. 文件系统文件系统 操作系统中与文件有关的软件和数据称为文件系统。它由管理所需的数据结构、相应的管理软件和被管理的文件构成。它负责为用户建立文件,撤销、读写、修改和复制文件,还负责完成对文件的按名存取和进行存取控制。文件系统方便用户对信息进行存取和管理,用户即使不具备相应的存取设备知识,也能进行操作。 文件系统具有如下特点。 (1)提供
60、友好的用户接口,包括命令、程序和菜单等接口,用户在对文件进行操作时,不需要了解文件的结构和存储位置。 (2)文件按名存取,方便用户操作,如对文件的存取、检索和修改等。 (3)某些文件可以被多个用户或进程共享,也能安全保护,防止文件被破坏和窃取。 (4)文件系统通常使用磁盘等大容量存储介质,可存储大量信息。 4.1.2 文件的分类、文件名及属性文件的分类、文件名及属性1. 文件的分类文件的分类 为了便于管理和控制文件,需要将文件分成多种类型。常见的文件分类方法有以下几种。按文件的用途分类: (1)系统文件(2)用户文件 (3)库文件。按文件的数据形式分类 (1)源文件(2)目标文件(3)可执行文
61、件。 按操作保护分类: (1)只读文件 (2)读写文件 (3)执行文件。按文件的逻辑结构分类 (1)有结构文件 (2)无结构文件按文件的物理结构分类 (1)顺序文件 (2)链接文件 (3)索引文件 2.文件名文件名 文件是具有符号名的一段程序或数据的集合。文件名由两部分组成:主文件名和扩展名。主文件名一般由用户给定,操作系统和用户都利用主文件名来管理和使用文件;文件的扩展名,一般情况下都按照约定俗成使用,这样有利于对文件的正确使用。 3. 文件的属性文件的属性 大多数操作系统设置了专门的文件属性用于文件的管理控制和安全保护,它们虽然不是文件的信息内容,但对于系统的管理和控制是十分重要的。不同的
62、系统文件属性有所不同,但是通常都包括如下属性。 (1)文件的基本属性(2)文件的类型属性(3)文件的操作属性(4)文件的管理属性(5)文件的控制属性(1)文件存储空间的管理。(2)文件目录管理。(3)实现从文件到存储空间的映射。(4)实现文件的共享、保护和保密。(5)文件的读/写管理。(6)提供用户接口。4.1.3 文件系统的功能文件系统的功能4.2 文件的结构及存取方式文件的结构及存取方式 4.2.1 文件的逻辑结构 4.2.2 文件的物理结构 4.2.3 存取方式4.2.4 文件的存储设备4.2.5 文件存储空间管理4.2.1 文件的逻辑结构文件的逻辑结构 用户按自己对信息的处理要求确定的
63、文件结构称文件逻辑结构或逻辑文件。逻辑文件可以有两种形式。1. 记录式文件记录式文件 记录式文件是指用户可把信息按逻辑上独立的含意划分信息单位,每个单位称为一个逻辑记录(简称记录)。逻辑记录由一组数据项(或称字段、属性)组成。记录长度可分为定长和变长两类。2. 流式文件流式文件 流式文件是指对文件内的信息不再划分单位,是由字符序列组成。文件内的信息不再划分结构。如果说大量的数据结构和数据库是采用有结构的文件形式的话,那么大量的源程序、可执行文件和库函数等采用的则是无结构的文件形式。流式文件长度以字节为单位。 4.2.2 文件的物理结构文件的物理结构 文件在存储介质存储介质(用来记录信息的磁带、
64、磁盘、光盘、卡片等)上的组织方式称文件的存储结构存储结构或称为物理文件物理文件。主要介绍以下三种结构: 1顺序结构:顺序结构:一个文件在逻辑上连续的信息存放到磁 盘上依次相邻的块上,便形成顺序结构。 2链接结构:链接结构:链接结构是把每个物理块的最后一个单元用作指针,指向下一物理块的地址,通过指针链接形成物理文件结构。 3索引结构:索引结构:索引结构为每个文件建立一张索引表,用以指示逻辑记录与物理块之间的映射关系,也称索引文件。 1、 顺序结构顺序结构 文件目录文件名始址文件长度ABC24BCD69EFGH1632345678911121314151617181物理存储介质顺序结构的优点是一旦
65、知道了文件在存储介质上起始地址和文件长度,便可以很快地进行存取,且文件系统管理简单。但采用顺序结构使磁盘的存储空间的利用率不高。2、 链接结构链接结构文件目录文件名始址文件长度ABC24BCW63EFG1231234567891011121314150物理存储介质链接结构也只适合逻辑上连续的文件,且存取方式是顺序存取的文件。对随机存取文件,其存取速度慢,因为只能按链接指针从头呈尾顺序查找。3、 索引结构索引结构关键字物理块号0000182720文件目录文件名索引表指针ABC索引表220718采用索引结构也便于增加、删除文件的记录,既适合顺序存取记录又适合按任意次序随机存取记录。索引结构的缺点是
66、当文件的记录很多时,索引表就很庞大。(1)顺序存取方式顺序存取方式。按文件的逻辑地址顺序存取。(2)直接存取方式直接存取方式。又称随机存取方式。允许用户随意存取文件中的任何一个物理记录,而不管上次存取了哪一个记录。(3)按键存取方式按键存取方式。按键存取法,它不是根据记录编号或地址来存取,而是根据文件中各记录内容进行存取。适用于这种存取方法的文件组织形式也与顺序文件不同,它是按逻辑记录某个数据项的内容来存放的,这种数据项通常被称为键。这种根据键而不是根据记录号进行存取的方法称为按键存取方式。 4.2.3 存取方式存取方式4.2.4 文件的存储设备文件的存储设备常用的存储设备有磁盘、磁带和光盘等
67、,存储设备的特性决定了文件可能的物理结构和存取方式(方法)。(1)顺序存取设备,比如磁带。(2)直接存取设备,比如磁盘。存储设备磁盘磁带物理结构顺序结构链接结构索引结构顺序结构存储方式直接或顺序顺序直接或顺序顺序文件长度固定可变、固定可变、固定固定存储设备、存取方式和物理结构之间关系存储设备、存取方式和物理结构之间关系 磁盘一般由若干盘片组成。每个盘片被格式化成若干磁道,每磁道又被划分为若干个扇区,每个扇区存放相同容量的信息,(一般为512B)的信息。多个盘面的同一磁道形成一个柱面。其中每个盘片对应一个装有读写头的磁头臂,由磁头臂上两个读写磁头分别对磁盘片的上下两面进行读写。所以,磁盘上每个物
68、理盘块的位置可以由柱面号、磁头号和扇区号表示。 主轴马达主轴马达(Spindle Motor)音圈马达音圈马达(Voice Coil Motor)磁头驱动器磁头驱动器(Actuator)基座基座(Base Plate)盘片盘片(Media)硬盘基本结构图扇区1磁道扇区0硬盘结构示意图 存放文件的存储介质分为一个个单位称为文件卷。例如一个光盘作为一个卷。只能保存一个文件的卷称为单文件卷,否则称为多文件卷;保存在多卷上的文件称为多卷文件;多个文件保存在多个卷上称为多卷多文件。存储介质上连续的存储单元组成固定大小的区域称为物理块(这在前面已介绍)。文件存储空间的管理主要就是空闲物理块的管理,常用方法
69、如下。 (1)空闲文件目录法 (2)空闲块链法 (3)位示图法4.2.5 文件存储空间管理文件存储空间管理(1)空闲文件目录法)空闲文件目录法 这种方法的基本思想是若干连续的空闲块组成一个空闲文件,系统为每个空闲文件建立一个目录项,里面记录空闲文件的超始空闲块号和块数。当请求分配存储空间时,操作系统依次扫描空闲文件目录中的表目,直到找到一个合适的空闲文件为止。当用户撤销文件时,操作系统回收该文件空间,这时也要扫描空闲文件目录表,寻找一个空白表目,将释放的空闲文件的有关信息填入该表目中。序号起始空闲块号空闲块数物理块号0545、6、7、8113313、14、15220520、21、22、23、2
70、43空闲文件目录空闲文件目录 空闲文件目录法只有当空闲区不多时才有好的效果。当空闲区很多时,就需要很多表目,空闲文件目录也就增大,使管理效率降低,而且这种分配技术适用于连续文件。 (2)空闲块链法)空闲块链法 空闲块链是将所有空闲块通过指针链接起来,当请求分配时从链的头部依次取下需要的块数,回收时也很简单,只需将释放的空闲块链接到空闲块链即可。系统只需要在内存中保留链头指针,即可实现空闲块链的管理,所以管理简单方便。但在链表上每增加或移动一个空闲块时就需要一次I/O操作,因而效率较低。 (3)位示图法)位示图法位示图中的位和物理块一一对应,块空闲则对应的位置为0,否则为1。利用这个位示图就能进
71、行分配和回收。当请求分配时,在位示图中寻找状态为0的位,再进行简单的转换将其转换为相应的块号进行分配,然后将图中的状态设置为1。回收时也一样,只需要进行简单的转换将物理块转换为位示图中的位置,将其状态设置为0即可。 位字节01234567011100001100000111200000000位示图位示图4.3目录管理4.3.1文件的组成4.3.2文件的目录结构 在计算机系统中有许多的文件,为了便于对文件进行存取和管理,必须建立文件名与文件物理位置的对应关系。在文件系统中将这种关系称为文件目录文件目录。操作系统中对文件目录的管理有以下要求。 (1)实现“按名存取”。用户只需要提供文件名,即可对文
72、件进行存取,这是目录管理中最基本的功能,也是文件系统向用户提供的最基本的服务。 (2)提高对目录的检索速度。通过合理组织目录结构来加快对目录的检索速度,从而加快了对文件的存取速度,这是在设计大、中型文件系统时所追求的主要目标。 (3)文件共享。在多用户系统中应允许多个用户共享一个文件,这样只需在外存中保留一份该文件的副本,供不同用户使用,以节省大量的存储空间并方便用户。 (4)允许文件重名。操作系统中应允许不同用户对不同文件存取相同的名字的文件,以便于用户按照自己的习惯命名和使用文件。 4.3.1 文件的组成文件的组成 文件目录是文件系统实现按名存取的重要手段,文件目录由若干目录项组成,每个目
73、录项中除了指出文件的名字和文件存放的物理地址外,还可包含存取控制信息和文件使用信息等对文件静态信息的描述。操作系统使用一个数据结构存放文件说明部分的全部信息,此数据结构称为文件控制块(FCB)。一般包括以下内容。 (1)基本信息 文件名、文件物理位置、文件结构。 (2)存取控制信息 各类用户(文件主、核准用户、普通用户)的存取权限,实现文件的共享和保密。 (3)使用信息 文件创建或修改的日期和时间,当前使用的状态信息。 4.3.2 文件目录结构文件目录结构1.一级目录一级目录 这种结构为一个文件卷设置一个目录表,就是文件系统在存储介质上建立一个文件目录,这样的目录结构称为一级目录。目录文件中的
74、每个目录项对应一个磁盘文件的FCB。这种目录结构很简单,但由于一个文件卷中的所有文件都登记在一个目录文件中,因此目录文件会变得非常大,通过它来查找文件,效率就变得很低,而且会遇到文件命名冲突情况。 2.2.二级目录二级目录 二级目录结构将文件目录分为两级:第一级为系统目录,也称主目录,它包含了用户目录名和指向该用户目录文件的指针;第二级为用户目录,它包含了该用户所有文件的文件目录项,解决命名冲突问题。主目录用户A用户B用户A目录文件ABC文件EFG用户B目录文件x文件y文件zxzyABCEFG二级目录文件结构3. 多级目录多级目录 多级文件目录结构采用树状数据结构组织目录和文件。多级目录结构中
75、,文件的路径名是由根目录到该文件的路径上所有目录文件名和该文件的符号名组成,它是文件的外部标识。 多级目录文件结构根目录abc子目录bcde子目录atfc子目录fksn子目录cngy子目录drxp子目录ezttksngyrpzt4.4 文件的使用文件的使用 文件系统把用户组织的逻辑文件按一定的方式转换成物理文件存放在存储介质上,当用户需要文件时,文件系统又要从存储介质上读出文件并把它转换成逻辑文件,文件系统为用户提供按名存取的功能,方便用户。为了保证文件的安全,文件系统也要求用户按系统的规定和提供的手段来使用文件。 文件系统提供给用户使用文件的一些命令,用户使用这些命令能够灵活、方便、有效地使
76、用和控制文件。最基本的命令包括建立文件,撤销文件,打开文件和关闭文件,读文件和写文件。 4.5.1 文件共享4.5.2 文件保护4.5 文件的共享与安全文件的共享与安全 在多用户环境下,如果系统提供文件共享功能,可以提高文件的利用率,避免存储空间的浪费。因此,系统应提供文件共享,使所有共享用户可以通过文件名来访问同一个文件。不同的系统实现的方法不尽相同,主要有绕道法、链接法和基本文件目录法三种。 4.5 .1 文件共享文件共享与共享文件路径的交叉点当前目录被共享的文件(1)绕道法:实现共享时,令用户从当前目录出发,向上返回到与将要共享的文件具有的路径的交叉点,再从该交叉点向下访问共享文件。(2
77、)链接法:在共享文件指定的目录下为该共享文件建立一个目录项,其地址指向被共享文件所在的目录,用户通过该指针找到被共享文件的目录,然后在该目录中找到被共享文件。 例如,用户需要在当前目录下建立一个x文件共享某个目录路径下的y文件,则操作系统在当前目录下增加一个目录项,其文件名为x,其指针指向给定路径的目录,其中包括了被共享文件y。 链接法当前目录xaya被共享文件目录(3)基本文件目录法 基本文件目录是实现文件共享的有效方法,它将文件目录的内容分为两个部分:基本文件目录表和符号文件目录表。 基本文件目录表。存放文件目录信息中除了文件名以外的其他信息,诸如文件结构信息、物理块号、存取控制和管理信息
78、等,由操作每个文件的基本文件目录表赋予一个唯一的内部标识。 符号文件目录表。由用户给出的文件名和操作系统赋予的文件内部标识两项组成。符号文件目录表依然作为文件的多级目录结构保留在目录树中。 这样将文件数据结构中的内容分为内部信息和外部信息,好处是便于实现文件共享,以及提高文件查询效率。4.5 .2 文件保护文件保护 在计算机使用过程中,一方面要防止系统出现异常情况和一些自然因素破坏文件系统信息,如磁盘损坏,自然灾害等;另一方面要防止人为的破坏,如人们有意或无意的行为而使文件系统中的数据遭到破坏或丢失 。首先讨论文件的存取控制问题,然后再介绍一个在实际系统中使用的,在系统级、用户级、目录级和文件
79、级等四个级别上对文件进行安全管理的措施。 1. 文件存取控制文件存取控制 2. 分级安全管理分级安全管理 1. 文件存取控制文件存取控制文件系统的存取控制应该做到:对于拥有读、写或执行权限的用户,应让其对文件进行相应操作;对于没有读、写或执行权限的用户,应禁止它们对文件进行相应操作;应防止一个用户冒充其他用户误用文件。这些功能是由一组称为存取控制验证模块的程序提供的,它们分三步来验证用户的存取操作。审定用户的存取权限;比较用户权限的本次存取要求是否一致;将存取要求和被访问文件的保密性比较,看是否有冲突。一般有四种方式来验证用户的存取操作。存取控制矩阵;存取控制表;口令;密码。用户文件用户a用户
80、b用户cFile1RWWRWEFile2RWEWWEFile3ERWRWE存取控制矩阵存取控制矩阵存取控制表存取控制表用户文件名文件主A组B组其他ABCRWERWEEEFGRWERWRHIJKREENONE口令方式口令方式口令方式有两种:一种是当用户进入系统,为建立终端进程时获得系统使用权口令。若用户输入的口令与原来设置的口令不一致,该用户将被系统拒绝。另一种是,每个用户在创建文件时,为创建文件时设置的口令。用户在使用文件时,必须提供口令。口令设置则可将口令赋予其他用户,从而,即可做到文件共享,又可做到保密。口令方法较为简单,但相对来说,口令方式的保密性能较差。密码方式密码方式密码方式是用户创
81、建源文件并将其写入存储设备时对文件进行编码加密,在读出文件时对其进行译码解密,密码方式保密性较好,但加密和解密时系统运算量较大。2.2.分级用户管理分级用户管理(1)系统级安全管理 系统级安全管理就是拒绝未经核准的用户进入系统,以保护系统中各类资源(包括文件)的安全,常用方法是注册登录法。 (2)用户级安全管理 用户级安全管理就是通过对所有用户进行分类和限定种类用户对目录和文件的访问权限来保护系统中目录和文件的安全。 (3)目录级安全管理 目录级安全管理是为了保证目录的安全,规定只有系统核心才具有写目录的权利,它与用户权限无关, (4)文件级安全管理 文件级安全管理主要是通过文件属性的设置来控
82、制用户对文件的访问。 本章小结本章小结1.文件的逻辑结构、物理结构以及文件存取方式;2.文件系统的功能3.目录管理4.文件的使用、共享及安全THANKYOUVERYMUCH!本章到此结束,谢谢您的光临!第第5章章 设备管理设备管理5.1 设备管理概述设备管理概述5.2 输入输入/输出(输出(I/O)控制方式)控制方式 5.3 中断和缓冲技术中断和缓冲技术 5.4 设备分配设备分配 5.5I/O设备驱动程序设备驱动程序 5.6 磁盘的驱动调度磁盘的驱动调度 本章目标本章目标 理解与掌握设备管理的任务与功能知识。理解与掌握设备管理的控制方式。理解与掌握设备的分配知识。理解与掌握磁盘驱动调度知识。5
83、.1 设备管理概述设备管理概述5.1.1 I/O系统结构系统结构5.1.2 设备管理的主要任务设备管理的主要任务 5.1.3 设备管理的主要功能设备管理的主要功能 5.1.4 设备分类设备分类 5.1.5 设备控制器和设备控制器和I/O通道通道 5.1.1 I/O系统结构系统结构1. I/O系统结构系统结构 I/O系统一般由I/O设备及其接口线路、控制部件、通道和I/O软件组成。大多数I/O系统都采用基于总线的结构。总线是计算机各部件之间进行数据传送的公共的通路,在其上传送数据都遵循严格定义的协议。各部件只与总线相连接,它们之间的数据发送也是通过总线来实现。 系统总线内存CPU控制器控制器控制
84、器控制器(a)单总线结构(b)双总线结构I/O总线系统总线内存CPU总线控制器控制器控制器控制器控制器图(a)单总线结构是把所有快速设备(CPU、内存等)和慢速设备(打印机、扫描仪等)都连接在一条总线上,快慢速设备只能采用异步应答方式实现数据传送;而图(b)采用系统总线和I/O两条总线,系统总线实现CPU与内存之间的快速数据传送,I/O设备通过I/O总线、总线控制器(如通道)与CPU、内存之间实现数据传送。2. I/O软件结构软件结构I/O系统功能的实现要通过I/O软件和I/O硬件的配合才能完成。 层用户级进程设备无关级I/O程序设备驱动程序中断处理程序硬件I/O功能发出I/O调用,SPOOL
85、ing设备名解析、阻塞、缓冲分配设备寄存器、检查状态I/O完成后唤醒设备驱动完成I/O操作I/O功能各层的主要功能5.1.2 设备管理的主要任务设备管理的主要任务设备管理是对计算机I/O系统的管理,这是操作系统中最具多样性和复杂性的部分,也是操作系统的重要组成部分。设备管理的主要任务包括以下几点。 (1)选择和分配I/O设备以便进行数据传输操作。 (2)控制I/O设备和CPU或内存进行数据传输操作。 (3)提高CPU和设备以及设备之间、进程之间的并行操作度,以便操作系统获得最佳效率。 (4)为用户提供一个友好的透明接口,把用户和硬件设备特性分开,使用户不必涉及具体设备,设备就可以按用户的要求工
86、作。同时,还方便用户开发新的设备管理程序。 5.1.3 设备管理的主要功能设备管理的主要功能 (1)动态地掌握并记录系统中所有设备的状态。系统中的设备很多,这些设备在系统运行期间的状态也各不相同。系统必须能在任何时间快速地掌握并记录设备的运行情况。(2)设备分配。按照设备的类型和系统中所采用的分配算法,决定把某个I/O设备分配给要求使用该设备的进程。(3)设备控制。设备控制是设备管理的另一功能,它包括设备驱动和设备中断处理,具体的工作过程在设备处理的程序中发出驱动某设备工作的I/O指令后,再执行相应的中断处理。(4)完成实际的I/O操作。当系统把设备分配给某一个进程后,设备管理程序首先应该根据
87、用户提出的I/O请求构成相应的I/O程序,提供给通道去执行。然后,启动的设备进行I/O操作。最后,对通道发来的中断请求做出及时的响应和处理。 5.1.4 设备分类设备分类从不同的角度出发,I/O设备可分为成不同的类型。下面列举几种常见的分类方法。1. 按设备的从属关系分类按设备的从属关系分类:(1)系统设备(2)用户设备2. 按操作特性分类按操作特性分类(1)存储设备(2)I/O设备3. 按设备的共享分类按设备的共享分类(1)共享设备(2)独占设备(3)虚拟设备4. 按信息交换单位分类按信息交换单位分类(1)字符设备(2)块设备5.1.5 设备控制器和设备控制器和I/O通道通道1. 设备控制器
88、设备控制器设备控制器处于CPU与I/O设备之间,它接收从CPU发来的命令,并去控制I/O设备工作,使处理器从繁杂的设备控制事务中解放出来。设备控制器是一个可编址设备,当仅控制一个设备时,它只有一个设备地址;当控制器可连接多个设备时,则应具有多个设备地址,使每个地址对应一个设备。设备器应能接收和识别来自CPU的各种命令,实现CPU与控制器、控制器与设备之间的数据交换,记录设备的状态供CPU查询,还应能识别它所控制的每个设备的地址。为此,控制器中应设置控制寄存器存放接收的命令及参数,设置数据寄存器存放传输的数据,设置状态寄存器记录设备状态。2. I/O通道通道在一般计算机系统中,通道指专门用于负责
89、输入/输出工作的处理机。它有自己的指令系统,该指令系统比较简单,一般只有数据传送指令,设备控制指令等。通道所执行的程序称为通道程序。通道含有通道地址字(CAW)、通道状态字(CSW)和通道命令字(CCW),这里就不再叙述了。5.2 输入输入/输出(输出(I/O)控制方式)控制方式5.2.1 程序控制方式程序控制方式 5.2.2 中断控制方式中断控制方式 5.2.3 DMA(直接存储器存取)方式(直接存储器存取)方式 5.2.4 通道控制方式通道控制方式 5.2.1 程序控制方式程序控制方式在早期的计算机系统中,由于无中断机构,处理机对I/O设备的控制采用程序控制方式,即由用户进程直接控制内存或
90、CPU和外围设备之间进行信息传送的方式。当用户进程需要输入数据时,上处理机向设备控制器发出一条I/O指令启动设备进行输入,在设备输入数据期间,处理机通过循环执行测试指令不间断地检测设备状态寄存器的值,当状态寄存器的值显示设备输入完成时,处理机将数据寄存器中的数据取出,送入内存指定的单元,然后再启动设备去读下一个数据。反之,当用户进程需要向设备输出数据时,也必须同样发启动命令启动设备输出并等待输出操作完成。程序控制方式的工作过程非常简单,但CPU的利用率相当低,因为CPU执行指令的速度高出I/O设备几个数量级,所以在循环测试中浪费了大量的CPU处理时间。5.2.2 中断控制方式中断控制方式在现代
91、计算机系统中,对I/O设备的控制广泛采用了中断控制方式。这种方式要求CPU与设备之间有相应的中断请求线,且要求在状态寄存器中有中断允许位。在I/O中断方式中,数据的输入步骤 (见教材)与程序控制方式相比,中断方式使CPU利用率大大提高了但这种控制方式仍然存在许多问题,如每台每输入/输出一个数据都要求中断CPU,这样在一次数据传送过程,中断发生次数较多,从而耗去大量CPU处理时间。5.2.3 DMA(直接存储器存取)方式(直接存储器存取)方式DMA方式是在外部设备和内存之间建立了直接数据通路。在DMA控制器控制下,设备和内存之间可成批地进行数据交换,而不用CPU干预。这样既大减轻了CPU的负担,
92、也使I/O数据传送速度大大提高。这种方式应用于块设备的数据传输。DMA方式下进行数据输入的过程 (见教材)DMA方式与中断方式的主要区别是:中断方式在每个数据传送完成后中断CPU,而DMA方式则是在所要求传送的一批数据全部传送结束时中断CPU,中断方式的数据传送是在中断处理时由CPU控制完成,而DMA方式则是在DMA控制器的控制下完成。不过,DMA方式仍存在一定局限性。如数据传送的方向。存放数据的内存始址及传送数据长度等都由CPU控制,并且每台设备需要一个DMA控制器,当设备增加时,多个DMA控制器的使用也不经济。 5.2.4 通道控制方式通道控制方式通道控制方式与DMA类似,也是一种以内存为
93、中心,实现设备与内存直接交换数据的控制方式。与DMA方式相比,通道所需的CPU干预更少,且可以做到一个通道控制多台设备,从而更进一步减轻了CPU的负担。在通道控制方式中,CPU只需发出启动指令,指出通道相应的操作和I/O设备,该指令就可启动通道并使该通道从内存中调出相应的通道指令执行。通道控制方式的数据输入过程(见教材) 5.3 中断和缓冲技术中断和缓冲技术5.3.1 中断技术中断技术 5.3.2 缓冲技术缓冲技术 5.3.1 中断技术中断技术1. 中断的基本概念中断的基本概念 中断中断:计算机在执行期间,系统内发生某一急需处理的事件,使得CPU暂时中止当前正在执行的程序而转去执行相应的事件处
94、理程序,待处理完毕后又返回到原来被中断处继续执行。 中断源中断源:引起中断发生的事件 。 中断请求中断请求:中断源向CPU发出请求中断处理的信号。 中断响应中断响应 :CPU收到中断请求后转相应事件处理程序的过程 断点断点:发生中断时,刚执行完的那条指令所在的单元号。 恢复点恢复点:断点的逻辑后继指令的单元号。 关中断关中断:CPU内部的处理机状态字PSW(程序状态字)的中断允许位被清除,从而不允许CPU响应中断,称为禁止中断也叫关中断。 开中断开中断: PSW的中断允许位的设置。 中断向量:中断向量:存放的处理机状态字与中断处理程序入口地址一起构成。 中断屏蔽中断屏蔽:是指系统用软件方式有选
95、择地封锁部分中断而允许其余部分中断仍能得到响应。 2. 中断的分类和优先级中断的分类和优先级 根据中断源产生的条件,可将中断分为: 外中断:是指来自处理机和内存外部的中断; 内中断:主要指在处理机和内存内部产生的中断。 根据系统对中断处理的需要,操作系统一般对中断进行分类并对不同的中断赋予不同的处理优先级。 3. 中断处理过程中断处理过程 一旦CPU响应中断,系统就开始进行中断处理,过程如下:(1)CPU检查响应中断的条件是否满足。(2) 如果CPU响应中断,则CPU关中断,使其进入不可再次响应中断的状态。(3) 保存被中断进程现场。(4)分析中断原因,调用中断处理子程序。(5) 执行中断处理
96、子程序。(6)退出中断,恢复被中断进程的现场或调度新进程占据处理机。(7) 开中断,CPU继续执行。 5.3.2 缓冲技术缓冲技术v提高处理机与外设并行程度的另一项技术是缓冲技术。事实上,凡是数据接收速度和数据发送速度不同的地方都可以使用缓冲。v缓冲实现方法有两种:一种是采用硬件缓冲器实现,但由于成本太高,除一些关键部位外,一般情况下不采用硬件缓冲器;另一种实现方法是在内存划出一块存储区,专门用来临时存放输入/输出数据,这个区域称为缓冲区。v根据系统设置的缓冲区个数,可将缓冲技术分为: (1)单缓冲(2)双缓冲(3)环形缓冲(4)缓冲池 (1)单缓冲 单缓冲是在设备和处理机之间设置一个缓冲。设
97、备和处理机交换数据时,先把被交换数据写入缓冲区。然后,需要数据的设备或处理机从缓冲区取走数据。由于只设置了一个缓冲区。因而设备与处理机对缓冲区操作是串行的。(2)双缓冲 引入双缓冲,可以提高处理机与设备的并行操作程度。例如,在设备输入时,输入设备先将第一个缓冲区装满数据,在输入设备装填第二个缓冲区的同时,处理机可从第一个缓冲区中取出数据供用户进程进行处理;当第一个缓冲区中的数据处理完毕后,若第二个缓冲区已填满,则处理机又从第二个缓冲区中取出数据进行处理,而输入设备又可装填第一个缓冲区。显然,双缓冲区的使用提高了处理机和输入设备并行操作的程度。只有当两个缓冲区都出空,进程还要提取数据时,该进程被
98、迫等待。(3)环形缓冲 环形缓冲中包含多个大小相等的缓冲区,每个缓冲区中有一个链接指针指向下一个缓冲区,最后一个缓冲区指针指向第一个缓冲区,这样多个缓冲区构成一个环形。环形缓冲区用于输入输出时,还需要有两个指针,in和out。对于输入而言,首先要从设备接收数据到缓冲区中,in指针指向可以输入数据的第一个空缓冲区;当运行进程需要数据时,从环形缓冲中取一个装满数据的缓冲区,并从些缓冲区中提取数据,out指针指向可以提取数据的缓冲区。显然,对输出而言正好相反,进程将处理过的需要输出的数据送到空缓冲区中,而当设备空闲时,从满缓冲区中取出数据由设备输出。(4)缓冲池 缓冲池也由多个大小相等的缓冲区组成,
99、与环形缓冲不同的是缓冲池中的缓冲区是各级组织系统公用资源,池中的缓冲区可供多个进程共享,且既能用于输入,又能用于输出。池中的缓冲区按其使用状况可以形成三个队列:空缓冲队列、装满输入数据的缓冲队列(输入队列)和装满输出数据的缓冲队列(输出队列)。除上三个队列之外,还应具有四种工作缓冲区:用于收容输入数据的工作缓冲区、用于提取输入数据的工作缓冲区、用于收容输出数据的工作缓冲区及用于提取输出数据的工作缓冲区。当输入进程需要输入数据时,便从空缓冲队列的队首摘下一空缓冲区,把它作为收容输入工作缓冲区,然后把数据输入其中,装满后再将它挂到输入队列队尾。当计算进程需要输入数据时,便从输入队列取得一个缓冲区作
100、为提取输入工作缓冲区,计算进程从中提取数据,数据用完后再将它挂到输出队列尾。当要输出时,由输出进程从输出队列中取得一装满输出数据的缓冲区,作为提取输出工作缓冲区,当数据提取完后,再将它挂到空缓冲队列的队尾。 5.4 设备分配设备分配5.4.1 设备分配中的数据结构设备分配中的数据结构 5.4.2 设备分配的策略设备分配的策略 5.4.3 设备分配步骤设备分配步骤 5.4.3 SPOOLING(斯普林)技术(斯普林)技术 5.4.1 设备分配中的数据结构设备分配中的数据结构为了实现对I/O设备的管理和控制,需要对每台设备、通道、控制器的情况进行登记。SDTCOCT设备标识符设备类型DCT指针获得
101、设备的进程DCT设备类型设备标识符设备状态:忙/闲COCT指针设备等待队列指针控制器状态:忙/闲控制器标识符CHCT指针控制器等待队列指针CHCT通道状态:忙/闲通道标识符通道等待队列指针表目1表目i设备管理中的数据结构系统为每一个设备配置一张设备控制表,用于记录设备的特性及与I/O控制连接的情况。设备控制表中包括设备标识符、设备类型、设备等待队列指针、I/O控制器指针等。其中,设备状态用来指示设备是忙还是闲,设备等待队列指针指向等待使用该设备的进程组成的等待队列,I/O控制器指针指向与该设备相连接的I/O控制器。控制器控制表用于记录本控制器的情况,它反映I/O控制器的使用状态以及和通道的连接
102、情况等。每个通道都配有一张通道控制表。通道控制表包括通道标识符、通道状态、等待获得该通道的进程等待队列指针等。系统设备表整个系统一张,它记录已被连接到系统中的所有物理设备的情况,每个物理设备占一个表目。系统设备表的每个表目包括设备类型、设备标识符、设备控制表指针等。其中,设备控制表指针指向该设备对应的设备控制表。5.4.2 设备分配的策略设备分配的策略在一个系统中,请求设备为其服务的进程往往多于设备数,这样就出现了多个进程对某类设备的竞争问题。为了保证系统有条不紊的工作,系统在进行设备分配时,应考虑如下的几个因素: 1.设备分类(见5.1.4) 2.设备分配算法: 先请求服务;优先级高者优先。
103、 3.设备分配的安全性:在设备分配中应防止发生进程的死锁。 4.设备独立性:用户在编制程序时所使用的设备与实际使用的设备无关。 5.4.3 设备分配步骤设备分配步骤1.分配设备 根据进程提出的物理设备名查找系统设备表,从中找到该设备的设备控制表。查看设备控制表中的设备状态字段。若该设备处于忙状态,则将进程插入设备等待队列;若设备空闲,便按照一定的算法来计算本次设备分配的安全性。若分配不会引起死锁则进行分配;否则,仍将该进程插入设备等待队列。2.分配控制器 在系统把设备分配给请求I/O的进程后,再到设备控制表中找到与该设备相连的控制器的控制表,从该表的状态字段中可知该控制器是否忙碌。若控制器忙,
104、则将进程插入等待该控制器的队列;否则将该控制器分配给进程。3.分配通道 从控制器控制表中找到与该控制器连接的通道控制表,从该表的状态字段中可知该通道是否忙碌。若通道处于忙状态,则将进程插入等待该通道的队列,否则将该通道分配给进程。 5.4.3 SPOOLING(斯普林)技术(斯普林)技术SPOOLING技术,这个名字来自SimultaneousPeripheralOperationOnLine的首字母缩写,被称为外围设备同时联机外围设备同时联机操作技术操作技术或假脱机技术假脱机技术。 输入设备输出设备输入进程SPi输入进程SPo输入缓冲区输出缓冲区输入井输出井SPOOLING技术示意图SPOO
105、LING技术主要包括如下三方面。(1)输入井和输出井 这是在磁盘上建立的两个存储区域。输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据。输出井模拟脱离机输出时的磁盘,用于收容用户程序的输出数据。(2)输入缓冲区和输出缓冲区 这是在内存中建立的两个缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井,输出缓冲区用于暂存从输出井送来的数据,以后再传送到输出设备。(3)输入进程和输出进程 输入进程模拟脱机输入时的外围控制机,将用户要求的数据从输入机,通过输入缓冲区再送到输入井。当CPU需要输入数据时,直接从输入井读入内存。输出进程模拟脱机输出时的外围控制机,把用户要求输出的数据
106、,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据,经过输出缓冲区送到输出设备上。5.5I/O设备驱动程序设备驱动程序5.5.1 设备驱动程序的功能与特点设备驱动程序的功能与特点 5.5.2 设备驱动程序的处理过程设备驱动程序的处理过程 什么是设备驱动程序什么是设备驱动程序设备处理程序又称设备驱动程序,是驱动物理设备进行各种操作的软件,它可看作I/O系统和物理设备的接口,所有进程对于设备的请求都要通过设备驱动程序来完成。I/O设备驱动程序的主要任务是接收上层软件发来的抽象请求,把它转化为具体要求后,发送给设备控制器并启动控制设备去执行。5.5.1 设备驱动程序的功能与特点设备驱动程序的
107、功能与特点1. 设备驱动程序的功能设备驱动程序的功能(1)实现逻辑设备到物理设备的转换;(2)接收由I/O进程发来的命令和参数,将接收到的抽象要求转换为具体要求;(3)检查I/O请求的合法性,了解I/O设备的状态,传递相关参数并设置设备的工作方式;(4)发出I/O命令,启动相应的I/O设备,完成相应的I/O操作;(5)及时响应中断请求,并根据中断类型调用相应的中断处理程序进行处理;(6)对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序。5.5.1 设备驱动程序的功能与特点设备驱动程序的功能与特点2.设备驱动程序的特点设备驱动程序的特点(1)驱动程序将进程的I
108、/O请求传送给控制器,而把设备控制器中所记录的设备状态、I/O操作完成情况反映给请求I/O设备的进程;(2)驱动程序与设备控制器和I/O设备的硬件特性紧密相关,因而对不同类型的设备应配置不同的驱动程序;(3)驱动程序与I/O设备所采用的I/O控制方式紧密相关;(4)由于驱动程序与硬件紧密相关,因而其中的一部分程序必须用汇编语言书写,有很多驱动程序,其基本部分已经固化,放在ROM中。 5.5.2 设备驱动程序的处理过程设备驱动程序的处理过程不同类型的设备,其驱动程序是不一样的。 设备驱动程序除了要有能驱动I/O设备工作的驱动程序外,还要有设备中断处理I/O完成后的工作程序,设备驱动程序在驱动设备
109、之前必须完成所有的准备工作,才能向设备控制器发送启动命令,设备处理程序的处理过程如下: (1)将逻辑设备转换为物理设备 (2)检查I/O请求的合法性 (3)检查设备的状态 (4)传送必要的参数 (5)启动I/O设备 5.6 磁盘的驱动调度磁盘的驱动调度5.6.1 访问磁盘的时间访问磁盘的时间 5.6.2 移臂调度移臂调度 5.6.3 旋转调度旋转调度 5.6.1 访问磁盘的时间访问磁盘的时间对磁盘的任何一次访问请求,应给出访问磁盘的存储空间地址:柱面号、磁头号和扇区号。磁盘在工作时,首先要移动到目标磁道上,然后使需要的扇区旋转到磁头下,最后读取该扇区中的数据。这些工作都在磁盘控制器的控制下完成
110、的。磁盘执行一次输入/输出操作所需花费的时间,由以下三个部分组成:(1)寻找时间:磁头在移动臂带动下,移动到指定柱面所需的时间。(2)延迟时间:指定扇区旋转到磁头位置所需的时间。(3)传送时间:由指定的磁头把磁道上的信息读到内存储器或把内存储器中信息写到磁道上的所需要的时间。 5.6.2 移臂调度移臂调度根据等待访问者指定的柱面位置来决定次序的调度称为移臂调度。移臂调度的目标是尽可能地减少输入/输出操作中的寻找时间。常用的移臂调度算法有 : 1. 先来先服务调度算法先来先服务调度算法 简单、易实现,它只考虑请求访问者的先后次序,而不考虑它们要访问的物理位置。2. 最短寻找时间优先调度算法最短寻
111、找时间优先调度算法 这个算法总是让查找时间最短的那个请求先执行,而不管请求访问者到来的先后次序。3. 电梯调度算法电梯调度算法 一种简单而高效的算法,按照这种算法总是从移动臂当前位置开始沿着臂的移动方向去选择离当前移动臂最近的那个柱面的访问者,如果沿臂的移动方向无请求访问时,就改变臂的移动方向再选择。 5.6.3 旋转调度旋转调度当移动臂定位后,有多个访问者等待访问该柱面时,应怎样决定这些等待访问者的执行次序?从减少输入输出操作时间为目标考虑,显然应该优先选择延迟时间最短的访问者去执行,这样根据延迟时间来决定执行次序的调度称旋转调度旋转调度。 在进行旋转调度时应区分如下几种情况: (1)若干请
112、求者要访问同一磁头下的不同的扇区; (2)若干请求者要访问不同磁头下的不同编号的扇区; (3)若干请求者要访问不同磁头下具有相同编号的扇区; 对于前面两种情况,旋转调度总是对先到达读写磁头位置下的扇区进行了信息传送。对于第3种情况,这些请求指定的扇区会同时到达磁头位置下,这时根据磁头号从中任意选择一个磁头进行了读/写操作,其余的请求必须等待磁盘再次把扇区旋转到磁头位置时才有可能被选中。本章小结本章小结本章从设备管理的主要任务和功能出发,围绕着I/O系统、I/O控制方式、I/O设备分配、I/O驱动程序和处理过程、缓冲技术和磁盘驱动调度进行了讲解。第第6章章 操作系统接口操作系统接口6.1 联机接
113、口联机接口 6.2 图形化用户接口图形化用户接口 6.3 系统调用系统调用 本章目标本章目标理解什么是操作系统接口;了解操作系统接口类型;掌握系统调用。6.1 联机接口联机接口6.1.1 脱机用户接口 6.1.2 联机用户接口 6.1.1 脱机用户接口脱机用户接口脱机用户接口源于早期批处理系统,在批处理系统中,系统不具备交互性,用户既不能直接控制作业的执行过程,也不能用自然语言描述控制意图,所以操作系统为脱机用户提供了相应的接口。脱机用户接口一般专为批处理作业的用户准备的,所以,也称为批处理用户接口。 脱机用户接口的主要特征是用户事先使用作业控制语言描述好对作业控制的步骤,由计算机上运行的内存
114、驻留程序(执行程序、管理程序、作业控制程序、命令解释程序)根据用户的预设要求自动控制作业的执行。6.1.2 联机用户接口联机用户接口联机用户接口由一组命令及命令解释程序组成,所以又称命令接口,它为联机用户提供了调用操作系统功能,也是请求操作系统为用户服务的手段。 不同的操作系统的命令接口不尽相同,不仅是命令和种类不同,命令的数量和功能也不可能不同。命令的形式和用法的不同使得各自的用户界面也不一样。 1.命令行方式 2.批处理命令方式6.2 图形化用户接口图形化用户接口图形化用户接口采用了图形化的操作界面,用非常容易识别的各种图标来将系统各项功能、各种应用程序和文件,直观、逼真地表示出来。用户可
115、能通过鼠标、菜单和对话框来完成对应用程序和文件的操作。 图形化用户接口包括窗口、图标、菜单和对话框操作等。图形用户接口的优点非常明显,用户不需要去记忆那些操作系统命令和它们的格式、参数,并且可以将文字、图形和图像集成在一个文件中。 6.3 系统调用系统调用 1. 系统调用系统调用从前面已经讲解的知识看,操作系统为用户提供两种类型的使用接口,一种是操作员接口,另一种是程序(员)接口,以便用户与操作系统建立联系。操作员接口是一组操作控制命令,它们供用户提出如何控制作业执行的要求。程序接口是一组系统功能调用,它们为用户程序提供服务功能。操作系统编制了许多不同功能的子程序(例如,读文件子程序,写文件子
116、程序,分配内存空间子程序,启动I/O子程序等),供用户程序执行时调用。这些由操作系统提供的子程序称为系统功能调用程序,简称系统调用系统调用。系统调用应是在管态下执行的程序 。2. 系统调用分类系统调用分类 不同的操作系统提供的系统调用不全相同,大致分为: (1)文件操作类:打开文件、建立文件、读文件、写文件、关闭文件和删除文件等。(2)资源申请类:请求分配内存空间、归还内存空间、分配外围设备、归还外围设备等。(3)控制类:请求操作系统中止其执行或返回到程序的某一点再继续执行。操作系统要根据程序中止的原因和用户的要求作出处理。因而这类系统调用有正常结束、异常结束、返回断点/指定点等。(4)信息维
117、护类:设置日历时间、获取日历时间、设置文件属性、获取文件属性等。 1、程序级接口、程序级接口由一组系统调用组成由一组系统调用组成程程序序接接口口:指用户程序和OS之间的接口。这是操作系统为用户程序访问计算机资源而提供的接口,是用户程序取得操作系统服务的唯一途径。亦即程序接口是操作系统为正在运行的程序提供服务并与之通信的一个设施。它供所有的用户使用;同时,也供操作系统的其它组成部分,特别是命令处理程序使用。程序接口的职责是装入并创建一个准备开始运行的程序(进程)。此外,这个接口还为程序正常或异常终止给出适当的响应。当一个程序正在执行时,程序接口接受对系统服务及资源的申请,并与操作系统的资源管理程
118、序进行通信。这个程序接口主要由一组系统调用(SystemCall)组成,通过系统调用程序实现与操作系统的通信。什么是系统调用呢?系统调用:指系统为用户程序调用操作系统所提供的子程序。它是一种特殊的过程调用,这种调用通常是由特殊的机器指令实现的。除了提供对操作系统子程序的调用外,这个指令还将系统转入特权方式。因此,系统调用程序被看成是一个低级的过程,只能由汇编语言直接访问。大多数用高级语言编写的程序通过子程序库来访问这些系统调用。这些子程序执行系统调用并完成其它的有关功能。总之,它它与与一一般般的的函函数数调调用用不不同同,系系统统调调用用是是通通过过中中断断方方式式转转向向相相应应子子程程序序
119、的的,它它工工作作在在核核心心态态(即即特特权权方方式式),而而一一般般函函数数的的调调用用,仍仍仅仅是在用户态下的地址转移。是在用户态下的地址转移。第七章第七章 操作系统用户接口操作系统用户接口二、命令接口二、命令接口为了便于用户直接或间接地控制自己的作业,操作系统向用户提供了命令接口,用户可通过该接口向作业发出命令以控制作业的运行。该接口又可进一步细分为联机用户接口和脱机用户接口:1.脱机命令接口:该接口是为批处理作业的用户提供的,故也称为批处理用户接口。它是由一组作业控制语言JCL所组成。批处理作业的作户不能直接与自己的作业交互作用,只能委托系统代替用户对作业进行控制和干预,这里的作业控
120、制语言JCL便是提供给批处理作业用户,将所需实现的功能,委托系统代为控制的一种语言。用户用JCL把对作业需进行的控制和干预,事先写在作业说明书中,然后将作业连同作业说明书一起提供给系统。当系统调度到该作业运行时,又调用作业命令解释程序,对作业说明书上的命令,逐条解释执行。如果作业在运行过程中出现异常现象,系统也将按照作业说明书上的指示进行干预。这样,作业一直在作业说明书的控制下运行,直到遇到作业结束语句时,系统便停止该作业的运行。第七章第七章 操作系统用户接口操作系统用户接口2.联机命令接口:联机命令接口也称交互式命令接口。该接口是为联机用户提供的,它由一组键盘操作命令(终端处理程序)及命令解
121、释程序(命令处理程序)所组成。用户在终端或控制台上每键入一条键盘命令后,系统便立即转入命令解释程序,对该命令进行解释并执行该命令。在完成指定功能后,控制又返回到终端或控制台上,等待用户键入下一条命令。这样,用户可通过先后键入不同的命令,来实现对作业的控制,如此反复,直至作业完成。在微型机系统中,通常把这组键盘命令分成两类:()内部命令。这类命令的特点是程序短小,使用频繁。因此,它们在系统初启时就被引导到主存而且常驻于主存中。()外部命令。这类命令的程序较长,且各自独立地作为一个文件而驻留在磁盘上,只是在需要调用它们时,才从磁盘调入主存执行。第七章第七章 操作系统用户接口操作系统用户接口3终端处
122、理程序交互式命令接口用户同操作系统的通信是通过一个输入输出装置来实现的。在绝大多数系统中,这个I/O装置是一个显示终端。输入是通过键盘传送给系统的。在有的系统中,可通过指示装置(如鼠标)来进输入。系统输入呈现在显示器的屏幕上,一次显示若干正文行。在某些系统中,也提供图形显示功能。不管哪种I/O方式,这个终端装置是由一个终端处理程序来管理和控制的。虽然,这个终端也是采用与其它I/O装置相类似的技术来管理,但是,由于它在用户接口中的中心作用,应给予它特殊的地位。终端处理程序提供的输入输出方式对整个用户命令接口有着重大的影响;同时,也确定了用户与其应用程序之间的通信方式。所以,终端处理程序必须作为用
123、户接口的一个组成部分来考虑。也就是说,直接影响命令接口的一些问题必须由终端处理程序来解决。第七章第七章 操作系统用户接口操作系统用户接口本章小结本章小结为了使用户能够更加方便灵活地运用系统的各项功能与服务,操作系统为用户提供了各种类型的接口,用户可根据自身的不同需要选用不同的用户接口。本章简要介绍了操作系统为用户提供的接口类型,即脱机用户接口、联机用户接口、图形化用户接口和系统调用 第第7章章 进程的并发进程的并发7.1 进程的进程的PV操作操作 7.2 进程的互斥进程的互斥 7.3 进程的同步进程的同步 7.4 死锁死锁 7.5 进程通信进程通信 本章目标本章目标 理解与掌握进程的临界区、P
124、V操作的基本知识。理解与掌握进程的互斥与同步的基本知识。理解与掌握进程通信的信箱的基本知识。7.1 进程的进程的PV操作操作7.1.1 进程的并发性进程的并发性 7.1.2 临界区和临界资源临界区和临界资源 7.1.3 PV操作操作 7.1.1 进程的并发性进程的并发性在多道程序设计的系统中,若干个作业可以同时执行,而每一个作业又需要有多个进程的协作来完成。因此,系统中会同时存在许多进程,在单处理器的情况下,这些进程轮流地占用处理器即一个进程的工作没有全部完成之前,另一个进程就可开始工作,我们说这些可同时执行的进程具有并发性,并且把可同时执行的进程称为并发进程并发进程。 I1I2I3I4C1C
125、2C3C4P1P2P3P47.1.2 临界区和临界资源临界区和临界资源1.临界资源临界资源 一次仅允许一个进程使用的资源称为临界资源。2.临界区临界区每个进程中访问临界资源的那段程序称为临界区。3.与时间有关的错误与时间有关的错误4.临界区的管理要求临界区的管理要求: 一次至多一个进程能够进人临界区,当有进程在临界区执行时,其它想进人临界区执行的进程必须等待; 不能让一个进程无限制地在临界区执行,即任何一个进人临界区的进程必须在有限的时间内退出临界区; 不能强迫一个进程无限地等待进入它的临界区,即有进程退出临界区时应让一个等待进入临界区的进程进入它的临界区执行。 空则让进、忙则等待、等则有限、
126、等则让权。空则让进、忙则等待、等则有限、等则让权。例如,某游乐场设置了一个自动计数系统,用一个计数器count指示在场的人数,。当有1人进人时,进程P1实现计数加,当退出1人时,进程P2实现计数减。假定某时刻的计数值count=n,这时有一个人要进入,正好另一个人要退出,于是进程P1和P2都要执行。那么各自完成了count+1和count-1的工作后,计数器的值为多少? intcount=0;P1:intR1;R1=count;R1=R1+1;count=R1;P2:intR2;R2=count;R2=R2-1;count=R2;占用CPU的进程执行的操作count值P1R1=countR1=
127、R1+1np1被打断,由P2占用CPU并运行到结束R2=countR2=R2-1count=R2n-1P1继续运行count=R1n+1占用CPU的进程执行的操作count值P2R2=countR2=R2-1np2被打断,由P1占用CPU并运行到结束R1=countR1=R1+1count=R1n+1P2继续运行count=R2n-1这两个进程的执行次序对结果是有影响的,关键是它们涉及到共享变量count,且两者交替访问了count,在不同的时间里访问count,就可能使count的值不同。所以,造成计数值不正确的因素是与进程被打断的时间和能占用处理的时间有关,由于这种原因造成的错误称为“与时
128、间有关的错误”。7.1.3 PV操作操作PV操作是由两个操作P操作和V操作组成。这两个操作是两个不可中断的过程,它们在屏蔽中断的情况下连续执行。把不可中断的过程称作原语,于是P操作和V操作也可称为P操作原语和V操作原语简称PV操作。PV操作是对信号量进行操作,它们的定义如下: P操作P(S)将信号量S减去1,若S0则调用P(S)的进程被置成等待信号量的状态。 V操作V(S):将信号量S加1,若S0,则释放一个等待信号量S的进程。(1)信息号S是一个特殊的整型变量,信量号S的值描述了可用资源的数量或等待该资源的进程个数,当S0时表示可用资源数;当S0时其绝对值|S|表示等待该资源的进程数。(2)
129、W(S)表示将调用过程的进程置成等待信号量的状态。(3)R(S)表示释放一个等待信号量S的进程。信号量S的初值为0或1或其它整数,它应在系统初始化时确定。P操作和V操作可表示成如下两个过程:semaphoreS=1;voidP()S=S-1;if(s0)W(S);;(P)voidV()S=S+1;if(S=0)R(S);;(V)7.2 进程的互斥进程的互斥进程的互斥是指:当有若干个进程都要使用某一共享资源时,任何时刻最多只允许一个进程去使用,其它要使用该资源的进程必须等待,直到占用资源者释放了该资源。 利用P-V操作实现互斥: A进程 B进程 .p(s)p(s)临界区 临界区 v(s)v(s)
130、.intcount;semaphoreS; S=1;voidP1()while(true)intR1;P(S); R1=count;R1=R1+1;count=R1;V(S); 在7.1的第一个例子中的两个并发进程都要使用共享的计数器count,从分析中看到,只有当一个进程不在使用count时另一个进程再去使用,才不会出错如果它们交叉地使用count则会现与时间有关的错误。为了保证两个进程互斥地使用计数器count,可以用PV操作来管理。定义一个信号量S的初值为1,把两个并发进程的程序改写成如下:voidP2()intR2;while(true)P(S);R2=count;R2=R2-1;co
131、unt=R2;V(S);7.3 进程的同步进程的同步进程的同步是并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到这才被唤醒。PV操作不仅可以用来实现互斥进入临界区而且还是一个简单而又方便的同步工具,用它来解决生产者/消费者问题。例1:现在假定有一个生产者和一个消费者,它们公用一个缓冲器,生产者不断地生产物品,每生产一件物品就要存入缓冲器,但缓冲器中每次只能存入一件物品,只有当消费者把物品取走后,生产者才能把第二件物品存入缓冲器,同样地,消费者要不断地取出物品去消费,当缓冲器中有物品他就可去取,每取走一件物品后必须等生产者放
132、入一件物品才可再取,用PV操作实现生产者/消费者之间的同步。integerBuffer;semaphoreSP,SG;SP=1;SG=0;voidproducer()while(true)produceaproduct; P(SP); Buffer=product; V(SG); void consumer() while(true) P(SG); take a product; V(SP);consume; 定义两个信号量:SP:表示是否可以把物品存入缓冲器,由于缓冲器中只能放一件物品,所以SP的初值取为1。SG;表示缓冲器中是否存有物品,显然,它的初值应该为0,表示还没有物品。例2:前面的
133、例题是关于一个生产者和一个消费者共享一个只能放一件物品的缓冲器的例子,如果一个生产者和一个消费者他们共享的缓冲器容量为可以存放n件物品,那么只要把信号量SP的初值定为n。intBn;intk,t;SemphoreSP,SG;k=0;t=0;SP=n;SG=0;voidproducer()while(true)produceaproduct;P(SP);Bk=product;k:=(k+1)modn;V(SG);voidconsumer()while(true)P(SG);takeaproductfromBt;t=(t1)modn;V(SP);consume;例3:再进一步讨论m个生产者和r个消
134、费者怎样共享容量为n的缓冲器。intBn;intk,t;SemphoreS,SP,SG;k=0;t=0;SP=n;SG=0;S=1;voidproduceri(inti)(i=1,2,m)while(true)produceaproduct;P(SP);P(S);Bk=product;k:=(k1)modn;V(SG);V(S);voidconsumer(intj)(j=1,2,r)while(true)P(SG);P(S);takeaproductfromBt;t=(t+1)modn;V(SP);V(S);consume;例4:假定有三个进程R、W1、W2共享一个缓冲器B,而B中每次只能存放
135、一个数。当缓冲器中无数时,进程R可以从输入设备上读入数存放到缓冲器B中。若存放到缓冲器中的是奇数,则允许进程W1将其取出打印;若存放到缓冲器中的是偶数,则允许进程W2将其取出打印。同时规定:进程R必须等缓冲器中的数被取出打印后才能再存放一个数;进程W1或W2对每次存入缓冲器中的数只能打印一次;W1和W2都不能从空的缓冲器中取数。写出这三个并发进程能正确工作的程序。 分析进程间制约关系,定义信号量: S:表示是否可以把数存入缓冲器,由于缓冲器中每次只能放一个数,所以它的初值取为1。 SO:表示缓冲器中是否有奇数,初值为0,表示无奇数。 SE:表示缓冲器中是否有偶数,初值为0,表示无偶数。 sem
136、aphoreS,SO,SE; S=1;SO=SE=0;voidR()intx; while(true)从输人设备读一个数; X=读入的数; P(S); B=X; if(B=奇数) V(SO); elseV(SE);voidW1()inty;while(true)P(SO);y=B;V(S);打印Y中数;voidW2()intZ;while(true)P(SE);Z=B;V(S);打印Z中数,7.4 死锁死锁7.4.1死锁的形成 7.4.2死锁的防止 7.4.3死锁的避免 7.4.4死锁的检测 7.4.5死锁的解除 7.4.1 死锁的形成死锁的形成1.死锁,是指多个进程因竞争资源而造成的一种僵局
137、,若无外力作这些进程都将永远不能再向前推进。2.形成死锁的起因:(1)系统的资源不足 系统提供的资源数比要求使用资源的进程数少,或者是若干个进程要求资源的总数大于系统能提供的资源数。这时,进程间就会出现竞争资源的现象,如果对进程竞争的资源管理或分配不当就会引起死锁。(2)进程推进的顺序非法 执行程序中两个或两个以上进程发生永久等待(阻塞),每个进程都在等待被其他进程占用并等待(阻塞)资源。(3)资源分配不当 如果系统资源分配策略不当,更常见的可能是程序员写的程序有错误等,则会导致进程因竞争资源不当而产生死锁的现象。7.4.2 死锁的防止死锁的防止1.出现死锁的四个必要条件必要条件: 互斥使用资
138、源:每一个资源每次只能给一个进程使用。 占有且等待资源:一个进程申请资源得不到满足时处于等待资源的状态,且不释放已占资源。 非抢夺式分配:任何一个进程不能抢夺另一个进程所占的资源,即已被占用的资源只能由占用进程自己来释放。 循环等待资源:存在一组进程,其中每一个进程分别等待另一个进程所占用的资源。2.采用一定的资源分配策略破坏这四个必要条件中的一个条件,则死锁就可防止。 静态分配静态分配。对资源采用静态分配策略可防止死锁所谓静态分配是指进程必须在开始执行前就申请它所要的全部资源,当得到了所需要的全部资源后才开始执行。显然,采用静态分配资源后,进程在执行中不再申请资源,因而不可能出现等待资源的情
139、况,这种分配策略使四个必要条件中的(2)和(4)不成立,也就不可能发生死锁。按序分配按序分配。把系统所有的资源排一个顺序,规定任何一个进程申请两个以上的资源时,总是先申请编号小的资源,再申请编号大的资源。按这种策略分配资源时也不会发生死锁,因为这种分配策略使四个必要条件中的(4)不成立。 剥夺式分配剥夺式分配。这种分配策略是当一个进程申请资源得不到满足时则可从另一个进程那里去抢夺。这种分配策略目前只适用于对处理器和生存资源的分配,这种分配策略破坏了四个必要条件中的(3),可防止死锁的发生。 7.4.3 死锁的避免死锁的避免在系统运行过程中允许资源的动态分配,但是在资源动态分配是采用银行家算法,
140、避免系统进入不安全状态。例如,现在有12个资源供三个进程共享,进程1总共需要4个资源,但第一次先申请1个资源,进程2总共需要6个资源,第一次要求4个资源,进程3总共需要8个资源,第一次要5个资源。现在的分配情况如表所示 资源进程最大需求量第一次申请量P141P264P385u这时,系统处于安全状态,因为剩余的2个资源可先供进程2使用,进程2在得到全部资源(6个)后能在有限时间内执行结束且也还所占的6个资源。然后这6个资源又可分给进程2和进程3,使每个进程都能在有限时间内得到全部资源而执行到结束。u银行家算法是当系统现存的资源能满足进程的最大需求量时,才把资源分配给该进程的,只有这样才能确保系统
141、是安全的。在上例中,剩余资源数是2,它只能满足进程2的要求(已占4个资源,还需2个)。所以当三个进程都想继续要求资源时,只能把资源先分配给进程2使用。u如果把资源先分给进程1(或进程3)就会出现不安全状态,假定又给进程1分配了2个资源,那么每一个进程都不能得到所需的全部资源,它们都等待另一个进程归还资源,但任一进程在没有执行结束之前不归还资源,引起死锁。7.4.4 死锁的检测死锁的检测有的系统并不是经常会出现死锁的,所以,在分配资源时不加特别的限制,只要有剩余资源,总是把资源分给申请者。当然,这样可能会出现死锁。这种系统采用定时运行一个“死锁检测”程序,当检测到有死锁情况时再设法将其排除。 7
142、.4.5 死锁的解除死锁的解除当死锁检测程序检测到有死锁存在时,应设法将其解除,让系统从死锁状态中恢复过来。 1. 终止进程终止进程 终止涉及死锁的进程的执行,系统可收回被终止进程所占的淘汰进行再分配,以达到解除死锁的目的。 (1)终止涉及死锁的全部进程 (2)逐个终止每一个死锁进程2. 抢夺资源抢夺资源 从涉及死锁一个或多个进程中抢夺资源,把夺得的资源再分配给卷入死锁的其他进程,直到死锁解除。7.5 进程通信进程通信7.5.1 电子邮件 7.5.2 管道 1.什么是进程通信进程通信 在计算机系统中,并发进程之间经常要交换一些信息,把并发进程间交换信息的工作称为进程通信。2.通信方式 低级通信
143、方式低级通信方式:并发进程间可以通过PV操作交换信息实现进程的互斥和同步,因此,把PV操作可看作是进程间的一种通信方式,但这种通信只交换了少量的信息,是一种低级的通信方式。 高级通信方式高级通信方式:进程间有时要交换大量的信息,这种大量信息的传递要有专门的通信机制来实现,由专门的通信机制实现进程间交换信息的方式称为是高级的通信方式。 7.5.1 电子邮件电子邮件1. 邮件格式邮件格式 电子邮件和传统的信件类似,邮件的组织分类有以下几部分内容:邮件主题、收件人地址和姓名、发件人地址和姓名(默认为编写者)、邮件大小、邮件附件及指向附件地址的指针等。2. 信箱信箱 如果用户在公共的电子邮局中被分配一
144、个信箱,表示在电子邮局的目录之下获得了一个称为信箱的文件。在每个用户的信箱中存放的是用户收到的邮件,只有邮件的接收者才有权对信箱的内容进行处理。信箱的大小决定了信箱中可以容纳的信件数,一个信箱通常由信箱头和信箱体两部分组成。 3. 通信原语通信原语 这里介绍一种利用信箱进行高级通信的方式,用信箱实现进程间互通信息的通信机制要有两个通信原语,它们是发送发送(send)原语和接接收收(receive)原语。 1.send(B,M)原语 把信件M送入信箱B中,实现过程是: 查指定信箱B,若信箱B未满,把信件M送入信箱B中,如果有进程在等B信箱中的信件,则释放“等信件”的进程;若信箱B已满,把向信箱B
145、发送信件的进程还成“等信箱”的状态。 2.receive(B,X)原语 从信箱B中取出一封信存放到指定的地址X中,实现过程是: 查指定信箱B,若信箱B中有信,取出一封信放在指定的地址X中,如果有进程在等待把信存入信箱B中则释放“等信箱”的进程;若信箱B中无信,把要求从信箱B中取信的进程置成“等信件”状态。7.5.2 管道管道在两个进程的执行进程中,如果一个进程的输出是另一个进程的输入,就可以使用管道。 进程A进程B管道输入进程输出进程(1)管道。一个临时文件,输入进程向管道写入信息,而输出进程从管道读出信息;(2)输入进程。从进程A的输出区读数据,并写入管道;(3)输出进程。将管道中的数据读出
146、,并写入进程B的缓冲区.由于输出进程和输入进程共用一个管道,而且各自的执行结果又是互为对方的执行条件,所以这两个进程之间既有互斥关系又有同步关系。本章小结本章小结如果系统中存在一组可同时执行的进程,则说该组进程具有并发性,我们把这些进程称为并发进程。并发进程相互间可以是无关的,也可以是有交互的。把并发进程中与共享变量有关的程序段称为临界区。与某共享变量有关的每个进程都有各自的临界区。这些进程互斥时,每次只允许一个进程进入临界区。当有一个进程在它的临界区执行时就不允许其他进程进入临界区。进程的同步机制是:进程使用共享资源时必须互通消息,即只有接到了指定的消息后,进程才能去使用共享资源。实际上,进
147、程互斥是进程同步的特例。PV操作是由两个不被中断的进程即P、V操作原语组成的。PV操作是对信号量实施操作,若把信号量与共享资源联系起来,则用PV操作可实现进程的互斥和同步。进程间可以通过信件来传递大量消息,一个进程可以发送一封信,把信息告诉别的进程或请求别的进程协助工作。send原语和receive原语是最基本的信箱通信原语。 第第8章章 Windows XP系统结构及资系统结构及资源管理源管理8.1 Windows XP的管理工具与系统结的管理工具与系统结构构 8.2 Windows XP资源管理功能资源管理功能 本章目标本章目标 理解与掌握WindowsXP管理工具:任务管理器、事件查看器
148、、性能监视器、注册表。理解与掌握WindowsXP系统结构知识。理解与掌握WindowsXP系统的基本功能。8.1 Windows XP的管理工具与的管理工具与系统结构系统结构8.1.1 注册表机制注册表机制 8.1.2 任务管理器任务管理器 8.1.3 事件查看器事件查看器 8.1.4 性能监视工具性能监视工具8.1.5 Windows XP系统结构系统结构 8.1.6 Windows XP的关键组件的关键组件 8.1.1 注册表机制注册表机制注册表包含了和配置系统所需的信息,控制Windows操作和范围软件设置、安全数据库,以及各个用户的配置设定。1. 注册表的逻辑结构注册表的逻辑结构键是
149、注册表的主要成分,每个键对应一个键值,还可以包含若干下一级键(也称子键)。一个键值包含若干项,每个项有名称、类型和数据。键组成了注册表的层次结构,顶级的键称为根键。键在键名和路径的表示方面类似于文件。根键名存储的信息缩写HKEY_CLASSES_ROOT文件关联和组件对象模型的对象注册信息HKCRHKEY_CURRENT_USER与当前登录用户有关的信息HKCUHKEY_LOCAL_MACHINE与系统有关的信息HKLMHKEY_USER本台机器上所有账号的信息HKUHKEY_CURRENT_CONFIG与当前硬件配置有关的信息HKCC2. 注册表数据数据类型注册表数据数据类型子键名存储的信息
150、REG_NONE无键值类型REG_SZ以null结束的定长unicode字符串REG_EXPAND_SZ以null结束的可变长unicode字符串REG_BINARY任意长二进制数据REG_DWORD32位数REG_DWORD_LITTLE_ENDIAN32位数,低位字节在前。等价于REG_DWORDREG_DWORD_BIG_ENDIAN32位数,高位字节在前REG_LINKunicode符号链接REG_MULTI_SZ以null结束的定长unicode字符串数组REG_RESOURCE_LISAT硬件资源列表REG_FULL_RESOURCE_DESCRIPTOR硬件资源描述REG_RES
151、OURCE_REQUIREMENTS_LIST资源需求列表3. 注册表编辑器注册表编辑器 利用WindowsXP提供的注册表编辑器regedit.exe,可以操作注册表。 【例8-1】启动注册表编辑器 【例8-2】查找注册表 【例8-3】(1)添加新键和键值 (2)更改键和键值 (3)删除键和键值 (4)注册表的导入与导出4. 注册表内部结构注册表内部结构(1)储箱和储箱文件)储箱和储箱文件 在WindowsXP内部,注册表对应多个文件,每个文件对应一个储箱(hive),每个储箱包含一个注册表树,但这里的注册表树并不与注册表编辑器显示的根键一一对应。通过注册表编辑器可以看到储箱及其对应的文件(
152、称为储箱文件)的列表,这只要单击HKLMSYSTEMCurrentControlSetControlhivelist子键即可。 (2)配置管理器)配置管理器 配置管理器是WindowsXP内部的一个实现注册表的子系统。它负责组织储箱文件,管理注册表,并且确保注册表始终处于可恢复状态。除开用户储箱文件外,其他所有储箱文件的路径都被编码在配置管理器中。配置管理器装载储箱时,就在HKLMSYSTEMCurrentControlSetControlhivelist子键的键值中记下这每个储箱文件的路径,同时创建与这些储箱链接的根键,建立注册表编辑器显示的注册表结构。当卸下储箱时,配置管理器就删除其路径。
153、8.1.2 任务管理器任务管理器任务管理器是Windows系统中一个非常实用的系统工具,它提供了程序运行状态、计算机性能的关键指示器、运行进程的活动、CPU和内存的使用情况。除了可以查看上述状态,还可以显示了计算机上所运行的程序和进程的详细信息,可以显示最常用的度量进程性能的单位。此外,如果连接到网络,那么还可以查看网络状态,并迅速了解网络是如何工作的。 1. 任务管理器界面任务管理器界面 2. 任务管理器的使用任务管理器的使用 (1)用于管理程序)用于管理程序 (2)用于管理进程)用于管理进程 (3)用于监视计算机性能)用于监视计算机性能8.1.3 事件查看器事件查看器利用事件查看器,可以搜
154、集计算机系统中硬件、软件和系统问题方面的信息,监视WindowsXP安全性事件,将系统和应用程序运行中的事件记录到日志中,便于诊断和纠正可能发生的系统错误和问题。1.日志类型和事件类型这里所谓的事件,是指系统或应用程序需要通知用户的所有重要事情,以及要被添加到日志中的其他项目。 (1)日志类型:应用程序日志;系统日志;安全性日志。(2)事件类型:错误;警告;信息;成功审核;失败审核 2. 事件查看器的使用事件查看器的使用(1)查看事件信息)查看事件信息 启动事件查看器:启动事件查看器:查看事件详细信息;查看事件详细信息; 刷新详细信息窗格;刷新详细信息窗格;查找或筛选事件;查找或筛选事件; 查
155、看另一台计算机上的事件。查看另一台计算机上的事件。(2)操作日志文件)操作日志文件 设置活动日志选项;设置活动日志选项;清除活动日志内容清除活动日志内容; 存档活动日志存档活动日志 ;以日志文件格式保存的事件日志可以日志文件格式保存的事件日志可以在事件查看中打开;以在事件查看中打开;在事件日志上新建视图。在事件日志上新建视图。(3)设定本地安全性审核项目)设定本地安全性审核项目 用用“本地安全设置本地安全设置”设定安全性审核项目;设定安全性审核项目; 使用使用“组策略组策略”指定要审核的安全性事件。指定要审核的安全性事件。8.1.4 性能监视工具性能监视工具监视系统性能是WindowsXP维护
156、和管理的重要部分。利用性能数据可以了解系统工作负荷及其对系统资源的影响,观察工作负荷和资源使用的变化和趋势,以便计划今后的系统升级;利用监视结果可以评价配置更改或其他调整的效果,辅助诊断组件和过程的问题,用于优化处理;而当计数器值超出预定范围时发出警报能提醒用户及时采取相应措施。除了提供程序运行、处理器和内存使用性能简要信息的“任务管理器”之外,WindowsXP还有专门的性能监视工具,其主要作用是监视系统性能、查看性能计数器日志和设置警告。 1. 性能对象、计数器和范例性能对象、计数器和范例 2. 系统监视器系统监视器8.1.5 Windows XP系统结构系统结构WindowsXP的系统结
157、构融合了分层和客户机/服务器两种结构的特点,反映了现代操作系统的主要特征。 1. 系统模型系统模型 (1)内核模式与用户模式)内核模式与用户模式 (2)非纯粹的微内核结构)非纯粹的微内核结构 (3)面向对象技术的运用)面向对象技术的运用 (4)对称式多处理器模型)对称式多处理器模型 2. 总体结构总体结构 (1)用户模式进程基本类型)用户模式进程基本类型 (2)主要的内核模式组件)主要的内核模式组件 (3)核心组件对应的文件)核心组件对应的文件 系统支持进程服务进程用户应用程序环境子系统子系统DLL用户模式内核模式执行体内核设备驱动程序硬件抽象层(HAL)窗口与图形Windows XP系统结构
158、示意图8.1.6 Windows XP的关键组件的关键组件1.环境子系统和系统DLL(1)环境子系统 ;(2)子系统DLL2.执行体和内核 (1)执行体;(2)执行体组件的函数名约定; (3)内核和内核对象 ;(4)对硬件独立性支持3.硬件抽象层4.设备驱动程序 (1)内核模式驱动程序;(2)WDM驱动程序5.系统支持进程 (1)空闲进程 ;(2)系统进程;(3)会话管理进程(Smss);(4)登录进程(WinLogon)、本地安全验证服务器进程(Lsass)和用户初始进程(Userinit); (5)服务控制管理器(SCM)。 8.2 Windows XP资源管理功能资源管理功能8.2.1
159、Windows XP的处理器管理的处理器管理 8.2.2 Windows XP的内存管理的内存管理 8.2.3 Windows XP的文件系统的文件系统 8.2.4 Windows XP的的I/O系统系统 8.2.1 Windows XP的处理器管理的处理器管理 WindowsXP中的处理器管理以进程和线程的管理为核心,进程是系统资源分配的基本单位,线程是处理器调度的实体。 1.进程、线程和纤程(1)进程:WindowsXP中,系统为一个程序实例建立一个进程和至少一个线程。这些线程共享系统分配给进程的资源。(2) 线程线程线程是Windows调度执行的进程内部实体。如果没有线程,进程的程序就不
160、能运行。 (3) 纤程纤程为使得应用程序不依赖于基本优先级的内容调度机制就能够调度自己的线程执行,WindowsXP中还设立了纤程(Fiber)。从调度角度看,纤程也被称为“轻量经”的线程,它们对于内核是不可见的,因为它们是在用户模式下实现的。 2. 进程控制进程控制 WindowsXP的各环境子系统都有相应的系统调用函数来实现进程控制,例如,CreateProcess、ExitProcess和TerminateProcess。 3. 进程的同步和互斥进程的同步和互斥(1)同步对象)同步对象 WindowsXP中提供了互斥对象、信号量对象和事件对象3种同步对象和相应的系统调度,用于进程和线程的
161、同步。(2)同步相关机制)同步相关机制 WindowsXP还提供了一些与进程同步相关的机制,例如临界区对象和互锁对象访问API等。4. 进程通信进程通信 WindowsXP提供了多种进程通信机制,用于不同场合的需要,主要介绍已下五种:(1)信号(2)共享内存区(3)管道(4)邮件槽(5)套接字5. 线程调度线程调度 WindowsXP中,系统的处理器调度对象是线程,采用基于优先级的可抢占调度策略。(1)线程的优先级(2)线程时间片(3)线程状态(4)抢先6. Windows XP中的作业中的作业 WindowsXP中,作业对象是可命名的,安全的和可共享的内核对象,它的基本功能是允许将若干个进程
162、作为一个单元来管理和控制。 8.2.2 Windows XP的内存管理的内存管理WindowsXP中的内存管理包括内存管理器、进程虚拟内存空间、地址转换、内存的分配一和回收、工作集机制和物理内存的管理。1. 内存管理管理器内存管理管理器 WindowsXP的内存管理主要由内存管理器负责,与具体API有关的一些用户模式功能则由环境子系统实现。内存管理器是执行体中的一部分,位于Ntoskrnl.exe文件中。内存管理器有两个主要任务:将进程的虚拟地址映射到物理内存中,当要求的内存量大于实际的可用量时进行页面交换。 (1)组成部分 一组执行体系统服务;一个转换无效和访问错误陷阱处理器;几个关联组件:
163、 (2)同步机制的使用:与WindowsXP执行体中所有其他组件一样,内存管理器在多处理器系统上是完全可以重入的,且支持多进程并发执行。(3)相关的内存变量:控制内存管理器策略决策的许多阈值和限制,是在系统引导是根据内存大小和产品类型计算出来的。(4)提供的服务:内存管理器提供了一组服务来完成内存管理任务,这些服务大多数通过WindowsAPI供客户使用。2. 地址空间布局地址空间布局 WindowsXP采用虚拟存储技术。它的32位版本中,每个进程的虚拟地址空间可达到4GB(232B)。在默认情况下,其中低端的2GB为专用的用户地址空间,高端的2GB是系统地址空间。用户的地址空间可被用户模式和
164、内核模式线程访问,而系统地址空间只能被内核模式代码访问。 3.地址转换机制地址转换机制 用户应用程序以32位虚拟地址方式编址,利用内存管理器创建和维护的数据结构将虚拟地址转换为物理地址。默认情况下,WindowsXP使用二级页表结构来实现虚拟地址向物理地址转换。4. 内存分配内存分配 (1)用户空间:WindowsXP中有3种管理应用程序内存的方法:以页面为单位的虚拟内存分配方法,适合于大型对象或结构数据;区域对象方法,适合于大型数据流文件以及进程之间的数据共享;内存堆方法,适合于大量的小型内存申请。(2)系统内存分配:WindowsXP的系统空间包含两种内存池:换页池和非换页池,内核模式组件
165、可以用它们来分配系统内存。 5. 工作集管理工作集管理 如果能够预知程序在某段时间内要访问那些页面,并将它们提前调入内存,这将降低缺率,提高CPU利用率。引入工作集能够起到这个效果。工作集是驻留在物理内存中的虚拟页面子集,除了进程工作集和系统工作集两种外,为了支持终端服务程序所进行的内核扩展,WindowsXP还设立了会话工作集。6. 物理内存管理物理内存管理 WindowsXP中,工作集描述了进程或系统拥有的驻留页面,而页框号(PEN)数据库描述了物理内存中页面的状态。PFN数据库中的每个项描述一个物理页面,有效的PTE(页表项)指向PFN数据库中的项,而PFN数据库中的项指向利用它们的页表
166、。 7. 内存保护内存保护WindowsXP通过以下4种方法提供内存保护。(1)全局页面保护 所有被内核模式系统组件用到的系统全局范围的数据结构和内存池,只有在内核模式下才可以访问;(2)进程地址空间保护 每个进程有一个独立的、受保护的、私有地址空间,任何属于其他进程的线程都不能访问这个地址空间。(3)硬件控制的保护 对虚拟地址到物理地址的转换过程提供了隐式的保护,此外,Windows支持的所有处理器还提供了某种形式的由硬件控制的内存保护。(4)共享内存区保护 共享内存区对象具有标准的Windows访问控制列表ACL,当进程试图打开这些区对象时,该ACL将会被检查,从而保证了只有那些具有适当权
167、限的进程才可以访问共享内存。 8.2.3 Windows XP的文件系统的文件系统WindowsXP支持多种文件系统,除了原生的Windows文件系统NTFS以外,还支持CD-ROM文件系统(CDFS)、通用磁盘格式(UDF)和FAT文件系统。 先了解几个术语。(1)扇区:是存储介质上呆由硬件寻址的块。(2)分区:是磁盘上连续扇区的集合。(3)简单卷:代表一个分区的所有扇区,文件系统程序将它作为一个单元来管理。(4)多分区卷:代表多个分区的所有扇区,文件系统驱动程序将它作为一个单元来管理。(5)簇:许多文件系统格式使用的可寻址数据块。(6)文件系统格式:定义了文件数据在存储介质上的存储方式,它
168、影响文件系统的特性。(7)元数据:是为文件系统格式管理而存储的在卷上的数据,应用程序无法访问。1. NTFS的卷和簇的卷和簇 NTFS以卷为基础,当以NTFS格式来格式化磁盘分区时就创建了NTFS卷。分区是磁盘的基本组成部分,是一个被格式化和单独使用的逻辑单元。 NTFS与FAT文件系统一样,也是以簇作为磁盘空间分配和回收的基本单位。NTFS卷上簇的大小是用户在格式卷时确定的,默认的簇的大小随卷的大小而不同,但都是整数倍,且总是2的幂。簇大小被表示成所含字节数,NTFS中最小的是512B,最大可达64KB。 NTFS使用逻辑簇号(LCN)和虚拟符号(VCN)来进行簇的定位。LCN是地整个卷中所
169、有的簇按顺序进行编号。簇大小乘以LCN就是簇在卷上的字节偏移量,从而得到物理磁盘地址。VCN则是地属于特定文件的簇从0开始按顺序进行编号,可用来引用文件中的数据,VCN被映射成LCN,不必要求在物理上连续。2. 主文件表主文件表 每个NTFS卷有个主文件表(MFT),它包含了该卷中所有文件信息。MFT被实现为一个这长记录文件,不管簇的大小如何,每个MFT记录大小都是1KB,卷上的每个文件(包括MFT本身)都有一个MFT记录。 3.NTFS的文件实现机制 在NTFS卷上,每个文件都有一个64位的唯一标识,称为文件引用。NTFS将文件作为属性/值对的集合,文件包含的数据就是其中的一个属性(未命名属
170、性)的值,文件夹其他属性都命名的,包括文件名和文件时间戳(如文件的创建时间和最近一次修改时间)等。每个属性都被作为文件内部的一个独立字节流。严格地说,NTFS读写的不是文件,而是属性流。 4.NTFS的目录实现机制 在NTFS中,文件目录仅仅是文件名的一个索引。NTFS使用了一种特殊的方式把文件组织起来,以便快速访问。一个目录的MFT记录将该目录中的文件名和子目录名进行排序,并保存在索引根属性中。 小目录的属性都可以驻留在MFT中,其索引根属性可以包括其中所有文件和子目录的索引,一个大目录可能包括非驻留属性 MFT记录若没有足空间来存储大目录的索引,其中一部分索引存放在索引根属性中,而另一部分
171、则存放在称为索引缓冲区的延展中。 8.2.4 Windows XP的的I/O系统系统 1. I/O系统的组成:系统的组成:Windows XP的的I/O系统由一些执行体组系统由一些执行体组件、设备驱动程序和相关信息组成。件、设备驱动程序和相关信息组成。 用户模式内核模式HAL(硬件抽象层)WDMWMI例程应用程序Windows服务用户模式PnP管理器WMI服务器安装组件.inf文件.cat文件注册表PnP管理器电源管理器I/O管理器2. 相关的数据结构相关的数据结构 I/O系统是包驱动的,大多数I/O请求都可以用一个I/O请求包(IRP)来描述。除了IRP,还有3种重要的数据结构:文件对象、驱
172、动程序对象和设备对象。 3. 设备驱动程序的结构设备驱动程序的结构 一个设备驱动程序是由一组例程构成的,在处理一个I/O请求的不同阶段,会调用其中之一的不同例程。 4. Windows XP的的I/O处理处理 (1)I/O的类型(2)快速I/O(3)映射文件I/O(4)分散/集中I/O本章小结本章小结注册表包含了引导和配置系统所需的信息、控制系统范围的软件设置、安全数据库,以及各个用户的配置设定,从中可以观察硬件当前状态和性能计算数器信息。任务管理器以图形和数据形式提供程序的运行状态、计算机性能的关键指示器、运行进程的活动、CPU和内存的使用情况,还可以结束进程和程序等。利用事件查看器,可以搜
173、索计算机系统中硬件、软件和系统问题方面的信息,监视WindowXP安全性事件,将系统和应用程序运行中的事件记录到日志中,便于诊断和纠正可能发生的系统错误和问题。“系统监视器”和“性能日志和警报”其主要作用是监视系统性能、查看性能计数器日志和设置警告。本章第二部分介绍了WindowXP的处理器管理、内存管理、文件管理和外设管理。第第9 9章章 LinuxLinux基础基础 9.1 9.1 概述概述 9.2 Linux9.2 Linux的进程管理的进程管理 9.3 Linux9.3 Linux的存储管理的存储管理 9.4 Linux9.4 Linux的文件系统的文件系统 9.5 Linux9.5
174、Linux的设备管理的设备管理 本章目标本章目标 了解Linux的由来、发展和特点知识。了解Linux的文件系统、存储管理、进程管理和设备管理知识。9.1 概述概述9.1.1 UNIX的兴起的兴起 9.1.2 Linux的诞生的诞生 9.1.3开源、自由和开源、自由和Linux 9.1.4 Linux操作系统的应用前景与未来操作系统的应用前景与未来 9.1.5 Linux操作系统的特点操作系统的特点9.1.6 Linux版本版本 9.1.1 UNIX的兴起的兴起UNIX从诞生之日起就是高效、多用户和多任务的操作系统,且价格并不昂贵。尽管UNIX操作系统非常复杂,但是它颇具灵活性,可以很容易地被
175、修改,这种设计上固有灵活性不会影响它的性能,反而使其能够在实践中适应各种环境的需要。事实上正是由于其灵活性,许多厂商也因此拥有自己的专用版本,从而使UNIX发展多样化,并日趋昂贵。在UNIX不断发展的过程中,它一直是一个条件要求相对苛刻的大型操作系统,仅对工作站或小型机有效。UNIX的一些版本被设计为主要适用于工作站环境。Solaris就是主要为Sun工作站开发的,AIX是为IBM工作站开发的,HP-UX则是为HP工作站开发的。随着PC逐渐发展且功能日趋强大,人们开始着手开发UNIX的PC版本。UNIX固有的可移植性使它几乎适用于任何类型的计算机,同样,产生PC版本的UNIX也是可行的。 9.
176、1.2 Linux的诞生的诞生1991年10月,一个名叫LinusTorvlads的、21岁的芬兰赫尔辛基大学计算机系的大学生,当时正在学习UNIX课程,他使用由AnndrewTanenbaum教授自行开发、发布在Internet上提供给全世界的学生免费使用的小型教学用操作系统Minix。为了自己的操作系统课程研究和后来的上网用途,Linus在他自己的购买的Intel386PC上开发出了他自称为Linus版的Minix,后来命名为Linux,也就是第一个Linux正式版本Linux0.0.2版,其稳定性及功能很不完善。Linux的兴起可以说是Internet创造的一个奇迹。到1992年1月,全
177、世界只有100个左右的人在使用Linux,但由于它是在Internet发布的,所以网上的任何人在任何地方都可以得到Linux的基本文件,并可以电子邮件发表评论或修改代码。正是众多爱好者的努力使Linux在不到3年的时间里成为了一个功能完善、稳定可靠的操作系统。 9.1.3开源、自由和开源、自由和LinuxLinux从诞生之日起,Linus就希望把它定位为供全人类共享的自由软件,不仅把它的代码全部开放,而且坚持不把Linux作为牟利的工具。在开源和自由的旗帜下,Linux的持续发展和完善凝聚了全世界无数开发人员的心血,体现了信息世界里的共建、共享和共荣的精神。尽管Linux是在开放的Intern
178、et环境下开发的,但它依然遵循了正式的UNIX标准,在过去的几十年里,由于不同的UNIX版本的大量出现,美国电子和电气工程师协会(theInstituteofElectricalEngineers,IEEE)为美国国家标准化协会(ANSI)开发了一个独立UNIX标准。这个新的ANSIUNIX标准被称作计算机环境的可移植性操作系统界面(thePortableOperatingSystemInterfaceforComputerEnvironments,POSIX)。这个标准定义了UNIX、规定了UNIX版本的必须遵循的通用标准,当今流行的大部分UNIX版本都遵循POSIX标准。Linux从一开始
179、就是依照POSIX标准开发的。9.1.4 Linux操作系统的应用前景与未来操作系统的应用前景与未来Linux运行的硬件平台由起初的Intel386开始,到目前已经提供了对现有大部分处理器体系结构的支持,如Alpha、PowerPC、MIPS、PPC、ARM、NEC等,Linux不但支持32位体系结构,还支持64位体系结构,如Alpha。此外,Linux还支持多CPU。现在,Linux应用越来越广泛,从桌面到服务器,从操作系统到嵌入式系统,从零散的应用到整个产业的初建雏形,Linux已拥有了许多大型企业用户和团体用户,其中包括NASA、迪斯尼、洛克希德、通用电气、波音等世界级的企业以及世界著名
180、大学机构。目前,Linux在企业应用中已经相当成熟,成为增长速度最快的操作系统,已占据服务器领域近40%的市场。由于全球各国政府的大力支持,Linux在桌面市场也将获得突破。同时,Linux在嵌入式系统中也成为最受欢迎的操作系统之一。 9.1.5 Linux操作系统的特点操作系统的特点Linux操作系统在短短几年内的迅速发展,除去时机、需求和市场机会几个方面的因素,Linux本身具有的良好特性仍旧是Linux在全球普及和流行的主要原因。概括起来,Linux具有如下特点。 (1)开放性 (2)多用户 (3)多任务 (4)稳定的执行效能 (5)优秀的内存管理 (6)支持多文件系统 (7)具有标准兼
181、容性 (8)良好的可移植性 (9)广泛的协议支持 (10)良好的用户界面9.1.6 Linux版本版本如前所述,纯粹意义上的Linux是指内核,它负责进程管理、存储管理、文件系统、网络通信以及系统初始化(引导)等工作。内核版本是在Linus领导下的开发小组开发出的系统内核版本号为标准。目前较流行的Linux发行版本主要有:RedHat、Debian、Redflag(红旗)、SuSe、Mandriva、TurboLinux、OpenLinux等,这里就不多赘述。 9.2 Linux9.2 Linux的进程管理的进程管理9.2.1 Linux9.2.1 Linux的进程的进程9.2.2 Linux
182、9.2.2 Linux进程创建进程创建 9.2.3 Linux9.2.3 Linux进程调度进程调度 9.2.1 Linux9.2.1 Linux的进程的进程Linux是一种多任务多用户操作系统,一个任务就是一个进多任务多用户操作系统,一个任务就是一个进程程。每一个进程都具有一定的功能和权限,它们都运行在各自独立的虚拟地址空间。在Linux中,进程是系统资源分配的基本单位,也是CPU运行的基本调度单位。1. Linux进程的状态进程的状态事件调度调度信号信号终止事件出现等待暂停运行可运行僵死创建Linux进程的状态(1)运行状态:进程正在使用CPU运行的状态。处于运行态的进程称为当前进程。(2
183、)可运行状态:进程已分配到除CPU外所需要的其他资源,等待系统把CPU分配给它之后即可投入运行。(3)等待状态:又称睡眠状态,它是进程正在等待某个资源时所处的状态。等待状态进一步分为可中断的等待状态和不可中断的等待状态。处于可中断等待状态的进程可以由信号(Signal)解除其等待状态。处于不可中断等待状态的进程,一般是直接或间接等待硬件条件。它只能用特定的方式来解除,例如使用唤醒函数wake_up()等。(4)暂停状态:进程需要接受某种特殊处理而暂时停止运行所处的状态。通常进程在接收到外部进程的某个信号进入暂停状态。例如,正在接受调试的进程就处于这种状态。(5)僵死状态:进程的运行已经结束,但
184、它的任务结构仍在系统中。 2. 核心模式和用户模式核心模式和用户模式 Linux的进程处理机在运行时,处理机提供了两种不同的执行状态(也就是用户态和内核态),核心模式(KernelMode)和用户模式(UserMode)。核心模式又称系统模式,它具有较高的特权,能执行所有的机器指令,包括由操作系统执行的特权指令,能访问所有的寄存器和存储区域,能直接控制所有的系统资源。Linux在执行内核程序时是处于核心模式下。用户模式是进程的普通执行模式,在用户模式下进程具有较低的特权,只能执行规定的机器指令,不能执行特权指令。进程在用户模式下只能访问存储空间。在用户模式下进程不能与系统硬件相互作用,不能访问
185、系统资源。 3. 进程之间的关系进程之间的关系Linux是通过复制机制来产生进程的。复制进程的本身也是个进程。假设进程A复制了进程B,那么进程A就是进程B的父进程,进程B就是进程A的子进程。init(初始化)进程是Linux系统中的所有进程的父进程,由init产生了shell。而init是仅有的一个Linux内核所直接运行的进程。对于用户的大多数命令而言,它们的父进程是Shell。Shell同样能够产生子Shell进程,子进程是通过调用fork对父进程Shell进行复制而实现的。在复制完毕后,子进程就和父进程完全一样。然后用一个叫exec的进程转换子进程,使其成为所需要的进程。在子Shell进
186、程中用exit命令可以退出并结束当前的Shell。子进程拥有与父进程完全一样的环境。4. 每个进程都可能以两种方式存在:每个进程都可能以两种方式存在: 前台(前台(Foreground)和后)和后台台(Background)所谓前台进程,就是用户目前在屏幕上进行操作的进程;而后台进程则是实际上在运行,而用户在屏幕上无法看到的进程。Linux后台进程也叫守护进程(Daemon)。9.2.2 Linux9.2.2 Linux进程创建进程创建Linux系统响应用户进程的fork()请求后要做如下处理。(1)为子进程分配进程表项和进程标识符(2)检查同时运行的进程数目(3)将该子进程置为创建状态,对其
187、task_struct结构进行初始化。(4)子进程继承父进程的所有已打开的文件。(5)为子进程创建进程映像(6)调度进程执行9.2.3 Linux9.2.3 Linux进程调度进程调度Linux进程调度的任务由内核程序schedule()实现,Linux进程调度程序schedule()的任务是根据进程调度策略在run_queue队列中选出一个就绪进程为其分配CPU。 1. 进程切换方式进程切换方式:(1)主动放弃式;(2)抢占式 2. Linux进程调度策略进程调度策略:Linux2.4是一个基于抢占式抢占式的多多任务任务的分时操作系统分时操作系统,在用户进程的调度上采用抢占式策略,但在内核依
188、然沿用了时间片轮转时间片轮转的方法。 3. Linux进程调度时机进程调度时机 当前进程时间片用完时,转进程调度。 进程执行系统调用后因条件不满足而阻塞时,转进程调度。 进程因请求设备I/O而等待时,转进程调度。 进程从中断、异常或系统调用完成后,由内核态返回到用户态之前,如果此时当前进程的need_resched标志被置位,则转进程调度。9.3 Linux9.3 Linux的存储管理的存储管理9.3.1 Linux的多级页表机制的多级页表机制 9.3.2 Linux内存交换内存交换 9.3.1 Linux的多级页表机制的多级页表机制 Linux系统采用了虚拟内存管理机制,就是交换和请求分交换
189、和请求分页存储管理技术页存储管理技术。 Linux将存储管理分为多个相对独立的部分。一部分与硬件平台有关,如具体的分页及地址转换,另一部分则通用,如对页表的维护、交换等可以使用相同的代码,两部分之间使用统一的接口相互联系。Linux内存管理采用分页而不分段的平展地址模式 ,32位CPU采用二级页表机制,而64位CPU采用三级页表索引结构的方式。 线性地址31222112110物理内存页目录页号页内偏移W页目录索引页表页帧始址物理地址CR3W32位CPU的Linux二级页表机制示意图64位CPU的Linux二级页表机制示意图物理页帧第一级第二级第三级虚地址页号第一级目录第二级目录CR3页内偏移页
190、号页表页号(1)页目录(PGD)PGD是项级页表,也称为第一级页目录索引。(2)中级页目录(PMD)PMD是第二级页表,也称为第二级页目录索引。(3)页表(PTE)PTE是一个页对齐项的数组,每一项称为一个页表项。9.3.2 Linux内存交换内存交换1. 交换进程交换进程 当内存空间变得很少时,Linux存储管理必须释放一些内存页。这一任务的实现由交换进程kswapd来完成。kswapd是一个特殊的内核进程。 2. 页交换策略页交换策略 Linux的页交换策略采用是最近最久未用者淘汰最近最久未用者淘汰策略。Linux在页数据结构中定义了一个页年龄的计数age,通过该项实现对页的淘汰。3. L
191、inux页交换中的页交换中的“脏脏”页面和页面和“干净干净”页面页面 当某页被换出并且被再次分配时,即系统需要进行物理释放该页,根据该页是否被修改过,决定是否要将其中的信息回写到磁盘上。如果被修改过,称该页为“脏”页,需要回写磁盘后才能释放;否则称为“干净”页,不需要回写,直接释放即可。 9.4 Linux9.4 Linux的文件系统的文件系统9.4.1 Linux的的ext2文件系统文件系统 9.4.2 ext2文件系统逻辑结构与物理结构文件系统逻辑结构与物理结构 9.4.3 ext2文件系统对存储空间的管理文件系统对存储空间的管理 Linux文件系统的最大特点是采用了虚拟文件系统(VFS)
192、,它隐藏了各种硬件的具体细节,为所有设备提供了统一的接口,能够支持ext、ext2、MS-DOS、VFAT等多达15种文件系统,并且能够将多种本地的或远程的文件系统共存于Linux中,并实现这些文件系统之间的互访。文件系统是操作系统用来存储和管理文件的方法,在Linux中每个分区都是一个文件系统,都有自己的目录层次结构。Linux将这些分属不同分区的相互独立的文件系统,按一定的方式形成一个系统的总的目录结构。 9.4.1 Linux的的ext2文件系统文件系统在众多可以使用的文件系统中,ext2是Linux自行设计且具有较高效率的一种文件系统。虽然最新的Linux已经将ext3作为默认的文件系
193、统,但是作为一种经典的文件系统,ext2在性能和健壮性上依然具有其独特的优点,它建立在超级块、块组、i结点、目录项等概念的基础上,ext2文件系统灵活、功能强大而且在性能上进行了全面的优化,并且在内存映射、数据块的申请与释放算法上也有自己的独到之处。 1.ext2文件系统支持标准的UNIX特性 2.ext2文件系统具有自己特有的性能 3.ext2文件系统对数据块的分配所采用的优化策略 9.4.2 ext2文件系统逻辑结构与物理结构文件系统逻辑结构与物理结构1.逻辑结构 ext2文件系统中文件的逻辑结构采用字符式无结构的流式文件结构。文件由逻辑块序列组成,所有数据块的长度可变,但一经定义后则长度
194、相等。 ext2文件系统中文件的物理结构采用UNIX系统的三级索引结构来实现文件数据块的物理存储。 当一个文件被打开后,其磁盘i结点的内容会由系统复制到内存i结点中,内存i结点中除了从磁盘i结点复制来的文件静态信息外还有针对该文件在使用过程中产生的活动信息。磁盘i结点的结构为ext2_inode,内存i结点的结构为ext2_inode_info(略)。2.物理结构 由上述磁盘i结点ext2_inode的结构所知,其中i_block(文件占用块数)指针数组中包含了15个指向磁盘块的指针,其中前12个指针是直接指向文件的前进12个逻辑块;其余的3个指针分别为一次间接、二次间接和三次间接指针。 如果
195、一个小文件不超过12个逻辑块,则该文件的每一块都由一个直接指针指向它们,这些逻辑块可以直接访问,每访问一块即为一次读盘操作。 如果文件大小超过12个逻辑块,则超过的部分就要通过一次间接索引才可以访问,所以超过的部分需要读2次盘;第一次读盘访问间接索引得到物理地址,第二次读盘访问文件块。 如果文件大到超过一次间接读索引所能容纳的物理块数,则超过的部分就要采用二次间接索引来完成,对于一部分内容就要读盘3次了。对于极大的文件,Linux也可以通过3次间接索引来完成其物理存储的组织,只不过访问大文件的内容需要读盘至多4次。9.4.3 ext2文件系统对存储空间的管理文件系统对存储空间的管理1.ext2
196、文件系统的磁盘格式 Linux将整个磁盘划分为若干分区,一般为一个主分区主分区native和一个交换分区交换分区swap,每个分区都作为一个独立的设备对待。磁盘主分区用于存放文件系统,交换分区用于虚拟虚拟内存内存。主分区由引导块和一系列的块组组成,每个块组的结构相同。ext2文件系统的磁盘结构如图所示: ext2文件系统的磁盘结构引导块块组1块组2块组n 交换区其中引导块用于存放引导程序,负责启动系统,每个块组具有相同的结构,如图所示:超级块是系统用来管理文件系统(磁盘块)的数据结构。组描述符表是所有块组的组描述符的集合,一个组描述符用于描述一个块组的信息。上述超级块和组描述符表是针对整个文件
197、系统的,每个块组中都有相同的副本,启动时调入块组0,其他作为备份,这样做的好处是当系统崩溃时可以用备份恢复,提高了系统的可靠性。块位图用来记录本组内各个数据块的使用情况,其中每一位对应一个数据块,0表示空闲,非0表示已分配。inode位图记录了inode表中的块使用情况,同样是每一位对应一个inode块,0表示空闲,非0表示已分配。inode表中所包含的空闲块用于分配给文件的i结点,每个i结点一个文件,有唯一的i结点号。数据块是文件物理结构图的存储块,用于存放物理文件的数据。该块所属文件的i结点中,索引指针指向这些数据块。ext2文件系统的块组结构超级块组描述符表 块位图inode位图inod
198、e表数据块2. ext2文件系统的磁盘空闲块的分配文件系统的磁盘空闲块的分配 ext2文件系统对磁盘空闲块的管理是通过超级块和组描述符表来完成的。 为了提高文件系统访问的效率,尽量避免碎片问题,ext2文件系统在实施分配时总试图分配一个与当前文件数据块在物理位置上邻接或者位于同一个块组的新块,只有在这种分配策略失败后才在其他块组中分配。其分配过程如下: (1)如果采用预分配块策略,则从预先分配数据块中取得一个,预先分配块实际上并不存在,它们只是包含在已分配块的位图中。 (2)如果没有使用预分配策略,则ext2文件系统必须分配一个新数据块。如上所述,首先检查该文件最后一个块之后有无空闲块,如果没
199、有则在同一个块组的64个数据块中选择一个。 (3)如果同一个块组中没有空闲块,则将丰其他块组中搜寻,此时首先8个一簇的连续块,直至找到一个空闲块实施分配。 (4)找到空闲块后,块分配程序将更新该数据块的块位图,并在调整缓存中为它分配一个数据缓存且初始化。 9.5 Linux9.5 Linux的设备管理的设备管理9.5.1 Linux的设备分类的设备分类 9.5.2 Linux的设备文件的设备文件 9.5.3 Linux的设备驱动程序的设备驱动程序 在Linux中,每个外部设备都被映射为一个特殊的设备文件,对于硬盘、光驱等IDE或SCSI设备也不例外。这使得用户程序可以像对其他文件一样方便地对该
200、设备文件进行读写操作。Linux采用了虚拟文件系统(VFS)进行设备管理,向上(面向用户)提供设备文件的系统调用;向下(面向设备)内核将控制权交给设备驱动程序,由其完成底层的设备驱动。系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口 ext2文件系统的磁盘结构用户程序应用层字符设备系统调用接口文件子系统高速缓存块设备设备驱动程序物理设备层操作系统设备控制器9.5.1 Linux的设备分类的设备分类1. 分类分类 Linux支持3种不同类型的设备:字符设备、块设备和网络接口。 字符设备以字节为单位进行数据处理,能够按顺序输入/输出不定长度的数据,大部分字
201、符设备不使用缓存技术。 块设备将数据按可寻址的块为单位进行处理,块的大小通常为512B32KB不等。 2. 主设备的号和次设备号主设备的号和次设备号 传统方式和设备管理中,除了设备类型以外,内核还需要一对称为主设备号和次设备号的参数,才能唯一地标识设备,主设备用于标识设备对应的驱动程序,主设备号相同的设备使用相同的驱动程序。 9.5.2 Linux的设备文件的设备文件在与设备驱动程序通信时,内核常使用设备类型、主设备号和次设备号表示一个具体设备。但从用户角度,记住设备的编号是不现实的,用户希望能用同样的应用程序和命令访问设备和普通文件,因此,Linux将设备映射为一种特殊的文件,称为设备文件,
202、为文件和设备提供了一致的用户接口。这样由于设备文件与普通文件没有太大的区别,用户可以使用统一的界面去操作它们,如打开、关闭、读和写操作等。9.5.3 Linux的设备驱动程序的设备驱动程序 系统对设备的控制和操作是由设备驱动程序完成的。设备驱动程序是由设备服务子程序和中断处理程序组成。设备服务子程序包括了对设备进行各种操作的代码,中断处理子程序处理设备的中断。设备驱动程序的主要功能是:对设备进行初始化;启动或停止设备的运行;把设备上的数据传送到内存;把数据从内存传送到设备;检测设备状态。驱动程序是与设备相关的。代码由内核统一管理,在具有特权级的内核态下运行。设备驱动程序是输入/输出子系统的一部分。它是为某个进程服务的,其执行过程仍处在进程运行的过程中,即处于进程上下文中。若驱动程序需要等待设备的某种状态,它将阻塞当前进程,把进程加入到该种设备的等待队列中。Linux的驱动程序分为两个基本类型:字符设备驱动程序和块设备驱动程序。 本章小结本章小结本章简要介绍了Linux操作系统的发展历史和特点,Linux的处理器管理、存储器管理、文件管理和I/O系统知识。