UNIX网络编程——进程间通信概述
一、順序程序與并發(fā)程序特征
順序程序特征
順序性
封閉性:(運(yùn)行環(huán)境的封閉性)
確定性
可再現(xiàn)性
并發(fā)程序特征
共享性
并發(fā)性
隨機(jī)性
二、進(jìn)程互斥
1、由于各進(jìn)程要求共享資源,而且有些資源需要互斥使用,因此各進(jìn)程間競爭使用這些資源,進(jìn)程的這種關(guān)系為進(jìn)程的互斥。
2、系統(tǒng)中某些資源一次只允許一個(gè)進(jìn)程使用,稱這樣的資源為臨界資源或互斥資源。
3、在進(jìn)程中涉及到互斥資源的程序段叫臨界區(qū)。
舉例如下圖:
? ? ? ? ? ? ? ? ? ? ? ? ?
假設(shè)x = 1; 當(dāng)A進(jìn)程已經(jīng)判斷完畢x>0,此時(shí)時(shí)間片輪轉(zhuǎn)到了B,B也判斷x>0,然后執(zhí)行x--,即x=0,然后過后又輪轉(zhuǎn)到繼續(xù)執(zhí)行A,此時(shí)再執(zhí)行x-- 就明顯系統(tǒng)邏輯出現(xiàn)了錯(cuò)誤。
三、進(jìn)程同步
? ? ? ?進(jìn)程同步指的是多個(gè)進(jìn)程需要相互配合共同完成一項(xiàng)任務(wù)。舉例如下圖:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ?P1和P2進(jìn)程是互相配合的,只有當(dāng)P2關(guān)門后,P1才能啟動(dòng)車輛;P1正常運(yùn)行了,P2開始售票;當(dāng)P1到站停車后,P2才能開門;即需要互相等待對(duì)方完成某個(gè)操作,自身才能繼續(xù)運(yùn)行下去。
四、進(jìn)程間通信的目的
1、數(shù)據(jù)傳輸:一個(gè)進(jìn)程需要將它的數(shù)據(jù)發(fā)送給另一個(gè)進(jìn)程。
2、資源共享:多個(gè)進(jìn)程之間共享同樣的資源。
3、通知事件:一個(gè)進(jìn)程需要向另一個(gè)或一組進(jìn)程發(fā)送消息,通知它(它們)發(fā)生了某種事件(如進(jìn)程終止時(shí)要通知父進(jìn)程)。
4、進(jìn)程控制:有些進(jìn)程希望完全控制另一個(gè)進(jìn)程的執(zhí)行(如Debug進(jìn)程),此時(shí)控制進(jìn)程希望能夠攔截另一個(gè)進(jìn)程的所有陷入和異常,并能夠及時(shí)知道它的狀態(tài)改變。
五、進(jìn)程間通信的分類
文件
文件鎖
管道(pipe)和命名管道(FIFO)
信號(hào)(signal)
消息隊(duì)列
共享內(nèi)存
信號(hào)量
互斥量
條件變量
讀寫鎖
套接字(socket)
需要注意的是,消息隊(duì)列、共享內(nèi)存和信號(hào)量在System V 和 POSIX 標(biāo)準(zhǔn)中都有定義,而互斥量、條件變量和讀寫鎖只在POSIX標(biāo)準(zhǔn)才有定義。
六、進(jìn)程間共享信息的三種方式
? ? ? ? ? ?
1、隨進(jìn)程持續(xù):一直存在直到打開的最后一個(gè)進(jìn)程結(jié)束。(如pipe和FIFO)
2、隨內(nèi)核持續(xù)(?kernel persistence):一直存在直到內(nèi)核自舉或顯式刪除(如System V消息隊(duì)列、共享內(nèi)存、信號(hào)量)
3、隨文件系統(tǒng)持續(xù):一直存在直到顯式刪除,即使內(nèi)核自舉還存在。(POSIX消息隊(duì)列、共享內(nèi)存、信號(hào)量如果是使用映射文件來實(shí)現(xiàn))
? ? ? ?即POSIX消息隊(duì)列、共享內(nèi)存、信號(hào)量 至少是隨內(nèi)核持續(xù)的,如果是用映射文件來實(shí)現(xiàn),則是隨文件系統(tǒng)持續(xù)。
轉(zhuǎn)載于:https://www.cnblogs.com/hehehaha/p/6332477.html
總結(jié)
以上是生活随笔為你收集整理的UNIX网络编程——进程间通信概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 尝试加载 Oracle 客户端库时引发
- 下一篇: 文件的上传下载(一)