操作系统 ().ppt
第一章 计算机操作系统概述n1、操作系统概述n2、操作系统发展历程n3、操作系统分类n4、操作系统功能和特征一、操作系统概述n1、操作系统的几种观点n(1)用户观点n(2)资源管理观点n(3)进程观点n2、操作系统的定义n操作系统是位于硬件层之上,所有其它软件层之下的一个系统软件,他是这样一些程序模块的集合他们管理和控制计算机系统中的硬件及软件资源,合理的组织计算机工作流程,以便有效的利用这些资源为用户提供一个功能强、使用方便的工作环境,从而在计算机和用户之间起到接口的作用。用户1用户2用户n硬件操作系统应用程序n3、操作系统在计算机系统中的地位二、操作系统发展历程手工操作阶段批量处理阶段执行系统阶段系统形成阶段早期批处理脱机批处理多道程序设计分时系统三、操作系统分类批量处理系统分时系统实时系统网络操作系统分布式操作系统1.单道批处理2.多道批处理1.实时控制类2.实时处理类四、操作系统的功能和特征n操作系统的功能n1、进程管理、进程管理n2、作业管理、作业管理n3、存储管理、存储管理n4、文件系统、文件系统n5、设备管理、设备管理n操作系统的特征n1、并发性、并发性n2、共享性、共享性n3、不确定性、不确定性n4、虚拟性、虚拟性作业n题一:在操作系统中引入并发可以提高系统效率,若有两个程序 A和B。 A程序执行时所作的工作按次序需要用:CPU:10秒、DEV1:5秒、CPU:5秒、DEV2:10秒B程序执行时所作的工作按次序需要用:DEV1 :10秒、CPU:10秒、DEV2:5秒、CPU:5秒、DEV2:10秒1、如果在顺序环境下执行A、B两个程序,CPU的利用率为多少? 2、如果在并发环境下执行A、B两个程序,假设A程序先执行,则CPU的利用率为多少? 作业n题二:在有一台CPU和2台I/O设备I/O1、I/O2,且能够实现抢先式多任务并行工作的多道程序环境下,投入运行优先级由高到底的3个作业P1,P2,P3。他们使用设备的先后顺序和占用设备时间分别是: P1:I/O2(30ms)、CPU(10ms)、I/O1(30ms)、CPU(10ms)P2:I/O1(20)、CPU(20)、I/O2(40)P3:CPU(30)、I/O1(20)假设在系统中仅有着3个作业投入运行,各设备的利用率指该设备的使用时间同作业进程组全部完成所占用最长时间的比率。在控制程序介入时间可以忽略不计的假设下,作业P1、P2、P3从投入运行到完成所用的时间分别是多少?3个作业从投入运行到全部完成,CPU、I/O1、I/O2的利用率分别是多少?A、30%B、40% C、50% D、60%A、99%B、89% C、79% D、69%第二章 进程管理第二章 进程管理n1、进程的概念及描述n2、进程控制n3、进程的互斥和同步n4、进程通信n5、进程死锁n6、进程的实例一、进程的概念和描述n1、进程的引入n2、进程的定义n3、进程的描述n4、进程状态及其转换n程序的顺序执行n程序的并发执行n进程概念的引入程序的这种顺序执行过程可以描述为: Repeat IR Mpc pc pc+1 Until CPU halt其中,IR为指令寄存器;pc为程序计数器,M为存储器。n程序顺序执行的三个特点:n顺序性n封闭性n可再现性返回n即上一条指令的执行结束是下一条指令执行开始的充分必要条件,程序总是严格按照给定的指令序列顺序执行的。即使要改变执行顺序,也是通过程序本身的指令(如转移指令、循环指令等)来实现的。返回n程序一旦开始运行,就必然独占所有的系统资源,其执行结果由给定的初始条件决定,而不会受到外界因素的影响。返回n这是指程序执行的结果与执行速度无关。也就是说,只要给定的初始条件相同,无论在什么机器上,在任何时间,以任何速度,多次重复执行程序都必然得到相同的结果。n这种单道程序系统环境下,系统资源是以程序为单位进行分配的,而且被获得了全部资源而运行的程序所独占,也就不存在资源共享、多个程序同时运行以及用户程序执行的随机性问题,操作系统的设计和功能也因此变得非常简单。但在这种系统中,资源利用率极低也是显而易见的。例:n如图所示。从时间上来看,该程序的执行过程中不可能使输入机、处理器、打印机同时处于忙碌状态,如输入数据时,处理器和打印机是空闲的,而在打印数据时,输入机和处理器又在空等。返回n为了增强计算机系统的处理能力,提高资源利用率,我们可以让多个程序同时在系统中运行,这种多个程序的同时操作技术就称为程序的并发执行。 例n有A、B、C三个程序同时在系统中运行,我们可以让这三个程序按下图所示的顺序分时地占用CPU。程序A程序B程序C程序A程序B程序CCPU时间(t)宏观上程序并行执行微观上串行使用CPUn在多道程序系统中,程序的执行环境还具有n并发性 n随机性、n资源共享等特点。n即指系统中有多个程序同时执行。在单CPU系统中,多个并发执行的程序虽然从宏观上来看是并行执行的,但是从微观上来看,它们是分时、轮流地占用CPU时间,所以是串行的。返回n 在多道程序环境下,尤其是在多用户环境下,程序和数据的输入与执行时间都是随机的。在实时系统中更是如此,系统必须在一个被允许的短时间内对随机的输入做出反应。返回n 任何一个计算机系统中的软、硬件资源数量总是有限的,这就要求系统资源允许被多个并发执行的程序所共享。 例:n设有堆栈S,栈指针top,栈中当前存放数据的情况如图(a)所示。设有两个程序段getdata(top)和reldata(x),其中getdata(top)是从top所指的栈顶中取出数据;而reldata(x)是将数据x存放到堆栈S中。这两个程序段可分别描述为:procedure procedure reldata(x)reldata(x)beginbegin t o p t o p top+1top+1 ( t o p ) ( t o p ) x xendendp r o c e d u r e p r o c e d u r e getdata(top)getdata(top)beginbegin local r local r r (top) r (top) top top-1 top top-1 return (r) return (r)endendn1、作业的状态及其转换4321toptop执行语句执行语句top top+1top top+1 top4321GetdataGetdata取数据失败取数据失败( a a )( b b )( c c )返回在某些情况下,程序的并发执行会使得程序顺序执在某些情况下,程序的并发执行会使得程序顺序执行时本应具有的封闭性和可再现性遭到破坏,造成行时本应具有的封闭性和可再现性遭到破坏,造成程序运行的结果出现错误。程序运行的结果出现错误。第三章 作业管理第三章 作业管理n1、作业与作业步n2、用户界面n3、交互式作业与批处理作业n4、作业调度n5、作业的实例一、作业和作业步从用户角度说,我们把用户要求计算机系统处理的一个问题称为一个作业,在一个作业处理过程中所相对独立的加工步骤就称为作业步。从计算机系统角度来看,作业是用户在一次“算题”过程中要求计算机所要完成工作的集合,系统通过作业说明书,控制文件形式程序和数据进行各项处理,最后将执行的结果输出告诉用户。作业由程序、数据和作业说明书三部分组成。 二、用户界面n1、操作系统是用户和计算机之间的接口n2、系统调用的实现n3、用户界面 1、操作系统是用户和计算机之间的接口 用户接口通常分为命令接口和程序接口两类:n命令接口:即作业控制一级的各种操作命令。是指在用户和操作系统之间提供高级通信的基础上来控制一组程序的处理。用户可以通过输入一系列命令,告诉系统应该执行哪些功能。n)作业控制语言JCL。采用脱机方式时,用户上机前必须准备好用作业控制语言书写的作业申请书,操作说明书以及程序和数据等。系统根据作业申请书来分配作业所需资源。n)键盘命令。用户通过终端输入键盘命令,向系统提出各种要求.。系统接受命令并解释执行该命令。n程序接口:又叫系统调用命令、源程序一级的接口。所谓系统调用是指用户在源程序一级调用操作系统的子功能。是操作系统提供给编程人员的接口。它管理和控制运行的程序,并为这些程序与系统控制的资源和提供的服务之间实现交互作用。返回2、系统调用的实现 系统调用命令按其功能大致可分为五种类型: 1)有关进程管理和控制; 2)有关外部设备的输入输出服务; 3) 有关磁盘管理; 4)有关文件管理; 5)有关存储空间的申请和释放。系统为了保证操作系统的安全及程序运行的正常,系统通常设置二种机器状态:管态和目态 当操作系统程序运行时,机器处于管态; 当用户程序运行时,机器处于目态。 它们是可以改变的。因此,用户想在自己的程序中调用操作系统的子功能,就必须改变机器的状态。此时就必须要用到一种特殊的调用方式:访管方式。为了实现这种调用,系统提供一条自愿进管指令(访管指令),当CPU执行到这条指令时就发生中断,称为自愿进管中断(访管中断),它表示正在运行的程序对操作系统提出某种要求。此时就可以改变机器的状态,即由目态转为管态。为了使控制能跳到用户当前所需要的那个例行子程序去,就需要指令提供一个地址码,用这个地址码表示系统调用的功能号。它也是操作系统提供的例行子程序的编号。然后在访管指令中输入相应的号码,以完成用户当前所需要的服务。因此,一个带有一定功能号的访管指令就定义了一条系统调用命令。它不由硬件来直接提供,而是由软件来实现的,也可说是由操作系统中的某段程序来实现的。亦可称为广义指令或系统宏指令。n系统调用的实现步骤: 1.设置系统调用命令所需的入口参数,安排一条调用命令,并给出对应的功能号。2.在执行调用命令时根据给定的功能号,由软件解释。 返回 3、用户界面n用户界面其实也是一种接口,用户通过用户界面来使用操作系统提供的各种服务。用户界面有一个发展过程:n1)命令行界面和编程人员在程序中的系统调用n用户使用计算机,第一步是要熟悉一整套操作命令,不同的操作系统其命令是不同的,操作员记忆及敲击键盘,命令的使用差别很大,例如DOS和UNIX操作系统。多数命令行又设计有很多不同的控制功能。n2).图形界面n它以一种可视化的界面出现,非常方便用户操作使用计算机,在显示器上可以建立很多形象化的图标(icon),当用户要打开某一程序时,只需用鼠标点击就能达到目的 3).虚拟现实的界面虚拟现实(Virtual Reality,简称VR ),是以浸没感、交互性和构想为基本特征的计算机高级人机界面。他综合利用了计算机图形学、仿真技术、多媒体技术、入工智能技术、计算机网络计算机、并行处理技术和多传感器技术,模拟人的视觉、听觉、触觉等感官功能,使人能够沉浸于计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。使用者不仅能够通过虚拟现实系统感受到客观物理世界中所经历的身临其境的逼真性,而且能够突破空间、时间和其他客观限制,得到在真实世界中无法亲身经历的体验。用户通过鼠标操作就好象用手去按“真实”的仪器一样,例如,可视电话和网络视频会议(NetMeeting)等。返回三、交互式作业和批处理作业n1、交互式作业n2、批处理作业 交互式作业又称为终端式作业或会话式作业。 在分时操作系统的环境下,用户在终端上利用键盘命令控制和监督作业的运行,而系统把作业运行的情况和结果也及时在终端上告诉用户。在一个兼顾分时操作和批处理的实际操作系统中,常把终端用户作业作为前台作业。 交互式作业的特点主要是主要表现在交互性上,它采用人机对话的方式工作。 交互式作业的控制有两种,一种是操作使用接口,另一种是命令解释执行。返回 批量式作业有两种,即利用作业说明书实行自动控制方式的作业(脱机作业)和利用控制台键盘操作命令直接控制的作业称为联机作业。在一个兼顾分时操作和批处理的实际操作系统中,常把批量式作业称为后台作业。 批处理作业的控制包括如下步骤: 1、按用户提交的作业控制说明书控制作业的执行。 2、一个作业步的工作往往由多个进程的合作来完成。 3、一个作业步的工作完成后,继续下一个作业步的作业,直至作业执行结束。 返回四、作业的调度n1、作业的状态及其转换n2、作业调度的功能n3、调度算法的影响因素n4、调度算法作业调度必须注意两个问题:()作业调度选取一个作业的必要条件是,系统现有未被分配的资源可以满足该作业的资源要求;()作业调度所选的作业只是有资格获得处理机,但并不一定能占有它并在其上运行。提交状态。又叫进入状态。将某作业从外部设备输入到外存的过程中,为其建立作业控制块JCB。由JCB在后备作业队列中排队,等待作业调度。后备状态。作业在后备作业队列中随时等待作业调度程序的调度。当作业将全部信息由输入设备进入辅存后,该作业处于后备状态。执行状态。由作业调度程序根据一定的策略从后备作业队列中挑选出若干作业,调入内存,并为其分配必要的资源。从而完成作业的各种活动。完成状态。作业运行结束输出结果或由于发生错误而终止时,系统回收作业运行所占有的资源,包括回收JCB、该作业占用的资源和撤消作业控制块等,完全退出程序,此时作业完成运行。完成状态的结束,意味着该作业在系统内消失。返回n1、采用作业控制块(job control block,JCB)表格,记录进入系统的各作业的情况。n2、根据选定的调度算法,从后备作业中选出一部分(多道情况)或一个作业投入运行。n3、利用存储管理、设备管理和处理机管理的功能为被调度的作业分配运行所必须的资源,使被选中的作业有获得使用处理机的资格。n4、作业运行结束后回收作业所占用的系统资源及记帐等。 返回 1. CPU利用率 CPU利用率CPU有效工作时间CPU总的运行时间 CPU总的运行时间为有效工作时间与空转时间之和。 2.吞吐量:吞吐量是指单位时间内平均完成的作业数。 吞吐量完成的作业道数完成的时间 3. 作业的平均周转时间 衡量作业调度的一个标准是作业的平均周转时间,作业的平均周转时间越短,系统的效率越高、吞吐能力越强。一个作业的周转时间是指该作业由提交到完成所花费的时间,即: 作业的周转时间作业完成时间作业提交时间 也可表示为: 作业的周转时间作业运行时间作业等待时间 而作业的平均周转时间是将全部作业周转时间累加起来再除以作业的个数。即: 作业平均周转时间()n4.作业的平均带权周转时间 n作业i的带权周转时间n作业周转时间作业的运行时间n则作业的平均带权周转时间n()。返回n先来先服务调度算法(FIFO)。n该算法按作业进入作业后备队列的先后顺序来进行挑选,先来的作业优先被选中。 n最短作业优先(SJF)调度算法。n系统以要求运行的时间来衡量作业的长短。这种调度算法总是优先调度要求运行时间最短的作业作为下一次服务的对象。使用该算法时,系统首先要求用户对作业所需运行的时间预先做一个估计,并在控制说明书中注明。 n响应比高者(HRN)优先算法 响应比作业响应时间作业执行时间 (作业执行时间作业等待时间)作业执行时间n (作业等待时间作业执行时间)n优先数调度算法。n系统根据作业的计算时间、等待时间、缓急程度及对资源的要求等为每个作业确定一个优先数,存放于作业控制块,优先数高的作业优先被调用。n事件驱动法。n每当发生一些事件就进入相应的调度程序工作。从用户角度看,若把作业定义为让计算机做一件事情,作业可由许多工作步协调完。 n例:假定在一个CPU上执行以下个作业, 作业号到达时间运行时间当分别采用FCFS、SJF和HRN三种调度算法时,试(1)画出调度图;(2)计算每个作业的周转时间和带权周转时间;(3)计算平均周转时间和平均带权周转时间。n解:调度图如下:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 201FCFS23451SJF25341HRN2354作业号作业号12345平均平均到达时间Ta02468运行时间Ts36452FCFS完成时间Tf331.0971.171392.2518122.4201268.62.56周转时间Tq带权周转时间Tq/TsSJF完成时间Tf331.0971.1715112.7520142.801571.57.61.84周转时间Tq带权周转时间Tq/TsHRN完成时间Tf331.0971.171392.2520142.801573.58.002.14周转时间Tq带权周转时间Tq/Ts返回五、作业的实例n1、LINUX系统n2、Win98系统nLinux系统中,一旦用户登录系统,作业也就形成,我们曾经定义,作业是用户交给计算机的具有独立功能的任务。从用户登录系统到用户退出系统的整个过程,可以多次形成作业,用户每输入一条指令或运行一段程序都代表着一个作业步。n1Linux系统的Linux shell的使用nLinux的shell作为操作系统的外壳,也是用户和计算机操作系统内核间的一种接口。是命令语言、命令解释程序和程序设计语言的集合。用户通过它来使用操作系统提供的各种服务。Shell是一个命令语言解释器,拥有自己的内部命令集,也能被系统中应用程序和系统程序调用。n2利用Linux shell编制程序 n利用Linux系统可以编制各种复杂的程序,如配置系统、处理文件等,对于时间性要求不太高与进程关系不大的作业,都可通过shell编程来实现。 返回nWindows 98中没有明显的作业概念,而只有任务、进程、线程的概念。任务通常由图标来表示,该图标连接着任务所对应的程序,通过点击图标可以启动任务的执行。返回第四章 存储管理n1、实用系统中的存储管理n2、存储管理概述n3、存储器的连续分配方式n4、存储器的离散分配方式n5、虚拟存储器管理一、实用系统中的存储管理n1、MS-DOS存储管理n2、Win98存储管理二、存储管理概述n1、基本概念n2、存储管理功能n3、地址重定位三、存储器的连续分配方式n1、单一连续分配n2、固定式分区分配方式n3、可变式分区分配方式四、存储器的离散分配方式n1、分页存储管理n2、分段存储管理n3、段页式存储管理五、虚拟存储管理n1、虚拟存储器n2、请求分页存储管理n3、请求分段存储管理n4、Win98虚拟存储技术第五章 文件系统n1、Windows98中的文件n2、文件系统概述n3、文件的结构及存取方法n4、文件存储空间的管理n5、文件的目录及目录管理n6、文件的共享与安全一、Win98中的文件n1、Win98的数据组织方式n2、 Win98的文件类型n3、 Win98的文件命名n4、 Win98与DOS之间文件的转换关系二、文件系统概述n1、文件与文件系统n2、文件系统的功能三、文件的结构及存取方法n1、文件的逻辑结构n2、文件的物理结构n3、文件的存取方法四、文件存储空间的管理n1、磁盘组织n2、MS-DOS/Win98 FAT磁盘结构n3、Windows NT文件系统NTFS磁盘结构五、文件的目录及目录管理n1、目录结构n2、目录管理n3、LINUX的目录结构特点六、文件的共享与安全n1、文件共享n2、文件保护第六章 设备管理n1、设备管理概述n2、输入/输出控制方式n3、设备分配n4、缓冲技术n5、磁盘I/On6、设备处理程序n7、LINUX系统中的设备管理一、设备管理概述n1、设备的分类n2、设备管理的功能二、输入/输出控制方式n1、程序控制方式n2、中断控制方式n3、DMA控制方式n4、通道控制方式三、设备分配n1、设备分配策略n2、设备分配程序n3、SPOOLing技术四、缓冲技术n1、单缓冲n2、多缓冲n3、缓冲池五、磁盘I/On1、磁盘的结构n2、磁盘的容量n3、磁盘的访问时间n4、磁盘的调度算法六、设备处理程序n1、设备处理程序的功能和处理方式n2、设备处理程序的处理过程n3、中断技术七、LINUX系统中的设备管理nLINUX第七章 操作系统实例分析n1、Windows98操作系统概述n2、LINUX操作系统概述n3、UNIX操作系统概述一、Windows操作系统概述n1、Windows操作系统的产生与发展n2、Windows操作系统的特点n3、Windows98的文件系统和资源树状结构n4、Windows2000操作系统二、LINUX操作系统概述n1、Linux的历史n2、 Linux用户n3、 Linux的功能n4、 Linux的缺陷n5、 Linux与其他操作系统的性能对比n6、网络服务n7、中文系窗口环境支持n8、红旗服务器2.0版本主要特性介绍三、UNIX操作系统概述n1、UNIX系统基本概念n2、UNIX系统的初步使用n3、UNIX的体系结构及特点n4、UNIX存储管理n5、UNIX进程管理第四章 存储管理n1、实用系统中的存储管理n2、存储管理概述n3、存储器的连续分配方式n4、存储器的离散分配方式n5、虚拟存储器管理一、实用系统中的存储管理n1、MS-DOS存储管理n2、Win98存储管理0k640k40k1000k操作系统用户区扩展内存返回 MS-DOS是一个单用户、单任务的16位操作系统,它只能使用1MB的内存空间,这1MB的内存空间中,低端连续的640KB的区域称为基本内存,基本内存又分为系统区和用户区,系统区为操作系统专用,用户区是用户程序所使用的区域,640KB的基本内存中除掉系统区,用户区在600KB 左右,这是一个连续的区域如图右所示。 n当实际内存不够用时,Windows 98就会用硬盘来充当内存,称为虚拟内存。虚拟内存是由硬盘空间模拟而来的,你可以在Windows文件夹中发现一个Win386.swp文件,这个文件称为交换文件,它就是虚拟的内存的空间,原来,多个用户程序并不是每一个都全部装入内存,而只装入能保证程序能正常启动运行的一部分,运行过程需要用到时再装入内存,如果内存空间不够时,先把内存中某些不用(或暂时不用)的部分调出内存,以腾出空间。这就是Windows 98的虚拟存储管理技术 。返回二、存储管理概述n1、基本概念n2、存储管理功能n3、地址重定位n物理地址:内部存储器由若干的存储单元组成,为了便于CPU访问,每个存储单元都有一个编号,这个编号称为内存地址,内存地址就是物理地址(也称绝对地址)。它的最小值为0,最大值取决于内存的大小和地址寄存器所能表现的最大值。n物理空间:物理地址的集合称为物理空间,也称为存储空间。n逻辑地址:用户进行程序设计时是不可能预知程序将在内存中所占位置,尤其在多道程序设计环境中,同一用户程序在不同时刻装入内存都不可能在同一位置。因此用户程序采用以0为基址安排程序指令和数据,程序指令和数据相应的地址称为逻辑地址,由于它是相对于0的地址,也被称为相对地址。n逻辑地址空间:逻辑地址的集合形成了一个地址范围,这个范围称为逻辑地址空间,也称地址空间。n地址映射:用户在逻辑地址空间安排程序指令和数据,而用户程序要运行必须装入内存,装入过程中,必须对有关的地址部分进行修改,将用户的逻辑地址转换成物理地址,这个过程称为地址映射,也称地址重定位。返回n内存分配n内存分配的主要任务是: (1)为每一个提出需求的用户分配内存空间。 (2)引入好的内存分配机制,提高存储器的利用率,减少存储碎片。 (3)允许正在运行的程序申请附加的内存空间,以适应程序或数据的动态增加。n内存保护 内存保护的任务是确保多道程都在各自分得的存储区内操作运行互不干扰。n地址映射 存储管理必须提供地址映射功能,用于把程序地址空间中的逻辑地址转换为内存空间中对应的物理地址。地址映射功能要在硬件支持下完成。 内存扩充 内存扩充的主要任务是从逻辑上扩充内存容量,借助虚拟技术为用户提供比主存物理空间大得多的地址空间,使用户认为系统所拥有的内存空间远比实际的内存空间大得多。返回 静态重定位 如果在程序运行之前,就为用户程序实行了地址重定位的工作,那么称这种地址重定位为地址的“静态重定位”。 静态重定位的优点时容易实现且不需硬件支持。 缺点是:(1)程序经重定位后无法在内存中移动; (2)程序在内存中只能分配连续的区域。 (3)难以实现程序共享。n例:LOAD 1,550这条指令是把相对地址为550的存储单元的内容2200装入1号累加器,而这时内容为2200的存储单元的实际物理地址为1550,所以LOAD1,550这条指令中的直接地址码要以所装入内存区域的起址为基础作相应的修改,即改为LOAD 1,1550。n动态重定位n动态重定位是指在程序执行过程中进行地址重定位,即是在每次访问内存单元前才进行地址变换。动态重定位可以使程序中牵涉地址的指令不加任何修改就装入内存,但它需要硬件重定位寄存器的支持。 动态重定位的优点是 (1)程序装入内存时无需作任何修改,所以装入后再移动也不 影响其正确运行,这便于用紧缩来解决存储器的碎片问题。 (2)一个程序由若干个相对独立的模块组成时,这些模块可以离 散的装入多个不相邻接的存储区域,只要各模块有自己的定位 寄存器就可以了。返回三、存储器的连续分配方式n1、单一连续分配n2、固定式分区分配方式n3、可变式分区分配方式n单一连续分配主要采用静态分配方式,即作业一旦进入内存,就要等到它执行结束后才能释放所占内存,因此这种方式不支持虚拟存储器的实现。n单一连续分配方式的特点是:n管理简单,需要硬件和软件的支持少,但由于内存中只装入一道作业而使得资源的利用率不高。返回n固定式分区是在作业装入前,内存空间就被划分成若干个大小不等的连续区域,每个区域可以存放一个作业,存放于不同区域的作业可以并行。n划分工作可以由系统管理员或操作系统实现 。一旦划分完成,在系统运行区间,分区的个数不可变,分区的大小不可变,因此也把固定式分区称为静态分区。 采用这种技术,虽然可以使多个作业共驻内存,但是一个作业的大小不可能正好等于某个分区的大小,所以每个被分配的分区总有一部分被浪费,我们把部分被浪费的区域称为内零头(内碎片)。有时这种分配方式空间浪费相当严重。操作系操作系统统40K8K32K32K64K0K40K48K80K112K176K4. 5(b) 内存划分图80Kn例:有内存分区示意如图46(a)所示,大小分别为8KB、45KB、121KB的多个作业装如内存后,内存分配情况如图46(b)所示。从图46(b)中可以看出作业2所占据的分区3中就有75K的不可用空间(即碎片),作业3所占据的分区4中有211K的浪费,未分配的分区2有32K的可用空间,如果此时有一个大小为35K的作业申请内存,却被拒绝,因为可用分区只有32K。 操作系统操作系统分区1(8K)分区2(32K)分区3(120K)分区4(332K)0K20K28K60K180K512K操作系统操作系统作业1(8K)分区2(32K)作业2(45K)作业3(121K)0K20K28K60K512K180K46(a)46(b)n固定式分区实现技术简单,但是内存的利用率不高。存在以下缺点:n(1)作业大小受到分区大小的限制。作业仍然需要一次性连续装入内存,内存中空闲分区的总量即使大于作业的大小也可能无法分配。n(2)空间浪费。如果一个较小的作业占据一个较大的空间,该区域中剩余的空间就被浪费。n(3)碎片问题。每个分区都存在一部分不能再利用的空间,这就是碎片,碎片的存在必然使存储器的利用率下降。返回n 可变分区是指在作业装入内存时,从可用的内存中划分出一块连续的区域分配给它。系统初始化时,内存被划分成如图4所示的两部分区域,一部分用于常住内存的操作系统,另一部分是整个用户区组成的空闲区,对于要求调入的若干作业,划分几个大小不等的分区给它们,随着作业的调入和撤出,所对应的分区被划分和释放,原来整块的空闲区形成空闲区和已分配区相间的局面,如图47()所示。48KBn可变分区存储管理中的“可变”也有两层含义,一是分区的数目随进入作业的多少可变,一是分区的边界划分随作业的需求可变。可见,可变式分区中分区的大小和个数都是可变的,而且是根据作业的个数和作业的大小而动态的发生变化的,因此也把可变式分区称为动态式分区。 n可变式分区的分配和释放的基本思想n分配时首先找到一个足够大的分区,即这个空闲区的大小比作业要求的要大,系统则将这个空闲区分成两部分:一部分作为已分配的分区,剩余的部分任作为空闲区,在回收撤除作业所占用的分区时,要检查回收的分区是否与前后空闲的分区相邻接,若是,则加以合并,使之成为一个连续的大空间。n n为了实现可变分区的管理,必须记录内存的分配情况,主要有两种数据结构:n(1)空闲区表形式:在空闲分区说明表(图47()所示)中,为每个尚未分配的分区设置一个表目,包括分区的序号、大小、起址和状态。n(2)空闲区链形式:为了实现对空闲分区的分配和链接,在每个分区的起始部分,设置一些用于控制分区分配的信息(如分区的大小和状态),并为每一个空闲分区设置一个链接指针来指向下一个空闲分区,使所有的空闲分区形成一个链表。当一个已分配区被释放时,有可能和与它相邻接的分区进行合并。为了寻找释放区前、后的空闲区,以利于判别它们是否与释放区直接邻接,可以把空闲区的单链表改为双向链表。如图47()所示。n 当系统中有多个空闲的存储分区能够满足作业提出的存储请求时,究竟将谁分配出去,这属于分配算法问题。在可变分区存储管理中,常用的分区分配算法有:首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法。 n 1首次适应算法n 要求空闲分区按地址递增的次序排列。内存分配时从空闲分区链(表)首开始顺序查找,直到找到第一个能满足其大小要求的空闲分区为止。然后按作业大小从该分区中划出一块连续的内存空间分给该作业,该分区余下的部分仍按地址递增次序保留在空闲分区链(表)中。n特点:优先利用内存低地址部分的空闲分区从而保留了高地址的大空闲区。n 但由于低地址部分的不断划分,导致低地址端留下许多难以利用的较小空闲分区,而每次查找又是从低端开始,这无疑增加了查找时间。n 2循环首次适应算法n循环首次适应算法是由首次适应算法演变而来的。在为作业分配内存空间时,不再每次从空闲分区链(表)首开始查找,而是从上次找到的空闲分区的下一个空闲区开始查找,直到找到第一个能满足其大小要求的空闲分区为止。然后,空闲区被分成两部分,一部分分给作业,余下的部分保留在空闲分区链(表)中。n特点:是使内存中的空闲区分布得比较均匀,不致于使小的空闲区集中于内存的一端,但这会导致缺乏大的空闲分区。n 3最佳适应算法n最佳分配算法要求空闲区按分区大小递增的次序排列。内存分配时从空闲分区链(表)首开始顺序查找,直到找到第一个能满足大小要求的空闲分区为止。n按此方式为作业分配内存时,总是从当前所有空闲区中找出一个能够满足存储需求的、最小的空闲分区作为分配的对象。这种方案的出发点是尽可能地不把大的空闲区分割成为小的分区,以保证大作业的需要。该算法实现起来比较费时,麻烦。n 4最坏适应算法n 实行这种分配算法时,总是从当前所有空闲区中找出一个能够满足存储需求的、最大的空闲分区作为分配的对象。n 为了减少查找时间,必须把空闲分区按从大到小递减的次序排序。分配时,空闲分区链(表)的第一空闲区小于作业要求的大小,则分配失败,否则从该空闲分区中划出所要求的大小分区给作业,余下的空闲区仍按从大到小排列留在空闲分区链(表)中。可以看出,这种方案的出发点是照顾中、小作业的需求。n内存区域中的一个分区被释放时,与它前后相邻接的分区可能会有四种关系出现,如下图所示。在图中,我们做这样的约定:位于一个分区上面的分区,称为它的“前邻接”分区,一个分区下面的分区,称为它的“后邻接”分区。n空闲分区的合并n有时也被称为“存储紧凑”。何时进行合并,操作系统可以有两种时机的选择方案:一是调度到某个作业时,当时系统中的每一个空闲分区尺寸都比它所需要的存储量小,但空闲区的总存储量却大于它的存储请求,于是就进行空闲存储分区的合并,以便能够得到一个大的空闲分区,满足该作业的存储需要;n另一是只要有作业运行完毕归还它所占用的存储分区,系统就进行空闲分区的合并。n 比较这两种方案可以看出,前者要花费较多的精力去管理空闲区,但空闲区合并的频率低,系统在合并上的开销少;后者总是在系统里保持一个大的空闲分区,因此对空闲分区谈不上更多的管理,但是空闲区合并的频率高,系统在这上面的开销大。n关于分区管理的存储保护问题。一般有两种方法:界地址法和保护键法。n(1)界地址法:系统设置一对上下界寄存器,当选种某个作业运行时,先将它的界地址装入这对寄存器中,作业运行时形成的每一个访问存储器的地址都要同这两个寄存器的内容进行比较,若超过指定范围,产生越界中断。n(2)保护键法:系统为每一个存储块分配一个单独的保护键,它相当于一把锁。进入系统的每个作业也被赋予一个保护键,它相当于一把钥匙。当作业运行时检查钥匙和锁是否一致,若二者不匹配,则系统发出保护性中断。返回四、存储器的离散分配方式n1、分页存储管理n2、分段存储管理n3、段页式存储管理n1分页管理基本思想:分页存储管理中将用户作业地址空间划分成若干大小相等的区域,称为页或页面。相应地,将内存空间划分成与页大小相等的区域,称为物理块或页框。在为作业分配内存空间时,总是以块为单位进行分配,并且可以将作业中的任一页面放入到内存中的任意一块中。调度作业运行时,必须将它的所有页面一次调入内存,若内存中没有足够的物理块,则作业等待。由于作业的最后一页通常是装不满一个物理块的,易于形成不可利用的零头,称为“页内碎片”。n分页系统的地址结构如图49所示,它由两部分组成:页号P和页内地址W,地址的长度为32位,其中011位为页内地址(页的大小为4K),12-31位为页号,所以允许地址空间的大小最多为1M个页。n为了便于查找作业的每个页面在内存中对应的物理块和进行地址变换,系统为每个作业建立了一张页面映像表PMT,简称页表(如图410所示)。每个页在页表中占一个表项,记录该页在内存中对应的物理块号。页表一般存放在内存,它的作用是实现从页号到物理块号的地址映射。对于大型作业,由于页表项非常多,如果全部装入内存,会占用很多内存空间,一般采用多级页表结构解决此问题。 n2地址变换机构n地址变换机构的基本任务是利用页表把用户程序中的逻辑地址变换成内存中的物理地址,实际上就是将用户程序中的页号变换成内存中的物理块。为了实现地址变换功能,在系统中设置页表寄存器,用来存放页表的始址和页表长度。 进行地址变换时,系统将页号与页表长度进行比较,如果页号大于页表寄存器中的页表长度,产生越界中断。如未出现越界,则根据页表寄存器中的页表始址和页号计算出该页在页表中的位置,得到该页对应的物理块号,将此物理块号装入物理地址寄存器中。同时将逻辑地址寄存器中的页内地址直接装入物理地址寄存器的块内地址字段中,这样便完成了从逻辑地址到物理地址的变换。 n由图411可知,若页表全部放在内存,则存取一个数据或一条指令至少要访问两次内存。第一次是访问页表,得到要访问的内存物理地址,第二次才根据该物理地址进行数据或指令的存取。显然这种方法比通常指令的速度慢了一半。为了解决这一问题,在地址变换机构中增设一个具有并行查找能力的高速缓冲存储器,称为“联想存储器”或“快表”,用以存放当前访问的那些页表项。n此时的地址变换过程为:在CPU给出逻辑地址后,地址变换机构自动将页号与快表中的所有页号进行比较,若找到则取出该页对应的物理块号与页内位移拼接成物理地址;若未找到则去内存查找页表,找到后拼接形成物理地址,同时将此次查到的页表项存入快表中。图412说明了具有快表的地址换机构。返回n 1分段存储管理的基本原理n在分段存储管理系统中,作业地址空间被划分成若干个段,如主程序段、子程序段、数据段等等。每个段是一组逻辑意义完整的信息集合且有自己的段名(号)和段长。每段都是从0开始编址的一段连续的地址空间,整个作业构成了二维地址空间。段的长度由相应逻辑信息组的长度决定,因而各段长度是不等的。相应的内存空间以段为单位分配,且每段必须分配一个连续的内存区,但各段之间不要求连续。分段地址的地址结构如图413所示,逻辑地址由段号和段内地址两部分组成。n