共享存儲區機制
共享存儲區
共享存儲區的建立與操縱
) 共享存儲區的建立
當進程要利用共享存儲區與另一進程進行通信時須先利用系統調用shmget( )建立一塊共享存儲區並提供該共享存儲區的名字key和共享存儲區以字節為單位的長度size等參數若系統中已經建立了指名的共享存儲區則該系統調用將返回該共享存儲區的描述符shmid若尚未建立便為進程建立一個指定大小的共享存儲區
) 共享存儲區的操縱
如同消息機制一樣可以用shmctl( )系統調用對共享存儲區的狀態信息進行查詢如其長度所連接的進程數創建者標識符等 也可設置或修改其屬性如共享存儲區的許可權當前連接的進程計數等還可用來對共享存儲區加鎖或解鎖以及修改共享存儲區標識符等
共享存儲區的附接與斷開
在進程已經建立了共享存儲區或已獲得了其描述符後 還須利用系統調用shmat( )將該共享存儲區附接到用戶給定的某個進程的虛地址shmaddr上並指定該存儲區的訪問屬性即指明該區是只讀還是可讀可寫此後此共享存儲區便成為該進程虛地址空間的一部分進程可采取與對其它虛地址空間一樣的存取方法來訪問當進程不再需要該共享存儲區時再利用系統調用shmdt( )把該區與進程斷開
——返回教材目錄
了解更多計算機相關基礎課程視頻
From:http://tw.wingwit.com/Article/program/czxt/201311/24306.html