全套PPT电子课件教案-第6章 UNIX系统内核

上传人:aa****6 文档编号:48800080 上传时间:2018-07-20 格式:PPT 页数:140 大小:1,022.50KB
返回 下载 相关 举报
全套PPT电子课件教案-第6章  UNIX系统内核_第1页
第1页 / 共140页
全套PPT电子课件教案-第6章  UNIX系统内核_第2页
第2页 / 共140页
全套PPT电子课件教案-第6章  UNIX系统内核_第3页
第3页 / 共140页
全套PPT电子课件教案-第6章  UNIX系统内核_第4页
第4页 / 共140页
全套PPT电子课件教案-第6章  UNIX系统内核_第5页
第5页 / 共140页
点击查看更多>>
资源描述

《全套PPT电子课件教案-第6章 UNIX系统内核》由会员分享,可在线阅读,更多相关《全套PPT电子课件教案-第6章 UNIX系统内核(140页珍藏版)》请在金锄头文库上搜索。

1、第6章 UNIX系统内核第6章 UNIX系统内核6.1 概述6.2 进程管理6.3 文件系统6.4 存储管理6.5 设备管理第6章 UNIX系统内核6.1 概 述6.1.1 UNIX系统简介1UNIX的诞生及发展UNIX系统是一个通用的、多用户、多任务分时操作系统,于1969年诞生于美国贝尔实验室,是由Ken.Thompson和Dennis.Ritchie共同研制成功的。研制该系统的目的是为了在贝尔实验室内构造一个程序设计研究和开发的良好环境。UNIX系统包括UNIX操作系统内核和运行在内核之上的用户程序集、库,以及其它实用工具,UNIX操作系统内核为这些应用提供运行环境和各种系统服务。第6章

2、 UNIX系统内核贝尔实验室完成了UNIX的早期开发和发行,随着许多公司和大学对UNIX系统的青睐,市场上UNIX的各种版本广为流行,它们都支持一套基本的UNIX系统所拥有的接口、应用及其特征。这些版本在其内部实现接口的具体语义以及它们提供的“增值”特征方面千差万别,较为著名的有Novell公司的System V Release4(SVR4),加州大学伯克利分校软件发行(4.XBSD)以及卡内基梅隆大学的Mach,另外还有商业实现版本,如Sun Microsystem公司的SunOS和Solaris、IBM公司的AIX以及惠普公司的HPUX。 第6章 UNIX系统内核UNIX系统的研制和开发过

3、程简介如下: 1969年,Ken Thompson开始在PDP7机上开发UNIX,1970年该系统投入运行。 1973年,Dennis Richie研制成C程序设计语言,并用它改写原来用汇编语言编写的UNIX,即第四版UNIX。 1973年,Ken Thompson和Dennis Ritchie合写“The UNIX Time-Sharing System“一文,提交美国计算机协会(ACM)和第四次操作系统原理讨论会。该文经修改后刊登于1974年7月的Cunmunication of ACM杂志上,至此,UNIX操作系统正式向外披露。第6章 UNIX系统内核 1975年,第六版(V6)正式发表

4、,并开始广泛配备于各大学的PDP11系列机上。 1978年,第七版(V7)发表。 1979年,32 V版发表,该版本适用于VAX11机。 1981年,AT父、子进程从fork返回的值是不同的:父进程返回的值是子进程PID标志号,而子进程的返回值是0。第6章 UNIX系统内核图6-4 进程创建的层次关系第6章 UNIX系统内核fork算法要做下列操作: 取一个空闲的proc表项,指定惟一的PID号码; 标记子进程状态为“正被创建”; 从父进程的proc结构中复制数据到新建子进程的proc结构中 ; 增加当前目录i节点和“更改过的文件根”(如可用的话)上 的计数值; 增加系统打开文件表中的计数值;

5、 在内存建一个父进程映象的副本(包括user结构、正文段、 数据段和栈); 把各寄存器内容构成的系统环境记入子进程的运行环境中, 以后子进程被调度,就从此开始执行; 将子进程状态改为“就绪”,子进程的PID号返回给父进程。第6章 UNIX系统内核2进程的等待(wait)父进程创建子进程的目的往往是让子进程替自己完成某项工作。因此,父进程创建子进程之后,通常等待子进程运行终止。 父进程用系统调用wait(stat_addr)等待它的一个子进程终止,其中 stat_addr是终止地址码。wait算法是: 如果父进程没有子进程,则出错返回; 如果发现有一个终止的子进程,则取出子进程的进程号, 把子进

