作業系統 程序間通訊實驗題之共享記憶體

2021-09-22 20:21:08 字數 702 閱讀 1033

/*實驗題目:參考題目「用pthread執行緒+sem+mutex模擬「生產者-消費者」問題」,

用「共享記憶體」的方法實現父、子程序之間的生產者消費者問題,訊號量操作採用「sem_init/sem_wait/sem_post」模式*/

同時參考以下網頁:

(a)linux下利用訊號量函式和共享記憶體函式和c語言實現生產者消費者問題

(b)linux程序通訊之共享記憶體實現生產者/消費者模式

/*程式檔案使用的標頭檔案和結構體*/

#include #include #include #include #include #include #include #include #include #include //訊號量sem_t函式標頭檔案

#include #define buffer_size 5

#define msg_key (key_t)1235

#define worktimes 5

typedef int buffer_item;

//緩衝區結構體

struct buffer

;int shmid;//共享記憶體識別符號

pid_t parent;//生產者

pid_t child;//消費者

/*producer_consumer.c*/

linux作業系統之程序間通訊 共享記憶體

共享儲存對映 檔案程序間通訊 使用檔案也可以完成ipc,理論依據是,fork後,父子程序共享檔案描述符。也就共享開啟的檔案。練習 程式設計測試,父子程序共享開啟的檔案。借助檔案進行程序間通訊。思考,無血緣關係的程序可以開啟同乙個檔案進行通訊嗎?為什麼?使用檔案完成程序間通訊 include incl...

作業系統 程序間通訊

程序間通訊涉及到3個問題 1.乙個程序如何把資訊傳遞給另乙個程序 2.確保兩個或多個程序之間不會在關鍵活動中出現交叉 3.程序間執行的順序對執行結果的影響。注意 確保程序對臨界區的 互斥 訪問。忙等待的互斥 1.遮蔽中斷 當乙個程序進入臨界區後立即遮蔽所有中斷,時鐘中斷也被遮蔽 這樣cpu就不會進行...

作業系統 程序間通訊

include include include include include include ifndef semun h 條件編譯,即若semun在標頭檔案中沒有被定義,就進行下面的編譯 define semun h union semun endif static int set semval...