一、并发基础
并发并不是真的并行执行,但是其表现为并行执行,可以提高效率
并发的基本要求是互斥。
并发出现的情况:①多道程序执行
②多处理器技术
③分布式系统
二、并发原理
单处理器为替换,多处理器为重叠执行和替换
三、并发要考虑的问题
(1)进程资源竞争
例如,多个进程要同时访问同一个I/O时,发生竞争,操作系统作为管理者要进行协调。要考虑的问题
①互斥。保证在一个时间只有一个进程访问临界资源
②死锁。进程A和B同时需要资源1和2,而A拥有1,B拥有2,A和B永远相互等待,不释放各自的资源。发生死锁。
③饿死。进程A,B,C同时需要资源1,而资源1的控制权在A和B间传递,C无法获得控制权,饿死。
(2)进程资源共享
因为有资源的访问也会发生死锁和饿死的情况,但主要是保证数据的一致性和完整性。只有写过程需要保证互斥。
(3)进程间的通信
发送消息和接受消息,也会发生死锁和饿死
死锁:进程A和B在互相等待对方的消息,发生死锁
饿死:进程A和B始终处于活跃状态,要求和A通信的C被饿死。
四、互斥机制要解决的问题
①必须强制进行互斥。访问临界区的进程一次只能有一个
②一个处于非临界区的进程停止不影响其他进程
③不允许一个访问临界区的进程被无限的拒绝
④没有进程在临界区时,任何想要进入的进程都能进入
⑤对相关进程的数目和处理器的速度没有要求
⑥一个进程留驻在临界区的时间是有限的
五、解决方法
(1)软件方法
(2)硬件方法
专门的指令
(3)信号量
(4)管程
六、利用信号量解决具体相关问题
(1)生产者和消费者的问题
(2)进程间通信的问题
进程交互的两个基本要求:同步和通信,为了互斥,需要同步;为了合作,需要通信。
发送原语:send(destination,message);
接受原语:receive(source,message);
①同步:发送方和接收方均有两种方式:阻塞和不阻塞。因此有四种组合
②寻址: 直接寻址:发送原语的目的为进程标识,而接收方有两种处理方式,一是显式的指定发送方即事先知道希望得到哪个进程的消息,二是隐式,如打印进程
间接寻址:信箱(队列)和相应的进程关联,可以静态关联也可以动态关联。
③消息格式:和具体的消息机制和操作系统有关
④排队原则:通常是先进先出队列和紧急事件的优先级相结合。
(3)读/写问题