實驗課 作業系統 程序通訊

2021-10-10 06:32:49 字數 2268 閱讀 1714

熟練使用 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 一旦產生了訊號,作業系統收到訊號後,執行在核心態...