操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

操作系統(tǒng)試驗(yàn)匯報(bào)書(shū)院部名稱:學(xué)生姓名:專業(yè)名稱:班級(jí):學(xué)號(hào):時(shí)間:TOC\o"1-2"\h\z\u試驗(yàn)一:巡回置換算法(2課時(shí)) 2試驗(yàn)二:生產(chǎn)者與消費(fèi)者問(wèn)題(4課時(shí)) 3試驗(yàn)三:存放管理(4課時(shí)) 7試驗(yàn)一:巡回置換算法(2課時(shí))試驗(yàn)內(nèi)容巡回置換指k屬于[1:n]時(shí),k=p[…p[k]…]置換。設(shè)i=1,2,3,4,5,6,7;p[i]=4,7,3,1,2,5,6;p[i]巡回置換算法描述:beginlocalx,k;//x,k為局部變量//k=1;whilek<=7dox=k;repeatprint(x);x=p[x];untilx==k;k++;odend要求經(jīng)過(guò)程序設(shè)計(jì)得出其運(yùn)算結(jié)果。試驗(yàn)過(guò)程及分析clc,clear;p=[4732156];k=1;whilek<=7b=[];x=k;b=[bx];x=p(k);whilex~=k;b=[bx];x=p(x);endk=k+1;bend4、試驗(yàn)小結(jié):知道了循環(huán)控制試驗(yàn)二:生產(chǎn)者與消費(fèi)者問(wèn)題(4課時(shí))試驗(yàn)過(guò)程及分析#include<stdio.h>#include<stdlib.h>#include<time.h>#include"pthread.h"#include"semaphore.h"#ifndef_OSCONFIG_#define_OSCONFIG_#ifdef_WIN32#include<windows.h>#defineCLOCK(t)t=clock()#defineSLEEP(millisecond)Sleep(millisecond)#pragmacomment(lib,"pthreadVC2.lib")#else#include<sys/time.h>#include<unistd.h>timevala;#defineCLOCK(t)gettimeofday(&a,0),t=(a.tv_sec*1000+a.tv_usec/1000)#defineSLEEP(millisecond)usleep((millisecond)*1000)#endif#endif#ifndef_BUFFER_#define_BUFFER_typedefintbuffer_item;#defineBUFFER_SIZE5buffer_itembuffer[BUFFER_SIZE];intcurrentSize=0;intcurrentIndex=0;intinsert_item(buffer_itemitem){returncurrentSize<BUFFER_SIZE?(buffer[(currentIndex+currentSize++)%BUFFER_SIZE]=item,1):0;}intremove_item(buffer_item*item){return(currentSize&&buffer[currentIndex]==*item)?(--currentSize,currentIndex=(currentIndex+1)%BUFFER_SIZE,1):0;}#endifpthread_mutex_tmutex;sem_tfull;sem_tempty;clock_tthreadStart;#definePTIMESPANMAX5000void*producer(void*params){intid=*(int*)params;while(true){SLEEP(rand()%PTIMESPANMAX);buffer_itemrnd=rand();longbegin,end;CLOCK(begin);printf("%ld:\tProducer%d\tproduced%d\n",(long)(begin-threadStart),id,rnd);sem_wait(&empty);pthread_mutex_lock(&mutex);(CLOCK(end),insert_item(rnd))?printf("%ld:\tProducer%d\thaveput%d\tafter%d\tmilliseconds\n",end-threadStart,id,rnd,end-begin):printf("%ld:\tProducer%d\tReportError!\n",end-threadStart,id);pthread_mutex_unlock(&mutex);sem_post(&full);}}#defineCTIMESPANMAX5000void*consumer(void*params){intid=*(int*)params;while(true){SLEEP(rand()%CTIMESPANMAX);longbegin,end;CLOCK(begin);printf("%ld:\tConsumer%d\twanttoconsume\n",begin-threadStart,id);sem_wait(&full);pthread_mutex_lock(&mutex);buffer_itemitem=buffer[currentIndex];(CLOCK(end),remove_item(&item))?printf("%ld:\tConsumer%d\tconsumed%d\tafter%d\tmilliseconds\n",end-threadStart,id,item,end-begin):printf("%ld:\tConsumer%d\tReportError!\n",end-threadStart,id);pthread_mutex_unlock(&mutex);sem_post(&empty);}}intmain(intargc,char*argv[]){srand(time(0));pthread_mutex_init(&mutex,NULL);sem_init(&full,0,BUFFER_SIZE);sem_init(&empty,0,BUFFER_SIZE);inti=0;for(i=0;i<BUFFER_SIZE;i++)sem_wait(&full);intsleepTime=0;intproducerCount=0;intconsumerCount=0;if(argc==4){sscanf(argv[1],"%d",&sleepTime);sscanf(argv[2],"%d",&producerCount);sscanf(argv[3],"%d",&consumerCount);}else{printf("Howlongtosleepbeforeterminating:");scanf("%d",&sleepTime);printf("Thenumberofproducerthreads:");scanf("%d",&producerCount);printf("Thenumberofconsumerthreads:");scanf("%d",&consumerCount);}CLOCK(threadStart);for(i=0;i<producerCount;i++){pthread_tpid;pthread_create(&pid,NULL,producer,(void*)&i);SLEEP(1);}for(i=0;i<consumerCount;i++){pthread_tpid;pthread_create(&pid,NULL,consumer,(void*)&i);SLEEP(1);}SLEEP(sleepTime);printf("Endoftime\n");return0;}關(guān)于處理pthread.h找不到問(wèn)題:1.在你班位置,找到include文件夾,把里面三個(gè)頭文件復(fù)制到"C:\ProgramFiles\MicrosoftVisualStudio\VC98\Include"位置。2.在你班位置,找到lib文件夾,把里面全部文件復(fù)制到"C:\ProgramFiles\MicrosoftVisualStudio\VC98\lib"位置.3.在你班位置,找到lib文件夾,找到pthreadvc2.dll,復(fù)制到"C:\WINDOWS\system32"位置,只有這么,你程序才能夠正確運(yùn)行。4、試驗(yàn)小結(jié):試驗(yàn)三:存放管理(4課時(shí))頁(yè)面置換算法程序代碼:#include<stdio.h>#include<string.h>#include<iostream.h>constintMAXSIZE=1000;constintMAXQUEUE=3;typedefstructnode{intloaded;inthit;}page;pagepages[MAXQUEUE];intqueue[MAXSIZE];intquantity;voidinitial(){ inti; for(i=0;i<MAXQUEUE;i++) { pages[i].loaded=-1; pages[i].hit=0;} for(i=0;i<MAXSIZE;i++) { queue[i]=-1; } quantity=0;}voidinit(){ inti; for(i=0;i<MAXQUEUE;i++) { pages[i].loaded=-1; pages[i].hit=0; }}voidreadData(){ FILE*fp; charfname[20]; inti; cout<<"請(qǐng)輸入頁(yè)面流文件名:"; cin>>fname; if((fp=fopen(fname,"r"))==NULL) { cout<<"錯(cuò)誤,文件打不開(kāi),請(qǐng)檢驗(yàn)文件名"; } else { while(!feof(fp)) { fscanf(fp,"%d",&queue[quantity]); quantity++; } } cout<<"讀入頁(yè)面流:"; for(i=0;i<quantity;i++) { cout<<queue[i]<<""; }}voidFIFO(){ inti,j,p,flag; intabsence=0; p=0; cout<<endl<<""<<endl; cout<<"先進(jìn)先出調(diào)度算法(FIFO)頁(yè)面調(diào)出流:"; for(i=0;i<quantity;i++) {flag=0; for(j=0;j<MAXQUEUE;j++) { if(pages[j].loaded==queue[i]) {flag=1;} } if(flag==0) { if(absence>=MAXQUEUE) {cout<<pages[p].loaded<<"";} pages[p].loaded=queue[i]; p=(p+1)%MAXQUEUE; absence++; } } absence-=MAXQUEUE; cout<<endl<<"總?cè)表?yè)數(shù):"<<absence<<endl;}voidLRU(){ intabsence=0; inti,j; intflag; for(i=0;i<MAXQUEUE;i++) {pages[i].loaded=queue[i];} cout<<endl<<""<<endl; cout<<"最近最少使用調(diào)度算法(LRU)頁(yè)面流:"; for(i

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論