![操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書_第1頁](http://file4.renrendoc.com/view/87c432788c452e4a3404e19c9b38b8a3/87c432788c452e4a3404e19c9b38b8a31.gif)
![操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書_第2頁](http://file4.renrendoc.com/view/87c432788c452e4a3404e19c9b38b8a3/87c432788c452e4a3404e19c9b38b8a32.gif)
![操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書_第3頁](http://file4.renrendoc.com/view/87c432788c452e4a3404e19c9b38b8a3/87c432788c452e4a3404e19c9b38b8a33.gif)
![操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書_第4頁](http://file4.renrendoc.com/view/87c432788c452e4a3404e19c9b38b8a3/87c432788c452e4a3404e19c9b38b8a34.gif)
![操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書_第5頁](http://file4.renrendoc.com/view/87c432788c452e4a3404e19c9b38b8a3/87c432788c452e4a3404e19c9b38b8a35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE27版本號:1.0版本號:1.0撰寫人:孫自廣日期:2014-01-27操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(Linux版)廣西工學(xué)院計(jì)算機(jī)工程系2014年01月
前言操作系統(tǒng)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)(軟件工程方向)的一門非常重要的專業(yè)課程,操作系統(tǒng)是應(yīng)用軟件與底層硬件的橋梁。通俗的說“只有搞懂了操作系統(tǒng),才能真正理解計(jì)算機(jī)”。學(xué)好操作系統(tǒng)課程可以提升學(xué)生應(yīng)用計(jì)算機(jī)解決問題的能力,并獲得開發(fā)大型復(fù)雜軟件的經(jīng)驗(yàn)。操作系統(tǒng)至關(guān)重要,但學(xué)好它并不容易。雖然Windows界面友好,方便使用,但是底層運(yùn)行機(jī)制被有效的隱藏,在很多人眼里計(jì)算機(jī)還是一個黑匣子。在選擇教學(xué)用操作系統(tǒng)上頗費(fèi)苦心,目前可用于教學(xué)的操作系統(tǒng)有Minix,Nochos,Geekos,JOS,F(xiàn)reeBSD等,而Linux不僅是開源的,而且資料豐富并擁有大量的應(yīng)用軟件,所有我們選擇了Linux作為實(shí)驗(yàn)的平臺。本實(shí)驗(yàn)指導(dǎo)書參閱了很多網(wǎng)上的優(yōu)秀資源,在此對提供這些資源的作者,表示感謝。
目錄TOC\o"1-2"\h\z\u前言 21.操作系統(tǒng)實(shí)驗(yàn)概述 41.1實(shí)驗(yàn)平臺及工具 41.2基本內(nèi)容 51.3考核規(guī)則 52.系統(tǒng)應(yīng)用實(shí)驗(yàn)項(xiàng)目 62.2Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目2:shell基本命令 82.3Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目3:文件編輯 102.5Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目5:文件安全 162.6Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目6:基本文件處理 182.7Lix應(yīng)用實(shí)驗(yàn)項(xiàng)目7:高級文件處理 212.9Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目8:管道與I/O重定向 232.10Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目9:進(jìn)程 243.系統(tǒng)開發(fā)實(shí)驗(yàn)項(xiàng)目 273.1Lix進(jìn)程創(chuàng)建 293.2進(jìn)程軟中斷通信 343.3進(jìn)程管道通信 371.操作系統(tǒng)實(shí)驗(yàn)概述實(shí)踐對于操作系統(tǒng)課程是至關(guān)重要的,但這種實(shí)踐決不應(yīng)該僅僅停留在某些算法的模擬實(shí)現(xiàn)上。就算在編程實(shí)現(xiàn)了一個完整的“文件系統(tǒng)”,但如果沒有和磁盤驅(qū)動、高速緩存、內(nèi)存管理等模塊聯(lián)系在一起,即使編寫了大量的代碼,也只是實(shí)現(xiàn)了某些概念(更像是一個數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)),仍然不能控制可實(shí)際運(yùn)行的操作系統(tǒng)。本實(shí)驗(yàn)指導(dǎo)書強(qiáng)調(diào)在可實(shí)際運(yùn)行的操作系統(tǒng)上的實(shí)踐。1.1實(shí)驗(yàn)平臺及工具1.UbuntuLinux考慮到實(shí)驗(yàn)的可操作性,選擇了成熟的Linux版本,具體平臺可選擇流行的Ubuntu,讀作“烏邦圖”。Ubuntu也許不是目前最好用的Linux桌面發(fā)行版,但它一定是最流行的!它最重要特點(diǎn)是易用,非常的易用?,F(xiàn)在,已經(jīng)有越來越多的人開始用Ubuntu完全代替Windows,享受更加自由、安全、守法的感覺。Ubuntu的主頁是\o"/"/,這里不僅可以免費(fèi)下載到iso文件,甚至能免費(fèi)申領(lǐng)一張Ubuntu的安裝光盤(\o"/"/)。另外國內(nèi)的雨林木風(fēng)團(tuán)隊(duì),開發(fā)一個基于ubuntu的高仿XP開源系統(tǒng),界面和WindowsXP極為相似(/)。2.GCC編譯器GCC是和Linux一起成長起來的編譯器。Linux最初的版本就是由GCC編譯的。現(xiàn)在GCC也是在自由軟件領(lǐng)域應(yīng)用最廣泛的編譯器。所以,我們也選擇GCC作為本實(shí)驗(yàn)的指定編譯器。3.GDB調(diào)試器GDB調(diào)試器是GCC編譯器的兄弟。作為自由軟件領(lǐng)域幾乎是唯一的調(diào)試器,它秉承了*nix類操作系統(tǒng)的一貫風(fēng)格,采用純命令行操作,較類似dos下的debug。關(guān)于它的使用方法請看GDB使用手冊。4.cygwincygwin是一個在windows平臺上運(yùn)行的unix模擬環(huán)境,是cygnussolutions公司開發(fā)的自由軟件。它對于學(xué)習(xí)unix/linux操作環(huán)境,或者從unix到windows的應(yīng)用程序移植,或者進(jìn)行某些特殊的開發(fā)工作,尤其是使用gnu工具集在windows上進(jìn)行嵌入式系統(tǒng)開發(fā),非常有用。要安裝網(wǎng)絡(luò)版的cygwin,可以到,點(diǎn)擊"InstallCygwinNow!"。這樣會先下載一個叫做setup.exe的GUI安裝程序,用它能下載一個完整的cygwin。我們把cygwin的作為一個備用工具,可以通過它來練習(xí)命令行操作。1.2基本內(nèi)容本實(shí)驗(yàn)分為兩個階段:系統(tǒng)應(yīng)用實(shí)驗(yàn)和系統(tǒng)開發(fā)實(shí)驗(yàn)。表1.系統(tǒng)應(yīng)用實(shí)驗(yàn)項(xiàng)目編號項(xiàng)目備注1起步2Linuxshell基本命令3文件編輯4文件和文件系統(tǒng)結(jié)構(gòu)5文件安全6基本文件處理7高級文件處理8管道和I/O重定向9進(jìn)程表2.系統(tǒng)開發(fā)實(shí)驗(yàn)項(xiàng)目編號項(xiàng)目備注1Linux進(jìn)程創(chuàng)建2進(jìn)程軟中斷3進(jìn)程管道通信1.3考核規(guī)則每次考核,老師會到學(xué)生所在的電腦旁,觀看項(xiàng)目的運(yùn)行結(jié)果,并進(jìn)行簡單的答辯。操作系統(tǒng)實(shí)驗(yàn)的成績主要由學(xué)生所作的實(shí)踐工作和取得的實(shí)驗(yàn)結(jié)果來定,同時輔以學(xué)生撰寫的實(shí)驗(yàn)報告作為部分。因此成績主要考核三方面的內(nèi)容:實(shí)踐工作需要達(dá)到一定的量;實(shí)驗(yàn)內(nèi)容要求得到正確、豐富的實(shí)驗(yàn)結(jié)果;實(shí)驗(yàn)報告的撰寫情況。其中前兩項(xiàng)是考察的重點(diǎn)。
2.系統(tǒng)應(yīng)用實(shí)驗(yàn)項(xiàng)目目前入學(xué)的計(jì)算機(jī)專業(yè)學(xué)生,一開始便使用Windows系統(tǒng),以至于相當(dāng)一部分學(xué)生連最常用的DOS命令都不知道。終端命令脫去了“視窗”華麗的外衣,它的高效與靈活是計(jì)算機(jī)系統(tǒng)引入入勝的一個特點(diǎn)。系統(tǒng)應(yīng)用實(shí)驗(yàn)以Linux系統(tǒng)的使用為主,本實(shí)驗(yàn)內(nèi)容可以和“Linux環(huán)境與開發(fā)”課程有效銜接,鍛煉學(xué)生操縱計(jì)算機(jī)的能力,加深對文件系統(tǒng)的了解。本階段安排有11個項(xiàng)目,每個項(xiàng)目基本都可以在2-3個學(xué)時內(nèi)做完。
2.1Li應(yīng)用實(shí)驗(yàn)項(xiàng)目1:虛擬機(jī)環(huán)境下的Linux系統(tǒng)安裝1.安裝虛擬機(jī)軟件VMWareWorkstationv6.52.創(chuàng)建虛擬機(jī)選擇File|New|NewVirtualMachine選擇Custom方式,并進(jìn)行以下配置:虛擬機(jī)的操作系統(tǒng)類型(GuestOperatingSystem)為Linux內(nèi)存512MB共享網(wǎng)絡(luò)連接創(chuàng)建虛擬硬盤,默認(rèn)大小為8GB,文件名Linux.vmdk,類型IDE0:0
注意在Advanced按鈕界面下選擇IDE硬盤仿真,不要使用SCSI硬盤仿真。VMWare缺省選擇為SCSI硬盤仿真。另外,系統(tǒng)自動配置CD-ROMIDE1:0,USB控制器Present,等等3.安裝Linux整個安裝(及其其后的軟件安裝),只需要ubuntu9.1的第一張光盤從光盤啟動如果使用.iso光盤鏡像文件,請?jiān)赩MWare軟件的虛擬機(jī)設(shè)置中,選擇光盤鏡像仿真。具體操作:VMWare中選中當(dāng)前的虛擬機(jī)選擇菜單Edit|VirtualMachineSetting...在彈出的對話框中選擇Hardware頁面(缺省),在Device列表中選擇CDROM在右側(cè)Connection中,選擇UseISOImage,并指定光盤鏡像的位置創(chuàng)建(虛擬)磁盤上的分區(qū)時,選擇自動創(chuàng)建此后,按照屏幕提示進(jìn)行安裝
2.2Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目2:shell基本命令實(shí)驗(yàn)?zāi)康模壕毩?xí)dt、a、pwd等幾個常用的Lux命令。實(shí)驗(yàn)內(nèi)容:本實(shí)驗(yàn)用到的命令有:dt、、pwd、wrt、aa、upt、an等1.登錄你的Lnux系統(tǒng)。2.用命令dte顯示當(dāng)前的時間,給出顯示的結(jié)果。3.用al命令顯示下列年份的日歷:4、52、1752、1952、2005、2006) 給出你顯示以上年份年歷的命令) 1752年有幾天,為什么?提示:在因特網(wǎng)上查找答案4.用pwd顯示你的主目錄(oedrtor)名字,給出pwd顯示的結(jié)果。5.使用wrte命令和已經(jīng)登錄系統(tǒng)的一個朋友進(jìn)行通信。6.使用aas命令顯示系統(tǒng)中的命令的別名,給出顯示的結(jié)果。7.使用upte命令判斷系統(tǒng)已啟動運(yùn)行的時間和當(dāng)前系統(tǒng)中有多少登錄用戶,給出顯示的結(jié)果。8.通過因特網(wǎng)或Lnux的an命令得到下面的shel命令系統(tǒng)調(diào)用和庫函數(shù)功能描述及每個命令使用例子:CoaSortertonameUeetfoemtf9.退出系統(tǒng)
2.3Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目3:文件編輯 實(shí)驗(yàn)?zāi)康模?.練習(xí)用po編輯器編輯文本文件;2.練習(xí)用vi編輯器編輯文本文件;3.練習(xí)用es編輯器編輯文本文件;實(shí)驗(yàn)內(nèi)容:Lux是文本驅(qū)動(tt-dre)的操作系統(tǒng),Lux常用的編輯器有:文本界面下的編輯器vi:最令UNIX類操作系統(tǒng)初學(xué)者裹足不前的edtor,然而只要你習(xí)慣于操作,你會覺得它比任何的dtor都好用且功能強(qiáng)大。po或ao:一種風(fēng)格很像MrootDOS的EDIT的一種文本編輯器。一些發(fā)行版沒有安裝。ec:lnux編輯器,功能強(qiáng)大的全屏幕編輯器。命令行方式建議使用ecs或vi圖形界面的編輯器ecs編程編輯器gdt全屏幕文本編輯程序1.登錄你的Lnux系統(tǒng)。2.po文本編輯器的使用:.在sell提示符下,輸入po并按Etr鍵;.在po的文本區(qū),將光標(biāo)置于首行并輸入文字:ThssttttIvetrsonaoentepodto.按Det鍵和方向鍵來修正拼寫錯誤;.按三次Etr鍵;d.輸入:Thssaneoftttrenesdownromtertn..按tr-O鍵;. 在FieNaeTorte提示后輸入lnepd,并按Etr鍵;g.按下tr-X鍵回到sell提示符下;.在sell提示符下輸入orenped并按Etr鍵。以上步驟完成后,屏幕上看到了什么?3.運(yùn)行po并創(chuàng)建帶有3行文本的一個文件然后使用po的剪切和粘貼功能來復(fù)制這3行,使該文件包含9行文本。以pro3為文件名保存該文件。4.vi編輯器的使用:.在sell提示符下,輸入vifrrp并按Etr鍵。vi的界面將出現(xiàn)在顯示屏上;.輸入,輸入s–,并按Etr鍵;.輸入wo,并按Etr鍵;d.輸入pwd,再按Etr鍵。這時屏幕將如下圖所示:s–awopwd~~~~~.輸入:wq,并按Etr鍵;. 在sell提示符下,輸入shfrrp并按Etr鍵;g.觀察結(jié)果。當(dāng)前的工作目錄中有多少個文件?他們的名稱和大?。窟€有誰在使用你的計(jì)算機(jī)系統(tǒng)?當(dāng)前的工作目錄是什么?4. 在系統(tǒng)中運(yùn)行vi并創(chuàng)建一個ashsell腳本文件,它包含下面行:o$SHEhsh–l然后以selr為名保存該文件并退出v在shell提示符下輸入shsel并按Etr鍵。屏幕上給出了當(dāng)前的hell和一個nux文件,該文件的內(nèi)容包含系統(tǒng)中可用的其他sel。給出運(yùn)行的結(jié)果。5. 登錄你的Lnux系統(tǒng)運(yùn)行eacs程序編輯一個新文件,使用-w命令選項(xiàng)。.在文件的第一行輸入你的名字;.在文件的第二行輸入“TeesdtorsteotopexadutozabeofteLuxttdtor.”6. 退出系統(tǒng)
2.4Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目4:文件與文件系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)?zāi)康模?.學(xué)習(xí)如何創(chuàng)建一個Lnux目錄的層次結(jié)構(gòu);2.學(xué)習(xí)有關(guān)絕對路徑和相對路徑;3.學(xué)習(xí)有關(guān)主目錄(oedrtor)、登錄目錄、工作目錄(當(dāng)前目錄);4.學(xué)習(xí)如何有效導(dǎo)航Lnux目錄層次;5.學(xué)習(xí)有關(guān)文件內(nèi)容類型和隱含文件;6.學(xué)習(xí)有關(guān)文件屬性。實(shí)驗(yàn)內(nèi)容:Lux文件系統(tǒng)的結(jié)構(gòu)如下:Lux系統(tǒng)主要目錄說明:/bn:也稱二進(jìn)制(bnr)目錄,包含了那些供系統(tǒng)管理員和普通用戶使用的重要的Lnux命令的可執(zhí)行文件。一些常用的命令有:as、t、hod、p、dt、co、kl、、ai、kdir、or、、p、pwd、r、rdr、s、tt、u、t、uae和v。一些用于系統(tǒng)恢復(fù)的命令如trgpgunzp和t還有一些網(wǎng)絡(luò)命令如doannaeota、ttt和pg。目錄/ur/bin下存放了大部分的用戶命令。/oot:在這個目錄下存放系統(tǒng)啟動時要用的程序。包括Lnux內(nèi)核的二進(jìn)制映像。內(nèi)核文件名是vmlnux加上版本和發(fā)布信息。/d:dev是設(shè)備(devc)的英文縮寫。在這個目錄中包含了所有nux系統(tǒng)中使用的外部設(shè)備。但是這里并不是放的外部設(shè)備的驅(qū)動程序。/tctc這個目錄是ux系統(tǒng)中最重要的目錄之一在這個目錄下存放了系統(tǒng)管理時要用到的各種配置文件和子目錄我們要用到的網(wǎng)絡(luò)配置文件文件系統(tǒng)x系統(tǒng)配置文件設(shè)備配置信息設(shè)置用戶信息等都在這個目錄下。/bn:這個目錄是用來存放系統(tǒng)管理員的系統(tǒng)管理程序。/oe:存放用戶的主目錄。如果建立一個用戶,用戶名是j,那么在/oe目錄下就有一個對應(yīng)的/o/ji路徑,用來存放用戶的主目錄。/bb是(lrr英文縮寫這個目錄是用來存放系統(tǒng)動態(tài)連接共享庫的。幾乎所有的應(yīng)用程序都會用到這個目錄下的共享庫。/t:這個目錄主要用來臨時裝載文件系統(tǒng),系統(tǒng)管理員運(yùn)行out命令完成裝載工作。/ot:該目錄用來安附加軟件包/proc目錄存放了程和系統(tǒng)得信息可以這個目錄下獲取系統(tǒng)信息。這些信息是在內(nèi)存中,由系統(tǒng)自己產(chǎn)生的。/root:根(oot)用戶的主目錄。如果用戶以超級用戶的身份登錄的,這個就是超級用戶的主目錄。/bn/ur/sbn/ur/root/b存放了系統(tǒng)管理的工具應(yīng)用軟件和通用的root用權(quán)限的命令。/tp:用來存放不同程序執(zhí)行時產(chǎn)生的臨時文件。/ur:是nux文件系統(tǒng)中最大的目錄之一。它存放了可以在不同主機(jī)間共享的只讀數(shù)據(jù)。/otoud:目錄中存放所有和其他目錄沒有關(guān)聯(lián)的的文件這些文件可以用Lnux工具ck查找得到。/bn:/ur/bn:/ur/oa/sbn:otasstemdntrtonoadfesttnonyerunbyterootur./r:用來存放易變的數(shù)據(jù),這些數(shù)據(jù)在系統(tǒng)運(yùn)行過程中會不斷變化。/r/poo/ail存放收到的電子郵件,/vr/og存放系統(tǒng)的日志。本實(shí)驗(yàn)用到的命令有:PTH,d,o,,,kdr,pwd,rdr等。1.登錄到你的Lnux系統(tǒng)2.在你的主目錄下建立如下圖所示的目錄樹。給出完成這項(xiàng)工作的所有會話(會話是指你命令的輸入和結(jié)果的輸出你提交的作業(yè)要包含這些內(nèi)容)3.顯示你登錄目錄的絕對路徑,給出這個會話過程。。4.在系統(tǒng)中,執(zhí)行cdprofessional/courses命令,回答下列問題:.你的主目錄的絕對路徑是什么?給出獲得該絕對路徑的命令及命令輸出。. cm目錄的絕對路徑是什么?.給出cm目錄的兩個相對路徑。d. 執(zhí)行daor/381/abs命令然后執(zhí)行一個命令顯示當(dāng)前目錄的絕對路徑,給出這個會話過程。.給出獲得你的主目錄三個不同的命令。5.改變目錄到/ur。在這個目錄下有多少個文件和目錄,他們的文件內(nèi)容類型是什么?6.在/ur/bn目錄下有多少個普通文件、目錄文件和鏈接文件?如何得到這個答案?7.你系統(tǒng)中的Lnux內(nèi)核映像文件在那個目錄中?給出這個可執(zhí)行內(nèi)核映像文件的名稱和文件內(nèi)容類型。8.Lux系統(tǒng)規(guī)定隱含文件是首字符為.的文件如.po在你的系統(tǒng)中查找.poie和.ogn文件他們在什么地方給出這兩個文件部分內(nèi)容。9.顯示你的主目錄下的所有隱含文件的文件名。給出你的會話過程。10.下面這些目錄的ode號是多少:root、你的目錄(oedrtor)、~/tp、~/proesoa和~/proa?寫出會話過程注符“~主目錄11.在abs目錄下,用文本編輯器創(chuàng)建一個名字為ab1的文件,文件的內(nèi)容為:“Ueattdtortorteaiealda1udrteasdrtorynourdrtoryhrrch.Theesoudotantettofthsprobe.”?;卮鹣铝袉栴}:.ab1文件的類型,用Lux命令回答這個問題,給出會話過程。.ab1文件內(nèi)容的類型用Lnux命令回答這個問題給出會話過程。12.退出系統(tǒng)。
2.5Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目5:文件安全實(shí)驗(yàn)?zāi)康模?.學(xué)習(xí)Lnux的文件訪問權(quán)限,用戶的類型和文件訪問權(quán)限的類型;2.學(xué)習(xí)如何確定一個文件的訪問權(quán)限;3.學(xué)習(xí)如何設(shè)置和改變一個文件的訪問權(quán)限;4.學(xué)習(xí)如何在文件或目錄的創(chuàng)建時設(shè)置缺省訪問權(quán)限。實(shí)驗(yàn)內(nèi)容:在Lnux系統(tǒng)中,一個文件的用戶類型有三種:所有者(owrurs)、組(groupur)、其他人(Otrurs)Lux系統(tǒng)中,文件有三種訪問權(quán)限:讀(r)--許讀某個文件;寫(w)--允許寫、修改和刪除某個文件;執(zhí)行()--允許執(zhí)行ru)某個文件。對于一個目錄而言:讀(r)--允許用戶列出目的內(nèi)容,使用s命令;寫(w)--允許用戶在目錄下建立新文件刪除子錄和文件執(zhí)行()--允許用戶搜索這個目錄,用d命令。使用s-l或s-d命令顯示文件的訪問權(quán)限:本實(shí)驗(yàn)使用的命令有:gr、d、kdr、、hod、tou、uak等1. 登錄到你的Lnux系統(tǒng)2. 根據(jù)下列的要求,寫出得到這些信息的會話過程:.你的用戶名;.你的用戶ID;.你的組ID和組名字;d.在你同一組中的其他用戶名。注在/t/pwd和/t/group文件中查到部信息要理解這兩個文件的格式。3.系統(tǒng)管理員給你的主目錄設(shè)置的權(quán)限是什?使用什么命令來得到這個答案,給出你的會話過程。6.在你的主目錄中的tp、proesoal和prsoal三個子目錄,設(shè)置使自己(owr)擁有讀、寫、執(zhí)行3種訪問權(quán)限,設(shè)置其它用戶只有讀和執(zhí)行權(quán)限。在~/tp目錄下創(chuàng)建名為d1d2和d3的目錄在d1目錄下用touh命令創(chuàng)建一個名為1的空文件。給出d1、d2、d3和1的訪問權(quán)限。給出完成這些工作的會話。7.設(shè)置當(dāng)前目錄為你的主目錄,設(shè)置~/temp僅執(zhí)行權(quán)限,然后執(zhí)行l(wèi)s–ldtemp,再執(zhí)行l(wèi)s–ltemp命令。結(jié)果如何?成功執(zhí)行l(wèi)s–ltemp命令需要的最小權(quán)限是什么?請?jiān)O(shè)置temp目錄的最小權(quán)限,然后再一次執(zhí)行l(wèi)s–ltemp命令。給出這個過程的會話。注:登錄系統(tǒng)不能使用root用戶8.用umask命令顯示當(dāng)前的掩碼。把你的主目錄設(shè)置為當(dāng)前目錄,然后在~/temp/d1目錄下創(chuàng)建d11目錄用touch命令創(chuàng)建f2空文件在temp目錄下用編輯器創(chuàng)建hello.c文件,該文件的內(nèi)容如下:#include<stdio.h>main(void){printf(“Hello,world!\n”);}再運(yùn)行命令gcc–ogreetinghello.c,成了可執(zhí)行文件greeting。長列表顯示f2、hello.c、greeting和d1文件訪問權(quán)限。9.退出系統(tǒng)
2.6Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目6:基本文件處理實(shí)驗(yàn)?zāi)康模?. 學(xué)會如何示文本件的內(nèi)2. 學(xué)會如何制、追、移動刪除;3. 學(xué)會如何并文件;4. 學(xué)會如何定文件大?。?. 學(xué)會如何較文本件;6. 學(xué)會使用種打印令。實(shí)驗(yàn)內(nèi)容:實(shí)驗(yàn)用到的命令:|、a、v、t、n、d、t、、p、w、pr等1.登錄到你的Linux系統(tǒng)2.創(chuàng)建幾個大小不等的文本文件,供本實(shí)驗(yàn)和后面幾個實(shí)驗(yàn)用。用mancat>mediumFile命令創(chuàng)建中等大小的文件;用manbash>largeFile命令創(chuàng)建一個大文件;在創(chuàng)建一個名字為smallFile關(guān)于學(xué)生數(shù)據(jù)的小文件,文件每行內(nèi)容(藍(lán)色字體部分)如下,注意字段之間用tab符隔開:rNaeaNae ar GA Eal oneHreseiniumaountofaaatyouwlaens.JhnDeEE3.54HYPERLINKmailto:doe@d@.hoe.rg111.222.3333asDasEE3.71HYPERLINKmailto:davis@asj.wr.rg111.222.1111lDasS2.63HYPERLINKmailto:davis@asa.ar.rg111.222.2222hadaidA3.04HYPERLINKmailto:ahmad@aha@ba.rg111.222.4444amhuEE3.68HYPERLINKmailto:chu@ha.ab.om111.222.5555runoyS3.86HYPERLINKmailto:roy@ry.ar.du111.222.8888ckarhS2.34HYPERLINKmailto:marsh@arsa.b.rg111.222.6666asamS2.77HYPERLINKmailto:jadam@aaa.b.rg111.222.7777rtohmEE4.00HYPERLINKmailto:pohm@poha.a.rg111.222.9999JhnarkEE2.68HYPERLINKmailto:clark@arxz.ab.om111.111.5555NabliEE3.56HYPERLINKmailto:ali@111.111.8888TomNonEE3.81HYPERLINKmailto:nelson@so@t.ab.rg111.111.6666atKgS3.77HYPERLINKmailto:king@in@p.xz.rg111.111.7777aeZluS3.00HYPERLINKmailto:zulu@zuz.a.rg111.111.9999JhneeEE3.64HYPERLINKmailto:jlee@@..com111.111.2222ulajEE3.86HYPERLINKmailto:raj@rar..111.111.3333arsgtEES3.31HYPERLINKmailto:right@111.111.4444DaeorEE 3.87HYPERLINKmailto:rover@rvrr.xz.du111.111.5555zzanEES 3.75HYPERLINKmailto:ainan@aaa.ab.du111.111.11113.使用t和nl命令顯示salFe文件內(nèi)容并顯示行號兩個命令的輸出應(yīng)該完全一樣。給出完成這項(xiàng)任務(wù)的命令。4.用ore命令顯示saFie和duFie文件內(nèi)容,每屏顯示18行。給出你的命令(顯示的內(nèi)容不需要)。5.顯示rgFie文件的開始12行內(nèi)容,顯示salFie文件的最后5行內(nèi)容,要用什么命令?哪個命令能顯示salFie文件從第6行開始到結(jié)束且逆序顯示?給出你的會話。6.本實(shí)驗(yàn)?zāi)康挠^察使用帶-f選項(xiàng)的tail命令。復(fù)制salFie文件,文件名為dtF,創(chuàng)建一個文件名為c7.c的c語言文件,內(nèi)容如下:ledh>(){ti=sleep(10ei<5){a);}e1){a);}}現(xiàn)在依次運(yùn)行下列三個命令第一個命令生成一個c語言的可執(zhí)行文件,文件名為generate;第二個命令是每隔5秒和10秒把date命令的輸出追加到dataFile文件中,這個命令為后臺執(zhí)行,注意后臺執(zhí)行的命令尾部加上&字符;最后一個命令tail–fdataFile,顯示dataFile文件的當(dāng)前內(nèi)容和新追加的數(shù)據(jù):cccoegenere>dFe&lfdF在輸入tail-f命令1分鐘左右后,按<Ctrl-C>終止tail程序。用kill-9pid命令終止generate后臺進(jìn)程的執(zhí)行。注pid是執(zhí)行g(shù)enerate程序的進(jìn)程號使用generate>>dataFile&命令后,屏幕打印后臺進(jìn)程作業(yè)號和進(jìn)程號,其中第一個字段方括號內(nèi)的數(shù)字為作業(yè)號,第二個數(shù)字為進(jìn)程號;也可以用kill-9%job終止generate后臺進(jìn)程,job為作業(yè)號。最后用taildataFile命令顯示文件追加的內(nèi)容給出這些過程的你的會話。7.在前面你已把dtFe文件復(fù)制為salFie文件的拷貝用s–l命令觀察這兩個文件的修改時間是否一樣它們是不同的dtFe文件的修改時間應(yīng)該是這個文件的創(chuàng)建時間。什么命令能夠保留這個修改時間不變呢?這兩個文件的ode號是多少?再把文件名dtFe改(移動wDtFe文件ewDtFe的ode多少?與dtFe文件的ode號是否相同,若相同,為什么?然后再把文件nwDtFie移動到/tp目錄下,文件/tp/wDtFie的ode號是多少?比較結(jié)果如何,為什么?給出完成上述工作的會話過程。8.在屏幕上顯示文件salFie、duFi、rgFie和/tp/wDtFe的字節(jié)數(shù)字?jǐn)?shù)和行數(shù)salFie和/tp/wDtFie文件應(yīng)該是相同的你能用其它命令給出這些文件的字節(jié)數(shù)的大小嗎?什么命令。給出會話過程。9.打印salFie文件的兩個備份且?guī)刑柡皖^(標(biāo)題信息用什么命令?你能用其它命令完成這項(xiàng)工作嗎(注:可使用管道命令)?給出會話過程。10.退出系統(tǒng).
2.7Lix應(yīng)用實(shí)驗(yàn)項(xiàng)目7:高級文件處理實(shí)驗(yàn)?zāi)康模?.學(xué)習(xí)如何壓縮和解壓文件;2.學(xué)習(xí)如何排序文本文件;3.學(xué)習(xí)如何搜索文件或目錄;4.學(xué)習(xí)如何查找文本文件的內(nèi)容;5.學(xué)習(xí)如何搜索某個Lnux命令存放在何處;6.學(xué)習(xí)如何對文本文件使用uttg和ptng字段的數(shù)據(jù)庫操作。實(shí)驗(yàn)內(nèi)容:實(shí)驗(yàn)用到的命令gzpguzpotndvitpwrwhc、grp、ut、pte1.登錄到你的Linux系統(tǒng)2.顯示文件duFie和rgeFie文件的大小。用gzp命令壓縮文件mduFie和rgeF壓縮后的文件名字是什么?給出這兩個文件壓縮前后的大小及壓縮率如果你系統(tǒng)中有zore命令使用這個命令顯示壓縮文件duFie的內(nèi)容。最后再解壓這兩個文件。給出會話過程。3.以GPA作為關(guān)鍵字排序文件nwSaFie中的數(shù)據(jù),忽略空格。給出會話過程。4.搜索你的主目錄,找到所有的HTML和C程序文件(文件有.t、.tm或.c擴(kuò)展名),顯示符合要求的文件路徑和文件名。給出你的會話。5.給出命令搜索主目錄顯示創(chuàng)建時間在/t/pwd之后的文件及其路徑。6.下面的命令在什么地方ftpsshtatlnetpasswd和find?給出會話過程。7.用下面的salFie文件(是前面salFie文件的增強(qiáng)版,藍(lán)色字體部分為salFie文件的內(nèi)容),并完成以下任務(wù):(用grp命令)$remFn e E 34 HYPERLINKmailto:doe@e.eog123s as CE.1 HYPERLINKmailto:davis@idrkg..l s S .3 HYPERLINKmailto:davis@i.erg1222d ad MA 4 HYPERLINKmailto:ahmad@mmag 1244m u E 8 HYPERLINKmailto:chu@habm 1255n y S 6 HYPERLINKmailto:roy@ostu1288k sh S 4 rabgrabg1266s dm S 7 HYPERLINKmailto:jadam@dabg 1277t m E 00 HYPERLINKmailto:pohm@@ag 1299n rk E 68 HYPERLINKmailto:clark@kzam1155el i E 6 HYPERLINKmailto:ali@leg.u ..m on E 81 HYPERLINKmailto:nelson@onarg116t g S 7 HYPERLINKmailto:king@ipyg1177e u S 00 HYPERLINKmailto:zulu@@sg 119n e E 4 HYPERLINKmailto:jlee@ljem 1122l aj E 6 HYPERLINKmailto:raj@j..u ..lsRt ES 31 HYPERLINKmailto:right@t.bu 114e or E .7 HYPERLINKmailto:rover@vdyu 115z n ES 5 HYPERLINKmailto:ainan@an.bu 111u n S 6 HYPERLINKmailto:lu.john@j@yg1311e w E 4 HYPERLINKmailto:chow@lc.www.ordhlwd1322m es S 4 HYPERLINKmailto:giles@lcig 133y n ES 8 HYPERLINKmailto:john@oaedu134.顯示計(jì)算機(jī)科學(xué)專業(yè)(S)學(xué)生的行及行號。給出你的會話。.顯示rtae為ohn的學(xué)生的行及行號。給出你的會話。.顯示rtae或atae為Le的學(xué)生的行及行號。給出你的會話。d.顯示-ail地址以.org結(jié)尾的學(xué)生的行及行號。給出你的會話。.顯示GPA在3.69和4.0在之間的學(xué)生的行及行號。給出你的會話。. 顯示計(jì)算機(jī)科學(xué)學(xué)生GPA在3.5和4.0在之間的學(xué)生的行及行號給出你的會話。8.用ut和pte命令構(gòu)造并顯示一個表包含以下四個字段rta、ata、GPA和ademcaor(專業(yè))。給出你的會話。9.退出系統(tǒng)
2.9Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目8:管道與I/O重定向?qū)嶒?yàn)?zāi)康模?.學(xué)習(xí)如何使用Lnux的I/O重定向和管道操作;2.學(xué)習(xí)使用I/O重定向和管道操作完成單個命令不能實(shí)現(xiàn)的復(fù)雜任務(wù);3.學(xué)習(xí)如何使用I/O重定向管道和IOs去完成單個命令不可能實(shí)現(xiàn)的復(fù)雜任務(wù)。實(shí)驗(yàn)用到的命令:|、、、nd、t、wo、sot、t、d、、wc等實(shí)驗(yàn)內(nèi)容:1.登錄到你的Lnux系統(tǒng)中2.用t命令創(chuàng)建一個名字為tt.dta文件,文內(nèi)容如下。文件創(chuàng)建成功后,用t命令顯示這個文件的內(nèi)容。給出你的會話過程。Thisdataistobestoredinafilecalledtest.databyusingthecatcommand.Wecancreatethetest.datafilewiththisdatabyusingatexteditorsuchasvi.However,thepurposeofthisexerciseistoshowaninterestinguseofoutputredirection.3.用一行命令顯示當(dāng)前登錄到系統(tǒng)中的用戶的數(shù)量。給出命令和輸出結(jié)果。4.用一行命令顯示第一個登錄到系統(tǒng)中的用戶的名字。給出命令和輸出結(jié)果。提示:使用wo、ot、t、d命令和管道實(shí)現(xiàn)。5.計(jì)算命令s–l的輸出中的字符數(shù)、單詞數(shù)和行數(shù),并把它顯示在顯示器上。給出命令和輸出結(jié)果。6.退出系統(tǒng)
2.10Linux應(yīng)用實(shí)驗(yàn)項(xiàng)目9:進(jìn)程實(shí)驗(yàn)?zāi)康模?.了解有關(guān)Lnux進(jìn)程的屬性;2.學(xué)習(xí)有關(guān)Lnux的前臺、后臺進(jìn)程及守護(hù)進(jìn)程;3.學(xué)習(xí)有關(guān)Lnux命令的順序執(zhí)行和并發(fā)執(zhí)行;4.學(xué)習(xí)有關(guān)掛起和終止進(jìn)程;5.了解Lnux的信號。6. 了解你系統(tǒng)中Lnux進(jìn)程的層次結(jié)構(gòu)。實(shí)驗(yàn)內(nèi)容:實(shí)驗(yàn)用到的命令:p、kl、n、ptre等1.進(jìn)入你的nux系統(tǒng)2.在你進(jìn)入系統(tǒng)中有多少進(jìn)程在運(yùn)行?進(jìn)程nthdrotd的ID是多少。給出你得到這些信息的會話過程。3.ntcdron和ntd進(jìn)程的父進(jìn)程是哪一個?這些父進(jìn)程的ID是什么?nt、cd、ron和ntd進(jìn)程的優(yōu)先數(shù)是多少?根據(jù)優(yōu)先數(shù)從高到低(大到?。┝谐鲞@些進(jìn)程。給出會話過程。4.你系統(tǒng)中有多少個HTTP服務(wù)進(jìn)程?它們的進(jìn)程ID是什么?獲得上面每個信息用一個命令實(shí)現(xiàn)。給出你的會話過程。5.有多少個s、as、sh和tsh進(jìn)程運(yùn)行在你的系統(tǒng)中?給出會話過程。6.lnux系統(tǒng)中,進(jìn)程可以在前臺或后臺運(yùn)行。前臺進(jìn)程在運(yùn)行結(jié)束前一直控制著終端若干個命令用分(分隔形成一個命令行用圓括弧把多個命令掛起來他們就在一個進(jìn)程里執(zhí)行使“符作為命令分隔符,命令將并發(fā)執(zhí)行??梢栽诿钚心┪布印啊笔怪蔀楹笈_命令。請用一行命令實(shí)現(xiàn)以下功能它一小時后再屏幕上顯示文字Teoruc!來提醒你去吃午餐。給出會話過程。注:可以使用sep命令7.寫一個命令行實(shí)現(xiàn)nd和ort命令的并發(fā)行nd命令顯示在你的主目錄下oor文件的路徑;ort命令以GPA作為關(guān)鍵字排序salFie文件且忽略字段間的空格兩個命令的錯誤信重定向到/d/ull中nd命令的輸出重定向到nd.out文件中,ot命的輸出重定向到oto文件中。當(dāng)命令運(yùn)行結(jié)束后,顯示nd.ot和otout的內(nèi)容。給出會話過程。8.給出一個命令,終止ID為12345的進(jìn)程和ID為2的作業(yè)。9.寫一命令行,使得date、uname–a、who和ps并發(fā)執(zhí)行。給出會話過程。10.在sell下執(zhí)行下面的命令。3個pwd命令的運(yùn)行結(jié)果是什么?$wd$bah$d\r$wd$…$<r-> #止$wd注:“$”系統(tǒng)提11.用ptre命令顯示你系統(tǒng)中進(jìn)程層次結(jié)構(gòu)。12.ogot.
3.系統(tǒng)開發(fā)實(shí)驗(yàn)項(xiàng)目系統(tǒng)開發(fā)實(shí)驗(yàn)以Linux內(nèi)核開發(fā)為主,通過這些項(xiàng)目開發(fā)驗(yàn)證內(nèi)核的功能,鍛煉學(xué)生分析問題的能力。LIX系統(tǒng)調(diào)用介紹1.進(jìn)程控制的系統(tǒng)調(diào)用ork系統(tǒng)調(diào)用創(chuàng)建新的子進(jìn)程格式:pd=t ork()ork調(diào)用返回時系統(tǒng)中已有兩個用戶級環(huán)境完全相同的進(jìn)程存在這兩個進(jìn)程從ork調(diào)用中得到的返回值不同,其中子進(jìn)程得到的返回值為零,父進(jìn)程得到的返回值是新創(chuàng)建子進(jìn)程的進(jìn)程標(biāo)識號。ec系統(tǒng)調(diào)用格式:(六種)tc(pt,rg0,rg1,,rg,(r*)0)r*pt,*rg0,*rg1,…,*rgn;ec調(diào)用進(jìn)程的正文段被指定的目標(biāo)文件的正文段所覆蓋,其屬性的變化方式與ork成功后從父進(jìn)程那里繼承屬性的方式幾乎是一樣的。系統(tǒng)中絕大多數(shù)命令都是通過eec來執(zhí)行的不但sell進(jìn)程所創(chuàng)建的子進(jìn)程使用它來執(zhí)行用戶命令,hell進(jìn)程本身和它的祖先進(jìn)程也是用exc來啟動執(zhí)行的。xt系統(tǒng)調(diào)用終止進(jìn)程執(zhí)行格式:odext(ttu)t ttus;參數(shù)ttus是調(diào)用進(jìn)程終止時傳遞給其父進(jìn)程的值。如調(diào)用進(jìn)程還有子進(jìn)程,則將其所有子進(jìn)程的父進(jìn)程改為1號進(jìn)程。wat系統(tǒng)調(diào)用等待子進(jìn)程暫?;蚪K止格式:twt(tt_o) twat((t*)0)ttt_oc;wat調(diào)用將調(diào)用進(jìn)程掛起直到該進(jìn)程收到一個被其捕獲的信號或者它的任何一個子進(jìn)程暫仃或終止為止。如果wat調(diào)用之前已有子進(jìn)程暫仃或終止,則該調(diào)用立即返回。okf鎖定文件格式:t ok(d,uto,s)PAGE39ti,uton; ogse; d–鎖定文件標(biāo)識uto0不鎖定表示1鎖定2測試和鎖定3測試有否被鎖定se--鎖定或解鎖的字節(jié)數(shù),0表示從文件的當(dāng)前位置到文件尾。CProgramforkingaseparateprocess#include<stdio.h>voidmain(intargc,char*argv[]){intpid;pid=fork(); /*forkchildprocess*/if(pid<0){fprintf(stderr,“ForkFailed”); exit(-1);}elseif(pid==0){execlp(“/bin/ls”,”ls”,NULL);} /*childprocess*/else{wait(NULL);printf(“childComplete”);exit(0);}/*parentprocess*/}2.進(jìn)程通信的系統(tǒng)調(diào)用pipe系統(tǒng)調(diào)用格式: intpipe(filedes)intfiledes[2];消息機(jī)制?Msgid=msgget(key,msgflg)key_tkey;intmsgflg;?Msgctl(msgid,cmd,buf)intmsgid,cmd;msgqid_ds #buf;?msgsnd(msgid,msgp,msgsz,msgflg)intmsgid;structmsgbuf *msgp;intmsgsz,msgflg;?msgrcv(msgid,msgp,msgsz,msgtyp,msgflg);intmsgid;structmsgbuf *msgp;intmsgsz;longmsgtyp;intmsgflg;
3.1Lix進(jìn)程創(chuàng)建實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)Linux中與進(jìn)程控制相關(guān)的系統(tǒng)調(diào)用,加深對進(jìn)程、進(jìn)程樹等概念的理解。實(shí)驗(yàn)內(nèi)容學(xué)習(xí)使用以下幾類系統(tǒng)調(diào)用,進(jìn)行編程練習(xí)獲取進(jìn)程的信息,getpid(),getppid()父子進(jìn)程控制,fork(),wait()學(xué)習(xí)熟練地使用程序的編輯vi,編譯gcc,運(yùn)行學(xué)習(xí)熟練地使用ps命令觀察進(jìn)程的狀態(tài)及其關(guān)系選做:使用聯(lián)機(jī)手冊man,查看上述系統(tǒng)調(diào)用的完整指南實(shí)驗(yàn)步驟完成以下4個實(shí)驗(yàn)樣例程序的編輯、編譯、運(yùn)行和觀察。通過聯(lián)機(jī)手冊,深入學(xué)習(xí)相應(yīng)的系統(tǒng)調(diào)用。對4個樣例程序進(jìn)行自主改造和實(shí)驗(yàn),或者構(gòu)造新的程序進(jìn)行實(shí)驗(yàn)。
(1)程序getpid.c#include<stdio.h>main(){ intpid; pid=getpid(); printf("mypidis%d\n",pid); pid=getppid(); printf("myparent’spidis%d\n",pid); sleep(40);}輸入程序vigetpid.c編譯連接gccgetpid.c–ogetpid后臺運(yùn)行./getpid&使用ps–l查看進(jìn)程狀態(tài),驗(yàn)證getpid()和getppid()系統(tǒng)調(diào)用,注意父子進(jìn)程的關(guān)系。(選做)使用man2getpid命令,查看getpid()系統(tǒng)調(diào)用的聯(lián)機(jī)手冊。
(2)程序fork.c#include<stdio.h>intz=0;main(){intpid=getpid(); if(pid=fork()){ z=pid; printf(“z1=%d\n”,z); }else{ z=pid; printf(“z2=%d\n”,z); }printf(“alldone,pid=%d\n”,pid);}先考慮一下,程序的輸出結(jié)果是什么。輸入程序vifork.c編譯連接gccfork.c–ofork運(yùn)行./fork
注意觀察程序的輸出驗(yàn)證自己原先的想法是否正確,想一想為什么。(推薦)使用man2fork命令,查看fork的聯(lián)機(jī)手冊。
(3)程序mfork.c#include<stdio.h>main(){ inti,pid; for(i=0;i<10;i++){ pid=fork(); if(pid==0){ printf("child%dstartsrunning\n",i); sleep(60+i*5); //everychildsleepsforadifferentperiod exit(0); }else{ printf("parent:generateanewchildwithpid%d\n",pid); sleep(1); } }}先考慮一下,程序的輸出結(jié)果是什么。輸入程序vimfork.c編譯連接gccmfork.c–omfork運(yùn)行./mfork
注意觀察程序的輸出每隔幾秒到十秒鐘,反復(fù)使用ps-l命令觀察。想想為什么。
注意./mfork進(jìn)程的父進(jìn)程號為1號進(jìn)程。為什么?
(4)程序fork_wait.c#include<stdio.h>main(){ intpid; printf("begin...\n"); pid=fork(); if(pid==0){ printf("Iamthechild\n"); sleep(20); exit(0); }else{ printf("thechildprocesspidis%d\n",pid); wait(NULL); printf("childprocesshasterminated.\n"); sleep(10); }}先考慮以下,程序的執(zhí)行結(jié)果是什么。輸入程序vifork_wait.c編譯連接gccfork_wait.c–ofork_wait后臺運(yùn)行./fork_wait&反復(fù)使用ps–l命令查看運(yùn)行情況,注意父子進(jìn)程關(guān)系;
注意觀察子進(jìn)程退出,然后父進(jìn)程退出的過程。(選做)使用man命令查看系統(tǒng)調(diào)用wait()的聯(lián)機(jī)手冊。
3.2進(jìn)程軟中斷通信實(shí)驗(yàn)?zāi)康模赫莆者M(jìn)程軟中斷切換的方法,進(jìn)一步了解并發(fā)的實(shí)質(zhì)。實(shí)驗(yàn)內(nèi)容:編制一段程序,實(shí)現(xiàn)軟中斷通信:使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個子進(jìn)程,再用系統(tǒng)調(diào)用signal()讓父進(jìn)程捕捉鍵盤上來的中斷信號(即按Del鍵),當(dāng)父進(jìn)程接受到這兩個軟中斷的其中某一個后,父進(jìn)程用系統(tǒng)調(diào)用kill()向兩個子進(jìn)程分別發(fā)送整數(shù)值為16和17軟中斷信號,子進(jìn)程獲得對應(yīng)軟中斷信號后,分別輸出下列信息后終止:Childprocess1iskilledbyparent!!Childprocess2iskilledbyparent!!父進(jìn)程調(diào)用wait()函數(shù)等待兩個子進(jìn)程終止后,輸出以下信息后終止:Parentprocessiskilled!!多運(yùn)行幾次編寫的程序,簡略分析出現(xiàn)不同結(jié)果的原因。參考程序源代碼:#include<stdio.h>#include<signal>#include<unistd.h>#include<sys/types.h>intwait_flag;voidstop();main(){intpid1,pid2;signal(3,stop);//或者signal(14,stop);while((pid1=fork())==-1);if(pid1>0){while((pid2=fork())==-1);if(pid2>0){wait_flag=1;sleep(5);kill(pid1,16);kill(pid2,17);wait(0);wait(0);printf(“\nParentprocessiskilled!!\n”);exit(0);}else{wait_flag=1;signal(17,stop);printf(“\nChildprocess2iskilledbyparent!!\n”);exit(0);}}else{wait_flag=1;signal(16,stop);printf(“\nChildprocess1iskilledbyparent!!\n”);exit(0);}}voidstop(){wait_flag=0;}運(yùn)行結(jié)果:Childprocess1iskilledbyparent!!Childprocess2iskilledbyparent!!Parentprocessiskilled!!或者:(運(yùn)行多次后會出現(xiàn)如下結(jié)果)Childprocess2iskilledbyparent!!Childprocess1iskilledbyparent!!Parentprocessiskilled!!簡要分析(實(shí)驗(yàn)者自己完成)1、上述程序中,調(diào)用函數(shù)signal()都放在一段程序的前面部位,而不是在其他接收信號處,這是因?yàn)閟ignal()的執(zhí)行只是為進(jìn)程指定信號量16和17的作用,以及分配相應(yīng)的與stop()過程鏈接的指針。從而signal()函數(shù)必須在程序前面部分執(zhí)行。2、該程序段前面部分用了兩個wait(0),這是因?yàn)楦高M(jìn)程必須等待兩個子進(jìn)程終止后才終。wait()函數(shù)常用來控制父進(jìn)程與子進(jìn)程的同步。在父進(jìn)程中調(diào)用wait()函數(shù),則父進(jìn)程被阻塞。進(jìn)入等待隊(duì)列,等待子進(jìn)程結(jié)束。當(dāng)子進(jìn)程結(jié)束時,會產(chǎn)生一個終止?fàn)顟B(tài)字,系統(tǒng)會向父進(jìn)程發(fā)出SIGCHLD信號。當(dāng)接到信號后,父進(jìn)程提取子進(jìn)程的終止?fàn)顟B(tài)字,從wait()返回繼續(xù)執(zhí)行原程序。3、該程序中每個進(jìn)程退出時都用了語句exit(0),這是進(jìn)程的正常終止。在正常終止時,exit()函數(shù)返回進(jìn)程結(jié)束狀態(tài)。異常終止時,則由系統(tǒng)內(nèi)核產(chǎn)生一個代表異常終止原因的終止?fàn)顟B(tài),該進(jìn)程的父進(jìn)程都能用wait()得到其終止?fàn)顟B(tài)。在子進(jìn)程調(diào)用exit()后,子進(jìn)程的結(jié)束狀態(tài)會返回給系統(tǒng)內(nèi)核,由內(nèi)核根據(jù)狀態(tài)字生成終止?fàn)顟B(tài),供父進(jìn)程在wait()中讀取數(shù)據(jù)。若子進(jìn)程結(jié)束后,父進(jìn)程還沒有讀取子進(jìn)程的終止?fàn)顟B(tài),則系統(tǒng)就子進(jìn)程的終止?fàn)顟B(tài)置為“ZOMBIE”并保留子進(jìn)程的進(jìn)程控制塊等信息,等父進(jìn)程讀取信息后,系統(tǒng)才徹底釋放子進(jìn)程的進(jìn)程控制塊。若父進(jìn)程在子進(jìn)程結(jié)束之前就結(jié)束的話,則子進(jìn)程就變成了“孤兒進(jìn)程”,系統(tǒng)進(jìn)程init會自動“收養(yǎng)”該子進(jìn)程,成為該子進(jìn)程的父進(jìn)程即父進(jìn)程標(biāo)識號變?yōu)?,當(dāng)子進(jìn)程結(jié)束時,init會自動調(diào)用wait()讀取子進(jìn)程的遺留數(shù)據(jù),從而避免系統(tǒng)中留下大量的垃圾。4、上述結(jié)果中“Childprocess1iskilledbyparent!”和“Childprocess2iskilledbyparent!”的出現(xiàn),當(dāng)運(yùn)行幾次后,誰在前誰在后是隨機(jī)的,這是因?yàn)椋簭倪M(jìn)程調(diào)度的角度看,子進(jìn)程被創(chuàng)建后處于就緒態(tài),此時,父進(jìn)程和子進(jìn)程作為兩個獨(dú)立的進(jìn)程,共享同一個代碼段,分別參加調(diào)度、執(zhí)行、直至進(jìn)程結(jié)束。但是誰會先得到調(diào)度,與系統(tǒng)的調(diào)度策略和系統(tǒng)當(dāng)前的資源狀態(tài)有關(guān),是不確定的,因此,誰先從fork()函數(shù)中返回繼續(xù)執(zhí)行后面的語句也是不確定的。
3.3進(jìn)程管道通信實(shí)驗(yàn)?zāi)康模赫莆者M(jìn)程管道通信的方法,進(jìn)一步了解同步的實(shí)質(zhì)。實(shí)驗(yàn)內(nèi)容:編制一段程序,實(shí)現(xiàn)進(jìn)程的管道通信:使用系統(tǒng)調(diào)用pipe()建立一條管道線,兩個子進(jìn)程分別向管道各寫一句話:Childprocess1issendingamessage!Childprocess2issendingamessage!而父進(jìn)程則從管道中讀出來自于兩個子進(jìn)程的信息,顯示在屏幕上。要求:父進(jìn)程先接收子進(jìn)程P1發(fā)來的消息,然后再接收子進(jìn)程P2發(fā)來的消息。算法流程如下:參考程序源代碼:
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代產(chǎn)品設(shè)計(jì)中的民族圖案與色彩研究
- 現(xiàn)代紋樣設(shè)計(jì)在商業(yè)品牌推廣中的應(yīng)用實(shí)踐
- 現(xiàn)代辦公環(huán)境下的AI餐廳服務(wù)應(yīng)用研究
- 現(xiàn)代物流行業(yè)的服務(wù)創(chuàng)新與升級
- 現(xiàn)代辦公環(huán)境下的報告制作技巧
- 2024年五年級語文上冊 第六單元 口語交際:父母之愛說課稿 新人教版
- Module7 Unit2 This little girl can't walk(Period 1) (說課稿) -2024-2025學(xué)年外研版(三起)英語五年級上冊
- 7《什么比獵豹的速度更快》說課稿-2024-2025學(xué)年五年級上冊語文統(tǒng)編版001
- 13美麗的冬天 說課稿-2024-2025學(xué)年道德與法治一年級上冊統(tǒng)編版
- 2024-2025學(xué)年高中化學(xué) 第1章 第4節(jié) 第2課時 有機(jī)物分子式與分子結(jié)構(gòu)的確定說課稿 新人教版選修5
- 福建省泉州市晉江市2024-2025學(xué)年七年級上學(xué)期期末生物學(xué)試題(含答案)
- 醫(yī)美注射類知識培訓(xùn)課件
- 2025年春新人教版物理八年級下冊課件 第十章 浮力 第4節(jié) 跨學(xué)科實(shí)踐:制作微型密度計(jì)
- 2025年廣電網(wǎng)絡(luò)公司工作計(jì)劃(3篇)
- 貨運(yùn)車輛駕駛員服務(wù)標(biāo)準(zhǔn)化培訓(xùn)考核試卷
- 財(cái)務(wù)BP經(jīng)營分析報告
- 三年級上冊體育課教案
- 2024高考物理二輪復(fù)習(xí)電學(xué)實(shí)驗(yàn)專項(xiàng)訓(xùn)練含解析
- 2024年全國統(tǒng)一高考英語試卷(新課標(biāo)Ⅰ卷)含答案
- 高中英語:倒裝句專項(xiàng)練習(xí)(附答案)
- 2025屆河北衡水?dāng)?shù)學(xué)高三第一學(xué)期期末統(tǒng)考試題含解析
評論
0/150
提交評論