




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《操作系統(tǒng)原理》實(shí)驗(yàn)報(bào)告姓名:楊遲寧學(xué)號(hào):U201217418班級(jí):軟工2班時(shí)間:備注:電子版本發(fā)送到OSCourse@163.com.禁止發(fā)到收課件郵箱!郵件主題注明:OS實(shí)驗(yàn)報(bào)告-姓名-班級(jí)一、實(shí)驗(yàn)內(nèi)容【本節(jié)分1,2,3條寫(xiě)出實(shí)驗(yàn)內(nèi)容或要求,篇幅200-400字】設(shè)計(jì)一個(gè)虛擬存儲(chǔ)區(qū)和內(nèi)存工作區(qū),并使用下列算法計(jì)算訪問(wèn)命中率。(1)進(jìn)先出的算法(FIFO)(2)最近最少使用的算法(LRU)(3)最佳淘汰算法(OPT)命中率=(1-頁(yè)面失效次數(shù))/頁(yè)地址流長(zhǎng)度二、實(shí)驗(yàn)原理【本節(jié)簡(jiǎn)要介紹每個(gè)實(shí)驗(yàn)內(nèi)容的理論背景,篇幅400-600字】三、實(shí)驗(yàn)用到的主要函數(shù)或庫(kù)【本節(jié)簡(jiǎn)要介紹每個(gè)實(shí)驗(yàn)涉及到的重要函數(shù)或庫(kù),篇幅200-400字】第一題:1.key_tftok(char*pathname,charproj)返回文件名對(duì)應(yīng)的鍵值(把消息隊(duì)列當(dāng)作文件處理)頭文件:#include<sys/types.h>#include<sys/ipc.h>pathname:文件名proj:項(xiàng)目名(不為0即可)2.intmsgget(key_tkey,intmsgflg)打開(kāi)或創(chuàng)建消息隊(duì)列頭文件:#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>key:鍵值,由ftok獲得msgflg:標(biāo)志位(IPC_CREAT,如果不存在,創(chuàng)建新的消息隊(duì)列IPC_EXCL,與IPC_CREAT一起使用,表示如果消息隊(duì)列已存在,則返回錯(cuò)誤IPC_NOWAIT,讀寫(xiě)消息隊(duì)列要求無(wú)法得到滿(mǎn)足時(shí),不阻塞)返回值:與鍵值key相對(duì)應(yīng)的消息隊(duì)列描述字,出錯(cuò)時(shí)返回-1**在以下兩種情況下,將創(chuàng)建一個(gè)新的消息隊(duì)列:a)如果沒(méi)有與鍵值key相對(duì)應(yīng)的消息隊(duì)列,并且msgflg參數(shù)中包含了IPC_CREAT標(biāo)志位b)key參數(shù)為IPC_PRIVATE3.intmsgsnd(intmsqid,structmsgbuf*msgp,intmsgsz,intmsgflg)向消息隊(duì)列中發(fā)送一條消息頭文件:#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>msqid:消息隊(duì)列id(消息隊(duì)列的描述字)msgp:存放消息的結(jié)構(gòu)(格式為:structmsgbuf{intmtype;/*消息類(lèi)型>0*/charmtex[1];/*消息數(shù)據(jù),字符數(shù)組*/};)msgsz:消息數(shù)據(jù)長(zhǎng)度msgflg:發(fā)送標(biāo)志,有意義的msgflg標(biāo)志為IPC_NOWAIT,指明消息隊(duì)列中沒(méi)有足夠空間容納要發(fā)送的消息時(shí),msgsnd是否等待,0表示等待返回值:發(fā)生錯(cuò)誤時(shí)返回-14.intmsgrcv(intmsqid,structmsgbuf*msgp,intmsgsz,longmsgtyp,intmsgflg)從消息隊(duì)列msqid中讀取一個(gè)msgtyp類(lèi)型的消息,并把消息存儲(chǔ)在msgp指向的msgbuf結(jié)構(gòu)體中。(在成功讀取后,隊(duì)列中的這條消息將被刪除)5.intmsgctl(intmsqid,intcmd,structmsqid_ds*buf)消息隊(duì)列屬性控制msqid:消息隊(duì)列的標(biāo)識(shí)符。cmd:執(zhí)行的控制命令,即要執(zhí)行的操作。(包括以下選項(xiàng):IPC_STAT:讀取消息隊(duì)列屬性。取得此隊(duì)列的msqid_ds結(jié)構(gòu),并將其存放在buf指向的結(jié)構(gòu)中。IPC_SET:設(shè)置消息隊(duì)列屬性。IPC_RMID:刪除消息隊(duì)列。IPC_INFO:讀取消息隊(duì)列基本情況。此命令等同于ipcs命令。第二題:WaitForSingleObject()DWORDWaitForSingleObject(HANDLEhHandle,DWORDdwMilliseconds);DeclareFunctionReleaseMutexLib"kernel32"Alias"ReleaseMutex"(ByValhMutex)說(shuō)明ReleaseMutex()釋放由線程擁有的一個(gè)互斥體的控制權(quán)MSDN原文:Thisfunctionreleasesownershipofthespecifiedmutexobject.返回值Long,非零表示成功,零表示失敗。會(huì)設(shè)置GetLastError參數(shù)表hMutex:Long,指定一個(gè)互斥體的句柄。注解通過(guò)為互斥體調(diào)用一個(gè)等待函數(shù),一個(gè)線程可獲得該互斥體的所有權(quán)第三題:同第二題四、編程環(huán)境和開(kāi)發(fā)工具【簡(jiǎn)要介紹每個(gè)實(shí)驗(yàn)內(nèi)容操作系統(tǒng),版本,開(kāi)發(fā)工具的名稱(chēng)和版本,以及開(kāi)發(fā)環(huán)境的配置等,篇幅300-500字】Windows7的vs2010開(kāi)發(fā)。五、實(shí)驗(yàn)步驟【本節(jié)介紹每個(gè)實(shí)驗(yàn)內(nèi)容的程序流程或思路分析和運(yùn)行界,文字的篇幅2-3頁(yè),圖不算篇幅】第一題:消息隊(duì)列可分為發(fā)送消息機(jī)制,和接受消息兩部分。消息隊(duì)列首先需要檢測(cè)是否創(chuàng)建成功。msqid=msgget(MSGKEY,IPC_EXCL);/*檢查消息隊(duì)列是否存在*/if(msqid<0){msqid=msgget(MSGKEY,IPC_CREAT|0666);/*創(chuàng)建消息隊(duì)列*/if(msqid<0){printf("failedtocreatemsq|errno=%d[%s]\n",errno,strerror(errno));exit(-1);}} 若失敗則返回,若是成功,則接收信息,然后發(fā)送消息。發(fā)送消息可利用ret_value=msgsnd(msqid,&msgs,sizeof(structmsgstru),IPC_NOWAIT);此部分完整代碼如下:printf("inputmessagetype(end:0):");scanf("%d",&msg_type);if(msg_type==0)break;printf("inputmessagetobesent:");scanf("%s",str);msgs.msgtype=msg_type;strcpy(msgs.msgtext,str);/*發(fā)送消息隊(duì)列*/ret_value=msgsnd(msqid,&msgs,sizeof(structmsgstru),IPC_NOWAIT);if(ret_value<0){printf("msgsnd()writemsgfailed,errno=%d[%s]\n",errno,strerror(errno));exit(-1);然后需要編寫(xiě)接受端代碼,接收端結(jié)構(gòu)體與發(fā)射端相同。同樣先檢測(cè)是否存在msgid=msgget(MSGKEY,IPC_EXCL);/*檢查消息隊(duì)列是否存在*/if(msgid<0){printf("msqnotexisted!errno=%d[%s]\n",errno,strerror(errno));sleep(2);為了表明接收到,將結(jié)果輸出ret_value=msgrcv(msgid,&msgs,sizeof(structmsgstru),0,0);printf("text=[%s]pid=[%d]\n",msgs.msgtext,getpid());第二題:生產(chǎn)者與消費(fèi)者問(wèn)題關(guān)鍵在于線程的同步與互斥。首先需要定義各個(gè)互斥量,和各種常量,變量名含義在后面注釋。constunsignedshortSIZE_OF_BUFFER=5;//緩o沖?區(qū)?長(zhǎng)?è度¨¨unsignedshortProductID=0;//產(chǎn)¨2品?¤號(hào)?unsignedshortConsumeID=0;//將?被à?消?耗?的ì?產(chǎn)¨2品?¤號(hào)?unsignedshortin=0;//產(chǎn)¨2品?¤進(jìn)?緩o沖?區(qū)?時(shí)o?à的ì?緩o沖?區(qū)?下?標(biāo)à¨ounsignedshortout=0;//產(chǎn)¨2品?¤出?緩o沖?區(qū)?時(shí)o?à的ì?緩o沖?區(qū)?下?標(biāo)à¨ointg_buffer[SIZE_OF_BUFFER];//緩o沖?區(qū)?是o?個(gè)?循-環(huán)?¤隊(duì)¨?列¢Dboolg_continue=true;//控?制?程¨?序¨°結(jié)¨¢束o?HANDLEg_hMutex;//用??于?¨2線?程¨?間?的ì?互£¤斥aHANDLEg_hFullSemaphore;//當(dāng)ì?à緩o沖?區(qū)?滿(mǎn)¨2時(shí)o?à迫¨¨使o1生|¨2產(chǎn)¨2者?等쨨待?yHANDLEg_hEmptySemaphore;//當(dāng)ì?à緩o沖?區(qū)?空?時(shí)o?à迫¨¨使o1消?費(fèi)¤?者?等쨨待?yDWORDWINAPIProducer(LPVOID);//生|¨2產(chǎn)¨2者?線?程¨?DWORDWINAPIConsumer(LPVOID);//消?費(fèi)¤?者?線?程¨?constunsignedshortPRODUCERS_COUNT=5;//生|¨2產(chǎn)¨2者?的ì?個(gè)?數(shù)oyconstunsignedshortCONSUMERS_COUNT=5;//消?費(fèi)¤?者?的ì?個(gè)?數(shù)oy//總á¨1的ì?線?程¨?數(shù)oyconstunsignedshortTHREADS_COUNT=PRODUCERS_COUNT+CONSUMERS_COUNT;HANDLEhThreads[PRODUCERS_COUNT];//各??線?程¨?的ì?handleDWORDproducerID[CONSUMERS_COUNT];//生|¨2產(chǎn)¨2者?線?程¨?的ì?標(biāo)à¨o識(shí)o?符¤?DWORDconsumerID[THREADS_COUNT];//消?費(fèi)¤?者?線?程¨?的ì?標(biāo)à¨o識(shí)o?符¤?接下來(lái)創(chuàng)建消費(fèi)者和生產(chǎn)者的線程for(inti=0;i<PRODUCERS_COUNT;++i){hThreads[i]=CreateThread(NULL,0,Producer,NULL,0,&producerID[i]);if(hThreads[i]==NULL)return-1;}//創(chuàng)???建?§消?費(fèi)¤?者?線?程¨?
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CAQI 092-2019食用豌豆纖維
- T/CAPMA 4-2018熟水貂皮質(zhì)量檢驗(yàn)
- 城市配送面試題及答案
- 德國(guó)設(shè)計(jì)面試題及答案
- 一線互聯(lián)網(wǎng)公司java面試題及答案
- 健康顧問(wèn)面試題及答案
- 技術(shù)保障考試題及答案
- 公司招人面試題庫(kù)及答案
- 無(wú)頂冠狀靜脈竇綜合征的臨床護(hù)理
- 人生課件介紹
- 《現(xiàn)代漢語(yǔ)》課件-句型與句式
- 齊魯文化(齊魯師范學(xué)院)知到智慧樹(shù)章節(jié)答案
- 2024年公務(wù)員考試:視頻培訓(xùn)課程報(bào)名指南
- 三年級(jí)語(yǔ)文下冊(cè)期末復(fù)習(xí)九大專(zhuān)項(xiàng)
- 人教版小學(xué)四年級(jí)數(shù)學(xué)下冊(cè)課后練習(xí)試題大全
- 2025年人教版生物中考總復(fù)習(xí)知識(shí)網(wǎng)絡(luò)提綱
- 心肺復(fù)蘇試題及答案
- 地坪漆售后服務(wù)措施
- 2025年九省聯(lián)考新高考 英語(yǔ)試卷(含答案解析)
- 《Python程序設(shè)計(jì)基礎(chǔ)教程(微課版)》全套教學(xué)課件
- 鹽堿地質(zhì)量等級(jí)評(píng)價(jià)技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論