进程的阻塞与唤醒:
1. 引起阻塞与唤醒的事件
1)向系统中请求共享资源失败 当无足够的资源分配时,获取资源的线程会进行阻塞,加入到阻塞队列中;当有资源后,被阻塞的线程会被唤醒,加入到就绪队列中。
2)等待某种操作完成
3)新数据尚未到达 比如生产者消费者模型,只要产品数量为0,那么消费者就会阻塞,得到产品数量大于0,进行唤醒
4)等待新任务到达
2. 进程阻塞过程
当要进行阻塞的事件发生时,进程通过调用阻塞原语 block 将自己阻塞,所以,阻塞是一个主动的过程,将自己进行阻塞。 进程控制块的状态由 执行 改为阻塞,并将PCB插入到阻塞队列。
3. 进程唤醒过程
当要进行唤醒的事件发生时,进程调用唤醒原语 wakeup ,将等待该事件的线程唤醒,唤醒是通过别的进程来进行唤醒的!!将阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的状态由阻塞改为 就绪,然后 将该PCB插入到就绪队列中。
进程的挂起与激活:
(为什么要有挂起与激活??? 与进程的阻塞和唤醒有关系吗??)