操作系统 教学课件 ppt 作者 宗大华 宗涛 第七章

上传人:E**** 文档编号:89360849 上传时间:2019-05-24 格式:PPT 页数:108 大小:1.10MB
返回 下载 相关 举报
操作系统 教学课件 ppt 作者  宗大华 宗涛 第七章_第1页
第1页 / 共108页
操作系统 教学课件 ppt 作者  宗大华 宗涛 第七章_第2页
第2页 / 共108页
操作系统 教学课件 ppt 作者  宗大华 宗涛 第七章_第3页
第3页 / 共108页
操作系统 教学课件 ppt 作者  宗大华 宗涛 第七章_第4页
第4页 / 共108页
操作系统 教学课件 ppt 作者  宗大华 宗涛 第七章_第5页
第5页 / 共108页
点击查看更多>>
资源描述

《操作系统 教学课件 ppt 作者 宗大华 宗涛 第七章》由会员分享,可在线阅读,更多相关《操作系统 教学课件 ppt 作者 宗大华 宗涛 第七章(108页珍藏版)》请在金锄头文库上搜索。

1、第7章 实例分析:UNIX操作系统,1969年,美国贝尔实验室的汤普逊(K.Thompson)和里奇(D.M.Ritchie)免费发行了一个小型的实验性操作系统,由此宣布了UNIX操作系统的诞生。1978年以后,UNIX真正开始流行。时至今日,UNIX已经走过了30多个年头。在此期间,它发生了许多重大的变化,有欣欣向荣之日,也有曲折坎坷之时。但不管怎样,UNIX以其特有的简洁性和开放性,赢得了越来越多人的赞赏与青睐,已成为一个应用领域广泛、功能丰富实用的操作系统。现在已经有各种版本的、可以运行在不同平台上的UNIX。,退出,UNIX是一个通用、多用户的分时操作系统。本章主要从实现的角度出发,讲

2、述四个方面的内容: (1)UNIX的进程以及进程调度; (2)UNIX采用的存储管理策略; (3)UNIX目录结构的特点以及对磁盘存储空间的管理; (4)UNIX对块设备及字符设备的管理以及缓冲技术。,7.1 UNIX的处理机管理 7.2 UNIX的存储管理 7.3 UNIX的文件管理 7.4 UNIX的设备管理,7.1 UNIX的处理机管理,7.1.1 UNIX的进程 通常,一个进程由三个部分组成:进程控制块PCB、数据和程序。在UNIX中,一个进程也由三个部分组成:进程控制块、数据段和共享正文段,并有其自身的不同含义。 1进程控制块,2数据段 进程运行时用到的数据以及工作区,构成了一个进程

3、的数据段。要注意的是,如果进程执行的程序是不能被共享的,那么也把它归入到数据段中。这样,UNIX进程的数据段分成三个部分:系统数据区、用户数据区和用户栈区。如在基本控制块proc结构中所述,在进程的proc结构中,由p_addr指向该进程数据段的首地址,由p_size给出数据段的长度。其联系如图7-1所示。,3共享正文段 为了管理好进程的共享正文段,UNIX在内存专门开辟了一个text结构区域,形成正文段表text 。其中每一个text结构对应一个共享正文段,主要记录关于这个正文段的有关信息,比如共享正文段在磁盘对换区的地址(x_daddr),共享正文段在内存的地址(x_caddr),共享正文

4、段的长度(x_size),共享本正文段的所有进程数目(x_count)等。 综上所述,一个进程的基本控制块proc结构、数据段(包含扩充控制块user结构)以及共享正文段三者之间的关系,可以用图7-2勾画出来。,在那里一根虚线把图分成两个部分。标有的部分表示proc 表中进程的proc结构以及text 表中的text结构总是常驻内存。通过proc结构中的p_addr,就能够得到该进程的数据段;通过p_textp,就能够得到该进程共享正文段的text结构,再由这个text结构中的x_caddr或x_daddr就能够得到共享正文段在内存或在磁盘对换区的位置。标有的部分表示进程的数据段和共享正文段是

5、非常驻内存部分,根据需要和可能,数据段和共享正文段会在内存和磁盘对换区之间换进和换出。另外,通过user结构中的u_procp,可以得到该进程的proc结构的位置。,7.1.2 UNIX的进程状态 UNIX进程在其生命期内,可以处于多种不同的状态,并记录在进程的proc结构中。图7-3给出了进程状态的变迁图。,当父进程执行系统调用fork创建一个子进程时,被创建进程处于“创建”状态。如果能够为该进程分配到足够的内存空间,则它变为“在内存就绪” 状态;如果当前没有足够的内存空间,则它变为“换出并就绪”状态,被安置在磁盘的对换区。另外,原来已在内存的就绪进程,也可能因为内存紧张而被换出,同样成为“

