操作系统

一、进程间的通信方式

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

2、信号signal:

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

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

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

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

二、线程间同步的方式

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

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

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

三、死锁的四个必要条件

1、请求保持

2、循环等待

3、互斥

4、非抢占

四、预防死锁

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

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

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

五、避免死锁

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

posted @   雷雷提  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示