2023年操作系統(tǒng)實驗報告9_第1頁
2023年操作系統(tǒng)實驗報告9_第2頁
2023年操作系統(tǒng)實驗報告9_第3頁
2023年操作系統(tǒng)實驗報告9_第4頁
2023年操作系統(tǒng)實驗報告9_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

甘肅政法學院本科生實驗報告(五)姓名:楊青虎學院:計算機科學學院專業(yè):計算機科學與技術班級:2023級計本班實驗課程名稱:操作系統(tǒng)實驗實驗日期:2023年6月20日指導教師及職稱:何珍祥實驗成績:開課時間:2023-2023學年第二學期甘肅政法學院實驗管理中心印制

實驗題目進程間的共享存貯和信號量通信小組合作否姓名楊青虎班級2023級計本學號一、實驗目的⑴理解和掌握使用信號量機制來實現進程之間的同步和互斥。(2)理解共享主存段機制由通信雙方直接訪問某些共享虛擬存儲空間。(3)理解一個共享主存段一旦被附加到自己的虛擬存儲空間后,對它的訪問與具他虛擬地址的訪問完全相同。二.實驗環(huán)境WindowsXP+Linux虛擬機三、實驗內容與環(huán)節(jié)1.信號量機制在UNIX系統(tǒng)V中,一個或多個信號量構成一個信號量集合。使用信號量機制用來實現進程間的同步和互斥,允許并發(fā)進程一次對一組信號量進行相同或不同的操作。每個P,V操作不限于減1或加1,而是可以加減任何整數。在進程終止時,系統(tǒng)可以根據需要自動消除所有被進程操作過的信號量的影響。進入VM虛擬機中,右擊屏幕,選擇“新建終端”,打開終端,輸入命令”vi16.6.c”,新建一個名為“16.6.c”的用信號量機制進行進程間通信的C語言程序,其程序代碼如下圖1所示:winciuucvsiaio.n?"「^include<sidlib.h>,include<unisld.h>finclude<tint.h>include<sys/typcs.h>findude<sys/wail.h>lindudeOinux/semh>K加fineNUM_PROCS5IdefineSEMID250^defineFILE.N^E*inp/scm^ErIdefineDELAY400000Voidupdatefile(inisemseiid,char*fiIenamepath.ininunber)1I--1stru-Iscnt)ufscm_op:FILE*filc:scm_op.scm_numc0;scm_op.scm_op="I:scm_op.sem_flg=0:$cgp(scm_$clid,&scm_op.1):file=fopen(fiIjnanrpalh,”/’):if(file)((printf(fiIe.">(i\nM.nunber):圖116.6.c代碼用“Esc+:wq",退出并保存程序“16.6.c”,在終端輸入“gee16.6.c-o16.6”對程序進行編譯,假如編譯沒有錯誤,繼續(xù)在終端輸入”./16.6”,運營信號量機制進行進程間通信的程序“16.6.c”,即可看到程序結果淇運營截圖如下圖2所示:[root^locaIhostroot]#cd/mit/usb/Linux[root@locaIhostLinux]#Is15.115.315.516.116.4abc,clest15.1.c15.3.c155c16.8c.txtles1115.215.415.616.316.6p34tesll.c16.6.cabcp34.clesI.c[root@locaIhostLinux]#./!6.6435443544354435543554355435643564356Y4357143574357435843584358nilinisdone[root^locaIhostLinux]#|圖2程序運營截圖分析:本程序中創(chuàng)建了5個并發(fā)子進程,互斥地對文獻進行寫操作,將自己的進程號寫到文獻中去,信號量的初值為1,本地一個進程執(zhí)行叩date.fi1e函數時一方面將信號量值-1,(相稱于P操作)致使其它進程等待無法操作文獻,直到其結束后,將其值變?yōu)?后(相稱于V操作),其它進程并發(fā)競爭對文獻的寫操作,并將自己的pid寫入文獻中。2.共享主存段機制共享主存段為進程提供了直接通過主存進行通信的有效手段,不像消息緩存機制那樣需要系統(tǒng)提供緩存,也不像pipe機制那樣需要事先建立一個特殊文獻,而是有通信雙方直接訪問某些共享虛擬存儲器空間。在系統(tǒng)V中,系統(tǒng)管理一組共享主存段控制塊。通信進程在使用共享主存段以前,一方面提出申請,系統(tǒng)為止分派存儲空間并返回共享主存段標記號。一個共享段建立后,進程把它被附加到自己的虛擬存儲空間中。一個進程可以附加多個共享主存段。一個主存段一旦被附加到進程的虛擬機空間后,對它的訪問以其他虛擬機的訪問完全相同。但為了保證共享主存段數據完整性,通信的進程之間要互斥的進行訪問。當通信進程不再需要該共享主存段時,可使用命令將其與進程分離,從而使其進程的虛空間刪除。進入VM虛擬機中,右擊屏幕,選擇“新建終端”,打開終端,輸入命令、i16.7.c”和“vi16.8.c”,新建兩個用共享主存段機制進行進程間通信的C語言程序,其程序代碼如下圖3和4所示:iQincludc<sys/1ypcs.h>#includc<sys/ipc.h>#include<sys/shm.h>#includc<sIdio.h>^defineSIIXKEY75^defineK1024intshmid:nuin()(inIi.*pint:char*addr:externchar?shnut():shmid=shnKe((SH\KEY.I6*KJ)777|IPCCREAT):addr-shrm((shmid.0.0):printf("addrox%x\n".addr):pint=(int*)addr:for(i=0:i<256:i1)pint=(int*)addr:?pint=256:pausc():圖3代碼|include<sys/types.h>^includc<sys/ipc.h>includc<sys/shm.h>^defineSI^KEY75#defineK1024intshmid:miin()(inti.*pint:char*addr:externchar*shrrut():shmid=shnKC((S?\KEY.8*K,0777):addrsshmit(shmid.0.0):pint=(int*)addr:iIc(*pint==0):for(i?0:i<256:i++)printf("%d\n",?pint**):}圖416.8.c代碼用“Esc+:wq",分別退出并保存程序“167c”和“16.8.C”,在終端輸入“gcc16.7.c-o16.7”和“gcc16.8.c-o16.8”對程序進行編譯,假如編譯沒有錯誤,繼續(xù)在終端輸入“?/16.7&”和“./I6.8”,運營程序,即可看到程序結果,其運營截圖如下圖5所示:

.rool^locaIhostrootJffvi16.7.c;rootHocaIhostroot]#gcc16.7.c-o16.7;root^locaIhostroot]#./167&:1]10754iddrox40017000;root^locaIhostroot]#vi168.c:root^locaIhostroot]#gcc168.c-o168;roo1^*1ocaIhostroot]#./16.8>561>5I)ri10H12131415圖5程序運營截圖分析:一方面進程向共享段寫信息。該進程創(chuàng)建了長度為16K的共享主存段,并將共享段附加到了地址空間為Addr的地址上。然后從共享段的起始單元開始寫入0?255個自然數。等待接受進程讀。然后進程從共享段讀信息的例子,該進程一方面將進程寫信息共享段的共享段連接到自己的地址空間,之后,判斷共享段是否有信息,若無則等待,否則,讀信息并顯示。write進程創(chuàng)建了長度16k的共享主存段,并將共享段附加到了地址空間為addr的地址上,也顯示了addr的值,然后從共享段的起始單元開始寫入0—255個自然數,然后將首地址賦值為256,故讀進程read運營后,第一個數顯示256,后面是1-255o這個程序最佳在ro。t下運營,在一般用戶下運營不出結果。四、實驗過程與分析在做實驗的過程中,我了解到了信號量機制和共享主存段機制進行通信。使用信號量機制用來實現進程之間的同步和互斥,允許并發(fā)進程一次對一組信號量進行相同或不同的操作。每個P、V操作不限于減1或加1,而是可以加減任何整數。在進程終止時,系統(tǒng)可根據需要自動消除所有被進程操作過的信號量的影響。共享主存段為進程提供了直接通過主存進行通信的有效手段,不像消息緩沖機制那樣需要系

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論