6、程的CPU使用时间等加到父进程上,释放子进程占用的 proc表项,以供新进程使用; 如果发现有子进程,但都不处于终止态,则父进程睡眠,等待由相应信号唤醒。第6章 UNIX系统内核3进程的终止(exit)在UNIX系统中,进程主要是作为执行命令的单位运行的,这些命令的代码都以系统文件形式存放。当命令执行完后希望终 止自己时,可在其程序末尾使用系统调用exit(status),其中status被称为终止码。它是终止进程向父进程传送的参数,父进程执行wait时可取得该参数。用户进程也可使用exit来终止自己。其实现算法如下: 忽略所有的信号; 如果本进程是与控制终端相关的进程组中的“首领”,则向该进

7、程组的所有成员发送“挂起”信号,把所有成员的进程组号置为0;第6章 UNIX系统内核 关闭全部打开文件; 释放当前目录; 释放与该进程有关的各分区及其内存; 做统计记录(全局帐目文件); 置进程状态为“终止态”; 指定它所有子进程的父进程ID为初启进程(1#); 如果有任何子进程终止了,则向1# 进程发出子进程终止的信号; 向它的父进程发送子进程终止的信号; 执行进程调度。第6章 UNIX系统内核4进程映象的更换(exec)子进程被创建后,通常处于“就绪态”,以后被调度选中才可运行。由于创建子进程过程中是把父进程的映象复制给子进程,所以子进程开始执行的入口地址就是父进程调用new-proc函数

8、(由fork调用)建立子进程映象时的返回地址,此时二者的映象基本相同。如子进程不改变其映象,就必然重复父进程的过程。为此,要改变子进程的映象,使其执行另外的特定程序(如命令所对应的程序)。第6章 UNIX系统内核改换进程映象的工作很复杂,是由系统调用exec实现的,它用一个可执行文件的副本来覆盖该进程的内存空间。其基本算法如下: 取文件i节点; 验证文件的可执行性,即用户有权执行它; 读文件头,检查该文件是否可执行; 根据文件头中的信息,对隶属该进程的全部分区(正文段、数据段等)分配新的分区;第6章 UNIX系统内核 将这些分区链接到进程;如果适宜,则把分区装入内存。 把exec参数复制到新的

9、用户栈区; 设置用户寄存器(如用户栈指针、程序计数器等),以便返回到用户态; 释放文件的i节点。第6章 UNIX系统内核6.2.3 进程调度1调度的策略、时机和算法UNIX系统的进程调度采用基于动态优先级的多级反馈队列轮转法,即从可运行的优先数最小(优先权最大)的队列中选取一个进程映象投入运行。核心为该运行进程分配一个时间片,当时间片用完后,CPU被另外的进程抢占,而原进程被送回次高优先级队列的末尾,核心动态调整用户态进程的优先级。第6章 UNIX系统内核核心进行进程调度的时机(原因)有以下几种情况:(1) 进程调用sleep程序;(2) 进程终止;(3) 进程在内存中暂停;(4) 进程从系统

10、调用返回到用户态时,但它并不是最适宜运行的进程;(5) 核心处理完中断后,进程回到用户态,但存在比它更适宜运行的进程。第6章 UNIX系统内核进程调度是由swtch过程实现的,系统中所有进程对CPU的使用和放弃都要通过执行swtch才行,swtch过程是进程0的一部分。调度进程的算法如下:调度进程算法 输入:无输出:无while(没有进程被选中执行)for(所有在就绪队列中的进程)选出优先级最高且在内存的一个进程;第6章 UNIX系统内核if(没有合适进程可以执行)机器作空转;/*当中断发生后,使机器摆脱空转*/从就绪队列中移走该选中进程;切换选中进程的上、下文,令其运行;第6章 UNIX系统

11、内核2进程优先级的确定和优先数的计算UNIX进程调度的关键是如何决定进程的优先权或优先数。确定进程优先数的目标是提高用户和系统交互作用的速度,提高系统资源的使用效率,反映用户的类型以及他们对有关作业运行优先程度的要求。UNIX System V中进程的优先级分为两大类:用户优先级和核心优先级类。每一类又包含若干个优先级,每一个优先级在逻辑上都对应一个进程队列,如图6-5所示。第6章 UNIX系统内核图6-5 UNIX进程优先级第6章 UNIX系统内核在UNIX系统中,进程的优先级用相应的优先数来表示:优先数越小,其优先级越高。从图6-5中可以看出,核心态优先级在优先级阈值之上,而用户态优先级在

12、优先级阈值之下,各种核心事件的优先级高于用户进程的优先级。图中优先级的级别从下至上依次升高。进程的优先数是动态改变的,而且是在特定的进程状态下发生的。核心用两种方式改变进程的优先级:对核心态进程设置优先数和对用户态进程计算优先数。第6章 UNIX系统内核(1) 核心态进程因等待某一事件而调用sleep程序去睡眠时,核心根据该进程睡眠的原因为它设置一个确定的优先数。(2) 当系统调用执行结束,进程由核心态返回用户态以及进程正在用户态下运行时,由时钟处理程序通过计算方式来调整其优先数。System V进程优先数计算公式为:PPri=Pcpu/2+PUSER+Pnice+NZERO第6章 UNIX系

13、统内核其中: Pcpu为进程最近一次使用CPU的时间。正占有CPU的进程每个时钟周期对其Pcpu加1(80)。另外,每秒对所有进程执行Pcpu/2。 Pnice是系统允许用户设置的一个计算进程优先数的偏移值,但仅有权将其设置为039中的一个数。一旦设置后,普通用户仅能使其增加。 PUSER和NZERO是两个常数,分别为25和20,称为基本用户优先数的分界(即阈值)。第6章 UNIX系统内核以上进程优先数计算方法体现了如下策略:正在运行的进程占用CPU的时间越久,其优先数越大,优先级越低;内存就绪态进程排队时间越长,其优先数逐渐降低,优先级升高。这样就实现了反馈作用,防止运行进程总是占用CPU。

14、第6章 UNIX系统内核3进程上、下文的切换当核心进行了进程调度,选中了一个新的进程需要运行时,将引起进程上、下文的切换。在UNIX系统中,进程上、下文的切换过程分成以下四步:(1) 先确定是否要进行上,下文的切换;(2) 利用save_context函数保存当前进程的上、下文;(3) 由调度程序按一定的策略,选择一内存就绪进程;(4) 用resume_context函数恢复被选中进程的上、下文,此后便进入进程上、下文的执行。第6章 UNIX系统内核6.2.4 进程通信UNIX System V中提供了丰富的进程工具,除基本工具sleep和wakeup、信号、管道和进程跟踪外,又增加了命名管道

15、(FIFO文件)、消息缓冲、共享内存和信号量等通信机构。由此,通常UNIX系统为进程之间的通信提供了多种工具: 利用基本通信工具sleep和wakeup来实现核心态进程之间的通信(同步)。 利用内核提供的信号(signal)机制来实现同一用户的各个进程之间少量信息的传递。 第6章 UNIX系统内核 利用文件系统生成pipe机构来实现进程通信(无名管道),为同父的子进程之间提供大量信息的传输;利用FIFO(有名管道)实现不同父进程之间的管道传输。 消息缓冲。 共享内存段。 信号量。 第6章 UNIX系统内核1sleep和wakeupsleep和wakeup是UNIX核心的两个程序,它们可以实现进

16、程状态的转变:sleep将进程状态从“核心态运行”变为“在内存睡眠”,使之让出处理机;而wakeup把进程状态从“睡眠”变为“就绪”(在内存或者在外存)。这两个程序是核心内部实施进程同步与互斥的基本工具。在核心态运行的进程因所需条件不具备时,则调用sleep(chan,disp)进入睡眠状态。其中参数chan是睡眠原因,另一个参数disp是由核心指定的优先数,其值越小,对应的调度优先权越高。第6章 UNIX系统内核wakeup程序唤醒在因同一原因而睡眠的所有进程,而不是一次只唤醒一个进程。这样,执行进程调度时,优先级最高的被唤醒进程可得到运行。如运行时发现缺少先前等待的事件,它则重新进入睡眠态。运行进程完成某一事件(如I/O完成,释放缓冲区等)后,往往利用wakeup(chan)的形式去唤醒睡眠进程,其中参数chan表示睡眠地址(即睡眠原因)。第6章 UN

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

当前位置:首页 > 办公文档 > 其它办公文档

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