《操作系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
《操作系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
《操作系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
《操作系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
《操作系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余9頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

10《操作系統(tǒng)原理》試驗(yàn)指導(dǎo)書(shū)1、Linux環(huán)境下根本命令的使用2、進(jìn)程治理試驗(yàn)3、命令解釋程序的實(shí)現(xiàn)1、試驗(yàn)一 Linux環(huán)境下根本命令的使用一、試驗(yàn)?zāi)康模喊盐誗hell命令在Unix或Linux理解Shell把握UnixLinuxShell二、試驗(yàn)內(nèi)容:查看系統(tǒng)的命令提示符ShellLinux系統(tǒng)常見(jiàn)的Shell種類。查看當(dāng)前登錄在系統(tǒng)中的用戶列表、系統(tǒng)中的用戶總數(shù)和系統(tǒng)啟動(dòng)時(shí)間。查看當(dāng)前的日期和時(shí)間。顯示當(dāng)前名目,轉(zhuǎn)變到用戶主名目并列出當(dāng)前名目的內(nèi)容。在當(dāng)前名目下,創(chuàng)立名為“自己姓名〔用自己學(xué)號(hào)代替下創(chuàng)立名為“newfile”的文件。在屏幕上顯示文件newfile的內(nèi)容。刪除“自己姓名”中的newfile文件。當(dāng)前名目的名目“自己姓名”。列出全部文件。三、試驗(yàn)步驟:1、登錄和退出<1>登錄效勞器系統(tǒng):root(實(shí)際的用戶名自己設(shè)置)。<2>login:后輸入用戶帳號(hào)(第一次進(jìn)入輸入root):密碼:未知<3>登錄后,輸入passwd命令來(lái)修改密碼。依據(jù)提示輸入當(dāng)前密碼,再輸入兩次的密碼。<4>輸入logout命令或exit命令退出系統(tǒng)。2man供給了系統(tǒng)操作命令的在線幫助。例如,輸入manpasswd可以獵取命令passwdmanopen可以獵取open<shift><:>,q退出幫助。3<1>pwd:確定你當(dāng)前的工作名目<2>ls-al:顯示當(dāng)前工作名目的內(nèi)容<3>mkdir:建立一個(gè)子名目<4>cd:轉(zhuǎn)換名目<5>cat或more:查看文件內(nèi)容<6>cp:復(fù)制文件<7>rm-i:刪除文件<8>mv:重命名文件<9>find:查找文件<10>vi編輯命令文件<11>who查看當(dāng)前登錄在系統(tǒng)中的用戶列表、系統(tǒng)中的用戶總數(shù)和系統(tǒng)啟動(dòng)時(shí)間。各個(gè)命令的具體使用方法,可以用man命令查看。4vi編輯器vi編輯器是一個(gè)小巧但功能強(qiáng)大的程序。vi編輯器有三種不同的模式:鍵進(jìn)入的。命令模式——這是用戶輸入單鍵命令的模式。在其他模式中按下ESC鍵就可以進(jìn)入命令模式。常見(jiàn)的執(zhí)行刪除操作的命令有:dd 刪除整個(gè)行#dd 依據(jù)輸入的數(shù)字〔#,從當(dāng)前行刪除幾行D 刪除光標(biāo)位置后面全部?jī)?nèi)容dw 刪除光標(biāo)所在位置的單詞冒號(hào)模式——從命令模式輸入一個(gè)冒號(hào)〔〕令有::wq保存且退出編輯器:w 保存但不退出:q 退出且不保存:q! 強(qiáng)行退出vi,不保存。:help獵取幫助在系統(tǒng)提示符〔$〕下輸入命令vi和想要編輯〔建立〕的文件名vitest.c<enter>I進(jìn)入插入模式。屏幕上看不到字符i,屏幕下方消滅--INSERT--字樣。輸入你的程序:/*********************************************************************#include<stdio.h>voidmy_print1(char*);voidmy_print2(char*);main{charstring[]=“helloworld”;my_print1(string);my_print2(string);}voidmy_print1(char*string){printf(“Thestringis%s\n”,string);}voidmy_print2(char*string){char*string2;intsize,i;size=strlen(string);string2=(char*)malloc(size+1);for(i=0;i<size;i++){string2[size–i]=string[i];}string2[size+1]=‘\0’;printf(“Thestringprintedbackwardis%s\n”,string2);}按〈Esc〉鍵,從插入模式進(jìn)入冒號(hào)模式。wq,保存退出四、試驗(yàn)報(bào)告要求:記錄輸入LINUX相關(guān)命令后系統(tǒng)輸出。使用過(guò)程消滅的問(wèn)題及解決方法一、試驗(yàn)?zāi)康模?/p>

