




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、歐陽家百創(chuàng)編軟件學(xué)院歐陽家百上機(jī)實(shí)驗(yàn)報告課程名稱:操作系統(tǒng)實(shí)驗(yàn)項(xiàng)目:實(shí)驗(yàn)一:Linux環(huán)境下逬程管理實(shí)驗(yàn)室:耘慧402姓名:學(xué)號:專業(yè)班級:實(shí)驗(yàn)時間:實(shí)驗(yàn)成績評閱教師內(nèi)存的申請等預(yù)備知識。五、實(shí)驗(yàn)內(nèi)容及步驟 實(shí)驗(yàn)內(nèi)容:(1) 進(jìn)程的創(chuàng)建編寫一段程序,使用系統(tǒng)調(diào)用fork ()創(chuàng)建兩個子進(jìn)程。當(dāng)此程序運(yùn)行時,在系 統(tǒng)中有一個父進(jìn)程和兩個子進(jìn)程活動。讓每一個進(jìn)程在屏幕上顯示一個字符:父進(jìn)程顯 示字符“訂;子進(jìn)程分別顯示字符“b”和字符“c”。試觀察記錄屏幕上的顯示結(jié) 果,并分析原因。(2) 進(jìn)程的控制修改已編寫的程序,將每個進(jìn)程輸出一個字符改為每個進(jìn)程輸出一句話,再觀察程 序執(zhí)行時屏幕上出現(xiàn)的現(xiàn)象
2、,并分析原因。如果在程序中使用系統(tǒng)調(diào)用lockf ()來給每一個進(jìn)程加鎖,可以實(shí)現(xiàn)進(jìn)程之間的 互斥,觀察并分析出現(xiàn)的現(xiàn)象。(3) 用fork()創(chuàng)建一個進(jìn)程,再調(diào)用exec()用新的程序替換該子進(jìn)程的內(nèi)容; 利用wait()來控制進(jìn)程執(zhí)行順序。 實(shí)驗(yàn)步驟:1.進(jìn)程的創(chuàng)建1.1進(jìn)程UNIX中,進(jìn)程既是一個獨(dú)立擁有資源的基本單位,乂是一個獨(dú)立調(diào)度的基本單 位。一個進(jìn)程實(shí)體由若干個區(qū)(段)組成,包括程序區(qū)、數(shù)據(jù)區(qū)、棧區(qū)、共享存儲區(qū) 等。每個區(qū)乂分為若干頁,每個進(jìn)程配置有唯一的進(jìn)程控制塊PCB,用于控制和管理進(jìn) 程。PCB的數(shù)據(jù)結(jié)構(gòu)如下:(1) 進(jìn)程表項(xiàng)(Process Table Entry)。包括
3、一些最常用的核心數(shù)據(jù): 進(jìn)程標(biāo)識符PID、用戶標(biāo)識符UID、進(jìn)程狀態(tài)、事件描述符、進(jìn)程和U區(qū)在內(nèi)存或外存的地址、軟中斷信號、計(jì)時域、進(jìn)程的大小、偏置值nice、指向就緒隊(duì)列中下 一個PCB的指針P_Link、指向U區(qū)進(jìn)程正文、數(shù)據(jù)及棧在內(nèi)存區(qū)域的指針。(2) U區(qū)(U Area)。用于存放進(jìn)程表項(xiàng)的一些擴(kuò)充信息。每一個進(jìn)程都有一個私用的U區(qū),其中含有:進(jìn)程表項(xiàng)指針、真正用戶標(biāo)識符歐陽家百創(chuàng)編 u-ruid(read user ID)、有效用戶標(biāo)識符 ueuid(effective user ID)、用戶文件 描述符表、計(jì)時器、內(nèi)部I/O參數(shù)、限制字段、差錯字段、返回值、信號處理數(shù)組。曲于UNI
4、X系統(tǒng)釆用段頁式存儲管理,為了把段的起始虛地址變換為段在系統(tǒng)中 的物理地址,便于實(shí)現(xiàn)區(qū)的共享,所以還有:(3) 系統(tǒng)區(qū)表項(xiàng)。以存放各個段在物理存儲器中的位置等信息。系統(tǒng)把一個進(jìn)程的虛地址空間劃分為若干個連續(xù)的邏輯區(qū),有正文區(qū)、數(shù)據(jù) 區(qū)、棧區(qū)等。這些區(qū)是可被共享和保護(hù)的獨(dú)立實(shí)體,多個進(jìn)程可共享一個區(qū)。為了對區(qū) 進(jìn)行管理,核心中設(shè)置一個系統(tǒng)區(qū)表,各表項(xiàng)中記錄了以下有關(guān)描述活動區(qū)的信息:區(qū)的類型和大小、區(qū)的狀態(tài)、區(qū)在物理存儲器中的位置、引用計(jì)數(shù)、指向文件 索引結(jié)點(diǎn)的指針。(4) 進(jìn)程區(qū)表系統(tǒng)為每個進(jìn)程配置了一張進(jìn)程區(qū)表。表中,每一項(xiàng)記錄一個區(qū)的起始虛地址 及指向系統(tǒng)區(qū)表中對應(yīng)的區(qū)表項(xiàng)。核心通過查找進(jìn)
5、程區(qū)表和系統(tǒng)區(qū)表,便可將區(qū)的邏輯 地址變換為物理地址。1. 2進(jìn)程映像UNIX系統(tǒng)中,進(jìn)程是進(jìn)程映像的執(zhí)行過程,也就是正在執(zhí)行的進(jìn)程實(shí)體。它山 三部分組成:(1) 用戶級上、下文。主要成分是用戶程序;(2) 寄存器上、下文。由CPI;中的一些寄存器的內(nèi)容組成,如PC, PSW, SP及 通用寄存器等;(3) 系統(tǒng)級上、下文。包括OS為管理進(jìn)程所用的信息,有靜態(tài)和動態(tài)之分。1.3所涉及的系統(tǒng)調(diào)用fork()創(chuàng)建一個新進(jìn)程。系統(tǒng)調(diào)用格式:pid=fork()參數(shù)定義:int fork()fork()返回值意義如下:0:在子進(jìn)程中,pid變量保存的fork()返回值為0,表示當(dāng)前進(jìn)程是子進(jìn)程。0:在
6、父進(jìn)程中,pid變量保存的fork()返回值為子進(jìn)程的id值(進(jìn)程唯一 標(biāo)識符)。-1:創(chuàng)建失敗。如果fork()調(diào)用成功,它向父進(jìn)程返回子進(jìn)程的PID,并向子進(jìn)程返回0,即 fork()被調(diào)用了一次,但返回了兩次。此時OS在內(nèi)存中建立一個新進(jìn)程,所建的新進(jìn) 程是調(diào)用fork()父進(jìn)程(parent process )的副本,稱為子進(jìn)程(child process)。子進(jìn)程繼承了父進(jìn)程的許多特性,并具有與父進(jìn)程完全相同的用戶級上下 文。父進(jìn)程與子進(jìn)程并發(fā)執(zhí)行。1.4核心為fork()完成以下操作(1) 為新進(jìn)程分配一進(jìn)程表項(xiàng)和進(jìn)程標(biāo)識符進(jìn)入fork()后,核心檢查系統(tǒng)是否有足夠的資源來建立一個
7、新進(jìn)程。若資源 不足,則fork()系統(tǒng)調(diào)用失??;否則,核心為新進(jìn)程分配一進(jìn)程表項(xiàng)和唯一的進(jìn)程標(biāo) 識符。(2) 檢查同時運(yùn)行的進(jìn)程數(shù)訂超過預(yù)先規(guī)定的最大數(shù)LI時,fork()系統(tǒng)調(diào)用失敗。(3) 拷貝進(jìn)程表項(xiàng)中的數(shù)據(jù)將父進(jìn)程的當(dāng)前LI錄和所有已打開的數(shù)據(jù)拷貝到子進(jìn)程表項(xiàng)中,并置進(jìn)程的狀 態(tài)為“創(chuàng)建”狀態(tài)。(4) 子進(jìn)程繼承父進(jìn)程的所有文件對父進(jìn)程當(dāng)前LI錄和所有已打開的文件表項(xiàng)中的引用計(jì)數(shù)加lo(5) 為子進(jìn)程創(chuàng)建進(jìn)程上、下文進(jìn)程創(chuàng)建結(jié)束,設(shè)子進(jìn)程狀態(tài)為“內(nèi)存中就緒”并返回子進(jìn)程的標(biāo)識符。(6) 子進(jìn)程執(zhí)行雖然父進(jìn)程與子進(jìn)程程序完全相同,但每個進(jìn)程都有自己的程序計(jì)數(shù)器PC(注 意子進(jìn)程的PC開
8、始位置),然后根據(jù)pid變量保存的fork()返回值的不同,執(zhí)行了 不同的分支語句。六、實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析運(yùn)行結(jié)果1廠回root(g)stud ent: /卓面_ X文件(F)漏輯(E查香2玻續(xù)(S) 終端幫助(HrooWstudent 黨面JJrootstudentrootstudentrootstudentrootstudentrootstudentrootstudent 桌面# ,/cbash:,/c:沒有那個文件或目錄rootstudentgcc -o vvvrootstudent MffiS ./ vvvbash: ./: is a directoryrooWstudent 童面fi
9、 gcc -o fffrooWstudent 桌面# . /fffab rooWstudent 桌面# cQ分析:山于函數(shù)printfO輸出的字符串之間不會被中斷,因此,每個字符串內(nèi)部的桌面# 桌面# 莫面M 莫面# 車面Mgcc -o hahaha javac ./hahahagcc -o ZZ2 ./zzzgcc -o qqqjava, cjava, cjava, cjava, c字符順序輸岀時不變。但是,山于進(jìn)程并發(fā)執(zhí)行時的調(diào)度順序和父子進(jìn)程的搶占處理機(jī)問題,輸出字符串的順序和先后隨著執(zhí)行的不同而發(fā)生變化。這與打印單字符的結(jié)果相同。運(yùn)行結(jié)果2i roowstenx amj* gcc o
10、ccc rarentla/roarent 15/rparent 16/wrent 17/rparent 18/nparent 19/nparent 20/nwrent Zl/nparent 2 2/npererit 23/freit 2Vrfent28阿値 2np3r“t 28/npirw 2d/nparent 30/npdret 31/nprrt 32/rrent 矽g鹿ni35Zflpdrert 36/nparent 37/rsrent 38/nparent 39/nparent 40/npsrent 41/parent 42/grent 43/rcarent 44/WWT 45/wren
11、t 46Zrcerent 4?Zftpdre*n 4&/npdft50/wrent 51/npart 52/nrerit 53/rrnt您ni56Znpdre*it 5?/npdrt 58/nparen: 59/nparent 60/nparent 61/nparent 62/wrent 63/rarent 64/rarent 65/npare nt 54/rcent68Znpart 69/npdrnt Wn(rT ?l/wrnt ?2/4艸273/nrert 74/0“ni ?5ZrrenT ?6Zrdrent ?Znpdf6ftt 7/npareftt Wnrr.x 如 nparent 8
12、1/nparent 32/nwrert S3/r3rent 34/rparent 85/)arent 86/nparent 3T/npa rant 88/ru“t fift/npartd2/rarant O3/ftougMer /ndaughter 7/ndaughter B/nda uhtcr OZndautr lO/ntewtar n/ruqhtcr lS/ndauhtrw/rrfaughxe5)hxer 18ZrdduQHer 19/mhughl O)ZM#jghte r 21.ndJ9hter 22/ndaughter 23/ntoJ9hter 24/Miughter 25/ndaii
13、ter /ndaughter 2?/ntouchier F/Mjughter 2&/ndau9hter3i/rdau9hter a/nd&uhter 33/nddughte*3$/r/ndttu9hter BO/ndaughier 5i/ndau9 hxer 52/rdauohUr $3/ndiughter SVnjghxer SSZnddujter 56/e如hl 57/心uQhl er M/ndaughter SB/ndaujhter GO/ndauhter 61/ncaughter 62/ndaj9htr 63/ndoughter * 分析:因?yàn)樯鲜龀绦驁?zhí)行時,lockf (1,1,0)
14、鎖定標(biāo)準(zhǔn)輸出設(shè)備,lockf(l,0, 0)解鎖標(biāo)準(zhǔn)輸出設(shè)備,在lockf(l, 1,0)與lockf(l,0, 0)中間的for循環(huán)輸岀不會被中斷,加鎖與 不加鎖效果不相同。運(yùn)行結(jié)果3rwxr-xr-x1root7246bee1166J2v/orld rw1root283Dec100051test crw-r1root283Dec100651rtst.cr1root263Dec1101G4testl.crw-r1root611Dec11QIG4testl.crw-r1root0Dec70352Javal.rw-r1root99Dec70352Javal. jaw1root415Dec7035
15、2Javal.class rv/xr-xr-x 1root7246Dec11QG20hellorw-rr.1root0Dec100G24a.txtrw-1oot7Dec100024a. txtrwxr1root7261Dec100054a.out5 completed root(aiocalhostDesktop# L分析:程序在調(diào)用fork()建立一個子進(jìn)程后,馬上調(diào)用wait(),使父進(jìn)程在子進(jìn)程 結(jié)束之前,一直處于睡眠狀態(tài)。子進(jìn)程用exec()裝入命令I(lǐng)s , exec()后,子進(jìn)程的 代碼被Is的代碼取代,這時子進(jìn)程的PC指向Is的第1條語句,開始執(zhí)行Is的命令代 碼。七、實(shí)驗(yàn)總結(jié)經(jīng)過
16、這次上機(jī)實(shí)驗(yàn)的學(xué)習(xí),我們一共做了三道題,碰到的第一問題是Linux系統(tǒng)并非我 們通常使用的Windows系統(tǒng),還未上手便已產(chǎn)生畏懼的心理;碰到的第二個問題,在剛 開始搭建環(huán)境的時候,.后面的的并非手打而是按Tab鍵引出之后的代碼,之后陸陸續(xù) 續(xù)的一些小問題,在老師、學(xué)長耐心的幫助下相對輕松地解決了,相比在課堂上老師的 講解與課件的演示,最大的不同是我更加的直觀且真實(shí)觸摸到了這一學(xué)科,在實(shí)踐的過 程中明口了當(dāng)時邏輯并不清晰的抽象問題一一什么是進(jìn)程,我想在實(shí)踐的過程中我會更 加熱愛這個學(xué)科并受益匪淺。附錄源程序清單程序1#includestdio. hvoid main()int pl, p2;w
17、hile(pl=fork() =-l);if (pl=0) put char ( b);elsewhile(p2=fork() =-l);if (p2=0) putchar ( c);else putchar (,a);程序2#include #includemain()int pl, p2, i ;while(pl=fork() =-l);if (pl=0)lockf (1, 1, 0);for(i=0;i50;i+)printf(child %d/n, i); lockf (1,0, 0);elsewhile(p2=fork() =1);if (p2=0)lockf (1, 1, 0);for(i=0;i50;i+)printf (z/son %d/n, i); lockf (1,0, 0);elselockf (1, 1, 0);for(i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆四川省綿陽市部分校中考生物對點(diǎn)突破模擬試卷含解析
- 農(nóng)戶鏟車出售合同范例
- 代理勞務(wù)派遣工合同范例
- 出租單價合同范例
- 第三單元 第1節(jié) 溫度 教學(xué)設(shè)計(jì)- 2024-2025學(xué)年人教版物理 八年級上冊
- 勞務(wù)總包合同范本
- 因材施教的個性化教育計(jì)劃
- 城建行業(yè)保安工作總結(jié)計(jì)劃
- 前臺文員的職業(yè)培訓(xùn)與發(fā)展路徑計(jì)劃
- 分析不同財務(wù)工具的適用場景計(jì)劃
- 貝利嬰幼兒發(fā)展量表
- 血液透常見并發(fā)癥及處理課件
- 全國中小學(xué)幼兒園教職工安全素養(yǎng)培訓(xùn)課程試題
- 長輸管道工程施工組織設(shè)計(jì)
- 說課比賽一等獎《醫(yī)用化學(xué)》說課課件
- 靜設(shè)備安裝課件(PPT 91頁)
- 英格索蘭空壓機(jī)知識
- 2022年度高等學(xué)校科學(xué)研究優(yōu)秀成果獎(科學(xué)技術(shù))提名工作手冊
- 完整版地下人防工程施工方案
- (完整word版)格拉布斯(Grubbs)臨界值表
- 汽車離合器的檢測與維修畢業(yè)論文
評論
0/150
提交評論