进程控制
创建原语:create
阻塞原语:block
唤醒原语: wakeup
撤销原语: destroy
引入挂起之后,系统中的就绪状态和阻塞状态分别变为两种状态,这四种状态为:活动就绪、静止就绪、活动阻塞、静止阻塞,下面分别对这四种状态进行说明:
- 活动就绪(Readya):等价于就绪态,此时进程可以接受调度,获得处理机后可直接转为执行态;
- 静止就绪(Readys):进程被调至外存,无法接受调度;
- 活动阻塞(Blockeda):等价于阻塞态,当等待的事件发生后可以由活动阻塞变为活动就绪状态;
- 静止阻塞(Blockeds):进程仍然可以等待事件,当事件发生后,状态由静止阻塞变为静止就绪状态。
引入挂起操作
OS中的状态变为7种,其中部分进程状态的变化如下:
- 活动就绪—>静止就绪:该进程被执行挂起原语Suspend;
- 活动阻塞—>静止阻塞:该进程被执行挂起原语Suspend;
- 执行态—>静止就绪:该进程被执行挂起原语Suspend;
- 静止就绪—>活动就绪:该进程被执行挂起原语Active;
- 静止阻塞—>活动阻塞:该进程被执行激活原语Active;
- 静止阻塞—>静止就绪:进程等待的事件发生;
- 活动阻塞—>活动就绪:进程等待的事件发生;
- 创建态—>活动就绪:在当前OS的性能和内存的容量均允许的情况下,完成进程的创建工作(三步);
- 创建态—>静止就绪:当前OS的当前资源状况和性能不允许,不分配给新建进程所需的资源(创建工作只完成第一步),此时进程处于静止就绪状态,被调至到外存中,不参与调度,此时创建工作尚未完成。
从上面的状态我们可以看到,处于执行态的进程一样会被挂起,而且引入了挂起操作后,进程不会长期的处于创建状态,如果能分配到资源,状态会变为活动就绪态,如果无法分配资源,则进入静止就绪状态,当资源充足后,在将进程调入内存并为之分配资源,完成创建工作。