1. 共享記憶體的通訊方式 1
2. 訊息佇列的通訊方式 3
/*迴圈從訊息佇列中接收訊息,讀入end結束接收*/ 43. 管道通訊 6
4. 訊號機制 7
5. 兩個執行緒的同步。posix的無名訊號量機制 96.
system r訊號量機制實現同步 117. 使用訊號量保證語句沒有交叉 16(1)**如下:
/*共享記憶體的傳送程式先執行傳送程式,再執行接收程式*/#include <>
#include <>
#include <>
#include<>
#include
#include
main()
shmdt(viraddr斷開鏈結*/
exit(0);
}/*共享記憶體的接收程序程式
#include <>
#include <>
#include <>
#include <>
#include
#include
main()
(2)編譯兩個程式。
(3)執行檢視執行結果。
(1)編譯兩個程式。(傳送程序,接收程序)/*傳送訊息程序
#include <>
#include <>
#include <>
#include <>
#include
#include
#define maxmsg 512 /*定義訊息長度*//*定義訊息緩衝區佇列中的資料結構*/
struct my_msg
msg;
main()
exit(0);
}/*訊息佇列機制的接收程式
#include <>
#include <>
#include <>
#include <>
#include
#include
#define maxmsg 512
struct my_msg
msg;
main()
msgctl(msgid, ipc_rmid, 0);
exit(0);
}(2)編譯兩個程式。
(3)檢視執行結果。
開啟兩個終端先執行再執行
傳送端傳送訊息,接收端接收訊息。
(1)程式
/*管道檔案
#include <>
#include <>
main()
else父程序中讀*/
}(2) 編譯
(3) 執行檢視結果
(1)程式
第乙個程式有訊號處理機制
#include <>
#include <>
#include <>
void int_func(int sig);
int k定義迴圈變數*/
void int_func(int sig)main()
printf("ok!\n");
exit(0);
}無訊號處理機制
#include <>
#include <>
#include <>
void int_func(int sig);
int k定義迴圈變數*/
void int_func(int sig)main()
printf("ok!\n");
exit(0);
}(2)執行結果
有訊號處理機制
無訊號處理機制
(1)源程式
/* 兩個執行緒的同步thread synchronization
編譯 gcc -o -pthread
或 gcc -o -lpthread*/#include <>
#include <>
#include <>
#define upbound 100
sem_t sem1;
sem_t sem2;
void *threadfunc1(void *pvoid) }void *threadfunc2(void *pvoid)return (null);
} int main()
{ pthread_t tid1, tid2;
int i = sem_init(&sem1, 0, 5);
printf("%d\n", i);
Linux作業系統實驗
計算機與資訊工程系實驗報告 課程名稱 linux作業系統任課教師 李小芳2014 2015學年第1學期班級實驗名稱實驗地點 學號程序管理 二 文理樓a507 姓名實驗日期成績評定ab c實驗內容 一 程序與作業的前後臺操作 1 利用vi手工啟動兩個程序在後台執行 2 用vi編輯乙個檔案,並轉入到後台...
作業系統實驗報告
電腦科學與應用系 課程設計報告 作業系統原理 目錄1 題目簡述 2 2 需求分析 2 2.1設計思想 2 2.2要求 2 2.3任務 3 2.4執行環境 3 2.5開發工具 3 3 概要設計與詳細設計 3 3.1系統流程圖 3 3.2演算法流程圖 5 4 編碼與實現 10 4.1資料結構和演算法設計...
作業系統實驗個人總結
作業系統實驗報告 班級 姓名 學號 實驗一程序控制與描述 一 實驗目的 通過對windows 2000程式設計,進一步熟悉作業系統的基本概念,較好地理解windows 2000的結構。通過建立程序 觀察正在執行的程序和終止程序的程式設計和除錯操作,進一步熟悉作業系統的程序概念,理解windows 2...