1.进程间的通信与调度
1.1进程间的通信(Inter Process Communication)
生产者消费者问题
数据存到有界缓冲区bounded-buffer中,设置count记录缓冲区的数据量,如果缓冲区满count=size,让生产者睡眠;如果缓冲区为空count=0,让消费者睡眠。
解决方法:
(1)用信号量(semaphore)
需要三个信号量:full记录充满缓冲区数目,empty记录空的缓冲区数目。mutex用来保证任意时刻只有一个进程读写缓冲区变量。
(2)用互斥量(mutex)
是没有信号量基数能力的简化版,仅适用于管理共享资源或一小段代码。互斥量处于两态之一的变量:解锁和加锁
(3)用消息传递(message passing)
(4)用屏障(barrier)
1.2 程序/进程的调度
临界资源:一次只能被一个进程访问的共享资源。
衡量调度的标准:吞吐量(系统每小时完成的作业量)和周转时间(批处理作业用时)
进程调度算法
(1)实时系统一般用非抢占式——先来先服务
交互式系统用抢占式:
(2)轮传时间片