試驗(yàn)二:進(jìn)程治理試驗(yàn)了解有關(guān)Linux學(xué)習(xí)有關(guān)Linux的進(jìn)程創(chuàng)立,理解進(jìn)程創(chuàng)立后兩個(gè)并發(fā)進(jìn)程的執(zhí)行。加深對(duì)進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)分。二、試驗(yàn)內(nèi)容進(jìn)程的創(chuàng)立。Linuxfork創(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)程分別顯示’yz’。試記錄屏幕上的顯示結(jié)果,并分析緣由。進(jìn)程的管道通信。編寫(xiě)一個(gè)程序使用系統(tǒng)調(diào)用fork3pipe創(chuàng)立一個(gè)管道,3個(gè)子進(jìn)程和父進(jìn)程公用同一管道進(jìn)展信息通信要求該程序?qū)崿F(xiàn)數(shù)據(jù)的輸入出以及信息提示加深對(duì)進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)分。三、試驗(yàn)提示:〔一、Linux的系統(tǒng)調(diào)用1.進(jìn)程掌握的系統(tǒng)調(diào)用1〕fork格式:pid=intforkfork調(diào)用返回時(shí),系統(tǒng)中已有兩個(gè)用戶級(jí)環(huán)境完全一樣的進(jìn)程存在,這兩個(gè)進(jìn)程從fork調(diào)程的進(jìn)程標(biāo)識(shí)號(hào)。2〕exec*)0)char*path,*arg0,*arg1,*argnexec調(diào)用進(jìn)程的正文段被指定的目標(biāo)文件的正文段所掩蓋,其屬性的變化方式與fork成功后從父進(jìn)程那里繼承屬性的方式幾乎是一樣的。系統(tǒng)中絕大多數(shù)命令都是通過(guò)exec來(lái)執(zhí)行的,不但shell進(jìn)程所創(chuàng)立的子進(jìn)程使用它來(lái)執(zhí)行用戶命令,shell進(jìn)程本身和它的祖先進(jìn)程也是用execexit系統(tǒng)調(diào)用終止進(jìn)程執(zhí)行格式:voidexit(status);intstatus;參數(shù)status1wait系統(tǒng)調(diào)用等待子進(jìn)程暫仃或終止格式:intwait(stat_loc)intwait((int*)0)intstat_loc;wait暫仃或終止為止。假設(shè)wait調(diào)用之前已有子進(jìn)程暫仃或終止,則該調(diào)用馬上返回。lockf鎖定文件格式:intlockf(fd,fuction,size)intfiles,fuction;longsize;fd–鎖定文件標(biāo)識(shí)function=0function=〔鎖定functio=2〔測(cè)試和鎖定function=3size--鎖定或解鎖的字節(jié)數(shù),0〔二、進(jìn)程創(chuàng)立程序#include<stdio.h>voidmain(intargc,char*argv[]){intpid;pid=fork;/*forkchildprocess*/if(pid<0){fprintf(stderr,“ForkFailed”);exit(-1);}elseif(pid==0)/*childprocess*/{execlp(“/bin/ls”,”ls”,NULL);}else/**/{wait(NULL);printf(“childComplete”);exit(0);}}〔三、進(jìn)程通信的系統(tǒng)調(diào)用函數(shù)實(shí)例pipe格式:intpipe(filedes)intfiledes[2];管道通信程序#include<stdio.h>#include<fcntl.h>charparent[]={“Amessagefromparent.”};charchild[]={“Amessagefromchild.”};main{intchan1[2],chan2[2];charbuf[100];if(pipe(chan1)==-1||pipe(chan2)==-1)errexit(“pipe”);if(fork){close(chan1[0]);close(chan2[1]);write(chan1[1],parent,sizeofparent);close(chan1[1]);read(chan2[0],buf,100);printf(“parentprocess:%s\n”,buf);close(chan2[0]);}else{close(chan1[1]);close(chan2[0]);read(chan1[0],buf,100);printf(“childprocess:%s\n”,buf);write(chan2[1],child,sizeofchild);close(chan2[1]);close(chan1[0]);}}四、程序?qū)崿F(xiàn)1、進(jìn)程的創(chuàng)立2、進(jìn)程間通信的實(shí)現(xiàn)五、試驗(yàn)報(bào)告要求記錄輸入LINUX相關(guān)命令后系統(tǒng)輸出。記錄C分析運(yùn)行結(jié)果。體會(huì)試驗(yàn)三綜合上機(jī)-命令解釋程序的實(shí)現(xiàn)一、試驗(yàn)?zāi)康模簩?shí)現(xiàn)一個(gè)簡(jiǎn)潔的命令解釋程序,把握操作系統(tǒng)命令解釋程序的實(shí)現(xiàn)原理。二、試驗(yàn)內(nèi)容:編寫(xiě)C程序parse來(lái)完成一個(gè)簡(jiǎn)潔的命令解釋程序,能夠支持以下四個(gè)命令:quit、disp、list、changedir。三、試驗(yàn)要求:parseparse>,印下一個(gè)命令提示符parse>。當(dāng)用戶沒(méi)有輸入時(shí),parse需要始終處于隨時(shí)等待輸入狀態(tài),同時(shí)再屏幕上顯示一些必要的信息。假設(shè)用戶提交了一個(gè)內(nèi)部命令,parse應(yīng)當(dāng)依據(jù)下面的描述執(zhí)行相應(yīng)動(dòng)作。quit:完畢全部的子進(jìn)程并退出parse.disp:顯示命令行后的全部字符。list:列出當(dāng)前名目下的全部文件。changedir:轉(zhuǎn)變當(dāng)前名目到所輸入名目。分析用戶輸入分析用戶輸入的語(yǔ)法分析器應(yīng)具有下面介紹的功能,它能夠檢查用戶的輸入錯(cuò)誤。如用戶輸入的某些地方出錯(cuò)了,parse應(yīng)供給合理的出錯(cuò)信息。就像shell一樣,parse每次承受用戶輸入的一行命令,在用戶按下回車鍵〔Enter〕后開(kāi)頭執(zhí)行分析動(dòng)作。四、試驗(yàn)環(huán)境本試驗(yàn)的程序用Cmakefileparse可執(zhí)行程序,在終端輸入“/parse”即可執(zhí)行。makefile文件的內(nèi)容如下:parse: parse.cccparse.c–oparse五、流程圖開(kāi)頭開(kāi)頭輸入一行命令否是否操作命令是是什么命令?quit退出文件處理程序displistchangedir顯示文件處理程序列文件處理程序轉(zhuǎn)變名目文件處理程序完畢六、程序?qū)崿F(xiàn)quit:退出parse程序的執(zhí)行.disp:顯示命令行后的全部字符。list:列出當(dāng)前名目下的全部文件。changedir:轉(zhuǎn)變當(dāng)前名目到所輸入名目。#include“stdio.h“#include“string.h“#include“unistd.h“charreal_cmd[200],reference[200];get_cmd(charcmd[200]){inti=0,j=0,k=0;real_cmd[0]=”\0”;reference[0]=”\0”;while(cmd[i]!=”\0”&&cmd[i]=””i++;while(cmd[i]!=”\0”&&cmd[i]!=””real_cmd[j++]=cmd[i++];real_cmd[j]=”\0”;if(cmd[i]!=”\0”)strcpy(reference,cmd+i+1);}main{charcmd[200];intquit=0,ch=0,cmd_len,c[10];while(quit==0){ printf(“>“);fgets(cmd,200,stdin);cmd[strlen(cmd)-1]=”\0”;get_cmd[cmd];if(real_cmd[0]==”\0”continue;printf(“inputcommand:[%s][%s]\n“,real_cmd,reference);if(strcmp(real_cmd,“l(fā)ist“)==0){ sprintf(cmd,“l(fā)s%s“,reference);system(cmd);}elseif( )quit=1;else

if(strcmp(real_cmd,“changedir“)==0)if

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論