xtu 作業系統實驗1 程序管理

2021-10-08 02:03:16 字數 1773 閱讀 7611

實驗環境:ubuntu、 shell終端編譯執行

一、實驗內容

(1) 程序的建立

編寫一段程式,使用系統呼叫fork()建立兩個子程序.當此程式執行時,在系統中有乙個父程序和兩個子程序活動.讓每乙個程序在螢幕上顯示乙個字元:父程序顯示字元「a」;子程序分別顯示字元「b」和字元「c」.試觀察記錄螢幕上的顯示結果,並分析原因.

#include

#include

#include

intmain()

return0;

}

(2)程序的控制

修改已編寫的程式,將每個程序輸出乙個字元改為每個程序輸出一句話,再觀察程式執行時螢幕上出現的現象,並分析原因.

如果在程式中使用系統呼叫lockf()來給每乙個程序加鎖,可以實現程序之間的互斥,觀察並分析出現的現象.

#include

#include

#include

intmain()

else

else

}return0;

}

(3) ①編制一段程式,使其實現程序的軟中斷通訊.

要求:使用系統呼叫fork()建立兩個子程序,再用系統呼叫signal()讓父程序捕捉鍵盤上來的中斷訊號(即按del鍵);當捕捉到中斷訊號後,父程序用系統呼叫kill()向兩個子程序發出訊號,子程序捕捉到訊號後分別輸出下列資訊後終止:

child processl1 is killed by parent!

child processl2 is killed by parent!

父程序等待兩個子程序終止後,輸出如下的資訊後終止:

parent process is killed!

②在上面的程式中增加語句signal(sigint,sig-ign) 和signal(sigquit,sig-ign),

觀察執行結果,並分析原因.

#include

#include

#include

#include

#include

int waiting_control=1;

void

waiting()

;void

sig(

int num)

;int

main()

else

else

}return0;

}void

sig(

int num)

void

waiting()

(4)程序的管道通訊

編制一段程式,實現程序的管道通訊.

使用系統呼叫pipe()建立一條管道線;兩個子程序p1和p2分別向管道各寫一句話:

child 1 is sending a message!

child 2 is sending a message!

而父程序則從管道中讀出來自與兩個子程序的資訊,顯示在螢幕上.

要求父程序先接收子程序p1發來的訊息,然後再接收子程序p2發來的訊息.

#include

#include

#include

#include

#include

#include

intmain()

else

else

//父程序

}return0;

}

作業系統實驗之程序管理

實驗內容 建立新的程序 檢視執行的程序 換出某個程序 殺死執行程序以及程序之間的通訊 下面是 include conio.h include stdio.h include stdlib.h struct pcb struct pcb neicun 20 waicun 20 int count 0,...

作業系統程序管理實驗 3

繼上次的建立執行緒後,我又帶著一段新的 來了qaq 死鎖是什麼呢?死鎖是指兩個或兩個以上的執行緒在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。啥是互相競爭資源?我上次...

作業系統實驗之程序管理

程序名 要求執行時間 優先數狀態 其中,程序名 作為程序的標識,假設五個程序的程序名分別為p1,p2,p3,p4,p5。要求執行時間 假設程序需要執行的單位時間數。優先數 賦予程序的優先數,排程時總是選取優先數大的程序先執行。狀態 可假設有兩種狀態,就緒 狀態和 結束 狀態。五個程序的初始狀態都為 ...