操作系统

一、进程间的通信方式

1、pipe管道:场景Linux |  管道命令

2、信号signal:

3、消息队列Message:消息队列建立了一个链表,都是先进先出,消息队列是放在内核中的。只有在内和重启或者显式删除一个消息队列时,该消息队列才会真正被删除。

4、信号量:信号量是一个计数器,用于多进程对共享数据的访问,信号量意图在于进程间的同步。

5、共享内存:使得多个进程可以同时访问同一块内存,不同进程可以看到对方进程对共性内存的数据更新。但这种操作依然需要用互斥锁、信号量等。

6、套接字:在网络请求中使用套接字进行通信,套接字是支持TCP/IP的网络通信基本操作单元。 

二、线程间同步的方式

1、互斥量Mutex:采用互斥对象机制

2、信号量:允许同一个资源,在同一时刻被多个线程同时访问。

3、事件:通过通知的方式保持同步,还可以实现多线程优先级。

三、死锁的四个必要条件

1、请求保持

2、循环等待

3、互斥

4、非抢占

四、预防死锁

设置可以抢占,破坏第四个必要条件

释放已有资源,破坏第一个条件

避免循环等待,等待过后,放弃等待。破坏第二个条件

五、避免死锁

可以允许死锁出现,像银行家算法,进行死锁探测,如果是安全状态就分配资源。

posted @ 2022-06-27 11:00  雷雷提  阅读(35)  评论(0)    收藏  举报