版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū) 操作系統(tǒng)課程組 編內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院計(jì)算機(jī)系二一三年九月目 錄操作系統(tǒng)實(shí)驗(yàn)教學(xué)大綱1實(shí)驗(yàn)一 進(jìn)程管理1實(shí)驗(yàn)二 SPOOLing技術(shù)實(shí)現(xiàn)12I操作系統(tǒng)實(shí)驗(yàn)教學(xué)大綱一、基本信息課程編碼020213008課程學(xué)時(shí)56課程類別學(xué)科基礎(chǔ)課程實(shí)驗(yàn)總學(xué)時(shí)10開(kāi)出學(xué)期5開(kāi)出單位計(jì)算機(jī)系適用專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程二、實(shí)驗(yàn)安排序號(hào)實(shí) 驗(yàn) 項(xiàng) 目實(shí)驗(yàn)學(xué)時(shí)每組人數(shù)實(shí)驗(yàn)類型開(kāi)出要求1實(shí)驗(yàn)一 進(jìn)程管理41驗(yàn)證必做實(shí)驗(yàn)二 SPOOLing技術(shù)實(shí)現(xiàn)61設(shè)計(jì)必做三、實(shí)驗(yàn)?zāi)康摹?nèi)容與要求實(shí)驗(yàn)一 進(jìn)程管理(一)實(shí)驗(yàn)?zāi)康?加深對(duì)進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別;2進(jìn)一步認(rèn)識(shí)并發(fā)執(zhí)行的實(shí)質(zhì);3分
2、析進(jìn)程爭(zhēng)用資源的現(xiàn)象,學(xué)習(xí)解決進(jìn)程互斥的方法;4了解Linux系統(tǒng)中進(jìn)程通信的基本原理。(二)實(shí)驗(yàn)內(nèi)容1進(jìn)程的創(chuàng)建;2進(jìn)程的控制;3進(jìn)程的軟中斷通信;4進(jìn)程的管道通信。(三)實(shí)驗(yàn)要求1掌握Linux系統(tǒng)中進(jìn)程的創(chuàng)建、控制和通信的實(shí)現(xiàn);2根據(jù)實(shí)驗(yàn)內(nèi)容,在Linux平臺(tái)上用C語(yǔ)言編程實(shí)現(xiàn),上機(jī)調(diào)試運(yùn)行得出實(shí)驗(yàn)結(jié)果;3寫(xiě)出預(yù)習(xí)報(bào)告和實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)二 SPOOLing技術(shù)實(shí)現(xiàn)(一)實(shí)驗(yàn)?zāi)康?加深對(duì)SPOOLing系統(tǒng)的理解;2進(jìn)一步認(rèn)識(shí)SPOOLing技術(shù)的實(shí)質(zhì);3分析、設(shè)計(jì)SPOOLing系統(tǒng)的實(shí)現(xiàn)方法;4了解Linux系統(tǒng)中SPOOLing的基本原理。(二)實(shí)驗(yàn)內(nèi)容設(shè)計(jì)并運(yùn)行一個(gè)簡(jiǎn)單的SPOOLi
3、ng系統(tǒng)來(lái)模擬實(shí)際的SPOOLing輸入/輸出過(guò)程,以掌握這種以空間換時(shí)間的技術(shù)。要求將SPOOLing輸入/輸出處理程序編成一個(gè)獨(dú)立的進(jìn)程模塊并與其他請(qǐng)求輸入/輸出的進(jìn)程并發(fā)運(yùn)行。SPOOLing進(jìn)程負(fù)責(zé)把從輸入設(shè)備輸入的信息送到外存輸入井中,或把外存輸出井中的信息送到打印機(jī)等輸出設(shè)備上輸出。其余進(jìn)程只要求編寫(xiě)輸入/輸出部分的程序。要求定義實(shí)施算法的相關(guān)數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)設(shè)備分配和SPOOLing算法。(三)實(shí)驗(yàn)要求1掌握SPOOLing技術(shù)的實(shí)現(xiàn);2根據(jù)實(shí)驗(yàn)內(nèi)容,在Linux平臺(tái)上用C語(yǔ)言編程實(shí)現(xiàn),上機(jī)調(diào)試運(yùn)行得出實(shí)驗(yàn)結(jié)果;3寫(xiě)出預(yù)習(xí)報(bào)告和實(shí)驗(yàn)報(bào)告。四、考核方式實(shí)驗(yàn)成績(jī)占課程總成績(jī)的比重為10
4、%??己朔绞礁鶕?jù)實(shí)驗(yàn)課考勤、課前預(yù)習(xí)情況、課上實(shí)驗(yàn)?zāi)芰Α⒃拖到y(tǒng)效果驗(yàn)收與實(shí)驗(yàn)報(bào)告的完成情況綜合評(píng)分。每個(gè)實(shí)驗(yàn)考核:實(shí)驗(yàn)預(yù)習(xí)占30%,實(shí)驗(yàn)?zāi)芰托Ч?0%,實(shí)驗(yàn)報(bào)告占40%。五、建議教材與教學(xué)參考書(shū)1課程教材1 張堯?qū)W. 計(jì)算機(jī)操作系統(tǒng)教程. 第三版. 北京:清華大學(xué)出版社. 20062 趙俊生操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)自編20082教學(xué)參考書(shū)1 湯小丹計(jì)算機(jī)操作系統(tǒng)第三版西安: 西安電子科技大學(xué)出版社2008 2 徐虹. 操作系統(tǒng)實(shí)驗(yàn)指導(dǎo). 北京: 清華大學(xué)出版社20043 屠祁. 操作系統(tǒng)基礎(chǔ)第三版北京: 清華大學(xué)出版社20004 馮耀霖. 操作系統(tǒng). 西安: 西安電子科技大學(xué)出版社20015
5、左萬(wàn)歷計(jì)算機(jī)操作系統(tǒng)教程第二版北京:高等教育出版社2004六、編制說(shuō)明編制者:系統(tǒng)軟件課程組 組長(zhǎng):壽永熙執(zhí)筆人:趙俊生 編制時(shí)間:2009年3月15實(shí)驗(yàn)一 進(jìn)程管理一、 實(shí)驗(yàn)?zāi)康?學(xué)會(huì)在Linux中利用系統(tǒng)調(diào)用fork()創(chuàng)建進(jìn)程。2加深對(duì)進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別。3進(jìn)一步認(rèn)識(shí)在系統(tǒng)內(nèi)進(jìn)程并發(fā)執(zhí)行的實(shí)質(zhì)。4分析進(jìn)程競(jìng)爭(zhēng)資源的現(xiàn)象,學(xué)習(xí)解決進(jìn)程互斥的方法。5掌握Linux中進(jìn)程通信的基本原理。二、 實(shí)驗(yàn)類型驗(yàn)證性實(shí)驗(yàn)。三、 實(shí)驗(yàn)預(yù)備知識(shí) 1閱讀Linux的sched.h源碼文件,加深對(duì)進(jìn)程管理概念的理解。 2閱讀Linux的fork.c源碼文件,分析進(jìn)程的創(chuàng)建過(guò)程。四、 實(shí)驗(yàn)內(nèi)容
6、1進(jìn)程的創(chuàng)建 【任務(wù)】 編寫(xiě)一段程序,使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個(gè)子進(jìn)程,當(dāng)此程序運(yùn)行時(shí),在系統(tǒng)中有一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動(dòng)。讓每一個(gè)進(jìn)程在屏幕上顯示一個(gè)字符;父進(jìn)程顯示字符“a”,子進(jìn)程分別顯示字符“b”和“c”。試觀察記錄屏幕上的顯示結(jié)果,并分析原因?!境绦颉縤nclude <stdio.h>main() int p1,p2; while(p1=fork()= =-1); /*創(chuàng)建子進(jìn)程p1,失敗時(shí)循環(huán)*/ if(p1= =0) /*子進(jìn)程p1創(chuàng)建成功*/ putchar(b); else /*父進(jìn)程返回*/ while(p2=fork()= =-1); /*創(chuàng)建另一個(gè)子
7、進(jìn)程p2,失敗時(shí)循環(huán)*/ if(p2= =0) /*子進(jìn)程p2創(chuàng)建成功*/ putchar(c); else putchar(a); /*父進(jìn)程執(zhí)行*/ 【執(zhí)行結(jié)果】 同學(xué)自己得到實(shí)驗(yàn)結(jié)果。 【分析原因】 同學(xué)自己分析多次執(zhí)行產(chǎn)生不同實(shí)驗(yàn)結(jié)果的原因。2進(jìn)程的控制【任務(wù)】修改已編寫(xiě)的程序,將每個(gè)進(jìn)程的輸出由單個(gè)字符改為一句話,再觀察程序執(zhí)行時(shí)屏幕上出現(xiàn)的現(xiàn)象,并分析其原因。如果在程序中使用系統(tǒng)調(diào)用lockf()來(lái)給每個(gè)進(jìn)程加鎖,可以實(shí)現(xiàn)進(jìn)程之間的互斥,觀察并分析出現(xiàn)的現(xiàn)象。【程序1】include <stdio.h>main() int p1,p2,i; while(p1=fork(
8、)= =-1); if(p1= =0) for(i=0;i<50;i+) printf(“child %dn”,i); else while(p2=fork()= =-1) if(p2= =0) for(i=0;i<50;i+) printf(“son %dn”,i); else for(i=0;i<50;i+) printf(“daughter %dn”,i); 【執(zhí)行結(jié)果】 同學(xué)自己得到實(shí)驗(yàn)結(jié)果。 【分析原因】同學(xué)自己分析多次執(zhí)行產(chǎn)生不同實(shí)驗(yàn)結(jié)果的原因?!境绦?】include <stdio.h>include <unistd.h>main() i
9、nt p1,p2,i; while(p1=fork()= =-1); if(p1= =0) lockf(1,1,0); /*加鎖*/ for(i=0;i<50;i+) printf(“child %dn”,i); lockf(1,0,0); /*解鎖*/ else while(p2=fork()= =-1) if(p2= =0) lockf(1,1,0); for(i=0;i<50;i+) printf(“son %dn”,i); lockf(1,0,0); else lockf(1,1,0); for(i=0;i<50;i+) printf(“daughter %dn”,i
10、); lockf(1,0,0); 【執(zhí)行結(jié)果】 同學(xué)自己得到實(shí)驗(yàn)結(jié)果。 【分析原因】 同學(xué)自己分析多次執(zhí)行產(chǎn)生不同實(shí)驗(yàn)結(jié)果的原因。3軟中斷通信【任務(wù)1】編制一段程序,使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個(gè)子進(jìn)程,再用系統(tǒng)調(diào)用signal()讓父進(jìn)程捕捉鍵盤(pán)上來(lái)的中斷信號(hào)(即按任意字母鍵和Enter鍵),當(dāng)捕捉到中斷信號(hào)后,父進(jìn)程用系統(tǒng)調(diào)用kill()向兩個(gè)子進(jìn)程發(fā)出信號(hào),子進(jìn)程捕捉到信號(hào)后,分別輸出下列信息后終止: child process 1 is killed by parent! child process 2 is killed by parent!父進(jìn)程等待兩個(gè)子進(jìn)程終止后,輸出以下信息
11、后終止:parent process is killed!【程序】#include <sys/types.h>#include <unistd.h>#include <stdio.h>#include <signal.h>void waiting(),stop();int wait_mark;main() int p1,p2; while(p1=fork()= =-1); /*創(chuàng)建進(jìn)程p1*/ if(p1>0) while(p2=fork()= =-1); /*創(chuàng)建進(jìn)程p2*/ if(p2>0) Printf(“parent run!
12、n”); Printf(“p1=%dn”,p1); Printf(“p2=%dn”,p2); wait_mark=1;getchar(); kill(p1,16); /*向p1發(fā)軟中斷信號(hào)16*/kill(p2,17); /*向p2發(fā)軟中斷信號(hào)17*/sleep(5); /*父進(jìn)程睡眠5秒*/wait(0); /*等待子進(jìn)程結(jié)束,同步*/wait(0); /*等待另一子進(jìn)程結(jié)束,同步*/lockf(stdout,1,0); /*標(biāo)準(zhǔn)輸出加鎖*/printf(“parent process is killed!n”);lockf(stdout,0,0); /*標(biāo)準(zhǔn)輸出解鎖*/exit(0); /
13、*父進(jìn)程終止*/ else printf(“p2 run!n”); wait_mark=1;signal(17,stop); /*接收父進(jìn)程發(fā)來(lái)的軟中斷信號(hào)17,并轉(zhuǎn)stop*/waiting();lockf(stdout,1,0); /*標(biāo)準(zhǔn)輸出加鎖*/printf(“child process 2 is killed by parent!n”);lockf(stdout,0,0); /*標(biāo)準(zhǔn)輸出解鎖*/exit(0); /*子進(jìn)程p2終止*/ else printf(“p1 run!n”); wait_mark=1;signal(16,stop); /*接收父進(jìn)程發(fā)來(lái)的軟中斷信號(hào)16,并轉(zhuǎn)
14、stop*/waiting();lockf(stdout,1,0); /*標(biāo)準(zhǔn)輸出加鎖*/printf(“child process 1 is killed by parent!n”);lockf(stdout,0,0); /*標(biāo)準(zhǔn)輸出解鎖*/exit(0); /*子進(jìn)程p1終止*/ void waiting() printf(“waiting begin!n”); while(wait_mark!=0); printf(“waiting end!n”); void stop() wait_mark=0; printf(“signal stop!”); 【執(zhí)行結(jié)果】 同學(xué)自己得到實(shí)驗(yàn)結(jié)果。 【
15、分析原因】 同學(xué)自己分析產(chǎn)生該實(shí)驗(yàn)結(jié)果的原因。 【任務(wù)2】 在上面任務(wù)1中,增加語(yǔ)句signal(SIGINT,SIG_IGN)和語(yǔ)句signal(SIGQUIT,SIG_IGN),觀察執(zhí)行結(jié)果,并分析原因。這里signal(SIGINT,SIG_IGN)和signal(SIGQUIT,SIG_IGN)分別為忽略“Ctrl+c”鍵信號(hào)以及忽略中斷信號(hào)。 【程序】#include <sys/types.h>#include <unistd.h>#include <stdio.h>#include <signal.h> int pid1,pid2;
16、int endflag=0,pf1=0,pf2=0; void intdelete() kill(pid1,16); kill(pid2,17); endflag=1; void int1() printf(“child process 1 is killed by parent!”); exit(0); void int2() printf(“child process 2 is killed by parent!”); exit(0); main() int exitpid; signal(SIGINT,SIG_IGN); signal(SIGQUIT,SIG_IGN); while(pi
17、d1=fork()= =-1); if(pid1= =0) printf(“process 1 run!n”); signal(SIGUSR1,int1); signal(16, SIG_IGN); pause(); exit(0); else while(pid2=fork()= =-1); if(pid2= =0) printf(“process 2 run!n”); signal(SIGUSR2,int2); signal(17, SIG_IGN); pause(); exit(0); else printf(“parent run!n”); signal(SIGINT,intdelet
18、e); waitpid(-1,&exitpid,0); printf(“parent process is killed!n”); exit(0); 【執(zhí)行結(jié)果】 同學(xué)自己得到實(shí)驗(yàn)結(jié)果。 【分析原因】 同學(xué)自己分析產(chǎn)生該實(shí)驗(yàn)結(jié)果的原因。4進(jìn)程的管道通信【任務(wù)】 編制一段程序,實(shí)現(xiàn)進(jìn)程的管道通信。使用系統(tǒng)調(diào)用pipe()建立一條管道線。兩個(gè)子進(jìn)程p1和p2分別向管道各寫(xiě)一句話: child 1 is sending a message! child 2 is sending a message! 而父進(jìn)程則從管道中讀出來(lái)自于兩個(gè)子進(jìn)程的信息,顯示在屏幕上。 【程序】#include &l
19、t;unistd.h>#include <stdio.h>#include <signal.h> int pid1,pid2; main() int fd3; char outpipe100,inpipe100; pipe(fd); while(pid1=fork()= =-1); if(pid1= =0) printf(“p1 run!n”); lockf(fd1,1,0); sprintf(outpipe,”child 1 process is sending a message!”); write(fd1,outpipe,50); sleep(1); loc
20、kf(fd1,0,0); exit(0); else while(pid2=fork()= =-1); if(pid2= =0) printf(“p2 run!n”); lockf(fd1,1,0); sprintf(outpipe,”child 2 process is sending a message!”); write(fd1,outpipe,50); sleep(1); lockf(fd1,0,0); exit(0); else printf(“parent run!n”); wait(0); read(fd0,inpipe,50); printf(“%sn”,inpipe); wa
21、it(0); read(fd0,inpipe,50); printf(“%sn”,inpipe); exit(0); 【執(zhí)行結(jié)果】 同學(xué)自己得到實(shí)驗(yàn)結(jié)果。 【分析原因】 同學(xué)自己分析產(chǎn)生該實(shí)驗(yàn)結(jié)果的原因。實(shí)驗(yàn)二 SPOOLing技術(shù)實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康?加深對(duì)SPOOLing (Simultaneaus Periphernal Operating OnLine)系統(tǒng)組成與基本工作原理的理解。2使用客戶/服務(wù)器模式進(jìn)行程序設(shè)計(jì)。3使用Linux進(jìn)程技術(shù),模擬SPOOLing系統(tǒng)中輸出進(jìn)程的工作。4使用Linux進(jìn)程通信技術(shù),模擬SPOOLing系統(tǒng)工作進(jìn)程與輸出進(jìn)程的數(shù)據(jù)輸出。5使用Linux文件技
22、術(shù),模擬SPOOLing系統(tǒng)輸出井的工作過(guò)程。二、實(shí)驗(yàn)類型設(shè)計(jì)性實(shí)驗(yàn)。三、實(shí)驗(yàn)預(yù)備知識(shí) 1閱讀Linux進(jìn)程通信技術(shù)(消息和管道)的使用方法。 2閱讀Linux文件操作技術(shù),掌握文件的基本處理方法。四、實(shí)驗(yàn)內(nèi)容 假脫機(jī)打印是SPOOLing系統(tǒng)的典型應(yīng)用。本次實(shí)驗(yàn)的內(nèi)容就是以客戶/服務(wù)器模式模擬假脫機(jī)打印的工作過(guò)程。工作原理見(jiàn)圖2-1。打印服務(wù)器輸入緩存區(qū)打印隊(duì)列輸出井客戶機(jī)1請(qǐng)求打印打印文件輸出緩存區(qū)數(shù)據(jù)傳輸客戶機(jī)n請(qǐng)求打印數(shù)據(jù)傳輸.圖2-1 模擬假脫機(jī)打印工作原理整個(gè)系統(tǒng)的工作是先啟動(dòng)打印服務(wù)器,初始化客戶/服務(wù)器間的通信、準(zhǔn)備輸入緩存區(qū)、打印隊(duì)列和輸出井。然后啟動(dòng)請(qǐng)求打印的客戶機(jī)程序(如命令:printmn file.dat),將要打印的文件(如:file.dat)讀入客戶機(jī)系統(tǒng),包裝成客戶機(jī)和服務(wù)器之間通信的基本信息單位,放入輸出緩存區(qū),然后啟動(dòng)進(jìn)程間通信機(jī)制,向打印服務(wù)器發(fā)出請(qǐng)求。服務(wù)器通過(guò)進(jìn)程間的通信機(jī)制,將客戶機(jī)傳送的數(shù)據(jù)放入輸出緩存區(qū),并向打印隊(duì)列申請(qǐng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 直筒模具設(shè)計(jì)課程設(shè)計(jì)
- 說(shuō)明文課程設(shè)計(jì)
- 課程設(shè)計(jì)宿舍供電
- 課程設(shè)計(jì)壓縮包
- 2025年度科技園區(qū)物業(yè)房屋租賃管理服務(wù)協(xié)議3篇
- 2025年小學(xué)班主任班級(jí)工作總結(jié)范文(2篇)
- 2025年事業(yè)單位年檢工作年終總結(jié)模版(2篇)
- 通信原理課程設(shè)計(jì)實(shí)驗(yàn)
- 二零二五年度數(shù)據(jù)中心電力需求響應(yīng)服務(wù)合同2篇
- 二零二五年度建筑垃圾資源化處理質(zhì)量合同3篇
- 2025年考研政治全套復(fù)習(xí)題庫(kù)及答案(全冊(cè)完整版)
- 新人教版小學(xué)英語(yǔ)五年級(jí)下冊(cè)單詞默寫(xiě)版
- 3《歡歡喜喜慶國(guó)慶》說(shuō)課稿-2024-2025學(xué)年道德與法治二年級(jí)上冊(cè)統(tǒng)編版
- 蓄勢(shì)聚能籌遠(yuǎn)略揚(yáng)帆破浪啟新航-在2025年務(wù)虛會(huì)上的講話提綱
- 先進(jìn)集體發(fā)言稿
- 學(xué)生寒假心理健康教育心理調(diào)試過(guò)健康寒假課件
- 八年級(jí)地理(下冊(cè)星球版)復(fù)習(xí)提綱
- 新建3000只肉羊養(yǎng)殖基地建設(shè)項(xiàng)目可行性研究報(bào)告
- 山東省濟(jì)南市2023-2024學(xué)年高二上學(xué)期期末考試生物試題 附答案
- DB32T 3292-2017 大跨徑橋梁鋼橋面環(huán)氧瀝青混凝土鋪裝養(yǎng)護(hù)技術(shù)規(guī)程
- 形容詞副詞(專項(xiàng)訓(xùn)練)-2023年中考英語(yǔ)二輪復(fù)習(xí)
評(píng)論
0/150
提交評(píng)論