什么是进程阻塞

①什么是进程阻塞

正在运行的进程由于提出系统服务请求(如I/O操作),但因为某种原因未得到操作系统的立即响应,或者需要从其他合作进程获得的数据尚未到达等原因,该进程只能调用阻塞原语把自己阻塞,等待相应的事件出现后才被唤醒。

②阻塞状态

正在进行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,亦即进程的执行受到阻塞,我们把这种暂停状态叫阻塞进程阻塞,有时也成为等待状态或封锁状态。通常这种处于阻塞状态的进程也排成一个队列。有的系统则根据阻塞原因的不同而处于阻塞状态进程排成多个队列。

③进程阻塞的典型事件

进程阻塞的典型事件有:生产者/消费者问题,理发店问题
 

生产者/消费者问题

生产者/消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem)通常可描述为有一个或多个生产者产生某种类型的数据(记录、字符),并放置在缓冲区中,有一个消费者从缓冲区中取数据,每次取一项;系统保证避免对缓冲区的重复操作,也就是说,在任何时候只有一个代理(生产者或消费者)可以访问缓冲区。生产者的是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据,否则会造成阻塞。

 

进程阻塞理发店问题

如果理发店中顾客数已满,新来的就不能再进入。顾客一旦进入理发店,可以坐在沙发上等待,如果沙发已座满就站着。当一位理发师空闲时,在沙发上坐的时间最久的顾客得到服务,并且,如果还有顾客站着,进入理发店站的时间最久的顾客就可以坐在沙发上。当一位顾客理发结束后,任何理发师都可以接受付款,但由于只有一台收银机,因此一次只能有一位顾客付款。理发店人满后的这种状态就是进程阻塞状态。
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/baxianhua/p/9284973.html