进程的互斥与同步

引入进程,为了描述和实现多个程序的并发执行,以改善资源利用率即提高系统的吞吐量

引入线程,减少程序并发执行时系统所付出的额外开销,使操作系统具有更好的并发性

进程的互斥与同步

注意:同步即协调

采用多道程序技术的操作系统,允许多个进程同时驻留内存并发执行,若干进程将不可避免的会竞争系统资源。如对处理器,内存空间,打印机等资源的竞争。

如何协调多个进程对系统资源(内存空间,外部设备等)的竞争和共享?


如果竞争某资源的进程太多,这些进程还必须等待在一个队列中。如就绪队列,阻塞队列

如果长期得不到资源,进程可能进入死锁

进程竞争资源必须解决“互斥问题”,某些资源必须互斥使用,这些资源称为临界资源,访问临界资源的那段代码称为临界区

进入临界区,需要判断是否可以进入临界区,如果可以,则必须设置临界区使用标志

后来的进程查看临界区的使用标志,进入阻塞队列

互斥条件总结为如下16个字:

忙则等待;优先等待;空闲让进;让全等待

竞争资源还可能出现死锁,饥饿


进程之间需要通信协作来协调

当进程进行通信协作时,各个进程之间需要建立连接,进程通信需要同步和协调。进程通信的方式很多,包括消息传递、管道、共享存储区等。

通过消息传递实现进程通信时,由于没有共享资源,故无需互斥,但仍然可能出现死锁和饥饿

解决互斥与同步的方法

1、  软件方法

由进程自己,执行相应的程序指令,实现与别的进程的同步与互斥

2、  硬件方法

屏蔽中断或采取专门的机器指令控制同步与互斥

进程不会切换,实现互斥。可能出现饥饿现象,死锁现象

3、  信号量方法

控制进程同步与互斥的通用方法

4、管程的方法

5、消息传递方法

猜你喜欢

转载自blog.csdn.net/sinat_31608641/article/details/74937880