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