




已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
操作系統(tǒng)原理實(shí)驗(yàn)指導(dǎo)書1、Linux環(huán)境下基本命令的使用2、進(jìn)程管理實(shí)驗(yàn)3、命令解釋程序的實(shí)現(xiàn)1、 實(shí)驗(yàn)一Linux環(huán)境下基本命令的使用一、實(shí)驗(yàn)?zāi)康模海?)掌握Shell命令在Unix或Linux操作系統(tǒng)中的作用。(2)理解Shell命令的解釋和運(yùn)行機(jī)制。(3)掌握Unix或Linux系統(tǒng)環(huán)境下的常用的Shell基本操作命令。二、 實(shí)驗(yàn)內(nèi)容:(1) 查看系統(tǒng)的命令提示符,確定系統(tǒng)使用的Shell程序類型,列出Linux系統(tǒng)常見的Shell種類。(2) 查看當(dāng)前登錄在系統(tǒng)中的用戶列表、系統(tǒng)中的用戶總數(shù)和系統(tǒng)啟動(dòng)時(shí)間。(3) 查看當(dāng)前的日期和時(shí)間。(4) 顯示當(dāng)前目錄,改變到用戶主目錄并列出當(dāng)前目錄的內(nèi)容。(5) 在當(dāng)前目錄下,創(chuàng)建名為 “自己姓名(用自己學(xué)號(hào)代替)”的新目錄。在所創(chuàng)建的目錄下創(chuàng)建名為“newfile”的新文件。(6) 在屏幕上顯示文件newfile的內(nèi)容。(7) 刪除“自己姓名”中的newfile文件。(8) 當(dāng)前目錄的目錄“自己姓名”。(9) 列出所有文件。三、 實(shí)驗(yàn)步驟:1、登錄和退出 登錄服務(wù)器系統(tǒng): root (實(shí)際的用戶名自己設(shè)置)。 在login:后輸入用戶帳號(hào)(第一次進(jìn)入輸入 root): 密碼:未知 登錄后,輸入passwd命令來修改密碼。根據(jù)提示輸入當(dāng)前密碼,再輸入兩次新的密碼。 輸入logout命令或exit命令退出系統(tǒng)。2、 獲取幫助信息命令man提供了系統(tǒng)操作命令的在線幫助。例如,輸入man passwd 可以獲取命令passwd的幫助說明;輸入man open 可以獲取open 函數(shù)的幫助說明。按空格鍵,翻頁(yè)瀏覽。按,再按q退出幫助。 3、 基本操作命令pwd:確定你當(dāng)前的工作目錄 ls -al:顯示當(dāng)前工作目錄的內(nèi)容 mkdir:建立一個(gè)子目錄 cd:轉(zhuǎn)換目錄 cat或more:查看文件內(nèi)容 cp:復(fù)制文件 rm -i:刪除文件 mv:重命名文件 find:查找文件 vi編輯命令新文件 who查看當(dāng)前登錄在系統(tǒng)中的用戶列表、系統(tǒng)中的用戶總數(shù)和系統(tǒng)啟動(dòng)時(shí)間。各個(gè)命令的具體使用方法,可以用man命令查看。4、 vi編輯器vi編輯器是一個(gè)小巧但功能強(qiáng)大的程序。vi編輯器有三種不同的模式:插入模式這個(gè)模式是通過在命令模式按下“i”鍵進(jìn)入的。命令模式這是用戶輸入單鍵命令的模式。在其他模式中按下ESC鍵就可以進(jìn)入命令模式。 常見的執(zhí)行刪除操作的命令有: dd 刪除整個(gè)行 #dd 按照輸入的數(shù)字(),從當(dāng)前行刪除幾行 D 刪除光標(biāo)位置后面全部?jī)?nèi)容 dw 刪除光標(biāo)所在位置的單詞冒號(hào)模式從命令模式輸入一個(gè)冒號(hào)(:)就可以進(jìn)入這個(gè)模式。常見的冒號(hào)模式命令有:wq 保存且退出編輯器:w 保存但不退出:q 退出且不保存:q! 強(qiáng)行退出vi,不保存。:help 獲取幫助1) 在系統(tǒng)提示符($)下輸入命令vi和想要編輯(建立)的文件名vi test.c 2) 按鍵I進(jìn)入插入模式。屏幕上看不到字符i,屏幕下方出現(xiàn)-INSERT-字樣。3) 輸入你的程序:/*#include void my_print1(char *);void my_print2(char *);main () char string = “hello world”;my_print1 (string); my_print2 (string); void my_print1(char *string) printf(“The string is %sn”, string); void my_print2(char *string) char *string2; int size, i; size = strlen (string); string2 = (char *) malloc (size + 1); for (i = 0; i size; i+) string2size i = stringi; string2size+1 = 0; printf (“The string printed backward is %sn”, string2); 4) 按Esc鍵,從插入模式進(jìn)入冒號(hào)模式。5) 輸入wq,保存退出四、 實(shí)驗(yàn)報(bào)告要求:1記錄輸入LINUX相關(guān)命令后系統(tǒng)輸出。2使用過程出現(xiàn)的問題及解決方法實(shí)驗(yàn)二: 進(jìn)程管理實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康模海?)了解有關(guān)Linux系統(tǒng)調(diào)用。(2)學(xué)習(xí)有關(guān)Linux的進(jìn)程創(chuàng)建,理解進(jìn)程創(chuàng)建后兩個(gè)并發(fā)進(jìn)程的執(zhí)行。(3)加深對(duì)進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別。二、實(shí)驗(yàn)內(nèi)容(1)進(jìn)程的創(chuàng)建。 在Linux環(huán)境下,編寫一個(gè)程序使用系統(tǒng)調(diào)用fork()創(chuàng)建2個(gè)子進(jìn)程。當(dāng)此子進(jìn)程運(yùn)行時(shí),在系統(tǒng)中由一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動(dòng)。讓每個(gè)進(jìn)程在屏幕上顯示一個(gè)字符;父進(jìn)程顯示字符x,子進(jìn)程分別顯示y和z。試記錄屏幕上的顯示結(jié)果,并分析原因。(2)進(jìn)程的管道通信。編寫一個(gè)程序使用系統(tǒng)調(diào)用fork生成3個(gè)子進(jìn)程,并使用系統(tǒng)調(diào)用pipe創(chuàng)建一個(gè)管道,使得這3個(gè)子進(jìn)程和父進(jìn)程公用同一管道進(jìn)行信息通信要求該程序?qū)崿F(xiàn)數(shù)據(jù)的輸入、輸出以及信息提示(3)加深對(duì)進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別。三、實(shí)驗(yàn)提示:(一)、Linux的系統(tǒng)調(diào)用1. 進(jìn)程控制的系統(tǒng)調(diào)用l 1)fork系統(tǒng)調(diào)用創(chuàng)建新的子進(jìn)程格式: pid=int fork()fork調(diào)用返回時(shí),系統(tǒng)中已有兩個(gè)用戶級(jí)環(huán)境完全相同的進(jìn)程存在,這兩個(gè)進(jìn)程從fork調(diào)用中得到的返回值不同,其中子進(jìn)程得到的返回值為零,父進(jìn)程得到的返回值是新創(chuàng)建子進(jìn)程的進(jìn)程標(biāo)識(shí)號(hào)。l2)exec系統(tǒng)調(diào)用 格式:int execl(path,arg0,arg1,argn,(char *)0)char *path, *arg0, *arg1, , *argn ;exec調(diào)用進(jìn)程的正文段被指定的目標(biāo)文件的正文段所覆蓋,其屬性的變化方式與fork成功后從父進(jìn)程那里繼承屬性的方式幾乎是一樣的。系統(tǒng)中絕大多數(shù)命令都是通過exec來執(zhí)行的,不但shell進(jìn)程所創(chuàng)建的子進(jìn)程使用它來執(zhí)行用戶命令,shell進(jìn)程本身和它的祖先進(jìn)程也是用exec來啟動(dòng)執(zhí)行的。l3) exit 系統(tǒng)調(diào)用終止進(jìn)程執(zhí)行格式:void exit(status) ;int status ;參數(shù)status是調(diào)用進(jìn)程終止時(shí)傳遞給其父進(jìn)程的值。如調(diào)用進(jìn)程還有子進(jìn)程,則將其所有子進(jìn)程的父進(jìn)程改為1號(hào)進(jìn)程。4) wait 系統(tǒng)調(diào)用等待子進(jìn)程暫仃或終止格式:int wait(stat_loc) int wait(int *)0)int stat_loc ;wait 調(diào)用將調(diào)用進(jìn)程掛起,直到該進(jìn)程收到一個(gè)被其捕獲的信號(hào)或者它的任何一個(gè)子進(jìn)程暫仃或終止為止。如果wait 調(diào)用之前已有子進(jìn)程暫仃或終止,則該調(diào)用立即返回。5) lockf 鎖定文件格式:int lockf(fd,fuction,size)int files, fuction; long size; fd 鎖定文件標(biāo)識(shí)function=0表示不鎖定;function =1(鎖定);function2(測(cè)試和鎖定);function3測(cè)試有否被鎖定size -鎖定或解鎖的字節(jié)數(shù),0表示從文件的當(dāng)前位置到文件尾。(二)、進(jìn)程創(chuàng)建程序include void main(int argc, char *argv ) int pid;pid=fork(); /* fork child process */if (pid0) fprintf(stderr, “Fork Failed”); exit(-1);else if (pid= =0) /* child process */ execlp(“/bin/ls”,”ls”,NULL);else /* 進(jìn)入父進(jìn)程 */ wait(NULL);printf(“child Complete”);exit(0);(三)、進(jìn)程通信的系統(tǒng)調(diào)用函數(shù)實(shí)例l 1)pipe系統(tǒng)調(diào)用格式: int pipe (filedes)int filedes 2;l 管道通信程序#include #include char parent=“A message from parent .”;char child=“A message from child .”;main()int chan12,chan22;char buf100;if (pipe(chan1)=-1 | pipe(chan2)=-1) errexit(“pipe”);if (fork()close(chan10); close(chan21);write(chan11,parent,sizeof parent);close(chan11);read(chan20,buf,100);printf(“parent process : %s n”,buf);close(chan20);elseclose(chan11); close(chan20);read(chan10,buf,100);printf(“child process : %s n”,buf);write(chan21,child,sizeof child);close(chan21); close(chan10);四、程序?qū)崿F(xiàn)1、 進(jìn)程的創(chuàng)建2、 進(jìn)程間通信的實(shí)現(xiàn)五、實(shí)驗(yàn)報(bào)告要求1記錄輸入LINUX相關(guān)命令后系統(tǒng)輸出。2記錄C程序,進(jìn)行編譯運(yùn)行和調(diào)試。3分析運(yùn)行結(jié)果。4體會(huì)實(shí)驗(yàn)三綜合上機(jī)命令解釋程序的實(shí)現(xiàn) 一、實(shí)驗(yàn)?zāi)康模簩?shí)現(xiàn)一個(gè)簡(jiǎn)單的命令解釋程序,掌握操作系統(tǒng)命令解釋程序的實(shí)現(xiàn)原理。二、實(shí)驗(yàn)內(nèi)容:編寫C程序parse來完成一個(gè)簡(jiǎn)單的命令解釋程序,能夠支持以下四個(gè)命令: quit、disp、list、changedir。三、實(shí)驗(yàn)要求:(1)parse應(yīng)提供一個(gè)命令提示符,如parse,表示接收用戶的輸入,每次執(zhí)行完成后再打印下一個(gè)命令提示符parse。當(dāng)用戶沒有輸入時(shí),parse需要一直處于隨時(shí)等待輸入狀態(tài),同時(shí)再屏幕上顯示一些必要的信息。(2)如果用戶提交了一個(gè)內(nèi)部命令,parse應(yīng)當(dāng)按照下面的描述執(zhí)行相應(yīng)動(dòng)作。l quit:結(jié)束所有的子進(jìn)程并退出parse.l disp: 顯示命令行后的所有字符。l list:列出當(dāng)前目錄下的所有文件。l changedir:改變當(dāng)前目錄到所輸入目錄。(3)分析用戶輸入 1)分析用戶輸入的語(yǔ)法分析器應(yīng)具有下面介紹的功能,它能夠檢查用戶的輸入錯(cuò)誤。如用戶輸入的某些地方出錯(cuò)了,parse應(yīng)提供合理的出錯(cuò)信息。 2)就像shell一樣,parse每次接受用戶輸入的一行命令,在用戶按下回車鍵(Enter)后開始執(zhí)行分析動(dòng)作。四、實(shí)驗(yàn)環(huán)境 本實(shí)驗(yàn)的程序用C語(yǔ)言編寫,使用makefile文件編譯整個(gè)程序,生成一個(gè)名為parse可執(zhí)行程序,在終端輸入“/parse”即可執(zhí)行。makefile文件的內(nèi)容如下: parse: parse.c cc parse.c o parse五、流程圖開始輸入一行命令是什么命令?退出文件處理程序結(jié)束是否操作命令顯示文件處理程序列文件處理程序改變目錄文件處理程序是quitdisplistchangedir否六、程序?qū)崿F(xiàn)l quit:退出parse程序的執(zhí)行.l disp: 顯示命令行后的所有字符。l list:列出當(dāng)前目錄下的所有文件。l changedir:改變當(dāng)前目錄到所輸入目錄。#include stdio.h#include string.h#include unistd.hchar real_cmd200,reference200;get_cmd(char cmd200) int i=0,j=0,k=0; real_cmd0=0; reference0=0; while (cmdi!=0 & cmdi= i+; while (cmdi!=0 & cmdi!= real_cmdj+=cmdi+; real_cmdj=0; if (cmdi!=0) strcpy(reference,cmd+i+1);main() char cmd200; int quit=0,ch=0,cmd_len,c10; while (quit=0) printf(); fgets(cmd,200,stdin); cmdstrlen(cmd)-1=0; get_cmdcmd; if (real_cmd0=0 continue; printf(input command:%s%sn,real_cmd,reference); if (strcmp(real_cmd,list)=0) sprintf(cmd,ls %s,reference); system(cmd); else if ( ) quit=1; else if (strcmp(real_cmd,changedir)=0)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 哈爾濱2024高三數(shù)學(xué)試卷
- 海納教育數(shù)學(xué)試卷
- 河?xùn)|一年級(jí)數(shù)學(xué)試卷
- 2025-2030年中國(guó)郵件輸送分揀系統(tǒng)項(xiàng)目投資可行性研究分析報(bào)告
- 2025年中國(guó)汽車外部清洗機(jī)行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025年中國(guó)冷凍離心機(jī)行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略規(guī)劃研究報(bào)告
- 軌枕墊行業(yè)深度研究分析報(bào)告(2024-2030版)
- 2024年中國(guó)精制鎳行業(yè)市場(chǎng)調(diào)查報(bào)告
- 2025年中國(guó)選礦機(jī)械行業(yè)市場(chǎng)行情動(dòng)態(tài)研究報(bào)告
- 健康用藥課件圖片素材
- 2025年下半年佛山市圖書館招考工作人員易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 社區(qū)社會(huì)工作課件
- 《國(guó)際貿(mào)易理論與實(shí)務(wù)》考試復(fù)習(xí)題庫(kù)(含答案)
- 浙江省杭州市拱墅區(qū)2025年中考英語(yǔ)一模試卷(含筆試答案無聽力答案、原文及音頻)
- 2025-2030全球及中國(guó)綜合設(shè)施管理(IFM)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 公路工程標(biāo)準(zhǔn)施工招標(biāo)文件第八章-工程量清單計(jì)量規(guī)則(2018年版)
- 看場(chǎng)工作合同協(xié)議
- 營(yíng)運(yùn)客車安全例行檢查規(guī)范
- 出口空運(yùn)知識(shí)培訓(xùn)課件
- 工藝驗(yàn)證檢查指南2025
- 安徽亳州譙城在建風(fēng)電場(chǎng)項(xiàng)目“9.5”較大高處墜落事故調(diào)查報(bào)告警示教育專題學(xué)習(xí)
評(píng)論
0/150
提交評(píng)論