資源簡介
實驗一 Linux系統的安裝及用戶界面的使用
一.實驗目的
1. 了解Linux系統的安裝、熟悉系統的啟動過程和使用環境。
2. 掌握Linux環境下vi編輯器的使用方法。
3. 掌握Linux系統中編輯、編譯、調試、運行一個C語言程序的全過程。
二.實驗內容
1、實驗要求
1. 在VMWare虛擬機環境或真實物理機器上,安裝一個Linux操作系統。
2. 體驗Linux操作系統中X Windows系統的使用。
3. 嘗試Linux系統鍵盤命令的使用,并熟練掌握常用的基本命令。
4. 掌握命令行方式下vi編輯器的使用。
5. 編寫一段C程序,使用系統調用fork()創建兩個子進程。各進程顯示不同的信息,如父進程顯示字符“a”,子進程分別顯示字符“b”和“c”。多次運行觀察顯示結果,并分析產生這種執行效果的原因。
實驗二 Linux進程控制
一.實驗目的
1. 掌握進程的概念,明確進程和程序的區別。
2. 認識和了解并發執行的實質。
二.實驗內容
1、實驗要求
1. 編寫一段程序,使用系統調用fork()創建兩個子進程。各進程顯示不同的信息,如父進程顯示字符“a”,子進程分別顯示字符“b”和“c”。多次運行觀察顯示結果,并分析產生這種執行效果的原因。
2. 修改上面編寫的程序,將每個進程的輸出由單個字符改為循環輸出一句話,如父進程顯示:“parent:”加上進程ID,子進程分別顯示:“Child1:”(或“Child2:”)加上自己的進程ID。再觀察程序執行時屏幕上出現的現象,并分析原因。
3.一個父進程創建一個子進程,子進程通過exec系統調用執行另一個文件。各自的代碼中顯示不同的信息,觀察其運行結果,分析兩個進程并發執行的效果。
4. 編寫程序創建如圖所示的進程樹,在每個進程中顯示當前進程ID和父進程ID。
實驗三 Linux進程間通信
一.實驗目的
(1) 分析進程爭用臨界資源的現象,學習解決進程互斥的方法;
(2) 學習如何利用進程的“軟中斷”、管道機制進行進程間的通信,并加深對上述通信機制的理解;
(3) 了解系統調用pipe( )、msgget( )、msgsnd( )、msgrcv( )、msgctl( )、shmget( )、shmat( )、shmdt( )、shmctl( )的功能和實現過程,利用共享存儲區機制進行進程間通信。
二、實驗內容
1、實驗要求
(1) 進程的控制
修改已編制的程序,將每個進程輸出一個字符修改為每個進程輸出一句話,再觀察程序執行時屏幕上出現的現象,并分析出現問題的原因,進一步理解各個進程爭奪臨界資源的情況。
如果在程序中使用系統調用locking( )來給每一個進程加鎖,可以實現進程之間的互斥,試觀察并分析出現的現象。
(2) 進程的軟中斷通訊
編制一段程序,實現進程的軟中斷通訊:使用系統調用fork( )創建兩個子進程;再使用系統調用signal( )讓父進程捕捉鍵盤上來的中斷信號(即按Del鍵);在捕捉到中斷信號后,父進程用系統調用kill( )向兩個子進程發信號;子進程捕捉到信號后分別輸出下列信息后終止:
Child process1 is killed by parent!
Child process2 is killed by parent!
父進程等待兩個子進程都終止以后,輸出如下信息后終止:
Parent process in killed!
(3) 進程的管道通訊
編制一段程序,實現進程的管道通訊:使用系統調用pipe( )建立一條管道線;兩個子進程分別循環向這條管道寫一句話:
Child 1 is sending a message!
Child 2 is sending a message!
而父進程則循環從管道中讀出信息,顯示在屏幕上。
實驗報告 內含源代碼
代碼片段和文件信息
評論
共有 條評論