6、换出并就绪”状态。处于这两种状态的进程,从原则上说都是“就绪”的,都可以参与处理机调度。只是处于“换出并就绪”状态的进程被调度到时,由于它的非常驻内存部分并不在内存,因此要先被换进,才能够真正占用处理机投入运行。,一个进程被调度到时,就成为“用户态运行”状态。进程在“用户态运行”状态下时,若程序中使用了系统调用或请求输入/输出,就会使进程从“用户态运行”状态改变为“核心态运行”状态。在“核心态运行”状态下的进程是不能被剥夺的。当系统调用执行完毕,就返回到“在内存就绪”状态。如果要等待输入/输出完成,则变成“在内存睡眠”状态;如果是调用了exit而进入“核心态运行”状态,则意味着进程运行结束,于

7、是进入“僵死”状态,所占用的一切资源被释放。如果在“用户态运行”状态下,由于时间片到等原因,就会直接变成“在内存就绪”状态。,一个进程处于“在内存睡眠”状态时,如果内存使用紧张,就会被从内存换出到磁盘的对换区。这时,该进程处于“睡眠并换出”状态。无论是处于“在内存睡眠”状态还是处于“睡眠并换出”状态,都表明这个进程在等待某个事件的发生。当处于“在内存睡眠”状态下等待的事件发生时,进程状态就变为“在内存就绪”;当处于“睡眠并换出”状态下等待的事件发生时,进程状态就变为“换出并就绪”。 以上就是一个UNIX进程从被创建开始到被撤消为止的整个生命期内的变化过程。,7.1.3 UNIX的进程调度与换进

8、换出 为了把处理机分配给一个进程使用,UNIX的进程调度程序总去查看系统proc 表中登记的所有进程。在处于就绪、且全部在内存的进程中,挑选一个优先数最小(即优先权最大)的进程作为分配对象。如果暂时没有这种进程存在,那么进程调度程序就处于“在内存睡眠”的等待状态。直到发生中断请求,被唤醒再次去搜索proc 表。UNIX赋予进程调度进程极高的优先权,以保证系统能以最快的速度找到可运行的进程,提高CPU的使用效率。,为了改变一个进程的优先数,在UNIX中采取设置和计算两种方法。 设置方法用于当一个进程变为睡眠状态时,系统将根据不同的睡眠原因,赋予睡眠进程不同的优先数。这个优先数将在进程被唤醒后发挥

9、作用。 计算进程优先数的公式为: p_pri=min127,(p_cpu/16+PUSER+p_nice),此公式是在127和p_cpu/16+PUSER+p_nice两个数之间取最小值。其中PUSER是一个常数;p_nice是用户为自己的进程设定的优先权,它可以通过系统调用命令来加以设置。通常,由这个量反映用户进程工作任务的轻重缓急程度。一个进程的p_nice被设置后,若再要改变,则只能够让其增加;p_cpu是进程使用处理机的时间,它给出了一个进程使用处理机的情况。,这里最关键的是p_cpu,系统通过时钟中断来记录每个进程使用处理机的情况。时钟中断处理程序每20ms做一次。每做一次就将运行进

10、程的p_cpu加1。到1s钟时,依次检查系统中所有进程的p_cpu。如果这个进程的p_cpu10,表明该进程在此1s钟内占用处理机的时间超过200ms,于是在它原有p_cpu的基础上减10。图7-4给出了p_cpu的变化对进程优先数的影响,从而也就影响到了进程被调度到的可能性。,从左到右从上到下来观察图7-4。如果一个进程逐渐地占用了较多的处理机时间,那么它的proc结构中的p_cpu值就逐渐加大,呈上升的趋势(见图7-4)。由于p_cpu增加,根据公式(1)计算出来的进程优先数也呈上升的趋势(见图7-4)。进程优先数的上升,意味着它获得处理机的优先权下降(见图7-4),也就是被调度到的可能性

11、减少(见图7-4)。由于调度到的可能性减少了,使用处理机的机会就少了,于是p_cpu值下降(见图7-4)。P_cpu值下降,意味着由公式(1)计算出来的进程优先数也呈下降的趋势(见图7-4)。一个进程优先数减少,表示它的优先权上升(见图7-4),也就是这个进程获得处理机的机会增多(见图7-4)。可见,通过这样的处理,UNIX让每个进程都有较为合理的机会获得处理机的服务。,如上所述,UNIX一方面总是在 “在内存就绪”状态的进程中挑选一个优先数最小(即优先权最大)的进程作为分配对象,因为它们不仅就绪,而且所有的信息全部在内存中。另一方面,为了缓解内存使用的紧张程度,UNIX又常把一些进程的非常驻

