freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

linux信號量機制編程設計說明書(已修改)

2025-04-24 00:25 本頁面
 

【正文】 Linux信號量機制編程設計說明書1課程設計的目的及要求某寺廟中有小和尚、老和尚若干人。廟內(nèi)有一水缸,由小和尚提水入缸,供老和尚飲用。水缸可容納 30 桶水,每次入水、取水僅為 1 桶,不可同時進行。水取自同一水井,水井路窄,每次只能容納一個水桶取水,設水桶個數(shù)為 5 個。和尚挑水問題就是使用某種機制,能夠使得若干名老和尚可以順利地喝到水,若干名小和尚之間能夠有條不紊地往水缸中入水。本課程設計的目的是使用Linux的信號量機制編程解決和尚挑水問題,通過本課程設計掌握Linux進程創(chuàng)建的方法,掌握信號量的使用方法。本課題所設計的系統(tǒng)要求實現(xiàn)以下功能。編寫 2 個程序,程序 1 創(chuàng)建 3 個子進程,分別編號 A、B、C,用于模擬 3 名老和尚;程序 2 創(chuàng)建 3 個子進程,分別編號 C、D、E,用于模擬 3名小和尚。通過向屏幕輸出語句模擬取水過程,如輸出“目前水缸水量為 10 桶”表示目前水缸中有存水 10桶;輸出“小和尚取水成功”表示從水井中成功取到 1 桶水;輸出“小和尚倒 1 桶水到水缸中”表示小和尚將 1 桶水倒入水缸中。通過觀察輸出語句,可以發(fā)現(xiàn)執(zhí)行過程是否發(fā)成沖突。使用 Linux 的信號量機制,編寫解決和尚挑水問題的代碼。要求給出編譯所用到的 makefile 文件。2準備工作 gcc編譯器 vim編輯器:最簡單的信號量是一個只有0與1兩個值的變量,二值信號量。這是最為通常的形式。具有多個正數(shù)值的信號量被稱之為通用信號量。在本章的其余部分,我們將會討論二值信號量。P與V的定義出奇的簡單。假定我們有一個信號量變量sv,兩個操作定義如下:P(sv)如果sv大于0,減小sv。如果sv為0,掛起這個進程的執(zhí)行。V(sv)如果有進程被掛起等待sv,使其恢復執(zhí)行。如果沒有進行被掛起等待sv,增加sv。信號量的另一個理解方式就是當臨界區(qū)可用時信號量變量sv為true,當臨界區(qū)忙時信號量變量被P(sv)減小,從而變?yōu)閒alse,當臨界區(qū)再次可用時被V(sv)增加。注意,簡單的具有一個我們可以減小或是增加的通常變量并不足夠,因為我們不能用C,C++或是其他的編程語言來表述生成信號,進行原子測試來確定變量是否為true,如果是則將其變?yōu)閒alse。這就是使得信號量操作特殊的地方。信號量函數(shù)定義如下:includesys/intsemctl(intsem_id,intsem_num,intmand,...)。intsemget(key_tkey,intnum_sems,intsem_flags)。intsemop(intsem_id,structsembuf*sem_ops,size_tnum_sem_ops)。事實上,為了獲得我們特定操作所需要的define定義,我們需要在包含sys/。而在某些情況下,這并不是必須的。因為我們會依次了解每一個函數(shù),記住,這些函數(shù)的設計是用于操作信號量值數(shù)組的,從而會使用其操作向比單個信號量所需要的操作更為復雜。注意,key的作用類似于一個文件名,因為他表示程序也許會使用或是合作所用的資源。相類似的,由semget所返回的并且為其他的共享內(nèi)存函數(shù)所用的標識符與由fopen函數(shù)所返回的FILE*十分相似,因為他被進程用來訪問共享文件。而且與文件類似,不同的進程會有不同的信號量標識符,盡管他們指向相同的信號量。key與標識符的用法對于在這里所討論的所有IPC程序都是通用的,盡管每一個程序會使用獨立的key與標識符。()semget函數(shù)創(chuàng)建一個新的信號量或是獲得一個已存在的信號量鍵值。調(diào)用原型:int semget(key_t key,int num_sems,int sem_flags)。第一個參數(shù)key是一個用來允許不相關的進程訪問相同信號量的整數(shù)值。所有的信號量是為不同的程序通過提供一個key來間接訪問的,對于每一個信號量系統(tǒng)生成一個信號量標識符。信號量鍵值只可以由semget獲得,所有其他的信號量函數(shù)所用的信號量標識符都是由semget所返回的。還有一個特殊的信號量key值,IPC_PRIVATE(通常為0),其作用是創(chuàng)建一個只有創(chuàng)建進程可以訪問的信號量。這通常并沒有有用的目的,而幸運的是,因為在某些Linux系統(tǒng)上,手冊頁將IPC_PRIVATE并沒有阻止其他的進程訪問信號量作為一個bug列出。num_sems參數(shù)是所需要的信號量數(shù)目。這個值通??偸?。sem_flags參數(shù)是一個標記集合,與open函數(shù)的標記十分類似。低九位是信號的權(quán)限,其作用與文件權(quán)限類似。另外,這些標記可以與IPC_CREAT進行或操作來創(chuàng)建新的信號量。設置IPC_CREAT標記并且指定一個已經(jīng)存在的信號量鍵值并不是一個錯誤。如果不需要,IPC_CREAT標記只是被簡單的忽略。我們可以使用IPC_CREAT與IPC_EXCL的組合來保證我們可
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1