2、系统调用的作用是什么?请给出实现系统调用的步骤。
3、用户程序向系统提出使用外设的请求方式是():作业申请;原语;系统调用;I/O指令。
4、判断:系统调用与用户程序之间的调用不同之处是处理机状态的改变。 5、判断:命令解释程序是操作系统的一个程序,它必须在核心态下运行。
6、用户进程通过系统调用fork创建一个新进程,在执行系统调用前,用户进程运行在();在执行fork过程中,用户进程运行在()。(选项:系统态;用户态;系统态或用户态;内部态)
6、判断:系统调用命令就是访管指令,它的功能是由硬件直接提供的。 7、比较一般的过程调用和系统调用:
答:(1)运行在不同的系统状态:一般过程调用,其调用程序和被调用程序都运行在相同的状态:系统态或用户态。而系统调用的调用过程运行在用户态,被调用过程运行在系统态。(2)通过软中断进入:一般过程调用不涉及系统状态状态转换,可直接由调用过程转向被调用过程;而系统调用通常是通过软中断机制,先由用户态转换为系统态,经核心分析后,再转向相应的系统调用处理子程序。(3)返回问题:一般过程调用在被调用过程执行完后将返回到调用过程继续运行。但对于采用抢占式调度的系统中,当从系统调用返回时,有可能会重新调度。
第二章 进程管理
2.1 进程的基本概念
1、进程申请打印输出完成向系统发出中断后,进程的状态变化为()。(南京邮电01) 2、判断:当一个进程从等待态变为就绪态,则一定有一个进程从就绪态变成运行态。 3、如果一个单处理机系统中有N个进程,
? 运行进程最多几个,最少几个? ? 就绪进程最多几个,最少几个? ? 等待进程最多几个,最少几个?
解答: 运行进程最多1个,最少0个;
就绪进程最多N-1个,最少0个; 等待进程最多N个,最少0个;
4、判断:在一个N个进程的单处理机系统中,有可能出现N个进程都被阻塞的情况。 5、补充内容:
特权指令
指具有特殊权限的指令。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。 在多用户、多任务的计算机系统中特权指令必不可少。它主要用于系统资源的分配和管理,包括改变系统工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表,完成任务的创建和切换等。 常见的特权指令有以下几种:
6
(1)有关对I/O设备使用的指令 如启动I/O设备指令、测试I/O设备工作状态和控制I/O设备动作的指令等。
(2)有关访问程序状态的指令 如对程序状态字(PSW)的存取指令等。 (3)存取特殊寄存器指令 如存取中断寄存器、时钟寄存器、设置中断屏蔽、关中断、置基址寄存器等指令。 (4)其他指令:清内存,停机
6、关于进程状态,判断:
(1)进程一旦形成,首先进入的是运行状态。 (2)一个进程必须经过进程的三个基本状态才能结束。 (3)进程可能同时处于某几种基本状态中。
(4)分时系统中,一个正在运行的进程的时间片到,该进程将转入就绪状态。
7、只能在管态下执行的指令有(从内存中取数指令;把运算结果写内存指令;算术运算指令;I/O指令;读时钟指令;置时钟指令、寄存器清零指令;屏蔽所有中断;改变存储器映像图;改变磁盘空间分配位图;) 8、在一个分时系统中,用户提交了一个作业,作业内容包括:请求内存缓冲区;计算并将结果存于内存缓冲区;请求打印机;将缓冲区中的内容在打印机上输出;释放打印机;释放内存;结束。
讨论进程可能的状态变化。
9、判断:在单CPU的系统中,任何时刻都有一个进程处于运行状态。 10、判断:进程申请CPU得不到满足时,其状态变为阻塞态。 11、能从1种状态转变为3种状态的是():就绪;阻塞;完成;执行 12、判断:进程在运行中,可以自行修改自己的PCB。
13、判断:当进程申请CPU得不到满足时,它将处于阻塞状态。
14、判断:当进程由执行状态变为就绪状态时,CPU现场信息必须被保存在PCB中。 15、操作系统通过PCB来控制和管理进程,用户进程可从PCB中读出与本身运行状态相关的信息。
16、若一个进程实体由PCB、正文段、数据段和堆栈段组成,请指出下列C语言程序中的内容位于哪一段中:外部变量、局部变量、函数调用实参传递值、用molloc()要求动态分配的存储器、常数值。
(局部变量:堆栈段;静态局部变量:数据段;外部变量:数据段;函数调用参数:堆栈段;malloc分到的存储区:数据段)
17、unix为什么要把PCB分为进程表项(Proc区)和U区?
提示:因为进程表项中的内容对核心来说必须总是可存取的,而U区中的域只能由正在运行的进程来存取。只有当创建一个进程时,核心才为其分配U区空间,那些不与任何进程相联系的进程表项是不需要U区的。
18、以unix为例,说明Operating System Function Execute Within User Process 的实现模型。
7
提示:unix存在两类进程:系统进程和用户进程。前者在核心态下执行os代码,后者在用户态下执行用户程序。当用户进程因中断或系统调用进入内核态,此时发生了模式切换,但没有发生进程上下文切换。这时,系统进程开始执行,而这两个进程(用户/系统进程)使用同一个PCB,实质是一个进程,仅执行的程序不同,映射的物理地址空间不同,使用的堆栈不同。
19、进程和程序直接可以形成一对一、一对多、多对一、多对多的关系,请分别举例说明在什么情况下会形成这样的关系?
提示:进程与程序一对多:一个进程中执行多个程序;多对一:分时系统中的编译程序为多个终端用户的源程序进行编译;多对多:
20、UNIX系统中进程由三部分组成:进程控制块,正文段和数据段。这意味着一个程序的正文与数据可以是分开的,这种分开的目的是为了( ABC ) A.可共享正文 B.可共享数据
C.可重入 D.方便编程 E.以上全部
21、对于运行于unix系统的以下程序,其执行后 的输出结果是() Void main() { }
22、在分时系统中,导致进程创建的典型事件是(2)(选项:用户注册;用户登录;用户记账);在批处理系统中,导致进程创建的典型事件是(2)(选项:作业录入;作业调度;进程调度);由系统专门为允许中的应用进程创建新进程的事件是()(选项:分配资源;进行通信;共享资源);()(选项:分配PCB;分配内存;分配CPU;分配外设;插入就绪队列)不是创建进程所必需的步骤。
23、系统有n(n>2)个进程,且当前不再执行进程调度程序,判断下述情况十分可能发生: (1)有一个运行进程,没有就绪进程,n-1个阻塞进程。 (2)有一个运行进程,有一个就绪进程,n-2个阻塞进程。 (3)有一个运行进程,n-1个就绪进程,没有阻塞进程。 (4)没有运行进程,有2个就绪进程,n-2个阻塞进程。
24、判断:在单处理机上,进程就绪队列和阻塞队列都只能由一个。 25、判断以下关于unix进程组成的说法:
(1)进程由进程控制块、正文段、数据段三部分组成; (2)进程控制块包括基本控制块和扩充控制块,常驻内存; (3)正文段是指可供多个进程共享的程序;
(4)数据段分为用户栈区、用户数据区和系统工作区。 提示:
8
printf(“hello1”); Fork(); printf(“hello2”);
Proc结构或称进程表项进程控制块User结构Unix进程正文段:可共享程序段用户栈区数据段用户数据区:非共享程序段和用户工作数据系统工作区:包括核心栈和user结构 26、下列内容中属于进程上下文的是:()(选项:用户打开文件表;PCB;中断向量;核心栈)
27、根据Bernstein条件,则如下4条语句中: S1:a=x+y; S2: b=z+1; S3:c=a-b; S4:w=c+1;
S1和S2能否并发执行?S3和S4呢? 28、某系统的进程状态变迁如图所示:(1)说明一个进程发生变迁1、3和5的原因;(2)当发生一个变迁时可能引起另一个变迁的发生,则这两个变迁称为因果变迁。下述因果变迁是否会发生?如果有可能的话,会在什么情况下发生?3→5;3→2;2→1;4→1;4→5. (3)根据此状态变迁图说明该系统的调度策略和调度效果。
运行2低优先就绪135阻塞4高优先就绪首次选择100ms,以后选择500ms 2.2 进程控制:
1、下列程序执行时,系统的输出可能是什么? {
a=55;
9
}
pid=fork(); if (pid==0){ } Else { }
sleep(7);
Printf(“a=%d\\n”,a); Wait(0);
Printf(“parent child exited\\n”); sleep(5); a=99; sleep(5);
printf(“child leaving\\n”); exit(0);
2.3进程同步:
Int I;
(for i=1;i<=10;i++) Total=total+1;
1、临界资源:P1、P2两个进程执行代码相同,共享total变量:
问:最后total可能的最小值、最大值(2,20) 2、判断:临界区就是临界资源所在的区域。
3、所谓临界区是指(一个缓冲区、一段数据区、同步机制、一段程序)(南京理工01) 4、判断:对临界资源应采用互斥的方式来实现共享。(北京理工02)
5、下面活动分别属于进程的哪种制约关系?(1、几个同学去图书馆借书;几个同学在打篮球;流水生产线上的各道工序;对一个产品的生产和消费;)(北京理工96) 6、填空:若信号量 初值为3,当前值为-3,则表示有()个进程在该信号量上等待? 7、下面是两个并发执行的进程,他们能正确运行吗?若不能请修改。(北航02) Parbegin
Int x; P1 {
int y,z;
10