版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
作系統(tǒng)實(shí)驗(yàn)報(bào)告操作系統(tǒng)實(shí)驗(yàn)報(bào)告學(xué)號:姓名:指導(dǎo)老師:完成日期:目錄實(shí)驗(yàn)一11實(shí)驗(yàn)二22實(shí)驗(yàn)三77實(shí)驗(yàn)四10實(shí)驗(yàn)五15實(shí)驗(yàn)六18實(shí)驗(yàn)七22
實(shí)驗(yàn)一XUNIX/LINUX入門一、實(shí)驗(yàn)?zāi)康牧私釻NIX/LINUX運(yùn)行環(huán)境,熟悉UNIX/LINUX的常用基本命令,熟悉和掌握UNIX/LINUX下c語言程序的編寫、編譯、調(diào)試和運(yùn)行方法。二、實(shí)驗(yàn)內(nèi)容熟悉UNIX/LINUX的常用基本命令如ls、who、pwd、ps等。
練習(xí)UNIX/LINUX的文本行編輯器vi的使用方法熟悉UNIX/LINUX下c語言編譯器cc/gcc的使用方法。用vi編寫一個(gè)簡單的顯示Hello,World。c語言程序,用gcc編譯并觀察編譯后的結(jié)果,然后運(yùn)行它。三、實(shí)驗(yàn)要求按照要求編寫程序,放在相應(yīng)的目錄中,編譯成功后執(zhí)行,并按照要求分析執(zhí)行結(jié)果,并寫出實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)程序includeintmain(){printf(HelloWorld。\n);return0;}五、實(shí)驗(yàn)感想通過第一次室驗(yàn),我了解UNIX/LINUX運(yùn)行環(huán)境,熟悉了UNIX/LINUX的常用基本命令,熟悉和掌握了UNIX/LINUX下c語言程序的編寫、編譯、調(diào)試和運(yùn)行方法。
實(shí)驗(yàn)二進(jìn)程管理一、實(shí)驗(yàn)?zāi)康募由顚M(jìn)程概念的理解,明確進(jìn)程與程序的區(qū)別;進(jìn)一步認(rèn)識并發(fā)執(zhí)行的實(shí)質(zhì)。二、實(shí)驗(yàn)內(nèi)容(1)進(jìn)程創(chuàng)建編寫一段程序,使用系統(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é)果,并分析原因。
(2)進(jìn)程控制修改已編寫的程序,將每一個(gè)進(jìn)程輸出一個(gè)字符改為每一個(gè)進(jìn)程輸出一句話,再觀察程序執(zhí)行時(shí)屏幕上出現(xiàn)的現(xiàn)象,并分析原因。
(3)進(jìn)程的管道通信編寫程序?qū)崿F(xiàn)進(jìn)程的管道通信。使用系統(tǒng)調(diào)用pipe()建立一個(gè)管道,二個(gè)子進(jìn)程P1和P2分別向管道各寫一句話:
Child1issendingamessage。Child2issendingamessage。父進(jìn)程從管道中讀出二個(gè)來自子進(jìn)程的信息并顯示(要求先接收P1,再接收P2)。三、實(shí)驗(yàn)要求按照要求編寫程序,放在相應(yīng)的目錄中,編譯成功后執(zhí)行,并按照要求分析執(zhí)行結(jié)果,并寫出實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)設(shè)計(jì)1、功能設(shè)計(jì)(1)進(jìn)程創(chuàng)建使用fork()創(chuàng)建兩個(gè)子進(jìn)程,父進(jìn)程等待兩個(gè)子進(jìn)程執(zhí)行完再運(yùn)行。
(2)進(jìn)程控制使用fork()創(chuàng)建兩個(gè)子進(jìn)程,父進(jìn)程等待兩個(gè)子進(jìn)程分別輸出一句話再運(yùn)行。
(3)進(jìn)程的管道通信先創(chuàng)建子進(jìn)程1,向管道寫入一句話,子進(jìn)程1結(jié)束后創(chuàng)建子進(jìn)程2,向管道寫入一句話,最后父進(jìn)程從管道中讀出。2、數(shù)據(jù)結(jié)構(gòu)子進(jìn)程和管道。3、程序框圖五、實(shí)驗(yàn)程序(1)進(jìn)程創(chuàng)建includeintmain(){intpid1,pid2;pid1=fork();if(pid10){printf(Fork1failed。。);}if(pid1==0){printf(b\n);exit(0);}if(pid10){wait(NULL);pid2=fork();if(pid20){printf(Fork2failed。。);}if(pid2==0){printf(c\n);exit(0);}if(pid20){wait(NULL);printf(a\n);exit(0);}}}(2)進(jìn)程控制
includeintmain(){intpid1,pid2;pid1=fork();if(pid10){printf(Fork1failed。。);}if(pid1==0){printf(Thisischildb\n);exit(0);}if(pid10){wait(NULL);pid2=fork();if(pid20){printf(Fork2failed。。);}if(pid2==0){printf(Thisischildc\n);exit(0);}if(pid20){wait(NULL);printf(Thisisfathera\n);exit(0);}}}(3)進(jìn)程的管道通信includeincludeintmain(){intpid1,pid2;intpfd;char*msg1=Child1issendingamessage。;char*msg2=Child2issendingamessage。;charbuf;intr,w;if(pipe(pfd)0){printf(pipecreateerror。\n);exit(1);}pid1=fork();if(pid10){printf(Fork1failed。。);}if(pid1==0){close(pfd);Linux支持的消息通信機(jī)制及其使用方法2.Linux系統(tǒng)的共享存儲區(qū)的原理及使用方法。二、實(shí)驗(yàn)內(nèi)容1.消息的創(chuàng)建、發(fā)送和接收
使用消息調(diào)用msgget()、msgsnd()、msggrev()、msgctrl()編制長度為1K的消息的發(fā)送和接收程序。
2.共享存儲取得創(chuàng)建、附接和斷接使用系統(tǒng)調(diào)用shmget()、shmat()、shmctl()、shmctl(),編制一個(gè)與上述功能相同的程序。三、實(shí)驗(yàn)要求按照要求編寫程序,放在相應(yīng)的目錄中,編譯成功后執(zhí)行,并按照要求分析執(zhí)行結(jié)果,并寫出實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)設(shè)計(jì)1、消息的創(chuàng)建、發(fā)送和接收(1)功能設(shè)計(jì)為了實(shí)現(xiàn)進(jìn)程之間消息的創(chuàng)建、發(fā)送和接收,首先應(yīng)定義兩個(gè)子進(jìn)程,Server進(jìn)程負(fù)責(zé)發(fā)送,Client進(jìn)程負(fù)責(zé)接收,父進(jìn)程負(fù)責(zé)創(chuàng)建。其次需要用到msgget()、msgsnd()、msggrev()、msgctrl()等函數(shù)進(jìn)行對消息的控制。題目要求消息長度為1K,那么msgsnd(id,msgp,size,flag)和msgrcv(id,msgp,size,type,flag)函數(shù)中參數(shù)size應(yīng)設(shè)為1024,msgget(key,flag)中的key應(yīng)為75。父進(jìn)程獲得創(chuàng)建消息后,子進(jìn)程Server先后發(fā)送編號為1~10的10條消息,子進(jìn)程Client先后接收這10條消息,方能達(dá)到實(shí)驗(yàn)?zāi)康摹?/p>
(2)數(shù)據(jù)結(jié)構(gòu)消息(mymsg):結(jié)構(gòu)體實(shí)現(xiàn),包含的成員變量有消息類型和消息內(nèi)容,具體實(shí)現(xiàn)如下:
structmymsg{shiyan5后臺運(yùn)行此程序,使用killUSR12472時(shí),子進(jìn)程接收信號,信號處理程序輸出子進(jìn)程號0,并輸出信號名稱。七、實(shí)驗(yàn)心得通過本次實(shí)驗(yàn),我掌握了注冊信號處理程序及signal()調(diào)用方法,并且了解了如何讓程序在后臺運(yùn)行的方法。我也進(jìn)一步了解了LINUX系統(tǒng)中進(jìn)程同步與通信的原理。實(shí)驗(yàn)六線程的創(chuàng)建一、實(shí)驗(yàn)?zāi)康木帉慙inux環(huán)境下的多線程程序,了解多線程的程序設(shè)計(jì)方法,掌握最常用的三個(gè)函
數(shù)pthread_create,pthread_join和pthread_exit的用法。二、實(shí)驗(yàn)內(nèi)容1、主程序創(chuàng)建兩個(gè)線程myThread1和myThread2,每個(gè)線程打印一句話。使用pthread_create(id,NULL,(void*)thread,NULL)完成。2、創(chuàng)建兩個(gè)線程,分別向線程傳遞如下兩種類型的參數(shù)傳遞整型值傳遞字符三、實(shí)驗(yàn)要求按照要求編寫程序,放在相應(yīng)的目錄中,編譯成功后執(zhí)行,并按照要求分析執(zhí)行結(jié)果,并寫出實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)設(shè)計(jì)1、創(chuàng)建兩個(gè)進(jìn)程每個(gè)進(jìn)程打印一句話(1)功能設(shè)計(jì)題目要求創(chuàng)建兩個(gè)線程,每個(gè)線程打印一句話,可以認(rèn)為兩個(gè)線程的功能是相同的,故只需要寫一個(gè)線程的運(yùn)行函數(shù)thread(),在這個(gè)函數(shù)里有一個(gè)printf輸出一句話即可。然后在main函數(shù)里分別創(chuàng)建兩個(gè)線程,然后等待兩個(gè)線程結(jié)束。
(2)數(shù)據(jù)結(jié)構(gòu)線程:使用pthread_create()創(chuàng)建。每個(gè)線程有相應(yīng)的線程標(biāo)示符,也有各自的屬性。線程可以和線程運(yùn)行函數(shù)綁定,并可以在創(chuàng)建線程時(shí)確定該線程運(yùn)行函數(shù)的參數(shù)。
(3)程序框圖2、創(chuàng)建兩個(gè)進(jìn)程每個(gè)進(jìn)程打印一句話分別向線程傳遞如下兩種類型的參數(shù):整型值、字符(1)功能設(shè)計(jì)題目要求創(chuàng)建兩個(gè)線程,兩個(gè)線程分別傳遞int型和char型數(shù)據(jù)給線程運(yùn)行函數(shù)。所以要編寫兩個(gè)不同的線程運(yùn)行函數(shù)分別接收int型和char型的數(shù)據(jù)。相應(yīng)的pthread_create()函數(shù)中要給第四個(gè)參數(shù),作為形參傳進(jìn)線程運(yùn)行函數(shù)。
(2)數(shù)據(jù)結(jié)構(gòu)線程:同1,使用pthread_create()創(chuàng)建。每個(gè)線程有相應(yīng)的線程標(biāo)示符,也有各自的屬性。
線程可以和線程運(yùn)行函數(shù)綁定,并可以在創(chuàng)建線程時(shí)確定該線程運(yùn)行函數(shù)的參數(shù)。
(3)程序框圖五、實(shí)驗(yàn)程序1、創(chuàng)建兩個(gè)進(jìn)程每個(gè)進(jìn)程打印一句話includeincludeinclude#defineMAX10intoperand;intsize=0;sem_tsem;voidReadData1(void){FILE*fp=fopen(,r);while(。feof(fp)){fscanf(fp,%d%d,operand,operand);if(feof(fp))break;++size;sem_post(sem);}fclose(fp);}voidReadData2(void){FILE*fp=fopen(,r);while(。feof(fp)){fscanf(fp,%d%d,operand,operand);if(feof(fp))break;++size;sem_post(sem);}fclose(fp);}voidHandleData1(void){while(1){sem_wait(sem);--size;printf(Plus:%d+%d=%d\n,operand,operand,operand+operand);}}voidHandleData2(void){while(1){sem_wait(sem);--size;printf(Multiply:%d*%d=%d\n,operand,operand,operand*operand);}}intmain(void){pthread_tt1,t2,t3,t4;sem_init(sem,0,0);pthread_create(t3,NULL,(void*)ReadData1,NULL);pthread_create(t1,NULL,(void*)HandleData1,NULL);pthread_create(t4,NULL,(void*)ReadData2,NULL);pthread_create(t2,NULL,(void*)HandleData2,NULL);pthread_j
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療系統(tǒng)調(diào)動(dòng)申請書(10篇)
- 網(wǎng)頁設(shè)計(jì)教育改革-洞察分析
- 線粒體膜應(yīng)激與細(xì)胞存活-洞察分析
- 學(xué)術(shù)合作風(fēng)險(xiǎn)防范-洞察分析
- 虛擬現(xiàn)實(shí)在飛行員培訓(xùn)中的應(yīng)用-洞察分析
- 有機(jī)肥料應(yīng)用研究-第1篇-洞察分析
- 網(wǎng)絡(luò)借貸欺詐防范-洞察分析
- 新型推進(jìn)技術(shù)-洞察分析
- 虛擬城市的文學(xué)表達(dá)-洞察分析
- 勤儉節(jié)約傳承美德廣播稿范文(5篇)
- 【MOOC】信號與系統(tǒng)-南京郵電大學(xué) 中國大學(xué)慕課MOOC答案
- 《住院患者身體約束的護(hù)理》團(tuán)體標(biāo)準(zhǔn)解讀課件
- 電大??啤豆芾碛⒄Z1》2024期末試題及答案(3895號)
- 大學(xué)美育(同濟(jì)大學(xué)版)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 中國重癥患者腸外營養(yǎng)治療臨床實(shí)踐專家共識(2024)解讀
- 足三陰經(jīng)周康梅
- MOOC 跨文化交際通識通論-揚(yáng)州大學(xué) 中國大學(xué)慕課答案
- (正式版)SHT 3078-2024 立式圓筒形料倉工程設(shè)計(jì)規(guī)范
- 10000中國普通人名大全
- 數(shù)獨(dú)“六宮”練習(xí)題
- 水利工程竣工驗(yàn)收報(bào)告表格(共5頁)
評論
0/150
提交評論