资源,资源状态需要多个程序来改变,即存在资源共 享性使程序失去封闭性;而失去了封闭性导致程序失去可再现性.
5. 在操作系统中为什么要引入进程概念?它会产生什么样的影响?
为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,而引入了进程概念. 影响: 使程序的并发执行得以实行.
6. 试从动态性,并发性和独立性上比较进程和程序? a. 动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行, 以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,是静态实体.
b. 并发性是进程的重要特征,同时也是OS的重要特征.引入进程的目的正是为了使其程序能和其它进程
的程序并发执行,而程序是不能并发执行的. c. 独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本 单位.而对于未建立任何进程的程序,都不能作为一个独立的单位参加运行.
7. 试说明PCB的作用?为什么说PCB是进程存在的
唯一标志?
a. PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构.PCB中记录了操作系统所需的用于
描述进程情况及控制进程运行所需的全部信息.因而它的作用是使一个在多道程序环境下不能独立运行 的程序(含数据),成为一个能独立运行的基本单位,一个能和其它进程并发执行的进程.
b. 在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的,所以说,PCB是进程存在的唯一标志.
8. 试说明进程在三个基本状态之间转换的典型原因. a. 处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态变为执行状态. b. 当前进程因发生某事件而无法执行,如访问已被占用的临界资源,就会使进程由执行状态转变为阻 塞状态.
c. 当前进程因时间片用完而被暂停执行,该进程便由执行状态转变为就绪状态.
9. 为什么要引入挂起状态?该状态具有哪些性质? a. 引入挂起状态处于5中需要: 终端用户的需要,
父进程的需要,操作系统的需要,对换的需要和负荷 调节的需要.
b. 处于挂起状态的进程不能接收处理机调度. 10 在进行进程切换时,所要保存的处理机状态信息主要有哪些?a. 进程当前暂存信息;
b. 下一条指令地址信息;c. 进程状态信息;d. 过程和系统调用参数及调用地址信息.
11 试说明引起进程创建的主要事件.a. 用户登陆;b. 作业调度;c. 提供服务;d. 应用请求.
12 试说明引起进程撤消的主要事件.a. 正常结束;b. 异常结束;c. 外界干预;
13 在创建一个进程时,需完成的主要工作是什么?a. 操作系统发现请求创建新进程事件后,调用进程创建原语Creat();b. 申请空白PCB;c. 为新进程分配资源;d. 初始化进程控制块;e. 将新进程插入就绪队列.
14 在撤消一个进程时,需完成的主要工作是什么?a. OS调用进程终止原语;b. 根据被终止进程的标志符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态;c. 若被终止进程正处于执行状态,应立即中止该进程的执行,并设置调度标志为真;d. 若该进程还有子孙进程,还应将其所有子孙进程予以终止;
e. 将该进程所拥有的全部资源,或者归还给其父进程,或者归还给系统;f. 将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息.
15 试说明引起进程阻塞或被唤醒的主要事件是什么?a. 请求系统服务;b. 启动某种操作;c. 新数据尚未到达;d. 无新工作可做.
2. 为什么进程在进入临界区之前,应先执行\进入区\代码,在退出临界区后又执行\退出区\代码? 为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为\进入区\代码;在退出临界区后,必须执行\退出区\代码,用于恢复未被访问标志.
3. 同步机构应遵循哪些基本准则?为什么?a. 空闲让进.b. 忙则等待.c. 有限等待.d. 让权等待. 5. 你认为整型信号量机制和记录型信号量机制,是否完全遵循了同步机构的四条准则?
a. 在整型信号量机制中,未遵循\让权等待\的准则.b. 记录型信号量机制完全遵循了同步机构的\空
闲让进,忙则等待,有限等待,让权等待\四条准则. 6. 在生产者-消费者问题中,如果缺少了signal(full)或signal(empty),对执行结果会有何影响?
生产者-消费者问题可描述如下:
var mutex,empty,full: semaphore:=1,n,0; buffer: array[0,...,n-1] of item; in,out: integer:=0,0; begin parbegin producer: begin repeat . .
produce an item in nextp; . .
wait(empty); wait(mutex); buffer(in):=nextp; in:=(in+1) mod n; signal(mutex);