1、285问答题1 答:为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,而引入了进程概念.影响: 使程序的并发执行得以实行. a. 动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,是静态实体。b. 并发性是进程的重要特征,同时也是OS的重要特征 。引入进程的目的正是为了使其程序能和其它进程的程序并发执行,而程序是不能并发执行的。c. 独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。而对于未建立任何进程的程序,都不能作为
2、一个独立的单位参加运行.2.答:运行态、就绪态、阻塞态三个基本状态之间可能转换和转换原因如下: 就绪态运行态:当处理机空闲时,进程调度程序必将处理机分配给一个处于就绪态的进程 ,该进程便由就绪态转换为运行态。 运行态阻塞态:处于运行态的进程在运行过程中需要等待某一事件发生后(例如因IO请求等待IO完成后) ,才能继续运行,则该进程放弃处理机,从运行态转换为阻塞态。 阻塞态就绪态:处于阻塞态的进程,若其等待的事件已经发生,于是进程由阻塞态转换为就绪态。 运行态就绪态:处于运行状态的进程在其运行过程中,因分给它的处理机时间片已用完,而不得不让出(被抢占)处理机,于是进程由运行态转换为就绪态。3.答
3、:a. PCB 是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB 中记录了操作系统所需的用于描述进程情况及控制进程运行所需的全部信息.因而它的作用是使一个在多道程序环境下不能独立运行的程序(含数据) ,成为一个能独立运行的基本单位,一个能和其它进程并发执行的进程。b. 在进程的整个生命周期中,系统总是通过其 PCB 对进程进行控制,系统是根据进程的PCB 而不是任何别的什么而感知到该进程的存在的,所以说,PCB 是进程存在的唯一标志。4答:运行、活动阻塞、活动就绪、静止就绪、静止阻塞。运 行 态就 绪 态 阻 塞 态进程调度时间片已用完 等待某一事件发生等待事件已发生挂起前的进程
4、就绪态和阻塞态也改为活动就绪态和活动阻塞态。当进程处于运行态和活动就绪态时,执行挂起操作,进程状态转换为静止就绪态。当进程处于活动阻塞态时,执行挂起操作,进程状态转换为静止阻塞态。对被挂起的进程施加“激活” 操作,则处于静止就绪的进程转换为活动就绪态,处于静止阻塞态的进程转换为活动阻塞态。被挂起的处于静止阻塞态的进程当它等待的事件发生后,它就由静止阻塞态转换为静止就绪态。5.答: 作业从进入到运行结束,一般需要经历“提交”、 “后备”、 “运行”和“完成”四个阶段。(1)提交状态一个作业被提交给机房后正在通过SPOOLing系统进行输入或用户通过终端向计算机中键入其作业时所处于的状态为提交状态
5、。(2)后备状态作业已经过SPOOLing系统输入到磁盘输入井,等待调入内存运行,此时作业处于后备状态。为了管理和调度作业,为每个作业设置一个作业控制块(JCB) 。作业控制块记录了作业类型和资源要求等有关信息。作业控制块按作业类型组成一个或多个后备作业队列。(3)运行状态一个在后备作业队列的作业被作业调度程序选中后,分配必要的资源,建立一组相应的进程后,调入内存,该作业就进入运行状态。进程各状态(进程运行态、内存进程就绪态、内存阻塞态、外存进程就绪态、外存进程阻塞态等)都对应作业运行状态。(4)完成状态当进程正常运行结束或因发生错误而终止时,作业进入完成状态。终止作业程序将负责善后处理。6.
6、答:a. 共享存储器系统通信方式;b. 消息传递系统通信方式;c. 管道通信方式. 共享存储器系统通信方式:(1)基于共享数据结构的通信方式。 (2) 基于共享存储区的通信方式。 消息传递系统通信方式:在消息传递系统中,进程间的数据交换,是以格式化的消息(message)为单位的;在计算机网络中,又把 message 称为报文。程序员直接利用系统提供的一组通信命令(原语)进行通信。操作系统隐藏了通信的实现细节,大大减化了通信程序编制的复杂性,而获得广泛的应用。消息传递系统的通信方式属于高级通信方式。又因其实现方式的不同而进一步分成直接通信方式和间接通信方式两种。 管道通信方式:所谓“管道” ,
7、是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名 pipe 文件。向管道(共享文件) 提供输入的发送进程 (即写进程), 以字符流形式将大量的数据送入管道;而接受管道输出的接收进程(即读进程) ,则从管道中接收(读) 数据。由于发送进程和接收进程是利用管道进行通信的,故又称为管道通信。这种方式首创于 UNIX 系统,由于它能有效地传送大量数据,因而又被引入到许多其它操作系统中。 7答:a. 死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进;b. 产生死锁的原因有二,一是竞争资源,二是进程推进顺序非法;c. 必要条件是: 互斥条件,
8、请求和保持条件,不剥夺条件和环路等待条件. a. 解决死锁可归纳为四种方法: 预防死锁,避免死锁,检测死锁和解除死锁;b. 其中,预防死锁是最容易实现的;c. 避免死锁使资源的利用率最高. 8.答:(1)在控制程序介入时间可以忽略不计的假设下,没有运行进程一定就没有就绪进程。(2)A.没有运行进程-此时一定就没有就绪进程,其它全部进程一定排在阻塞队列中;B。没有就绪进程-此时有一个运行进程,其它全部进程一定排在阻塞队列中;运行进程和就绪进程都没有-此时其它全部进程一定排在阻塞队列中。实现抢先式优行级调度的多道程序环境内,运行进程一定是自由进程(就绪进程)中优先权最高的;实现非抢先式优先级调度的
9、多道程序环境内,运行进程不一定是自由进程(就绪进程)中优先权最高的。9.答:a:(1)就绪态运行态:当处理机空闲时,进程调度程序必将处理机分配给一个处于就绪态的进程 ,该进程便由就绪态转换为运行态。(2)运行态阻塞态:处于运行态的进程在运行过程中需要等待某一事件发生后(例如因IO请求等待IO完成后) ,才能继续运行,则该进程放弃处理机,从运行态转换为阻塞态。(3)运行态就绪态:处于运行状态的进程在其运行过程中,因分给它的处理机时间片已用完,而不得不让出(被抢占)处理机,于是进程由运行态转换为就绪态。(4)阻塞态就绪态:处于阻塞态的进程,若其等待的事件已经发生,于是进程由阻塞态转换为就绪态。b:
10、a 2 1 处于运行状态的进程在其运行过程中,因分给它的处理机时间片已用完,而不得不让出(被抢占)处理机,于是进程由运行态转换为就绪态,此时进程调度程序就会按照一定的算法,在就绪队列中选一个进程 B,将处理机分给它,该 B 进程的状态也由就绪态转换为运行态。b:3 2 这个状态之间的影响不会发生。c: 4 1如一个进程 C 等待的事件完成,则它的状态由阻塞态转换为就绪态,它也从阻塞队列中抽出插入就绪队列中。如进程 C 从阻塞态转换为就绪态时,有一个进程 D 在 CPU 上运行。而系统采用抢占式调度算法,进程 C 的优先级又高于正在 CPU 上运行的进程 D 的优先级,则要进行抢占调度。即接下去
11、的操作是由进程调度程序将正在运行的进程 D 由运行态转换为就绪态,插入就绪队列。C: 3 1 系统中一个运行态的进程 p 发生 I/O 请求后要等待 I/O 完成,它的状态也由运行态转换为阻塞态,此时进程调度程序就会按照一定的算法,在就绪队列中选一个进程 Q,将处理机分给它,该 Q 进程的状态也由就绪态转换为运行态。10.操 作 情 况 信号灯值 操作结果说明 事件P1(生产者) P2(消费者) S1 S20 . . 2 0 初 始 化1 - P(S2) 2 -1 P2 阻塞2 P(S1) - 1 -1 P1 正常3 V(S2) - 1 0 P1 正常、P2 唤醒4 P(S1) - 0 0 P
12、1 正常5 - V(S1) 1 0 P2 正常6 V(S2) - 1 1 P1 正常7 P(S1) - 0 1 P1 正常8 V(S2) - 0 2 P1 正常9 P(S1) -1 P1 阻塞11.进程 Allocation Need Availabe Abelable+ Allocation NoA B C D A B C D A B C D A B C DP0 0 0 3 2 0 0 1 2 1 6 2 2 1 6 5 4 1P1 1 0 0 0 1 7 5 0 1 9 8 6 2 9 8 6 3P2 1 3 5 4 2 3 5 6 2 9 8 6 3 12 13 10 4P3 0 3 3
13、 2 0 6 5 2 1 6 5 4 1 9 8 6 2P4 0 0 1 4 0 6 5 6 3 12 13 10 3 12 14 14可以找到一个安全序列P 0、 P3、P 1、P 2、P 4,系统是安全的。进程P2此时提出资源申请(1,2,2,2), 如系统实施此次分配使系统可用资源减到(0,4,0,0) ,再也无法满足各进程对资源的需求,系统进入一个不安全状态,系统不能将资源分配给进程P2。进程 Allocation Need Availabe Abelable+ Allocation NoA B C D A B C D A B C D A B C DP0 0 0 3 2 0 0 1 2
14、 0 4 0 0 P1 1 0 0 0 1 7 5 0 P2 2 5 7 6 1 1 3 4 P3 0 3 3 2 0 6 5 2 P4 0 0 1 4 0 6 5 6 121. 先来先服务调度算法FCFS作业调度次序的计算:FCFS按照作业到达的先后次序来选择作业,按作业到达时间的先后次序五个作业调度次序为A、B、C、D、E。2. 短作业优先调度算法SJF作业调度次序的计算:SJF在到达的作业中挑选所需运行时间最短的作业进入主存先运行,调度次序如下:T=0:只有作业A已到达,调度作业A运行。T=4:作业A完成,作业B、C、D、E已全部到达,比较作业B、C、D、E的运行时间,按运行时间短的作业
15、先运行,则调度次序为D、B、E、C。调度图:T 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18FCFS A A A A B B B C C C C C D D E E E ESJF A A A A D D B B B E E E E C C C C C进 程 A1 B2 C3 D4 E5 平均到达时间 T a 0 1 2 3 4运行时间 T S 4 3 5 2 4FCFS 完成时间 T f周转时间 T q4476121014111814 9SJF 完成时间 T f周转时间 Tq4498181663139 83.高响应比优先(HRRN)(作业)调度算
16、法作业调度次序的计算:T=0:只有作业A已到达,调度作业A运行。T=4:作业A完成,作业B、C、D、E已到达,计算作业B、C、D、E响应比R P分别为: 1+3/3、1+2/5、1+1/2、1+0/4,作业B响应比最大调度运行。T=7:作业B完成,作业C、D、E已到达,计算作业C、D、E响应比R P分别为: 1+5/5、1+4/2、1+3/4,作业D响应比最大调度运行。T=9:作业D完成,作业C、E已到达,计算作业C、E响应比R P分别为: 1+7/5、1+5/4,作业C响应比最大调度运行。13Program ito;var In1,In2,Out1,Out2:buffer;emptyIn1,
17、emptyIn2,fullIn1,fullIn2,emptyOut1,emptyOut2,fullOut1,fullOut2:SEMAPHORE:=1,1,0,0,1,1,0,0;beginparbeginprocedure Inputbeginrepeatinput from IO;P(emptyIn1); Add to Buffer In1; V(fullIn1);input from IO; P(emptyIn2); Add to Buffer In2; V(fullIn2);until falseend;procedure output;beginrepeatP(fullOut1);T
18、ake from Buffer Out1;V(emptyOut1);Output .;P(fullOut2);Take from Buffer Out2;V(emptyOut2);Output .;until falseend;procedure trans;beginrepeatP(fullIn1);P(emptyOut1);transform(In1,Out1);V(emptyIn1);V(fullOut1);P(fullIn2);P(emptyOut2);transform(In2,Out2);V(emptyIn2);V(fullOut2);until falseend;parendend