熟練使用 linux 的 c 語言開發環境
掌握 linux 作業系統下的併發程序間同步
掌握 linux 作業系統下的程序間通訊
了解常見的訊息通訊方式:訊號機制、訊息佇列機制、共享記憶體機制和管道機制。
掌握訊息佇列機制中常用的系統呼叫有:建立乙個訊息佇列 msgget; 向訊息佇列傳送
訊息 msgsnd;從訊息佇列接收訊息 msgrcv;取或送訊息佇列控制資訊 msgctl。
掌握管道機制中常用的系統呼叫:建立管道檔案 pipe;寫操作 write,讀操作 read。
了解訊號機制中常用的系統呼叫。
了解共享記憶體機制中常用的系統呼叫。
( 1) 有兩個程式,乙個是傳送,乙個是接收。
傳送程序的**如下:
/*共享記憶體的傳送程式 sndshm.c,先執行傳送程式,再執行接收程式*/
#include
#include
#include
#include
#include
#include
intmain()
shmdt
(viraddr)
;/*斷開鏈結*/
return0;
}
接收程序的**如下:
/*共享記憶體的接收程序程式 rcvshm.c*/
( 1) 訊息佇列通訊方式有兩個程式,乙個負責傳送,另乙個負責接收。
傳送程序**:
/*傳送訊息程序 sndfile.c*/
#include
#include
#include
#include
#include
#include
#define maxmsg 512
/*定義訊息長度*/
/*定義訊息緩衝區佇列中的資料結構*/
struct my_msg
msg;
intmain()
return0;
}
接收程序**:
/*訊息佇列機制的接收程式 rcvfile.c*/
/*管道檔案 pipe.c*/
#include
#include
intmain()
else
/*父程序中讀*/
return0;
}
結果:
第乙個程式有訊號處理機制
/*signal.c*/
#include
#include
#include
void
int_func
(int sig)
;int k;
/*定義迴圈變數*/
作業系統 程序通訊
競爭條件 兩個或多個程序讀寫某些共享資料,而最後的結果取決於程序執行的精確時序,稱為競爭條件。凡涉及到資源的共享時就容易發生這樣的事情。解決的辦法是設立臨界區,讓程序互斥地訪問共享資源。乙個好的避免競爭條件的方案,必須滿足4個條件 任何兩個程序不能同時處於臨界區。不應對cpu的速度和數量做任何假設。...
作業系統 程序通訊
學生實驗報告 實驗課名稱 計算機作業系統 實驗專案名稱 程序間通訊實驗 專業名稱 電腦科學與技術 一 實驗目的 linux系統的程序通訊機構 ipc 允許在任意程序間大批量地交換資料。本實驗的目的是了解和熟悉linux支援的訊息通訊機制 共享儲存區機制及資訊量機制。二 實驗要求 閱讀linux系統的...
作業系統 程序通訊
常用通訊模型 間接 通過作業系統核心 直接阻塞,被認為是同步的 非阻塞,被認為是非同步的 接收到訊號可能 類似軟中斷,停止正常執行。不適合傳遞資料 因為它傳遞的資訊很小,只是一位。僅起到通知作用。效率高。系統處理過程 註冊針對某個訊號的handler 一旦產生了訊號,作業系統收到訊號後,執行在核心態...