1、0.44.012.011.631.013.0平均周转时间T(811.612)/310.53 采用短作业优先调度策略,则调度次序为l、3、2。9.012.6平均周转时间T(8812.6)/39.53 思考题1 请同学们判断这句话:作业一旦被作业调度程序选中,即占有了CPU。( )提示:需要清楚作业调度和进程调度的区别。【例2】考虑下述页面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6当内存块数量分别为3时,试问FIFO、LRU、OPT这三种置换算法的缺页次数各是多少?答:缺页定义为所有内存块最初都是空的,所以第一次用到的页面都产生一次缺页。当内存块数量为3时
2、:发生缺页中断的次数为16。在FIFO算法中,先进入内存的页面被先换出。当页6要调入时,内存的状态为4、1、5,考查页6之前调入的页面,分别为5、1、2、4,可见4为最先进入内存的,本次应换出,然后把页6调入内存。发生缺页中断的次数为15。在LRU算法中,最近最少使用的页面被先换出。当页6要调入时,内存的状态为5、2、1,考查页6之前调入的页面,分别为5、1、2,可见2为最近一段时间内使用最少的,本次应换出,然后把页6调入内存。发生缺页中断的次数为11。在OPT算法中,在最远的将来才被访问的页面被先换出。当页6要调入时,内存的状态为1、2、5,考查页6后面要调入的页面,分别为2、1、2、,可见
3、5为最近一段时间内使用最少的,本次应换出,然后把页6调入内存。【例3】在一个单道的程序设计系统中,有3个作业J1、J2、J3,它们到达输入井的时间分别为8:50、9:00、9:30,它们需要执行的时间分别为1.5小时、0.4小时、1小时。系统在10:00按响应比高者优先算法对它们进行调度,请回答:(1)作业被选中执行的次序是什么?(2)三个作业被选中时的响应比分别是多少?分析 响应比作业周转时间/作业运行时间 作业等待时间/作业运行时间00,计算作业的响应比:以J1为例,它的作业计算时间是1.5小时,即90分钟;J1从8:50到达输入井,在10:00时刻,J1的等待时间为70分钟,因此作业J1
4、的响应比为:170分钟/90分钟=1.77 同理,J2:160分钟/24分钟=3.5 J3:130分钟/60分钟=1.5因此按照响应比高者优先算法,优先调度J2。在10:24,J2完成。这时计算J1、J3的响应比:J1:1(7024)分钟/90分钟=2.04 J3:1(3024)分钟/60分钟=1.9 按照响应比高者优先算法,优先调度J1。在11:54,J1完成,系统调度J3,J3的响应比为1(302490)分钟/60分钟=3.4 因此,作业被选中执行的次序是J2、J1、J3。三个作业被选中时的响应比分别是:J1,2.04;J2,3.5;J3,3.4。(1)作业被选中执行的次序是J2、J1、J
5、3。(2)三个作业被选中时的响应比分别是:J1,1.04;J2,2.5;J3,2.4。思考题2 某作业的提交时间为10:30,需要运行的时间为1小时,假设11:00开始调度,它的响应比是 。【例4】设有进程A、B、C、D依次进入就绪队列(相隔一个时间单位),它们的优先级(优先数大的优先级较高)如下表所示:进程 CPU时间 优先数 A 20 B 15 C 8 4 D 10 试问采用“先来先服务”、“静态优先数法”调度算法(注:优先数大的优先级高),选中进程的执行次序。采用先来先服务调度算法,按照进程进入就绪队列的先后次序占有CPU,其执行次序是A-B-C-D。采用静态优先数法,进程A最先就绪,在
6、0时刻先占有CPU运行,随后1时刻进程B进入就绪队列,2时刻进程C进入就绪队列,3时刻进程D进入就绪队列。由于采用静态优先数法,不容许随时间的推移改变进程的优先级,所以当进程A运行结束时,系统的就绪队列中有B、C、D三个进程,而进程C优先级最高,于是选中C;这样分析下去,进程的执行次序是A-C-D-B。思考题3 时间片轮转调度算法是为了( )。A多个终端都能得到系统的及时响应 B先来先服务C优先级高的进程先使用CPU D紧急事件优先处理 参考解答 思考题1:错误。作业被作业调度程序选中,说明作业处于运行状态,即该作业进入内存并以进程的形式存在于系统中,但属于该作业的进程可能处于运行、就绪和等待
7、状态,只有处于运行状态的进程才能占有处理机,而其余两种状态的进程并不占有处理机。作业调度和进程调度的区别:一个作业从进入系统到最后完成,一般至少要经历两级调度:作业调度和进程调度。作业调度是宏观上的高级调度,它的主要功能是根据一定的算法,从输入井中选中若干个作业,分配必要的资源,如主存、外设等,为它们建立初始状态为就绪的作业进程。进程调度是微观上的低级调度,它的主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。一般的操作系统都必须有进程调度。可见在多道系统中,作业调度与进程调度是相互配合来实现多道作业的并行执行的。两者的关系可用下图表示。思考题2:1.5(注:作业等待0.5小时,运行
8、1小时,响应比=10.5/1=1.5)思考题3:A【例5】考虑一个由8个页面,每页有1024个字节组成的逻辑空间,把它装入到有32个物理块的存储器中,问:(1)逻辑地址需要多少二进制位表示?(2)物理地址需要多少二进制位表示?分析 在分页存储管理中,逻辑地址结构如下图所示。它由两个部分组成:前一部分表示该地址所在页面的页号p;后一部分表示页内地址(页内位移)d。页号的地址位数决定了页的多少,假设页号有20位,则地址空间中最多可容纳的页面数为220,即1MB个页面。页内地址位数确定了每页的大小,若页内地址为12位,则每页大小为212,即2KB。同理,物理地址中块号的地址位数决定了块的数量。由于页
9、式存储管理内存空间块的大小与页面大小相同,所以物理地址中块内地址与逻辑地址中的页内地址位数相同。解 因为页面数为8=23,故需要3位二进制数表示。每页有1024个字节,1024=210,于是页内地址需要10位二进制数表示。32个物理块,需要5位二进制数表示(32=25)。(1)页的逻辑地址由页号和页内地址组成,所以需要3+10=13位二进制数表示。(2)页的物理地址由块号和页内地址的拼接,所以需要5+10=15位二进制数表示。【例6】若在一分页存储管理系统中,某作业的页表如下所示。已知页面大小为1024字节,试将逻辑地址1011,2148,4000,5012转化为相应的物理地址。000B 页号
10、 块号 否则释放队列中第一个等待信号量的进程。V操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。什么是信号量?信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。一般来说,信号量S0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。
11、而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。利用信号量和PV操作实现进程互斥的一般模型是:进程P1 进程P2 进程Pn P(S); P(S);临界区; 临界区;V(S); V(S); 其中信号量S用于互斥,初值为1。使用PV操作实现进程互斥时应该注意的是:(1)每个程序中用户实现互斥的P、V操作必须成对出现,先做P操作,进临界区,后做V操作,出临界区。若有多个分支,要认真检查其成对性。(2)P、V操作应分别紧靠临界区的头尾部,临界区的代码应尽可能短,不能有死循环。(3)互斥信号量的初值一般为1。利用信
12、号量和PV操作实现进程同步PV操作是典型的同步机制之一。用一个信号量与一个消息联系起来,当信号量的值为0时,表示期望的消息尚未产生;当信号量的值非0时,表示期望的消息已经存在。用PV操作实现进程同步时,调用P操作测试消息是否到达,调用V操作发送消息。使用PV操作实现进程同步时应该注意的是:(1)分析进程间的制约关系,确定信号量种类。在保持进程间有正确的同步关系情况下,哪个进程先执行,哪些进程后执行,彼此间通过什么资源(信号量)进行协调,从而明确要设置哪些信号量。(2)信号量的初值与相应资源的数量有关,也与P、V操作在程序代码中出现的位置有关。(3)同一信号量的P、V操作要成对出现,但它们分别在
13、不同的进程代码中。【例10】生产者-消费者问题在多道程序环境下,进程同步是一个十分重要又令人感兴趣的问题,而生产者-消费者问题是其中一个有代表性的进程同步问题。下面我们给出了各种情况下的生产者-消费者问题,深入地分析和透彻地理解这个例子,对于全面解决操作系统内的同步、互斥问题将有很大帮助。(1)一个生产者,一个消费者,公用一个缓冲区。定义两个同步信号量:empty表示缓冲区是否为空,初值为1。full表示缓冲区中是否为满,初值为0。生产者进程while(TRUE)生产一个产品;P(empty);产品送往Buffer;V(full);消费者进程while(True)P(full);从Buffer
14、取出一个产品;V(empty);消费该产品;(2)一个生产者,一个消费者,公用n个环形缓冲区。empty表示缓冲区是否为空,初值为n。设缓冲区的编号为1n-1,定义两个指针in和out,分别是生产者进程和消费者进程使用的指针,指向下一个可用的缓冲区。产品送往buffer(in);in=(in+1)mod n;从buffer(out)中取出产品;out=(out+1)mod n;(3)一组生产者,一组消费者,公用n个环形缓冲区在这个问题中,不仅生产者与消费者之间要同步,而且各个生产者之间、各个消费者之间还必须互斥地访问缓冲区。定义四个信号量:mutex1生产者之间的互斥信号量,初值为1。mute
15、x2消费者之间的互斥信号量,初值为1。生产者进程 P(mutex1);V(mutex1);P(mutex2);V(mutex2);需要注意的是无论在生产者进程中还是在消费者进程中,两个P操作的次序不能颠倒。应先执行同步信号量的P操作,然后再执行互斥信号量的P操作,否则可能造成进程死锁。【例11】桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。分析在本题中,爸爸、儿子、女儿共用一个盘子,盘中一次只能放一个水果。当盘子为空时,爸爸可将一个
16、水果放入果盘中。若放入果盘中的是桔子,则允许儿子吃,女儿必须等待;若放入果盘中的是苹果,则允许女儿吃,儿子必须等待。本题实际上是生产者-消费者问题的一种变形。这里,生产者放入缓冲区的产品有两类,消费者也有两类,每类消费者只消费其中固定的一类产品。解:在本题中,应设置三个信号量S、So、Sa,信号量S表示盘子是否为空,其初值为l;信号量So表示盘中是否有桔子,其初值为0;信号量Sa表示盘中是否有苹果,其初值为0。同步描述如下:int S1;int Sa0;int So0;main() cobegin father(); /*父亲进程*/ son(); /*儿子进程*/ daughter(); /
17、*女儿进程*/ coend father() while(1) P(S);将水果放入盘中;if(放入的是桔子)V(So);else V(Sa); son() P(So);从盘中取出桔子;V(S);吃桔子;daughter() P(Sa);从盘中取出苹果;吃苹果;思考题:四个进程A、B、C、D都要读一个共享文件F,系统允许多个进程同时读文件F。但限制是进程A和进程C不能同时读文件F,进程B和进程D也不能同时读文件F。为了使这四个进程并发执行时能按系统要求使用文件,现用PV操作进行管理,请回答下面的问题:(1)应定义的信号量及初值: 。(2)在下列的程序中填上适当的P、V操作,以保证它们能正确并发
18、工作:A() B() C() D() 1; 3; 5; 7;read F; read F;2; 4; 6; 8; 思考题解答:(1)定义二个信号量S1、S2,初值均为1,即:S1=1,S2=1。其中进程A和C使用信号量S1,进程B和D使用信号量S2。(2)从1到8分别为:P(S1) V(S1) P(S2) V(S2) P(S1) V(S1) P(S2) V(S2) 【例12】有一个阅览室,共有100个座位,读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名等,读者离开时要消掉登记的信息,试问:(1)为描述读者的动作,应编写几个程序,设置几个进程?(2)试用PV操作描述读者进程之间的同步关系。读者的动作有两个,一是填表进入阅览室,这时要考虑阅览室里是否有座位;一是读者阅读完毕,离开阅览室,这时的操作要考虑阅览室里是否有读者。读者在阅览室读书时,由于没有引起资源的变动,不算动作变化。算法的信号量有三个:seats表示阅览室是否有座位(初值为100,代表阅览室的空座位数);readers表示阅览室里的读者数,初值为0;用于互斥的mutex,初值为1。读者进入阅览室的动作描述getin:P (seats); /*没有座位则离开*/P(mutex)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1