Chinaunix首页 | 论坛 | 博客
  • 博客访问: 201691
  • 博文数量: 24
  • 博客积分: 608
  • 博客等级: 中士
  • 技术积分: 371
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-22 21:10
文章分类

全部博文(24)

文章存档

2012年(24)

分类: LINUX

2012-08-22 09:53:14

1. 程序并发执行为什么会产生间断性、失去封闭性、可再现性



间断性:程序并发执行时,由于它们共享了系统资源,以及为完成一项任务相互合作,致使这些并发执行的程序之间相互制约。,相互制约导致并发程序具有“执行——暂停——执行”这种间断性的活动规律。



失去封闭性:程序并发执行时,多个程序共享系统中各种资源,使得这些资源的状态由多个程序来改变,致使程序失去封闭性。例如cpu被某个程序占用时,另一程序必须等待。



不可再现性:程序在并发时,由于失去封闭性,其计算结果已与并发程序的执行速度有关,从而失去了可再现性。





2. 为什么引入“进程”的概念?



在多道环境下,程序的执行属于并发执行,然而通常程序是不能参与并发执行的。为使程序能并发执行,且为了对并发执行程序加以描述和控制,引入了“进程”的概念。





3. 比较进程和程序



1) 通常程序是不能并发执行的,为使程序(含数据)能独立运行,为之配置一进程控制块PCB);由程序段、相关的数据段和PCB三部分便构成了进程实体(进程映像)。所谓创建进程即创建PCB,撤销亦如此。



2) 动态性:进程的实质的进程实体的一次执行过程,动态性是进程的最基本特征,动态性表现在:“它由创建而生,由调度而执行,由撤销而亡”,进程实体有一定的生命期。程序则是一组有序指令的集合,并存放于某种介质上,本身不具有运动的含义,因而是静态的。



3) 并发性:多个进程实体存于内存中,且能在一段时间内同时运行。程序(没有PCB)是不能并发执行的。



4) 独立性:进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。程序不能作为一个独立的单元参与运行。



5) 异步性:进程按各自独立的、不可预知的速度向前推进





4. 说明PCB的作用,为什么PCB是进程存在的唯一标志?



a. PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB中记录了操作系统所需的用于描述进程情况及控制进程运行所需的全部信息。因而它的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能和其它进程并发执行的进程。



b. 在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的,所以说,PCB是进程存在的唯一标志





5. 说明进程在三个基本状态下转换的典型原因



wps_clip_image-8543



5.1 就绪态:当进程分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪态。处于就绪态的进程存放于就绪队列里。



5.2 执行态:进程已获得CPU,程序正在执行。



5.3 阻塞状态:正在执行的进程由于发生某事件而暂时无法继续执行,便放弃CPU而处于暂停的状态。比如请求IO等。



1)就绪——执行:当进程调度程序为之分配了处理机后,该进程便由就绪状态变为执行状态。



2)执行——阻塞:如果因发生某事件而使进程受阻(如访问已被占用的临界资源就会使进 进程程由执行状态转变为阻塞状态。



3)阻塞——执行:请求的资源到了。



3)执行——就绪:当前进程因时间片用完而被暂停执行,该进程便由执行状态转变为就绪状态。





6. 什么是“挂起”,为什么引入“挂起”状态



进程在操作系统中可以定义为暂时被淘汰出内存的进程,机器的资源是有限的,在资源不足的情况下,操作系统对在内存中的程序进行合理的安排,其中有的进程被暂时调离出内存,当条件允许的时候,会被操作系统再次调回内存,重新进入等待被执行的状态即就绪态,系统在超过一定的时间没有任何动作



(1)的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望暂停使自己的程序静止下来。亦即,使正在执行的进程暂停执行;若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。我们把这种静止状态成为挂起状态



(2)的请求。有时父进程希望挂起自己的某个子进程,以便考察和修改子进程,或者协调各子进程间的活动。



(3)负荷调节的需要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。



(4)操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。



(5)对换的需要。为了缓和内存紧张的情况,将内存中处于阻塞状态的进程换至外存上。 





7. 进程切换主要步骤



1)保存处理器上下文环境,包括程序计数器和其他寄存器。



2)更新当前处于运行态的进程的PCB,将进程状态改变到另一状态。



3)将当前进程PCB移到相应的队列(就绪队列等)



4)选择另一个进程执行。



5)更新所选择进程PCB,包括将进程的状态变为运行态。



6)更新内存管理的数据结构。



7)恢复处理器上下文环境。





8. 进程切换和模式切换



1进程切换:作用于进程之间的一种操作。当分派程序收回当前进程的cpu并准备把它分派给某个就绪进程时,该操作将被引用。



2模式切换,进程内部所引用的一种操作。当用户程序转入系统调用,或相反时,该操作将被引用。



3进程切换一定引发模式切换(比如从用户进程切换到下一个进程或系统进程,要切换一定要执行调度程序,调度程序需要内核处理)。反之则不然。





9. 引起进程创建的事件及主要步骤



1提交新的批处理作业



2交互登录:终端用户登录到系统



3操作系统提供服务



4父进程创建子进程



主要步骤:



1)申请空白PCB。为新进程申请获得唯一的数字标识符。



2)为新进程分配资源:为新进程的程序和数据以及用户栈分配必要的内存空间。



3)初始化PCB



a) 初始化标识符信息。



b) 初始化处理机状态信息:将程序计数器执行程序的入口地址,栈指针指向栈顶。



c) 初始化处理机控制信息:将进程状态设置为就绪态,设置为最低优先级。



d) 将新进程插入到就绪队列。





10. 引起进程终止的事件及主要步骤



1)正常结束。



2)异常结束(如越界错误、非法指令等)



3)外界干预(父进程终止)



主要步骤:



1根据被终止进程的标识符ID,找到其PCB,读出该进程状态



2若该进程为执行状态,则终止其执行,调度新进程执行;



3若该进程有子孙进程,则立即终止其所有子孙进程;



4将该进程的全部资源,或归还给其父进程,或归还给系统



5将被终止进程(的PCB)从所在的队列中移出,等待其他进程来搜集信息。





11. 进程阻塞与唤醒



1阻塞原因:请求系统服务;启动某种操作,如I/O;新数据尚未到达,暂时无新工作可做等;



2当出现阻塞事件,进程调用阻塞原语将自己阻塞。并将其状态变为“阻塞状态”,并进入相应事件的阻塞队列;



3当阻塞进程期待的事情发生,有关进程调用唤醒原语,将等待该事件的进程唤醒。并将其状态变为“就绪状态”,插入就绪队列



4一般,进程可以自己阻塞自己当唤醒则由操作系统或其他相关进程来完成,进程无法自己唤醒自己。













阅读(1763) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~