版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
操作系統(tǒng)原理實驗報告實驗一:顧客接口實驗實驗?zāi)康睦斫饷鎸Σ僮髅畹慕涌赟hell。學(xué)會簡樸的shell編碼。理解操作系統(tǒng)調(diào)用的運行機制。掌握創(chuàng)立系統(tǒng)調(diào)用的辦法。實驗內(nèi)容1)控制臺命令接口實驗該實驗是通過“幾個操作系統(tǒng)的控制臺命令”、“終端解決程序”、“命令解釋程序”和“Linux操作系統(tǒng)的bash”來讓實驗者理解面對操作命令的接口shell和進行簡樸的shell編程。查看bash版本。編寫bash腳本,統(tǒng)計/my目錄下c語言文獻的個數(shù)2)系統(tǒng)調(diào)用實驗該實驗是通過實驗者對“Linux操作系統(tǒng)的系統(tǒng)調(diào)用機制”的進一步理解來理解操作系統(tǒng)調(diào)用的運行機制;同時通過“自己創(chuàng)立一種系統(tǒng)調(diào)用mycall()”和“編程調(diào)用自己創(chuàng)立的系統(tǒng)調(diào)用”進一步掌握創(chuàng)立和調(diào)用系統(tǒng)調(diào)用的辦法。編程調(diào)用一種系統(tǒng)調(diào)用fork(),觀察成果。編程調(diào)用創(chuàng)立的系統(tǒng)調(diào)用foo(),觀察成果。自己創(chuàng)立一種系統(tǒng)調(diào)用mycall(),實現(xiàn)功效:顯示字符串到屏幕上。編程調(diào)用自己創(chuàng)立的系統(tǒng)調(diào)用。實驗原理1.控制臺命令接口操作系統(tǒng)向顧客提供一組控制臺命令,顧客能夠通過終端輸入命令的方式獲得操作系統(tǒng)的服務(wù),并由此來控制自己作業(yè)的運行。普通來講,控制臺命令應(yīng)當(dāng)包含:一組命令、終端解決程序以及命令解釋程序。bash的由來當(dāng)?shù)卿汱inux或者打開一種xterm時,現(xiàn)在默認的shell就是bash。Bash是GNUProject的shell。GNUProject是自由軟件基金會(FreeSoftwareFoundation)的一部分。它對Linux下的許多編程工具負責(zé)。Bash(BourneAgainShell)是自由軟件基金會公布的Bourneshell的兼容程序。它包含了其它有些shell的許多良好的特性,功效非常的全方面。諸多Linux版本都供bash。bash的大致原理bash解決自己的腳本時,先找到需要解決的命令名稱,進而在現(xiàn)在顧客的默認命令目錄中找到對應(yīng)的命令,這些默認目錄普通是/usr/bin、/bin或/sbin。在執(zhí)行這些命令時,先使用進程創(chuàng)立系統(tǒng)調(diào)用fork(),在使用exex()來執(zhí)行這些命令。2.系統(tǒng)調(diào)用系統(tǒng)調(diào)用是操作系統(tǒng)為程序員提供的接口服務(wù)。使用系統(tǒng)調(diào)用,程序員能夠更充足的運用計算機資源,使編寫的程序更加靈活,功效更加強大。程序員在對系統(tǒng)充足理解的狀況下甚至能夠訂做系統(tǒng)調(diào)用,實現(xiàn)那些非專業(yè)程序員所難以實現(xiàn)的功效。實驗環(huán)節(jié)1.控制臺命令接口實驗指導(dǎo)查看bash版本在shell提示符下輸入:$echo$BASH_VERSION顯示以下成果:編寫bash腳本:統(tǒng)計/my目錄下c語言文獻的個數(shù)通過bash腳本,能夠有多個方式實現(xiàn)這個功效,而使用函數(shù)是其中個一種選擇。在使用函數(shù)之前,必須先定義函數(shù)。(1)進入自己的工作目錄,用vi編寫名為count的文獻cd/home/student#在home/student目錄下編程vicount下面是腳本程序:#!/bin/bashfunctioncount{echo–n"Numberofmatchesfor$1:"#接受程序的第一種參數(shù)ls$1|wc–l#對子程序的第一種參數(shù)所在的目錄進行操作}(2)執(zhí)行將count文獻復(fù)制到現(xiàn)在目錄下,然后在現(xiàn)在目錄下建立文獻夾my:mkdirmycdmyvi1.c#在my目錄下建立幾個c文獻,方便用來進行測試...cd...chmod+xcountcount./my/*.c2.系統(tǒng)調(diào)用實驗指導(dǎo)編程調(diào)用一種系統(tǒng)調(diào)用fork()在應(yīng)用程序中調(diào)用系統(tǒng)調(diào)用fork()非常簡樸,下面的程序能夠很清晰的顯示出有fork()系統(tǒng)調(diào)用生成了子進程,而產(chǎn)生的分叉作用:#include<stdio.h>intmain(){ intiUid; iUid=fork(); if(iUid==0) for(;;){printf("Thisisparent.\n");sleep(1); } if(iUid>0) for(;;){ printf("Thisischild.\n"); sleep(1); } if(iUid<0)printf("Cannotusesystemcall.\n"); return0;}下面是可能得到的一種成果:thisischild.thisisparent.thisischild.thisisparent.thisisparent.thisischild.thisischild.thisisparent.thisisparent.thisischild.thisischild.thisisparent.thisisparent.thisischild.執(zhí)行成果:實驗成果分析:學(xué)會了基本的文獻操作以及函數(shù)執(zhí)行,驗證了成果;父進程與子進程交替執(zhí)行系統(tǒng)調(diào)用,由于完畢系統(tǒng)調(diào)用后都會睡眠,因此其它進程能夠執(zhí)行,得到上述成果。實驗總結(jié):本次實驗通過內(nèi)核編譯的方式來理解操作系統(tǒng)的具體調(diào)用方式。在此過程中重要是熟悉Linux系統(tǒng)的幾個終端命令上。通過本次操作系統(tǒng)實驗,我對Linux操作系統(tǒng)內(nèi)核有了初步的理解。實驗二:進程管理實驗實驗?zāi)康募由顚M程概念的理解,明確進程和程序的區(qū)別。進一步認識并發(fā)執(zhí)行的實質(zhì)。分析進程爭用資源的現(xiàn)象,學(xué)習(xí)解決進程互斥的辦法。理解Linux系統(tǒng)中進程通信的基本原理。實驗內(nèi)容1.編制實現(xiàn)軟中斷通信的程序使用系統(tǒng)調(diào)用fork()創(chuàng)立兩個子進程,再用系統(tǒng)調(diào)用signal()讓父進程捕獲鍵盤上發(fā)出的中斷信號(即按delete鍵),當(dāng)父進程接受到這兩個軟中斷的某一種后,父進程用系統(tǒng)調(diào)用kill()向兩個子進程分別發(fā)出整數(shù)值為16和17軟中斷信號,子進程獲得對應(yīng)軟中斷信號,然后分別輸出下列信息后終止:Childprocess1iskilledbyparent!!Childprocess2iskilledbyparent!!父進程調(diào)用wait()函數(shù)等待兩個子進程終止后,輸入下列信息,結(jié)束進程執(zhí)行:Parentprocessiskilled!!多運行幾次編寫的程序,簡略分析出現(xiàn)不同成果的因素。2.編制實現(xiàn)進程的管道通信的程序使用系統(tǒng)調(diào)用pipe()建立一條管道線,兩個子進程分別向管道寫一句話:Childprocess1issendingamessage!Childprocess2issendingamessage!而父進程則從管道中讀出來自于兩個子進程的信息,顯示在屏幕上。規(guī)定:父進程先接受子進程P1發(fā)來的消息,然后再接受子進程P2發(fā)來的消息。實驗原理進程的軟中斷通信算法流程圖(2)源程序以下(旁邊有加補充注釋):#include<stdio.h>#include<signal.h>#include<unistd.h>#include<sys/types.h>intwait_flag;voidstop();main(){intpid1,pid2; //定義兩個進程號變量signal(3,stop); //或者signal(14,stop);while((pid1=fork())==-1); //若創(chuàng)立子進程1不成功,則空循環(huán)if(pid1>0){ //子進程創(chuàng)立成功,pid1為進程號while((pid2=fork())==-1); //創(chuàng)立子進程2if(pid2>0){wait_flag=1;sleep(5); //父進程等待5秒kill(pid1,16); //殺死進程1kill(pid2,17); //殺死進程2wait(0); //等待第1個子進程1結(jié)束的信號wait(0); //等待第2個子進程2結(jié)束的信號printf("\nParentprocessiskilled!!\n");exit(0); //父進程結(jié)束}else{wait_flag=1;signal(17,stop); //等待進程2被殺死的中斷號17printf("\nChildprocess2iskilledbyparent!!\n");exit(0);}}else{wait_flag=1;signal(16,stop); //等待進程1被殺死的中斷號16printf("\nChildprocess1iskilledbyparent!!\n");exit(0);}}voidstop(){wait_flag=0;}2、進程的管道通信算法流程圖(2)參考程序源代碼#include<unistd.h>#include<signal.h>#include<stdio.h>intpid1,pid2;//定義兩個進程變量main(){intfd[2];charOutPipe[100],InPipe[100]; //定義兩個字符數(shù)組pipe(fd); //創(chuàng)立管道while((pid1=fork())==-1); //如果進程1創(chuàng)立不成功,則空循環(huán)if(pid1==0){//如果子進程1創(chuàng)立成功,pid1為進程號lockf(fd[1],1,0); //鎖定管道sprintf(OutPipe,"\nChildprocess1issendingmessage!\n");//給Outpipe賦值write(fd[1],OutPipe,50); //向管道寫入數(shù)據(jù)sleep(5); //等待讀進程讀出數(shù)據(jù)lockf(fd[1],0,0); //解除管道的鎖定exit(0); //結(jié)束進程1}else{while((pid2=fork())==-1); //若進程2創(chuàng)立不成功,則空循環(huán)if(pid2==0){lockf(fd[1],1,0);sprintf(OutPipe,"\nChildprocess2issendingmessage!\n");write(fd[1],OutPipe,50);sleep(5);lockf(fd[1],0,0);exit(0);}else{wait(0); //等待子進程1結(jié)束read(fd[0],InPipe,50); //從管道中讀出數(shù)據(jù)printf("%s\n",InPipe); //顯示讀出的數(shù)據(jù)wait(0); //等待子進程2結(jié)束read(fd[0],InPipe,50);printf("%s\n",InPipe);exit(0); //父進程結(jié)束}}}實驗過程:編寫程序;執(zhí)行并分析成果五.實驗成果:1.進程的軟中斷通信:實驗成果:2.進程的管道通信:實驗成果:
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)審和管理評審培訓(xùn)課件
- 手球指紋課件教學(xué)課件
- 營養(yǎng)門診課件教學(xué)課件
- 第三章第一節(jié)第二課時鐵鹽和亞鐵鹽高一上學(xué)期化學(xué)人教版(2019)必修第一冊
- 護理學(xué)科建設(shè)競聘
- 2.3.2氣體摩爾體積 課件 高一上學(xué)期化學(xué)人教版(2019)必修第一冊
- 新食品安全責(zé)任制度
- 沉與浮科學(xué)教案反思
- 化學(xué)反應(yīng)速率說課稿
- 好玩的沙子說課稿
- 排架、腳手架驗收記錄
- WANG氏TBNA穿刺定位法課件
- 酒店電梯的設(shè)置及選擇運行要點管理
- 煤礦安全避險系統(tǒng)有效性評估
- 濃密機電氣部分說明書
- 漢字應(yīng)用水平測試國家卷
- 曼昆《經(jīng)濟學(xué)原理》(微觀)第五版測試題庫 (09)
- 2022年《父母課堂》如何幫助孩子順利度過小學(xué)分化年級教學(xué)案例
- 幕墻拆除施工方案-(2)
- 感染性心內(nèi)膜炎ppt課件
- 青春期人際交往
評論
0/150
提交評論