资源管理策略: 资源管理测量相对来说是简单的。系统中可用的资源的单元的集合成为资源池,一个进程请求资源的时候,如果资源池有进程需要的资源的单元数目,那么系统分配这些资源给该进程;否则系统阻塞该进程,使它进入该资源的阻塞进程池中。当一个进程释放资源的时候,系统将资源回收进资源池中。
可重用资源是指这类资源(如主存),可以分配给进程用,使用完后可以返回给系统。更抽象的资源(如输入数据,消息等)称之为可消费资源。
进程管理策略:
进程的运行,就绪,阻塞的转换(在UNIX中,扩展为运行,就绪,可中断睡眠(指的是,进程是否可以被非“资源可用”信号唤醒,例如I/O操作时,设备控制器损坏,计时器会发信号唤醒进程),不可中断睡眠,僵死,停止/调试跟踪这5个状态)。
父进程对子进程的管理:挂起和激活(阻塞挂起,阻塞激活,就绪挂起,就绪激活),分配资源,结束子进程。
进程调度策略: 进程的调度可以分为三个逻辑部分:排队器(就绪队列),上下文切换器,分配器(选择一个进程)
一般来说,系统需要调用两对上下文切换:
1)保持当前上下文,载入分配器上下文;
2)保持分配器上下文,载入进程上下文。
进程出让CPU可以有自愿(yield), 和非自愿方式。
进程调度策略有:剥夺策略和非剥夺策略。
非剥夺策略指一个线程在完成服务之前会一直占有CPU;剥夺策略指如果就绪进程队列中有更高优先级的进程,那么当前运行的进程将被停止而切换到该进程(抢占式),也就是当有进程就绪的时候就调用调度程序,另外有定时中断控制器控制,每隔一段时间就调用调度程序。
进程调度要防止饿死现象(一个低优先级的进程始终得不到服务),也要考虑实时性(一个实时性要求高的任务需要优先得到服务)等因素。
轮转调度是最广为使用的一种。
Linux采用“有条件的可剥夺”调度方式。对于普通进程,当其时间片结束时,调度程序挑选出下一个处于TASK_RUNNING状态的进程作为当前进程(自愿调度)。对于实时进程,若其优先级足够高,则会从当前的运行进程中抢占CPU成为新的当前进程(强制调度)。发生强制调度时,若进程在用户空间中运行,就会直接被剥夺CPU;若进程在内核空间中运行,即使迫切需要其放弃CPU,也仍要等到从它系统空间返回的前夕才被剥夺CPU。
普通进程是不能抢占CPU的,但是实时进程可以抢占。
阅读(1027) | 评论(0) | 转发(0) |