12、内存部分换出到磁盘对换区上。它们或处于“换出并就绪”状态,或处于“睡眠并换出”状态。 调度时,如果没有“在内存就绪”状态的进程存在,那么就需要把磁盘对换区中的“换出并就绪”状态的进程换进内存参与调度,因为它们处于就绪状态,只是有一部分信息在磁盘对换区,把这些信息调入内存后,它们就能够投入运行。但如果在换进进程时,内存没有足够的存储空间,那么就需要把当前在内存的一些进程换出到磁盘对换区。所以,在UNIX中,经常要遇到进程的换出和换进问题。,进程的换进换出,涉及到三个方面的问题:磁盘对换区中进程的换进、内存中进程的换出以及磁盘对换区的管理。最后一个问题将放在UNIX存储管理的“对换技术”一节中讨论

13、,这里只介绍进程的换进和换出问题。 在UNIX中,进程的换进换出是由sched程序完成的。该进程有两个睡眠标志:runout和runin。当磁盘对换区中没有可换进的进程时,就把runout设置为1,sched进入“睡眠”,直到对换区中有要换进的进程时被唤醒;当磁盘对换区有就绪进程要换进,但内存没有足够的空间容纳、也没有可换出的进程时,就把runin设置为1,sched进入“睡眠”,直到内存中有可以换出的进程时被唤醒。Sched的工作流程如图7-5所示。,图7-5上有(*1)标志的地方,是在磁盘对换区寻找换进对象的地方。UNIX是根据这样的条件来选择调入者的:首先它应该处于“换出并就绪”;其次,

14、它在磁盘对换区至少停留了2秒钟以上,这个信息在该进程proc结构的p_time中记录着;最后,在满足前两个条件的进程中,p_time最小的那个进程即是第1个被换进的对象。Sched不断地把进程换进内存,直到没有可以换进的进程时,就把runout置为1,进入睡眠等待叫醒。,图7-5上有(*2)标志的地方,是在内存寻找换出对象的地方。只有当磁盘对换区中有可以换进的进程、但没有内存空闲空间时,UNIX才进行换出工作。sched是根据这样的条件来选择调出者的:首先考虑处于“在内存睡眠”状态的进程,把它的非常驻内存部分换出;其次是在处于“在内存就绪”状态的进程中,把其proc结构中p_time最大者的非

15、常驻内存部分调出。只要内存中还有可以换出者,sched就不断地工作,直到不可能时,把标志runin设置为1,进入睡眠等待叫醒。,7.2 UNIX的存储管理,7.2.1 对换技术 采用对换技术的UNIX,是在磁盘上开辟一个特定的对换区,把它作为内存的扩充:在内存紧张时,可以把内存中的某些进程换出到对换区;在需要时,又可以将对换区上的进程换进内存。这时UNIX的存储管理对象既包含内存的有关部分,也包含磁盘的对换区,并用相同的方法管理着它们。,首先要明确,在采用“对换”技术管理存储空间时,要把整个内存储器划分成两部分:操作系统使用部分和用户程序使用部分。前者所占用的内存空间称为系统空间,后者占用的内

16、存空间称为进程空间。很清楚,系统空间的内容是不参与对换的,换进换出的都是在进程空间中的内容。下面谈及内存空间时,就专指能够进行对换的进程空间。 UNIX对内存空间和磁盘对换区都是采用可变式分区管理的办法。当提出存储请求时,都是采用最先适应算法来进行存储分配。关于内存管理的问题,在第3章已经介绍,这里只讲对磁盘对换区的管理。,为了管理磁盘对换区,UNIX设置了一张可用存储区表swapmap ,每个表目由两部分内容组成:m_size,记录一个连续空闲磁盘空间里包含的磁盘块数;m_addr,记录一个空闲磁盘空间的起始地址。所以,每个表目反映了磁盘对换区中一个可用区域的信息。 初启时,整个磁盘对换空间都是空闲的,因此swapmap 中只有第1个表目有效,在它的里面登记着对换区的起始地址和整个对换区包含的块数。随着进程的换出、换进,对换区空间不断被分配和释放,可用存储区表的表目也就随之增加和减少。无论怎样变化,每个有效表目总是按照其m

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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