操作系统第二章作业讲解
- 格式:doc
- 大小:264.50 KB
- 文档页数:24
第二章进度管理2. 试画出下面 4 条语句的前趋图 :S : a:=x+y;1S1S : b:=z+1;2S3S4 S3: c:=a-b;S4S : w:=c+1;23.为什么程序并发执行会产生中止性特色?程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的进度之间,形成了相互限制的关系,从而也就使得进度在执行期间出现中止性。
4.程序并发执行时为什么会失去封闭性和可再现性?由于程序并发执行时,是多个程序共享系统中的各种资源,所以这些资源的状态是由多个程序来改变,致使程序的运行失去了封闭性。
而程序一旦失去了封闭性也会致使其再失去可再现性。
5. 在操作系统中为什么要引入进度看法?它会产生什么样的影响?为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,从而在操作系统中引入了进度看法。
影响 : 使程序的并发执行得以实行。
6. 试从动向性,并发性和独立性上比较进度和程序?a. 动向性是进度最基本的特色,可表现为由创办而产生,由调换而执行,因得不到资源而暂停执行,以及由撤掉而消亡,所以进度由必然的生命期;而程序可是一组有序指令的会集,是静态实体。
b. 并发性是进度的重要特色,同时也是OS 的重要特色。
引入进度的目的正是为了使其程序能和其他建立了进度的程序并发执行,而程序自己是不能够并发执行的。
c. 独立性是指进度实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调换的基本单位。
而对于未建立任何进度的程序,都不能够作为一个独立的单位来运行。
7.试说明 PCB 的作用 ?为什么说 PCB 是进度存在的唯一标志 ?a. PCB是进度实体的一部分,是操作系统中最重要的记录型数据结构。
PCB中记录了操作系统所需的用于描述进度情况及控制进度运行所需的全部信息。
所以它的作用是使一个在多道程序环境下不能够独立运行的程序(含数据 ),成为一个能独立运行的基本单位,一个能和其他进度并发执行的进度。
第二章作业第一次作业:1.进程有哪三种基本状态?进程在三种基本状态之间转换的典型原因是什么?答:三种基本状态:就绪状态、执行状态、阻塞状态。
(1)就绪状态→执行状态:进程分配到CPU资源(进程调度);(2)执行状态→就绪状态:时间片用完(3)执行状态→阻塞状态:I/O请求(4)阻塞状态→就绪状态:I/O完成2.在Linux系统中运行下面程序,最多可产生多少个进程?画出进程家族树。
main(){fork();fork();fork();}答:最多可以产生7个进程。
其家族树为:3.试从动态性、并发性和独立性上比较进程和程序。
答:1)动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的;2)并发性是进程的重要特征,同时也是OS的重要特征。
引入进程的目的正是为了使其程序能和其它建立了进程的程序并发执行,而程序本身(没有建立PCB)是不能并发执行的;3)独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。
凡未建立PCB的程序,都不能作为一个独立的单位来运行。
4.分析下列代码的功能:答:sleep_on实现进程的睡眠过程;wake_up实现进程的唤醒过程。
第二次作业:1.同步机制应该遵循哪些基本准则?你认为整型信号量机制遵循了同步机制的哪些基本准则?答:同步机制应遵循四个基本准则:a. 空闲让进:当无进程处于临界区时,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。
b. 忙则等待:当已有进程进入临界区时,其它试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。
c. 有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态。
d. 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。
1、什么是中断?给出系统总体上的中断处理过程。
【解答】:所谓中断是指CPU在正常执行程序的过程中,由于某个外部或内部事件的作用,强迫CPU停止当前正在执行的程序,转去为该事件服务(称为中断服务),待服务结束后,又能自动返回到被中断的程序中继续执行。
CPU每执行完一条指令就去扫描中断寄存器,检查是否有中断发生,若没有中断就继续执行下条指令;若有中断发生就转去执行相应的中断处理程序。
中断处理过程可粗略的分为以下四个过程:①保护当前正在运行程序的现场;②分析是何种中断,以便转去执行相应的中断处理程序;③执行相应的中断处理程序;④恢复被中断程序的现场。
2、请给出进程与程序它们的区别和联系。
【解答】:1、进程是动态的程序是静态的。
程序是一组有序的指令集合,是一个静态的概念;进程则是程序及其数据在计算机上的一次执行是一个动态的集合。
2、一个进程可以执行多个程序;一个程序可被多个进程执行;3、程序可以长期保存,进程有从被创建到消亡的生命周期。
4、进程具有并发性,而程序具有顺序性;5、进程具有独立性,是资源分配调度的基本单位,而程序无此特性。
3、试说明进程在三个基本状态之间转换的典型原因.【解答】a. 处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态变为执行状态.b. 当前进程因发生某事件而无法执行,如访问已被占用的临界资源,就会使进程由执行状态转变为阻塞状态.c. 当前进程因时间片用完而被暂停执行,该进程便由执行状态转变为就绪状态.4、什么是临界资源和临界区?【解答】:临界资源是一次仅允许一个进程访问的资源,例如打印机,共享的变量。
进程中访问临界资源的那段代码段称为临界区。
5、进程的互斥和同步有什么异同点?进程同步机制应遵循哪四个基本准则?【解答】:进程同步机制应遵循如下四个基本准则:空闲让进,以提高临界资源利用率,忙则等待,以保证临界资源互斥使用;让权等待,以提高cpu的利用率;有限等待,以免相关进程陷入“死等”。
第二章作业1.操作系统中为什么要引入进程的概念?为了实现并发进程中的合作和协调,以及保证系统的安全,操作系统在进程管理方面要做哪些工作?答:为了从变化角度动态地分析研究可以并发执行的程序,真实的反应系统的独立性、并发性、动态性和相互制约,操作系统中不得不引入进程的概念。
为了防止操作系统及其关键的数据结构如:PCB等,受到用户程序破坏,将处理机分为核心态和用户态。
对进程进行创建、撤销以及在某些进程状态之间的转换控制。
2.试描述当前正在运行的进程状态改变时,操作系统进行进程切换的步骤。
答:分为两种情况:(1):运行状态就绪状态:根据进程的自身的情况插入到就绪队列的适当位置,系统收回处理及转入进程调度程序重新进行调度。
(2):运行状态→阻塞状态:系统会调用进程调度程序重新选择一个进程投入运行。
3.现代操作系统一般都提供多任务的环境,是回答以下问题。
为支持多进程的并发执行,系统必须建立哪些关于进程的数据结构?答:系统必须建立PCB。
为支持进程的状态变迁,系统至少应该供哪些进程控制原语?答:阻塞、唤醒、挂起和激活原语。
当进程的状态变迁时,相应的数据结构发生变化吗?答:会根据状态的变迁发生相应的变化。
例如:将进程PCB中进程的状态从阻塞状态改为就绪状态,并将进程从阻塞队列摘下,投入到就绪队列中。
4.什么是进程控制块?从进程管理、中断处理、进程通信、文件管理、设备管理及存储管理的角度设计进程控制块应该包含的内容。
答:PCB:描述进程本身的特征、状态、调度信息以及对资源占有情况等的数据结构,是进程存在的唯一标识。
进程控制块所包含的内容:①进程信息描述;②CPU信息状态;③进程调度信息;④进程控制和资源占用信息。
5.假设系统就绪队列中有10个进程,这10个进程轮换执行,每隔300ms轮换一次,CPU在进程切换时所花费的时间是10ms,试问系统化在进程切换上的开销占系统整个时间的比例是多少?解:P=(10*10)/[(300+10)*10]=3.2%6.试述线程的特点及其与进程之间的关系。
第二章用户界面2.1 知识点汇总1、作业及作业步图2-1 作业及作业步2、系统调用:用户程序中对操作系统的调用称为系统调用。
使用户程序通过简单的调用,来实现一些硬件相关,应用无关的工作,从而简化了用户程序。
独立程序:不需要操作系统帮助的程序(包括程序的启动和结束)非独立程序:需要操作系统帮助的程序图2-2 系统调用的执行过程系统调用的特点:(1)系统调用指令是由硬件决定的(即:CPU中的中断向量表)。
CPU的指令集中都有一条系统调用指令,又称访管指令但系统调用具体实现的功能由操作系统决定(即:操作系统中的,系统调用分支表,及系统调用代码)。
因此:同一种计算机上的不同操作系统,系统调用指令是相同的。
同一操作系统,在不同的计算机上,系统调用指令是不同的。
(2)系统调用是动态连接的静态连接:程序在编译时,将被调用的程序嵌入到自身中。
如:库函数调用动态连接:程序在执行的过程中,执行到调用指令时,才连接到被调用的程序并执行。
如:动态连接库(dynamic link library,DLL),系统调用。
由于操作系统是动态连接的,所以,缩短了用户程序,使用户程序和操作系统提供的系统调用功能相互独立。
(3)系统调用的调用地址和返回地址不是固定的。
系统调用的地址,由系统启动装载操作系统时,存放系统调用代码的位置决定,每次开机都可能存放在不同的位置上。
返回地址,由用户程序中系统调用指令的位置决定。
(4)安全接口在执行系统调用和从系统调用中返回时,要分别保存和恢复程序状态字PSW,并设置PSW中的系统态/用户态标志位,进行系统态和用户态的切换。
执行系统调用时,进入系统态。
从系统调用中返回用户程序时,进入用户态。
状态切换的目的:某些特权指令只能在系统态下执行。
一些地址,只能在系统态下访问。
从而限制了用户程序不能随意地进入操作系统区域,读写操作系统的内部代码,也限制了用户程序不能随意进入其它用户程序的区域。
中断:是指计算机在执行程序的过程中,当遇到需要立即处理的事件时,立即暂停当前正在运行的程序,转去执行有关服务程序,处理完后自动返回原程序。
第二章习题讲解1、进程之间存在着哪几种制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系?(1)若干同学去图书馆借书;(2)两队举行篮球比赛;(3)流水线生产的各道工序;(4)商品生产和社会消费。
答:进程之间存在着直接制约与间接制约这两种制约关系,其中直接制约(同步)是由于进程间的相互合作而引起的,而间接制约(互斥)则是由于进程间共享临界资源而引起的。
(1)若干同学去图书馆借书,是间接制约,其中书是临界资源;(2)两队举行篮球比赛,是间接制约,其中蓝球是临界资源;(3)流水线生产的各道工序,是直接制约,各道工序间需要相互合作,每道工序的开始都依赖于前一道工序的完成;(4)商品生产和社会消费,是直接制约,两者也需要相互合作:商品生产出来后才可以被消费;商品被消费后才需要再生产。
2、试写出相应的程序来描述下图所示的前趋图var a,b,c,d,e,f:semaphore:=0,0,0,0,0,0;begin S1; signal(a); signal(b); signal(c); end;begin wait(a); S2; end;begin wait(b); S3; signal(d); end;begin wait(c); S4; end;begin wait(d); S5; signal(e); signal(f); end;begin wait(e); S6; end;begin wait(f); S7; end;3、已知一个求值公式(A2+3B)/(B+5A),若A、B已赋值,试画出该公式求值过程的前趋图,并使用信号量描述这些前趋关系。
答:根据求值公式,假设:S1: X1=A*AS2: X2=3*BS3: X3=5*AS4: X4=X1+X2S5: X5=B+X3S6: X6=X4/X5var a,b,c,d,e:semaphore:=0,0,0,0,0;begin S1; signal(a); end;begin S2; signal(b); end;begin S3; signal(c); end;begin wait(a); wait(b); S4; signal(d); endbegin wait(c); S5; signal(e); endbegin wait(d); wait(e); S6; end4、桌上有一只能容纳一个水果的盘子;爸爸专向盘子中放苹果(apple),妈妈专向盘子中放桔子(orange),一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子里的苹果,1)试用信号量实现他们的同步关系;2)如果有两个家庭的爸爸、妈妈、儿子、女儿和二只盘子呢?会需要专门的实现吗?var empty,apple,orange:semaphore:= 1,0,0;说明:empty与apple表示盘子为空与盘子中放入了苹果,用于表示爸爸与女儿间的同步关系;empty与orange表示盘子为空与盘子中放入了桔子,用于表示妈妈与儿子间的同步关系;var mutex,empty,apple,orange:semaphore:=1,2,0,0;dish: array[0,1] of fruit;wait(empty);wait(mutex);if dish[in]==apple or dish[in]==orange thenin:=(in+1) mod 2;disk[in]:=orange;in:=(in+1) mod 2;signal(mutex);signal(orange);Until falseendwait(mutex);if dish[out]==apple thenout:=(out+1) mod 2;get an orange from dish[out];out:=(out+1) mod 2;signal(mutex);signal(empty);Eat an apple;Until falseend5、试用信号量实现课件92页,司机与售票员进程的同步关系var stop, door :semaphore:=0,0;driver:beginrepeatdrive a bus;arrive at bus station;signal(stop);rest;wait(door);Until falseend conductor:begin repeatsell tickets;wait(stop);Open the door;Close the doorsignal(door); Until falseend6、试用信号量解决读者—写者问题,使得写者与读者优先级根据到达顺序确定。
第二章进程和线程作业答案1,2,4,6,7,10,11,12,14, 211.在操作系统中为什么要引入进程概念?它与程序的差别和关系是怎样的?答:由于多道程序的并发执行时共享系统资源,共同决定这些资源的状态,因此系统中各程序在执行过程中就出现了相互制约的新关系,程序的执行出现“走走停停”的新状态。
用程序这个静态概念已经不能如实反映程序并发执行过程中的这些特征。
为此,人们引入“进程(Process)”这一概念来描述程序动态执行过程的性质。
进程和程序是两个完全不同的概念。
进程与程序的主要区别:进程和程序之间存在密切的关系:进程的功能是通过程序的运行得以实现的,进程活动的主体是程序,进程不能脱离开具体程序而独立存在。
2. PCB 的作用是什么?它是怎样描述进程的动态性质的? 答:PCB 是进程组成中最关键的部分。
每个进程有惟一的进程控制块;操作系统根据PCB 对进程实施控制和管理,进程的动态、并发特征是利用PCB 表现出来的;PCB 是进程存在的唯一标志。
PCB 中有表明进程状态的信息,该进程的状态包括运行态、就绪态和阻塞态,它利用状态信息来描述进程的动态性质。
4. 用如图2-26所示的进程状态转换图能够说明有关处理机的大量内容。
试回答:① 什么事件引起每次显著的状态变迁?② 下述状态变迁因果关系能否发生?为什么?(A ) 2→1 (B )3→2 (C )4→1答:(1)就绪→运行:CPU空闲,就绪态进程被调度程序选中运行→阻塞:运行态进程因某种条件未满足而放弃CPU的占用。
阻塞→就绪:阻塞态进程所等待的事件发生了。
运行→就绪:正在运行的进程用完了本次分配给它的时间片(2)下述状态变迁(A)2→1,可以。
运行进程用完了本次分配给它的时间片,让出CPU,从就绪队列中选一个进程投入运行。
(B)3→2,不可以。
任何时候一个进程只能处于一种状态,它既然由运行态变为阻塞态,就不能再变为就绪态。
(C)4→1,可以。
操作系统第二章作业讲解第二章习题讲解1、进程之间存在着哪几种制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系?(1)若干同学去图书馆借书;(2)两队举行篮球比赛;(3)流水线生产的各道工序;(4)商品生产和社会消费。
答:进程之间存在着直接制约与间接制约这两种制约关系,其中直接制约(同步)是由于进程间的相互合作而引起的,而间接制约(互斥)则是由于进程间共享临界资源而引起的。
(1)若干同学去图书馆借书,是间接制约,其中书是临界资源;(2)两队举行篮球比赛,是间接制约,其中蓝球是临界资源;(3)流水线生产的各道工序,是直接制约,各道工序间需要相互合作,每道工序的开始都依赖于前一道工序的完成;(4)商品生产和社会消费,是直接制约,两者也需要相互合作:商品生产出来后才可以被消费;商品被消费后才需要再生产。
2、试写出相应的程序来描述下图所示的前趋图vara,b,c,d,e,f:semaphore:=0,0,0,0,0,0;begin S1; signal(a); signal(b);signal(c); end;begin wait(a); S2; end;begin wait(b); S3; signal(d); end; begin wait(c); S4; end;begin wait(d); S5; signal(e); signal(f); end; begin wait(e); S6; end;begin wait(f); S7; end;3、已知一个求值公式(A2+3B)/(B+5A),若A、B已赋值,试画出该公式求值过程的前趋图,并使用信号量描述这些前趋关系。
答:根据求值公式,假设:S1: X1=A*AS2: X2=3*BS3: X3=5*AS4: X4=X1+X2S5: X5=B+X3S6: X6=X4/X5var a,b,c,d,e:semaphore:=0,0,0,0,0;begin S1; signal(a); end;begin S2; signal(b); end;begin S3; signal(c); end;begin wait(a); wait(b); S4; signal(d); endbegin wait(c); S5; signal(e); endbegin wait(d); wait(e); S6; end4、桌上有一只能容纳一个水果的盘子;爸爸专向盘子中放苹果(apple),妈妈专向盘子中放桔子(orange),一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子里的苹果,1)试用信号量实现他们的同步关系;2)如果有两个家庭的爸爸、妈妈、儿子、女儿和二只盘子呢?会需要专门的实现吗?var empty,apple,orange:semaphore:= 1,0,0;说明:empty与apple表示盘子为空与盘子中放入了苹果,用于表示爸爸与女儿间的同步关系;empty与orange表示盘子为空与盘子中放入了桔子,用于表示妈妈与儿子间的同步关系;答案:1)使用记录型信号量father:beginrepeatproducer an apple;wait(empty);Put an apple to the dish;signal(apple);Until falseend daughter:beginrepeatwait(apple);Get an apple from dish;signal(empty);Eat an apple; Until falseendmother:beginrepeatproducer an orange;wait(empty);Put an orange to the dish;signal(orange); Until falseend son:beginrepeatwait(orange);Get an orange from dish;signal(empty);Eat an orange; Until falseend2)使用记录型信号量varmutex,empty,apple,orange:semaphore:=1,2,0,0;dish: array[0,1] of fruit;in, out:integer:= 0,0;father:beginrepeatproducer an apple;wait(empty);wait(mutex);if dish[in]==apple or dish[in]==orange thenin:=(in+1) mod 2;disk[in]:=apple;in:=(in+1) mod 2;signal(mutex);signal(apple);Until falseend daughter:begin repeatwait(apple);wait(mutex);ifdish[out]==orange thenout:=(out+1) mod 2;get an apple from dish[out];out:=(out+1) mod 2;signal(mutex);signal(empty);Eat an apple; Until falseEndmother:beginrepeatproducer an orange;wait(empty);wait(mutex);if dish[in]==apple or dish[in]==orange thenin:=(in+1) mod 2;disk[in]:=orange;in:=(in+1) mod 2;signal(mutex);signal(orange);Until falseend son:beginrepeatwait(orange);wait(mutex);ifdish[out]==apple thenout:=(out+1) mod 2;get an orange from dish[out];out:=(out+1) mod 2;signal(mutex);signal(empty);Eat an apple; Until falseend5、试用信号量实现课件92页,司机与售票员进程的同步关系var stop, door :semaphore:=0,0;driver:beginrepeatdrive a bus; arrive at bus station; signal(stop);rest;wait(door);Until falseend conductor:begin repeatsell tickets;wait(stop);Open the door;Close the doorsignal(door); Until falseend6、试用信号量解决读者—写者问题,使得写者与读者优先级根据到达顺序确定。
1)典型错误代码讲解:不增加任何信号量Var rmutex, wmutex:semaphore∶=1,1;Readcount:integer∶=0;beginparbeginReader:beginrepeatwait(rmutex);if Readcount=0 then wait(wmutex);Readcount∶= Readcount+1;signal(rmutex);…perform read operation;…wait(rmutex);Readcount∶= Readcount-1;if Readcount=0 then signal(wmutex);signal(rmutex);until false;endwriter:beginrepeatif readcount>0 then wait(rumtex);wait(wmutex);perform write operation;signal(rmutex);signal(wmutex);until false;endparendend到达序列:R1, R2, W1, R3, R4, W2进程行为rmutex=1wmutex=1Readcount=0状态备注R 1 到达rmutex=0rmutex=1wmutex=0Readcount=1执行/就绪第1位读者R 2 到达rmutex=0rmutex=1Readcount=2执行/就绪W 1 到达rmutex=0 阻塞1阻塞Readcount>0R 3 到达阻塞1 阻塞rmutex=0R到阻塞2 阻rmutex=04 达塞W 2 到达阻塞3 阻塞rmutex=0R 1 离开阻塞4 阻塞rmutex=0R 2 离开阻塞5 阻塞rmutex=0产生死锁2)学习指导与题解上的解题思路答:为使写者优先,可在原来的读优先算法基础上增加一个初值为1的信号量S,使得当至少有一个写者准备访问共享对象时,它可使后续的读者进程等待写完成。
初值为0的整型变量writecount用来对写者进行计数;初值为1 的互斥信号量mutex用来实现多个写者对writecount的互斥访问。
读者与写者进程算法描述如下:var S, mutex, rmutex, wmutex: semaphore:=1,1, 1,1;writecount, readcount: integer:=0,0;reader: beginrepeatwait(S);wait(rmutex);if readcount=0 then wait(wmutex);readcount:=readcount+1;signal(rmutex);signal(S);perform read operation;wait(rmutex);readcount:=readcount-1;if readcount=0 then signal(wmutex);signal(rmutex);until falseendwriter: beginrepeatwait(mutex);if writecount=0 then wait(S);writecount:=writecount+1;signal(mutex);wait(wmutex);perform write operation;signal(wmutex);wait(mutex);writecount:=writecount-1;if writecount=0 then signal(S);signal(mutex);until falseend到达序列:R1, R2, W1, R3, R4, W23)改写上述代码,真正实现读写平等策略var S, rmutex, wmutex: semaphore:=1, 1,1;readcount: integer:= 0;reader: beginrepeatwait(S);wait(rmutex);if readcount=0 then wait(wmutex);readcount:=readcount+1;signal(rmutex);signal(S);perform read operation;wait(rmutex);readcount:=readcount-1;if readcount=0 then signal(wmutex);signal(rmutex);until falseendwriter: beginrepeatwait(S);wait(wmutex);perform write operation;signal(wmutex);signal(S);until falseend到达序列:R1, R2, W1, R3, R4, W2进程行为S=1rmutex=1wmutex=1readcount=备注R1 到达S=0 rmutex=第一S= 1 0rmutex=1wmutex=readcount=1个读者执行/就绪R2 到达S=S=1rmutex=rmutex=1readcount=2执行/就绪W 1 到达S=0 阻塞1第一个写者R3 到达阻塞1R4 到达阻塞2W 2 到达阻塞3R1 离开rmutex=rmutex=1readcount=1R2 离开rmutex=rmutex=1wmutex=1readcount=负责唤醒W1W 1 被唤醒wmutex=执行/就绪W 1 离开S=1wmutex=1负责唤醒R37、试说明PCB的作用,为什么说PCB是进程存在的唯一标志?(课本第7题)答:进程控制块的作用,是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,即一个能与其他进程并发执行的进程。