1、當生產者-消費者分別由位於同一臺計算機上的若干程序充當時,如何設計實驗?給出設計方案和linux c語言實現(重要語句加上注釋)。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define buffersize 5//緙撳啿鍖哄ぇ灝?
//鍏變韓鍐呭瓨
struct productbuff ;
int semid;//淇″佛閱忛泦鍚?
int shmid;//鍏變韓鍐呭瓨
struct sembuf semaphore;//淇″佛閱?
struct productbuff* addr;
//pv錼嶄綔,鐢卞弬鏁皌紜畾鏄鍝竴涓彉閱忚繘琛孭v錼嶄綔,t=0,1,2
#define mutex 0
#define empty 1
#define full 2
void p(int t)
void v(int t)
void init()
int sem = 1;
semctl(semid, mutex, setval, sem);
sem = buffersize;
semctl(semid, empty, setval, sem);
sem = 0;
semctl(semid, full, setval, sem);
//鍒涘緩鍏變韓鍐呭瓨 騫舵槧灝?
key_t shmkey;
shmkey = ftok("renyuzhuo2.c", 0);
shmid = shmget(shmkey, 2048, 0666 | ipc_creat);
if (shmid == -1)
//鎶婂叡浜唴瀛樺尯瀵矽薄鏄犲皠鍒拌皟鐢ㄨ繘紼嬬殑鍦板潃絀洪棿
addr = (struct productbuff*) shmat(shmid, 0, 0);
if (addr == (struct productbuff * ) - 1)
addr -> in = addr -> out = 0;
printf("init success!!\n");
}//閿€姣佸叡浜唴瀛?淇″佛閱?
void destroy()
#define many 3//鐢熶駭鑰呮秷璐矽€呮暟鐩?
#define times 9//姣忎釜鐢熶駭鑰呯敓浜т駭鍝佷釜鏁?娑堣垂鑰呮秷璐逛駭鍝佷釜鏁癵e
int main()
}else}}
}sleep(3);
destroy();
sleep(3);
編譯命令:
gcc 1-1.c -o 1-1 -lpthread
執行命令:
./1-1
作業系統實驗三 (1)
作業系統課程設計 三 1 實現乙個模擬shell 編寫三個不同的程式 cmd1.c,cmd2.c,cmd3.c,每個程式輸出一句話,分別編譯成可執行檔案cmd1,cmd2,cmd3。然後再編寫乙個程式,模擬shell程式的功能,能根據使用者輸入的字串 表示相應的命令名 去為相應的命令建立子程序並讓它...
作業系統實驗
一 實驗目的 理解vi的三種執行模式及其切方法。學會使用vi的各種操作命令進行文字檔案的編輯。用vi編寫linux下c程式,會用gcc編譯。二 實驗環境 一台裝有linux的機器 這裡預設是red hat linux 9 系統裡面有gcc編譯器。三 實驗內容 寫出主要的內容 首先用合法使用者登入系統...
作業系統實驗
分析bootloader進入保護模式的過程。在剛進入bootloader的時候,最先執行的操作分別為關閉中斷 清除eflags的df位以及將ax,ds,es,ss暫存器初始化為0 globl start start code16 cli 關中斷 cld 清除方向標誌 xorw ax,ax ax清0 ...