計(jì)算機(jī)操作系統(tǒng)計(jì)算機(jī)操作系統(tǒng)第2章課件_第1頁(yè)
計(jì)算機(jī)操作系統(tǒng)計(jì)算機(jī)操作系統(tǒng)第2章課件_第2頁(yè)
計(jì)算機(jī)操作系統(tǒng)計(jì)算機(jī)操作系統(tǒng)第2章課件_第3頁(yè)
計(jì)算機(jī)操作系統(tǒng)計(jì)算機(jī)操作系統(tǒng)第2章課件_第4頁(yè)
計(jì)算機(jī)操作系統(tǒng)計(jì)算機(jī)操作系統(tǒng)第2章課件_第5頁(yè)
已閱讀5頁(yè),還剩117頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第二章用戶與操作系統(tǒng)的接口2.1作業(yè)控制級(jí)接口2.2程序級(jí)接口2.3UNIX的用戶界面Shell簡(jiǎn)介第二章用戶與操作系統(tǒng)的接口2.1作業(yè)控制級(jí)接口12.1作業(yè)控制級(jí)接口2.1.1作業(yè)、作業(yè)步、作業(yè)流所謂作業(yè)就是用戶一次請(qǐng)求計(jì)算機(jī)系統(tǒng)為它完成任務(wù)所進(jìn)行的工作總和。一般來(lái)說(shuō)為了完成其任務(wù),可以將作業(yè)細(xì)分成若干個(gè)作業(yè)步。作業(yè)步就是處理作業(yè)的各個(gè)獨(dú)立的子任務(wù),系統(tǒng)可以創(chuàng)建若干進(jìn)程完成各作業(yè)步的計(jì)算,所以說(shuō)一個(gè)作業(yè)是由若干作業(yè)步組成的。2.1作業(yè)控制級(jí)接口2.1.1作業(yè)、作業(yè)步、作業(yè)流2以在PC機(jī)上用MS-DOS控制時(shí),其作業(yè)加工的步驟為例:(1)編輯:A>EDLINUSER.ASM(2)匯編:A>MASMUSER(3)鏈接:A>LINKUSER(4)執(zhí)行:A>USER最后執(zhí)行USER.EXE文件獲得所要的結(jié)果。以在PC機(jī)上用MS-DOS控制時(shí),其作業(yè)加32.1.2作業(yè)的類(lèi)型根據(jù)計(jì)算機(jī)系統(tǒng)的作業(yè)處理方式不同,可把作業(yè)分成兩大類(lèi):脫機(jī)作業(yè)聯(lián)機(jī)作業(yè)。2.1.2作業(yè)的類(lèi)型42.1.3作業(yè)控制命令與鍵盤(pán)操作命令1.脫機(jī)用戶接口脫機(jī)用戶接口由一組作業(yè)控制命令,或稱(chēng)作業(yè)控制語(yǔ)言組成。脫機(jī)用戶接口用于脫機(jī)控制方式。所謂脫機(jī)控制方式就是把對(duì)作業(yè)進(jìn)行控制的意圖,連同程序和數(shù)據(jù)及發(fā)生故障后的處理措施一起輸入系統(tǒng)中,由系統(tǒng)根據(jù)該意圖來(lái)控制作業(yè)的執(zhí)行。在批處理系統(tǒng)中,用戶利用作業(yè)控制(命令)語(yǔ)言寫(xiě)成作業(yè)說(shuō)明書(shū)提交給系統(tǒng),由系統(tǒng)按照作業(yè)說(shuō)明書(shū)上的命令,逐條解釋執(zhí)行。用戶一旦把作業(yè)提交給系統(tǒng)后,便失去直接與作業(yè)交互的能力。2.1.3作業(yè)控制命令與鍵盤(pán)操作命令1.5(1)作業(yè)控制卡。作業(yè)控制卡主要用在早期的批處理系統(tǒng)管理中。作業(yè)控制卡接口方式就是使用作業(yè)控制語(yǔ)言(JCL)將用戶對(duì)作業(yè)的控制意圖及發(fā)生故障后如何處理以編碼的形式穿孔在卡片上,插入到用戶程序、數(shù)據(jù)的卡片疊中一起送入系統(tǒng),由系統(tǒng)解釋控制卡內(nèi)容并控制作業(yè)運(yùn)行。作業(yè)控制卡方式使用不方便,容易出錯(cuò)且較麻煩,所以現(xiàn)在一般很少使用。(1)作業(yè)控制卡。作業(yè)控制卡主要用在早期的6(2)作業(yè)說(shuō)明書(shū)方式。作業(yè)說(shuō)明書(shū)方式是使用某些作業(yè)控制命令將用戶對(duì)作業(yè)控制的意圖寫(xiě)成作業(yè)說(shuō)明書(shū),從而實(shí)現(xiàn)對(duì)作業(yè)的控制。作業(yè)說(shuō)明書(shū)主要包括作業(yè)情況和作業(yè)資源要求兩方面的內(nèi)容,前者主要指用戶名、作業(yè)名、使用語(yǔ)言、作業(yè)控制方式、作業(yè)優(yōu)先級(jí)、完成作業(yè)的最遲時(shí)間等。后者包括內(nèi)存和外存的空間要求量、輸入/輸出設(shè)備的類(lèi)型、臺(tái)數(shù)、輸出量、估計(jì)的計(jì)算時(shí)間等。(2)作業(yè)說(shuō)明書(shū)方式。作業(yè)說(shuō)明書(shū)方式是使用某7作業(yè)說(shuō)明書(shū)中常用命令的主要類(lèi)型如下:①輸入/輸出命令:對(duì)源程序、數(shù)據(jù)及其作業(yè)說(shuō)明書(shū)的輸入及其運(yùn)行結(jié)果輸出的命令。②編譯命令:對(duì)源程序進(jìn)行編譯,若有錯(cuò)誤顯示錯(cuò)誤,若無(wú)錯(cuò)誤將其編譯成目標(biāo)程序。③操作命令:主要是對(duì)作業(yè)操作的各種命令。如對(duì)目標(biāo)程序的裝配,程序的重新啟動(dòng),限定其運(yùn)行時(shí)間等的命令。④條件命令:主要用于表示當(dāng)程序運(yùn)行過(guò)程中發(fā)生某個(gè)事件時(shí)應(yīng)轉(zhuǎn)向哪一條操作命令。作業(yè)說(shuō)明書(shū)中常用命令的主要類(lèi)型如下:82.聯(lián)機(jī)用戶接口聯(lián)機(jī)用戶接口是由一組操作系統(tǒng)命令組成,用于聯(lián)機(jī)作業(yè)的控制。1)命令驅(qū)動(dòng)方式COMMANDarg1,arg2,...,argn<CR>其中,COMMAND是命令名,arg1,arg2,...,argn是命令參數(shù),命令參數(shù)的有無(wú)和多少由命令本身決定。<CR>代表回車(chē)鍵,一般作為命令的結(jié)束符。只有按下回車(chē)鍵,該命令才能被系統(tǒng)接收。2.聯(lián)機(jī)用戶接口聯(lián)機(jī)用戶接口是由一組操作9一般命令類(lèi)型有如下幾種:①系統(tǒng)訪問(wèn)命令②編輯和文件管理命令③編譯、匯編和連接命令④調(diào)試命令⑤維護(hù)管理命令⑥其它命令一般命令類(lèi)型有如下幾種:102)窗口系統(tǒng)與菜單驅(qū)動(dòng)方式在運(yùn)行Windows時(shí),其操作都是在桌面上進(jìn)行。桌面是指整個(gè)屏幕空間。該桌面是由多個(gè)任務(wù)所共享。每個(gè)任務(wù)都通過(guò)它的窗口顯示其操作和運(yùn)作情況。因此Windows允許在桌面上同時(shí)出現(xiàn)多個(gè)窗口。窗口由標(biāo)題欄、菜單欄、圖標(biāo)等組成。用戶可以利用鼠標(biāo)和/或鍵盤(pán),通過(guò)窗口對(duì)應(yīng)用程序進(jìn)行操作。這樣,窗口就成為用戶與操作系統(tǒng)、應(yīng)用程序之間的接口。為了減輕使用者記憶命令功能和用法的負(fù)擔(dān),可在窗口中使用“菜單”驅(qū)動(dòng)方式。2)窗口系統(tǒng)與菜單驅(qū)動(dòng)方式在運(yùn)行Wind113)命令文件方式將鍵盤(pán)操作命令按用戶要求的執(zhí)行順序組成一個(gè)命令文件,執(zhí)行此命令文件,就能自動(dòng)控制作業(yè)的運(yùn)行,這對(duì)一些重復(fù)作業(yè)的運(yùn)行很有好處。MS-DOS操作系統(tǒng)中的批處理文件就屬于命令文件方式。它實(shí)際上實(shí)現(xiàn)了聯(lián)機(jī)狀態(tài)下的批處理操作。3)命令文件方式122.2程序級(jí)接口

2.2.1管態(tài)與算態(tài)

在計(jì)算機(jī)系統(tǒng)中存在兩類(lèi)不同的程序:一類(lèi)是用戶程序,一類(lèi)是系統(tǒng)程序。而且用戶程序必需在系統(tǒng)程序的控制和管理下運(yùn)行。為了使計(jì)算機(jī)有條不紊地工作,保證系統(tǒng)的安全,在運(yùn)行過(guò)程中對(duì)這兩類(lèi)不同的程序應(yīng)該予以區(qū)分。我們把用戶工作的狀態(tài)稱(chēng)為算態(tài)或用戶態(tài);將系統(tǒng)程序工作的狀態(tài)稱(chēng)為管態(tài)或系統(tǒng)態(tài)。2.2程序級(jí)接口2.2.1管態(tài)132.2.2特權(quán)指令與訪管指令我們把只允許管態(tài)下使用的指令,稱(chēng)之為特權(quán)指令。常見(jiàn)的特權(quán)指令有以下幾種:(1)有關(guān)對(duì)外設(shè)使用的指令(2)有關(guān)訪問(wèn)程序狀態(tài)的指令(3)存取特殊寄存器指令(4)其它指令2.2.2特權(quán)指令與訪管指令我們把只允許14用戶程序在算態(tài)下運(yùn)行,只能使用算態(tài)指令,而操作系統(tǒng)是系統(tǒng)程序,在管態(tài)下運(yùn)行,它既可使用算態(tài)指令,也能使用特權(quán)指令,而用戶要使用外設(shè),必須在管態(tài)下完成,所以就引入了訪管指令,其主要功能為:①實(shí)現(xiàn)從算態(tài)到管態(tài)的改變;②在管態(tài)下由操作系統(tǒng)代替用戶完成其請(qǐng)求;③操作系統(tǒng)工作完成后由管態(tài)返回到算態(tài)。用戶程序在算態(tài)下運(yùn)行,只能使用算態(tài)指令,而操152.2.3系統(tǒng)調(diào)用1.系統(tǒng)調(diào)用的定義系統(tǒng)調(diào)用是為擴(kuò)充機(jī)器指令、增加系統(tǒng)的功能、方便用戶使用而提供的。因此,在一些計(jì)算機(jī)系統(tǒng)中,把它稱(chēng)為“廣義指令”。但“廣義指令”是不同于機(jī)器指令的。在匯編程序中,用戶可以直接使用系統(tǒng)調(diào)用。若使用高級(jí)語(yǔ)言編寫(xiě)程序時(shí),是由編譯程序?qū)⒏呒?jí)語(yǔ)言中的有關(guān)資源操作的語(yǔ)句變換為相應(yīng)的系統(tǒng)調(diào)用。2.2.3系統(tǒng)調(diào)用1.系統(tǒng)調(diào)用的定義162.系統(tǒng)調(diào)用與過(guò)程調(diào)用的區(qū)別(1)運(yùn)行在不同的系統(tǒng)狀態(tài)。

(2)通過(guò)軟中斷進(jìn)入。2.系統(tǒng)調(diào)用與過(guò)程調(diào)用的區(qū)別(1)運(yùn)行在不同的系統(tǒng)狀態(tài)172.2.4系統(tǒng)調(diào)用類(lèi)型1.進(jìn)程控制(1)fork()創(chuàng)建一個(gè)與當(dāng)前進(jìn)程完全相同的拷貝(2)exit(intstatus)終止正在執(zhí)行的進(jìn)程,關(guān)閉所有被打開(kāi)的文件描述符 并向其父進(jìn)程返回狀態(tài)(3)waitpid(pid,,&statloc,opts)等待一個(gè)子進(jìn)程結(jié)束(4)execv(filename,argv,envp)替換一個(gè)進(jìn)程的核心映像(5)getpid()返回調(diào)用進(jìn)程的標(biāo)識(shí)符(6)wait()等待子進(jìn)程waitpid()等待指定進(jìn)程,wait3()和wait4()等價(jià)于wait()與waitpid()(7)select()提供多任務(wù)處理的簡(jiǎn)便方式2.2.4系統(tǒng)調(diào)用類(lèi)型1.進(jìn)程控制182.進(jìn)程通訊(1)signal()指定進(jìn)程在收到信號(hào)時(shí)所做的控制信號(hào) 處理(2)kill(intpid,intsig)把sig信號(hào)送到pid指定的進(jìn)程(3)pause()使調(diào)用進(jìn)程掛起暫停執(zhí)行,直到接收到某 種信號(hào)為止2.進(jìn)程通訊193.文件管理(1)open(constchar*pathname,intflage,open(constchar*pathname,intflage,mode-tmode)打開(kāi)文件(2)close(intfd)關(guān)閉相應(yīng)的文件描述符(3)read(intfd,void*buf,size-tcount)用來(lái)從相應(yīng)于文件描述符的文件中讀出數(shù)據(jù)(4)write(intfd,void*buf,size-tcount)用來(lái)向相應(yīng)于文件描述符的文件中寫(xiě)入數(shù)據(jù)3.文件管理(1)open(constchar*p20(5)ioctl(intfd,intrequest,...)設(shè)置或檢索文件的有關(guān)參數(shù),并對(duì)文件進(jìn)行一些其它的操作,涉及的設(shè)備不同,其參數(shù)也不同(6)fcntl(intfd,intcmd),fcntl(intfd,intcmd,longarg)與ioctl()相似,不同的是fcntl用來(lái)設(shè)置或檢索另外一組參數(shù)(7)fsync(intfd)把要寫(xiě)入文件描述符fd中的所有數(shù)據(jù)刷新到此盤(pán)或其他相關(guān)設(shè)備去(8)ftruncate(intfd,size-tlength)將由文件描述符fd引用的文件按length指定的長(zhǎng)度截?cái)?5)ioctl(intfd,int21(9)lseek(intfildes,off-toffset,intwhence)設(shè)置與文件描述符fildes相關(guān)的文件的當(dāng)前讀寫(xiě)位置到指定的位置offset(10)dup(intoldfd)返回一個(gè)未用的最小的文件描述符dup2(intoldfd,intnewfd)返回指定的文件描述符,常用來(lái)重新打開(kāi)或重定向一個(gè)文件描述符(11)select(intn,fd-set*readfds,fd-set*writefds)允許一個(gè)進(jìn)程同時(shí)在多個(gè)文件描述符上具有一個(gè)可選的傳輸?shù)却龝r(shí)間。只要在指定的文件描述符中有一個(gè)文件可以進(jìn)行操作,該調(diào)用就返回(9)lseek(intfildes,o22(12)fstat(intfiledes,stcuctstat*buf)獲取與文件描述符相關(guān)的文件信息,返回的信息放在由參數(shù)buf所指向的stat結(jié)構(gòu)中(13)fchown(intfd,uid-towner,gid-tgroup)修改一個(gè)打開(kāi)文件的屬主和組(14)fchmod(intfildes,mode-tmode)修改與參數(shù)fildes相關(guān)的文件模式(權(quán)限位)(15)fchdir(intfd)把目錄修改為與打開(kāi)的文件描述符fd相關(guān)的文件所在的目錄(16)flock(intfd,intoperation)對(duì)文件描述符引用fd的文件的上鎖或解鎖(17)pipe(intfiledes[2])創(chuàng)建管道,并返回兩個(gè)文件描述符(12)fstat(intfiledes234.目錄及文件系統(tǒng)管理(1)mkdir(name,mode)創(chuàng)建一個(gè)新目錄(2)rmdir(name)刪除目錄(3)mount(special,name,flag)安裝一個(gè)文件系統(tǒng)(4)umount(special)拆卸一個(gè)文件系統(tǒng)(5)chdir(dirname)改變工作目錄(6)chroot(dirname)改變根目錄4.目錄及文件系統(tǒng)管理245.維護(hù)信息(1)chmode(name,mode)改變文件的保護(hù)位(2)getuid()獲取調(diào)用進(jìn)程的uid(3)getgid()獲取調(diào)用進(jìn)程的gid(4)setuid()設(shè)置調(diào)用進(jìn)程的uid(5)setgid()設(shè)置調(diào)用進(jìn)程的gid(6)chown(name,owner,group)改變文件的屬主和組5.維護(hù)信息25

6.時(shí)間管理(1)settimer()設(shè)置一個(gè)計(jì)時(shí)器(2)timer()獲得時(shí)間6.時(shí)間管理267.網(wǎng)絡(luò)通訊服務(wù)(1)accept(socket,addr,addrlen)從連接請(qǐng)求隊(duì)列中取走下一個(gè)請(qǐng)求,并為該請(qǐng)求創(chuàng)建一個(gè)新套接字,返回新套接字描述符(2)bind(socket,localaddr,addrlen)為一個(gè)套接字指明一個(gè)本地IP和協(xié)議端口號(hào)(3)close(socket)中止通訊,并刪除套接字(4)connect(socket,addr,addrlen)允許調(diào)用者為先前創(chuàng)建的套接字指明遠(yuǎn)程端點(diǎn)的地址(5)listen(socket,queuelen)準(zhǔn)備接受聯(lián)入的請(qǐng)求(6)send(sockfd,*msg,len,flags)通過(guò)套接字接口發(fā)送信息(7)recv(sockfd,*buf,len,flags)通過(guò)套接字接口接受信息7.網(wǎng)絡(luò)通訊服務(wù)272.2.5系統(tǒng)調(diào)用的使用和執(zhí)行過(guò)程1.使用步驟(1)將系統(tǒng)調(diào)用所需的參數(shù)和參數(shù)的首址送到規(guī)定的通用寄存器。(2)設(shè)置一條調(diào)用指令(比如“訪管”指令或“軟中斷”指令)。系統(tǒng)調(diào)用命令的功能號(hào),有的系統(tǒng)直接在調(diào)用指令中給出,有的系統(tǒng)也作為調(diào)用命令的參數(shù)放入到指定的通用寄存器中。2.2.5系統(tǒng)調(diào)用的使用和執(zhí)行過(guò)程1.282.執(zhí)行過(guò)程(1)為執(zhí)行系統(tǒng)調(diào)用命令作準(zhǔn)備,將用戶程序的“現(xiàn)場(chǎng)”保留,同時(shí)將系統(tǒng)調(diào)用編號(hào)、參數(shù)等放入約定的存儲(chǔ)單元中。(2)根據(jù)系統(tǒng)調(diào)用命令號(hào),檢查是否為合法的系統(tǒng)調(diào)用。若是,根據(jù)系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用號(hào),轉(zhuǎn)入相應(yīng)的系統(tǒng)調(diào)用函數(shù)。(3)系統(tǒng)調(diào)用命令執(zhí)行完后,恢復(fù)“現(xiàn)場(chǎng)”,同時(shí)將系統(tǒng)調(diào)用命令的返回參數(shù)或參數(shù)區(qū)首址送到系統(tǒng)約定的寄存器中供用戶程序使用。2.執(zhí)行過(guò)程292.3UNIX的用戶界面Shell簡(jiǎn)介2.3.1Shell命令語(yǔ)言1.命令結(jié)構(gòu)以命令pr為例,開(kāi)關(guān)-d表示產(chǎn)生行間距為二的輸出,n表示產(chǎn)生行號(hào)。以下兩種形式是等價(jià)的:$prndfile1$prndfile1又如:$date;who這兩條命令分別打印或設(shè)置系統(tǒng)日期和時(shí)間,查看其它登錄的用戶。2.3UNIX的用戶界面Shell簡(jiǎn)介2.3.1S302.Shell元字符?匹配文件名中的任何單個(gè)字符()括號(hào)中的內(nèi)容理解為一條命令&后臺(tái)執(zhí)行命令$0,$1,...$n替換命令行中的參數(shù)$VarShell變量Var的值;命令表的分隔符2.Shell元字符?31′comd′執(zhí)行反引號(hào)中的命令,并在輸出時(shí)用該命令執(zhí) 行的結(jié)果替換命令部分Var=V將值賦給Shell變量comd1||comd2如果不成功執(zhí)行命令comd2,否則執(zhí)行comd1comd1&&comd2如果不成功執(zhí)行命令comd1,否則執(zhí)行comd2#忽略所有在#之后的內(nèi)容(即#是注釋符)例如:$who|grepmike||echowangisnotloggedin如果who和grep指出用戶mike未注冊(cè),這條命令執(zhí)行失敗,顯示echo命令后的信息。若用戶mike在線登錄,則將打印出用戶mike的信息。′comd′執(zhí)行反引號(hào)中的命令,并在輸出時(shí)用該命令執(zhí) 323.Shell變量在Linux中,用戶可以設(shè)置自己的環(huán)境,特定的Shell環(huán)境是由一些變量和這些變量的值來(lái)決定的,我們稱(chēng)這些變量為Shell變量。一個(gè)Shell變量是一個(gè)標(biāo)識(shí)字符串,它的值可以是一定范圍內(nèi)的字母和數(shù)字。Shell變量分為兩類(lèi):標(biāo)準(zhǔn)Shell變量和用戶自定義的變量。3.Shell變量334.Shell常用命令(1)Password 更改帳號(hào)密碼(2)Man 聯(lián)機(jī)幫助(3)rlogin主機(jī)名[l用戶名] 遠(yuǎn)程登錄(4)ls[atFlgR][文件名]列出文件和當(dāng)前目錄下的文件名-a列出以“.”開(kāi)始的文件名-t依照文件最后修改時(shí)間的順序列出文件名-F列出當(dāng)前目錄下的文件名及其類(lèi)型-l列出目錄下的所有文件的詳細(xì)信息-lg同-l,并顯示文件所有者工作組名-R顯示目錄下及其所有子目錄的文件名4.Shell常用命令(1)Password 更改34(5)Cd[路徑名文件名] 改變工作目錄(6)cp[-r]源文件目的文件 復(fù)制文件(7)mv源文件目的文件 更改或移動(dòng)文件或目錄名稱(chēng)(8)mkdir目錄名 建立新目錄(9)rmdir目錄名或rm目錄名 刪除文件(10)Pwd 列出當(dāng)前所在的目錄位置(11)cat文件名 連接并查看文件(12)more文件名或cat文件名|more分頁(yè)查看文件內(nèi)容(13)du[-s]目錄 查看目錄所占用的磁盤(pán)容量(5)Cd[路徑名文件名] 改變工作目錄35(14)rcp[-r]源地址主機(jī)名:目的地址文件傳輸(拷貝文件 或目錄至遠(yuǎn)程工作站)rcp[-r]主機(jī)名:源地址目的地址文件傳輸(自遠(yuǎn)程工作 站拷貝文件或目錄)ftp主機(jī)名或ftpIP地址文件傳輸(本地工作站與遠(yuǎn)程工作 站之間文件傳輸)(15)chmod[-R]模式文件名或目錄名改變文件或目錄的讀、寫(xiě)、執(zhí) 行權(quán)限chmod[-R]用戶名文件名或目錄名改變文件或目錄的所有權(quán)限(16)Groups 檢查自己所屬的工作組名稱(chēng)(17)chgrp[-r]工作組名文件名或目錄名改變文件或目錄工作組所有 權(quán)限(14)rcp[-r]源地址主機(jī)名:目的地址文件傳輸36(18)ln老文件名新文件名 文件的鏈接(19)grep字符串文件名 文件中字符串的查找(20)whereis命令 顯示命令的路徑which命令 顯示命令的路徑,及使用者所定義的別名whatis命令 顯示命令功能的摘要(21)findsearch-path-namefilename-print 搜索指定路徑下某文件的路徑find/name文件名-print從目錄的根開(kāi)始搜索想要的文件與目錄(22)diff[-r]文件名1文件名2比較文件或目錄的內(nèi)容(23)lpr[-p打印機(jī)名]文件名一般文件的打印(24)troff[-p打印機(jī)名][-man][-ms]文件名troff文件的打印(18)ln老文件名新文件名 文件的鏈接37(25)lpq[-p打印機(jī)名]檢查打印機(jī)狀態(tài)、打印作業(yè)順序號(hào)和用戶名lprm[-p打印機(jī)名]用戶名或作業(yè)編號(hào)刪除打印機(jī)內(nèi)的打印作業(yè)(用戶只可以刪除自己的打印作業(yè))(26)進(jìn)程控制命令ps[-aux] 查看系統(tǒng)中的進(jìn)程-au 查看系統(tǒng)中屬于自己的進(jìn)程-x 查看系統(tǒng)中所有用戶的進(jìn)程-aux 查看系統(tǒng)中包含系統(tǒng)內(nèi)部及所有用戶的進(jìn)程kill[-9]PID結(jié)束或終止進(jìn)程(PID為利用ps命令所查出的進(jìn)程號(hào)) 命令&在后臺(tái)執(zhí)行進(jìn)程的方式j(luò)obs查看正在后臺(tái)中執(zhí)行的進(jìn)程kill%n結(jié)束或終止后臺(tái)中的進(jìn)程(25)lpq[-p打印機(jī)名]檢38(27)Shell變量set 查看Shell變量的設(shè)定值set 變量=值設(shè)定Shell變量unset 變量刪除Shell變量(28)環(huán)境變量setenv 查看環(huán)境變量的設(shè)定值echo$ 環(huán)境變量顯示指定的環(huán)境變量NAME的設(shè)定值setenv 環(huán)境變量word設(shè)定環(huán)境變量unsetenvNAME刪除環(huán)境變量(29)別名命令alias 查看自己目前定義的所有命令及所對(duì)應(yīng)的別名alias 命令查看指定的命令的別名alias 命令‘命令行’定義命令的別名unalias 別名刪除所定義的別名(27)Shell變量39(30)歷史命令sethistory=n 設(shè)定命令記錄表的長(zhǎng)度history 查看命令記錄表的內(nèi)容!! 重復(fù)執(zhí)行前一條命令!n 重復(fù)執(zhí)行命令記錄表編號(hào)為n的命令!!:p 顯示前一條命令的內(nèi)容(31)文件壓縮命令compress文件名 壓縮文件compressdir目錄名 壓縮目錄uncompress文件名 解壓縮文件uncompressdir目錄名 解壓縮目錄(32)命令1|命令2 將命令1的執(zhí)行結(jié)果送到命令2,作為命令2的 輸入(30)歷史命令40(33)輸入/輸出控制命令<文件 將文件作為命令的輸入命令>文件 將命令的執(zhí)行結(jié)果送至指定的文件中命令>!文件 將命令的執(zhí)行結(jié)果送至指定的文件中, 若文件已經(jīng)存在,則覆蓋命令>&文件 將命令執(zhí)行時(shí)屏幕所產(chǎn)生的任何信息 寫(xiě)入指定的文件中命令>>文件 將命令執(zhí)行的結(jié)果附加到指定的文件中命令>>&文件 將命令執(zhí)行時(shí)屏幕所產(chǎn)生的任何信息附 加到指定的文件中(34)查看用戶名who或finger 查看系統(tǒng)中的用戶whoamI 查看登錄時(shí)的用戶名whoami 查看當(dāng)前的用戶名,如已執(zhí)行過(guò)su命令, 則顯示出此用戶的用戶名(33)輸入/輸出控制41(35)su用戶名 改變用戶名(36)rusers 查看當(dāng)前系統(tǒng)上所有工作站的用戶(37)talk用戶名@主機(jī)名或用戶名@IP地址與某工作站上的用戶交談(38)ping主機(jī)名或pingIP地址 檢查遠(yuǎn)程系統(tǒng)是否正常(39)電子郵件使用mail-s“主題”用戶名@地址<文件將文件當(dāng)作電子郵件的內(nèi)容送出mail用戶名 傳送電子郵件給本系統(tǒng)用戶mail用戶名@接受地址 傳送電子郵件至外地用戶(35)su用戶名 改變用戶名425.其它命令1)后臺(tái)命令用C編譯把C語(yǔ)言源文件編譯成目標(biāo)文件時(shí),若命令中使用了任選項(xiàng)o,就可以使目標(biāo)文件具有指定的文件名,若不使用的話,得到的目標(biāo)文件名將是a.out。為了提高系統(tǒng)和用戶的工作效率,可以讓執(zhí)行較長(zhǎng)而且執(zhí)行過(guò)程中不一定需要與用戶進(jìn)行交互作用的命令,放在后臺(tái)執(zhí)行。此時(shí)只要在命令后加一個(gè)后臺(tái)命令運(yùn)算符“&”,Shell解釋程序就不再等待執(zhí)行此命令的子程序結(jié)束,便開(kāi)始處理下一條命令。5.其它命令43例如:ccfile1.c;edfile2.cccfile1.c&edfile2.c這兩組命令中,前一組是編譯file1.c結(jié)束后才開(kāi)始編輯file2.c。后一組編譯file1.c的工作在后臺(tái)進(jìn)行,而前臺(tái)可同時(shí)編輯file2.c。例如:442)環(huán)境變量Shell提供了對(duì)環(huán)境變量的維護(hù)能力。環(huán)境變量的表示形式為“名字=值”的字符串。其中“名字”可以是不包含美元符且沒(méi)有空格的任何字符串?!爸怠笨梢允呛崭竦娜我庾址TS多環(huán)境變量都與用戶登錄標(biāo)識(shí)緊密相連,并與系統(tǒng)內(nèi)已安裝的軟件以及用戶的習(xí)慣有關(guān)。用戶設(shè)置一個(gè)環(huán)境變量時(shí),需要向Shell提供一對(duì)“名字=值”的具體內(nèi)容,如:$SAMPLE=“Howareyou?”2)環(huán)境變量45習(xí)慣上環(huán)境變量名都用大寫(xiě)字母表示。如果“值”包含空格則必須用雙引號(hào)括起來(lái)。環(huán)境變量不用預(yù)先說(shuō)明,如果環(huán)境變量已存在則覆蓋原來(lái)的值,不存在Shell就建立之,供以后使用。環(huán)境變量的變量名前應(yīng)冠以美元符號(hào)($),這樣Shell才能識(shí)別出隨后的環(huán)境變量并取其值;否則將其視為純字符串。用echo(回顯)命令可以顯示環(huán)境變量的值,如:$echo$SAMPLE回顯:Howareyou?$echoSAMPLE

習(xí)慣上環(huán)境變量名都用大寫(xiě)字母表示。如果“值”46回顯:SAMPLE$XYZ=“catfilename1”$echo$XYZ

將執(zhí)行命令$catfilename1用env或set命令可以顯示當(dāng)前已經(jīng)賦值的所有環(huán)境變量。用echo顯示不存在的環(huán)境變量時(shí),將什么都不顯示。環(huán)境變量PSI(promptsymbol,levelone,第一級(jí)提示符)的內(nèi)容是Shell提示符,普通用戶的PSI值為美元符“$”。我們可以通過(guò)修改PSI的值來(lái)改變提示符?;仫@:473)輸入輸出重定向一般Shell的標(biāo)準(zhǔn)輸入、輸出設(shè)備分別為終端的鍵盤(pán)和顯示器。但用戶可同時(shí)指定文件或其它設(shè)備作為Shell的輸入、輸出設(shè)備,這稱(chēng)為輸入、輸出重定向。例如ls命令是在終端屏幕上列出當(dāng)前目錄內(nèi)容。而命令:$ls>file則是輸出重定向。這時(shí),當(dāng)前目錄的內(nèi)容不再列到顯示器上而是送入文件file中。如果file文件不存在,則建立之,否則先將原文件長(zhǎng)度截短為0。命令:3)輸入輸出重定向48$lsfile也是輸出重定向,它將當(dāng)前目錄內(nèi)容送入文件file中。如果file文件不存在,則建立之;若file存在,則輸出到文件file的末尾。又如命令:$catfile1file2>/dev/lp也是輸出重定向。/dev/lp是一個(gè)特別文件,它代表行式打印機(jī)。此命令順序地把file1,file2的內(nèi)容打印出來(lái),而不再顯示在屏幕上。標(biāo)準(zhǔn)輸入也可以重定向。例如命令:$wc<file$lsfile49標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出還可以同時(shí)重定向。例如:$a.out<file1>file2此命令的功能是執(zhí)行目標(biāo)程序a.out,以file1為標(biāo)準(zhǔn)輸入,以file2為標(biāo)準(zhǔn)輸出。標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出還可以同時(shí)重定向。例如:504)管道命令管道實(shí)際上是連接兩個(gè)用戶進(jìn)程的一個(gè)中間文件,一個(gè)進(jìn)程負(fù)責(zé)向它寫(xiě)入,另一個(gè)進(jìn)程負(fù)責(zé)由它讀出。系統(tǒng)專(zhuān)門(mén)為管道中的信息傳送提供了自動(dòng)同步,即接收進(jìn)程將自動(dòng)地按照發(fā)送進(jìn)程發(fā)送的次序來(lái)接收信息。除了在程序級(jí)可使用pipe系統(tǒng)調(diào)用外,用戶還可以在作業(yè)控制級(jí)直接使用Shell的管道命令,這只要在兩條命令之間加上管道符“|”即可。例如命令:$catfile1file2|wc4)管道命令管道實(shí)際上是連接兩個(gè)用戶進(jìn)程的51此命令把file1,file2連接后產(chǎn)生的文件作為wc命令的輸入,即在屏幕上顯示出file1和file2連接之后的總行數(shù)和總字?jǐn)?shù)。它相當(dāng)于如下命令序列:$catfile1file2>file3$wc<file3$rmfile3Shell除了簡(jiǎn)單命令、后臺(tái)命令、標(biāo)準(zhǔn)輸入輸出重定向命令、管道命令之外,還可以構(gòu)成組合命令(即命令表command-list),支持“?”、“*”、“[...]”等文件名參數(shù)的匹配方式以及特殊字符的轉(zhuǎn)義等。此命令把file1,file2連接后產(chǎn)生的文件作為wc命令525)命令返回值除了標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出外,所有Shell命令都會(huì)返回一個(gè)不可見(jiàn)的數(shù)字返回碼,命令成功結(jié)束時(shí)返回值為0,否則返回一個(gè)非0值(1~255),每條命令對(duì)于不同的失敗情況都有不同的返回值。使用$?可以查看該返回值,如:$echo$?05)命令返回值536)反引號(hào)操作符(′)一條命令的標(biāo)準(zhǔn)輸出也可以賦予環(huán)境變量,此時(shí)需要使用反引號(hào)操作符。使用這種方法時(shí)必須謹(jǐn)慎,因?yàn)榄h(huán)境變量?jī)?nèi)容的長(zhǎng)度最多為256個(gè)字符,所以命令的返回值不能超過(guò)256個(gè)字符。$SAMPLE=′echo$LOGNAME′$echo$SAMPLEuser1$6)反引號(hào)操作符(′)547)其它Shell提供了一些操作符(;),可將多條命令組合為一條命令。$ls;echo$SAMPLEfilename1filename2user1$7)其它552.3.2Shell過(guò)程Shell不僅可以從終端上讀入命令行,而且可以從文件中讀入命令行并逐個(gè)解釋執(zhí)行文件中的命令。用Shell命令語(yǔ)言編制成的程序文件稱(chēng)為Shell過(guò)程。Shell過(guò)程中除包括各種合法命令外,還可以包括類(lèi)似于一般程序設(shè)計(jì)語(yǔ)言中的控制流語(yǔ)句,如條件選擇語(yǔ)句if-then-else,分支語(yǔ)句in-case,循環(huán)語(yǔ)句for-do,while-do,until-do等等。另外,在Shell過(guò)程還可以設(shè)置Shell變量。如:$shfile[args...]<CR>2.3.2Shell過(guò)程Shell不僅56其中,file是Shell過(guò)程文件,sh表示調(diào)用Shell解釋程序來(lái)執(zhí)行此過(guò)程。方括號(hào)中是參數(shù),它們可以傳送到Shell過(guò)程中的指定位置。而在Shell過(guò)程中,用$1引用第一個(gè)參數(shù),用$2引用第二個(gè)參數(shù),這里$1,$2,....$9,稱(chēng)為位置變量,最多可有9個(gè)。例如,名為shihwork的過(guò)程文件包含下列語(yǔ)句: catshih.c ;顯示文件shih.c ccshih.c ;編譯shih.c,生成目標(biāo)文件a.out mva.outship.o ;將a.out換名為ship.o ship.o ;執(zhí)行ship.o目標(biāo)代碼文件則命令:$shshihwork其中,file是Shell過(guò)程文件,sh表示57將使Shell解釋程序執(zhí)行shihwork過(guò)程,從而完成shih.c文件的顯示、編譯和執(zhí)行的全套工作。但這種形式的過(guò)程文件顯然缺少靈活性,如果要顯示、編譯和執(zhí)行的不是shih.c而是其他的C語(yǔ)言源程序(例如wang.c),就無(wú)法使用該過(guò)程文件,而要重新編寫(xiě)一個(gè)過(guò)程文件。如果我們?cè)谶^(guò)程文件中使用位置變量,將文件改寫(xiě)成:

cat$1;cc$1;mva.out$2;$2;將使Shell解釋程序執(zhí)行shihwork過(guò)程,從而完成s58那么,這一過(guò)程就有了通用性。若新過(guò)程文件取名為uniwork,則只要過(guò)程名之后帶有不同的位置參數(shù),就可分別編譯和執(zhí)行不同的源文件。例如,可分別使用這樣兩條命令:$shuniworkshih.cshih.o<CR>$shuniworkwang.cwang.o<CR>這里,第一條命令執(zhí)行uniwork過(guò)程時(shí),shih.c參數(shù)代入位置變量$1,將shih.o代入位置變量$2,其情況就如同shihwork過(guò)程執(zhí)行一樣。第二條命令執(zhí)行uniwork過(guò)程時(shí),用wang.c代替$1,用wang.o代替$2,不用另編過(guò)程文件,即可完成對(duì)wang.c源程序的編譯和執(zhí)行工作。那么,這一過(guò)程就有了通用性。若新過(guò)程文件取名為uniwork59如果使用Shell提供的流程控制語(yǔ)句,可以編制出控制性很強(qiáng)的Shell過(guò)程。例如名為loop-dump的過(guò)程文件有如下內(nèi)容:

forido if"$1"=""exit; echo$1$2$3$4$5$6$7$8$9; shift;done如果使用Shell提供的流程控制語(yǔ)句,可以60例如,以如下方式執(zhí)行l(wèi)oop-dump過(guò)程:$shloop-dumpabc<CR>則執(zhí)行結(jié)果將顯示:abcbcc例如,以如下方式執(zhí)行l(wèi)oop-dump過(guò)程:61第二章用戶與操作系統(tǒng)的接口2.1作業(yè)控制級(jí)接口2.2程序級(jí)接口2.3UNIX的用戶界面Shell簡(jiǎn)介第二章用戶與操作系統(tǒng)的接口2.1作業(yè)控制級(jí)接口622.1作業(yè)控制級(jí)接口2.1.1作業(yè)、作業(yè)步、作業(yè)流所謂作業(yè)就是用戶一次請(qǐng)求計(jì)算機(jī)系統(tǒng)為它完成任務(wù)所進(jìn)行的工作總和。一般來(lái)說(shuō)為了完成其任務(wù),可以將作業(yè)細(xì)分成若干個(gè)作業(yè)步。作業(yè)步就是處理作業(yè)的各個(gè)獨(dú)立的子任務(wù),系統(tǒng)可以創(chuàng)建若干進(jìn)程完成各作業(yè)步的計(jì)算,所以說(shuō)一個(gè)作業(yè)是由若干作業(yè)步組成的。2.1作業(yè)控制級(jí)接口2.1.1作業(yè)、作業(yè)步、作業(yè)流63以在PC機(jī)上用MS-DOS控制時(shí),其作業(yè)加工的步驟為例:(1)編輯:A>EDLINUSER.ASM(2)匯編:A>MASMUSER(3)鏈接:A>LINKUSER(4)執(zhí)行:A>USER最后執(zhí)行USER.EXE文件獲得所要的結(jié)果。以在PC機(jī)上用MS-DOS控制時(shí),其作業(yè)加642.1.2作業(yè)的類(lèi)型根據(jù)計(jì)算機(jī)系統(tǒng)的作業(yè)處理方式不同,可把作業(yè)分成兩大類(lèi):脫機(jī)作業(yè)聯(lián)機(jī)作業(yè)。2.1.2作業(yè)的類(lèi)型652.1.3作業(yè)控制命令與鍵盤(pán)操作命令1.脫機(jī)用戶接口脫機(jī)用戶接口由一組作業(yè)控制命令,或稱(chēng)作業(yè)控制語(yǔ)言組成。脫機(jī)用戶接口用于脫機(jī)控制方式。所謂脫機(jī)控制方式就是把對(duì)作業(yè)進(jìn)行控制的意圖,連同程序和數(shù)據(jù)及發(fā)生故障后的處理措施一起輸入系統(tǒng)中,由系統(tǒng)根據(jù)該意圖來(lái)控制作業(yè)的執(zhí)行。在批處理系統(tǒng)中,用戶利用作業(yè)控制(命令)語(yǔ)言寫(xiě)成作業(yè)說(shuō)明書(shū)提交給系統(tǒng),由系統(tǒng)按照作業(yè)說(shuō)明書(shū)上的命令,逐條解釋執(zhí)行。用戶一旦把作業(yè)提交給系統(tǒng)后,便失去直接與作業(yè)交互的能力。2.1.3作業(yè)控制命令與鍵盤(pán)操作命令1.66(1)作業(yè)控制卡。作業(yè)控制卡主要用在早期的批處理系統(tǒng)管理中。作業(yè)控制卡接口方式就是使用作業(yè)控制語(yǔ)言(JCL)將用戶對(duì)作業(yè)的控制意圖及發(fā)生故障后如何處理以編碼的形式穿孔在卡片上,插入到用戶程序、數(shù)據(jù)的卡片疊中一起送入系統(tǒng),由系統(tǒng)解釋控制卡內(nèi)容并控制作業(yè)運(yùn)行。作業(yè)控制卡方式使用不方便,容易出錯(cuò)且較麻煩,所以現(xiàn)在一般很少使用。(1)作業(yè)控制卡。作業(yè)控制卡主要用在早期的67(2)作業(yè)說(shuō)明書(shū)方式。作業(yè)說(shuō)明書(shū)方式是使用某些作業(yè)控制命令將用戶對(duì)作業(yè)控制的意圖寫(xiě)成作業(yè)說(shuō)明書(shū),從而實(shí)現(xiàn)對(duì)作業(yè)的控制。作業(yè)說(shuō)明書(shū)主要包括作業(yè)情況和作業(yè)資源要求兩方面的內(nèi)容,前者主要指用戶名、作業(yè)名、使用語(yǔ)言、作業(yè)控制方式、作業(yè)優(yōu)先級(jí)、完成作業(yè)的最遲時(shí)間等。后者包括內(nèi)存和外存的空間要求量、輸入/輸出設(shè)備的類(lèi)型、臺(tái)數(shù)、輸出量、估計(jì)的計(jì)算時(shí)間等。(2)作業(yè)說(shuō)明書(shū)方式。作業(yè)說(shuō)明書(shū)方式是使用某68作業(yè)說(shuō)明書(shū)中常用命令的主要類(lèi)型如下:①輸入/輸出命令:對(duì)源程序、數(shù)據(jù)及其作業(yè)說(shuō)明書(shū)的輸入及其運(yùn)行結(jié)果輸出的命令。②編譯命令:對(duì)源程序進(jìn)行編譯,若有錯(cuò)誤顯示錯(cuò)誤,若無(wú)錯(cuò)誤將其編譯成目標(biāo)程序。③操作命令:主要是對(duì)作業(yè)操作的各種命令。如對(duì)目標(biāo)程序的裝配,程序的重新啟動(dòng),限定其運(yùn)行時(shí)間等的命令。④條件命令:主要用于表示當(dāng)程序運(yùn)行過(guò)程中發(fā)生某個(gè)事件時(shí)應(yīng)轉(zhuǎn)向哪一條操作命令。作業(yè)說(shuō)明書(shū)中常用命令的主要類(lèi)型如下:692.聯(lián)機(jī)用戶接口聯(lián)機(jī)用戶接口是由一組操作系統(tǒng)命令組成,用于聯(lián)機(jī)作業(yè)的控制。1)命令驅(qū)動(dòng)方式COMMANDarg1,arg2,...,argn<CR>其中,COMMAND是命令名,arg1,arg2,...,argn是命令參數(shù),命令參數(shù)的有無(wú)和多少由命令本身決定。<CR>代表回車(chē)鍵,一般作為命令的結(jié)束符。只有按下回車(chē)鍵,該命令才能被系統(tǒng)接收。2.聯(lián)機(jī)用戶接口聯(lián)機(jī)用戶接口是由一組操作70一般命令類(lèi)型有如下幾種:①系統(tǒng)訪問(wèn)命令②編輯和文件管理命令③編譯、匯編和連接命令④調(diào)試命令⑤維護(hù)管理命令⑥其它命令一般命令類(lèi)型有如下幾種:712)窗口系統(tǒng)與菜單驅(qū)動(dòng)方式在運(yùn)行Windows時(shí),其操作都是在桌面上進(jìn)行。桌面是指整個(gè)屏幕空間。該桌面是由多個(gè)任務(wù)所共享。每個(gè)任務(wù)都通過(guò)它的窗口顯示其操作和運(yùn)作情況。因此Windows允許在桌面上同時(shí)出現(xiàn)多個(gè)窗口。窗口由標(biāo)題欄、菜單欄、圖標(biāo)等組成。用戶可以利用鼠標(biāo)和/或鍵盤(pán),通過(guò)窗口對(duì)應(yīng)用程序進(jìn)行操作。這樣,窗口就成為用戶與操作系統(tǒng)、應(yīng)用程序之間的接口。為了減輕使用者記憶命令功能和用法的負(fù)擔(dān),可在窗口中使用“菜單”驅(qū)動(dòng)方式。2)窗口系統(tǒng)與菜單驅(qū)動(dòng)方式在運(yùn)行Wind723)命令文件方式將鍵盤(pán)操作命令按用戶要求的執(zhí)行順序組成一個(gè)命令文件,執(zhí)行此命令文件,就能自動(dòng)控制作業(yè)的運(yùn)行,這對(duì)一些重復(fù)作業(yè)的運(yùn)行很有好處。MS-DOS操作系統(tǒng)中的批處理文件就屬于命令文件方式。它實(shí)際上實(shí)現(xiàn)了聯(lián)機(jī)狀態(tài)下的批處理操作。3)命令文件方式732.2程序級(jí)接口

2.2.1管態(tài)與算態(tài)

在計(jì)算機(jī)系統(tǒng)中存在兩類(lèi)不同的程序:一類(lèi)是用戶程序,一類(lèi)是系統(tǒng)程序。而且用戶程序必需在系統(tǒng)程序的控制和管理下運(yùn)行。為了使計(jì)算機(jī)有條不紊地工作,保證系統(tǒng)的安全,在運(yùn)行過(guò)程中對(duì)這兩類(lèi)不同的程序應(yīng)該予以區(qū)分。我們把用戶工作的狀態(tài)稱(chēng)為算態(tài)或用戶態(tài);將系統(tǒng)程序工作的狀態(tài)稱(chēng)為管態(tài)或系統(tǒng)態(tài)。2.2程序級(jí)接口2.2.1管態(tài)742.2.2特權(quán)指令與訪管指令我們把只允許管態(tài)下使用的指令,稱(chēng)之為特權(quán)指令。常見(jiàn)的特權(quán)指令有以下幾種:(1)有關(guān)對(duì)外設(shè)使用的指令(2)有關(guān)訪問(wèn)程序狀態(tài)的指令(3)存取特殊寄存器指令(4)其它指令2.2.2特權(quán)指令與訪管指令我們把只允許75用戶程序在算態(tài)下運(yùn)行,只能使用算態(tài)指令,而操作系統(tǒng)是系統(tǒng)程序,在管態(tài)下運(yùn)行,它既可使用算態(tài)指令,也能使用特權(quán)指令,而用戶要使用外設(shè),必須在管態(tài)下完成,所以就引入了訪管指令,其主要功能為:①實(shí)現(xiàn)從算態(tài)到管態(tài)的改變;②在管態(tài)下由操作系統(tǒng)代替用戶完成其請(qǐng)求;③操作系統(tǒng)工作完成后由管態(tài)返回到算態(tài)。用戶程序在算態(tài)下運(yùn)行,只能使用算態(tài)指令,而操762.2.3系統(tǒng)調(diào)用1.系統(tǒng)調(diào)用的定義系統(tǒng)調(diào)用是為擴(kuò)充機(jī)器指令、增加系統(tǒng)的功能、方便用戶使用而提供的。因此,在一些計(jì)算機(jī)系統(tǒng)中,把它稱(chēng)為“廣義指令”。但“廣義指令”是不同于機(jī)器指令的。在匯編程序中,用戶可以直接使用系統(tǒng)調(diào)用。若使用高級(jí)語(yǔ)言編寫(xiě)程序時(shí),是由編譯程序?qū)⒏呒?jí)語(yǔ)言中的有關(guān)資源操作的語(yǔ)句變換為相應(yīng)的系統(tǒng)調(diào)用。2.2.3系統(tǒng)調(diào)用1.系統(tǒng)調(diào)用的定義772.系統(tǒng)調(diào)用與過(guò)程調(diào)用的區(qū)別(1)運(yùn)行在不同的系統(tǒng)狀態(tài)。

(2)通過(guò)軟中斷進(jìn)入。2.系統(tǒng)調(diào)用與過(guò)程調(diào)用的區(qū)別(1)運(yùn)行在不同的系統(tǒng)狀態(tài)782.2.4系統(tǒng)調(diào)用類(lèi)型1.進(jìn)程控制(1)fork()創(chuàng)建一個(gè)與當(dāng)前進(jìn)程完全相同的拷貝(2)exit(intstatus)終止正在執(zhí)行的進(jìn)程,關(guān)閉所有被打開(kāi)的文件描述符 并向其父進(jìn)程返回狀態(tài)(3)waitpid(pid,,&statloc,opts)等待一個(gè)子進(jìn)程結(jié)束(4)execv(filename,argv,envp)替換一個(gè)進(jìn)程的核心映像(5)getpid()返回調(diào)用進(jìn)程的標(biāo)識(shí)符(6)wait()等待子進(jìn)程waitpid()等待指定進(jìn)程,wait3()和wait4()等價(jià)于wait()與waitpid()(7)select()提供多任務(wù)處理的簡(jiǎn)便方式2.2.4系統(tǒng)調(diào)用類(lèi)型1.進(jìn)程控制792.進(jìn)程通訊(1)signal()指定進(jìn)程在收到信號(hào)時(shí)所做的控制信號(hào) 處理(2)kill(intpid,intsig)把sig信號(hào)送到pid指定的進(jìn)程(3)pause()使調(diào)用進(jìn)程掛起暫停執(zhí)行,直到接收到某 種信號(hào)為止2.進(jìn)程通訊803.文件管理(1)open(constchar*pathname,intflage,open(constchar*pathname,intflage,mode-tmode)打開(kāi)文件(2)close(intfd)關(guān)閉相應(yīng)的文件描述符(3)read(intfd,void*buf,size-tcount)用來(lái)從相應(yīng)于文件描述符的文件中讀出數(shù)據(jù)(4)write(intfd,void*buf,size-tcount)用來(lái)向相應(yīng)于文件描述符的文件中寫(xiě)入數(shù)據(jù)3.文件管理(1)open(constchar*p81(5)ioctl(intfd,intrequest,...)設(shè)置或檢索文件的有關(guān)參數(shù),并對(duì)文件進(jìn)行一些其它的操作,涉及的設(shè)備不同,其參數(shù)也不同(6)fcntl(intfd,intcmd),fcntl(intfd,intcmd,longarg)與ioctl()相似,不同的是fcntl用來(lái)設(shè)置或檢索另外一組參數(shù)(7)fsync(intfd)把要寫(xiě)入文件描述符fd中的所有數(shù)據(jù)刷新到此盤(pán)或其他相關(guān)設(shè)備去(8)ftruncate(intfd,size-tlength)將由文件描述符fd引用的文件按length指定的長(zhǎng)度截?cái)?5)ioctl(intfd,int82(9)lseek(intfildes,off-toffset,intwhence)設(shè)置與文件描述符fildes相關(guān)的文件的當(dāng)前讀寫(xiě)位置到指定的位置offset(10)dup(intoldfd)返回一個(gè)未用的最小的文件描述符dup2(intoldfd,intnewfd)返回指定的文件描述符,常用來(lái)重新打開(kāi)或重定向一個(gè)文件描述符(11)select(intn,fd-set*readfds,fd-set*writefds)允許一個(gè)進(jìn)程同時(shí)在多個(gè)文件描述符上具有一個(gè)可選的傳輸?shù)却龝r(shí)間。只要在指定的文件描述符中有一個(gè)文件可以進(jìn)行操作,該調(diào)用就返回(9)lseek(intfildes,o83(12)fstat(intfiledes,stcuctstat*buf)獲取與文件描述符相關(guān)的文件信息,返回的信息放在由參數(shù)buf所指向的stat結(jié)構(gòu)中(13)fchown(intfd,uid-towner,gid-tgroup)修改一個(gè)打開(kāi)文件的屬主和組(14)fchmod(intfildes,mode-tmode)修改與參數(shù)fildes相關(guān)的文件模式(權(quán)限位)(15)fchdir(intfd)把目錄修改為與打開(kāi)的文件描述符fd相關(guān)的文件所在的目錄(16)flock(intfd,intoperation)對(duì)文件描述符引用fd的文件的上鎖或解鎖(17)pipe(intfiledes[2])創(chuàng)建管道,并返回兩個(gè)文件描述符(12)fstat(intfiledes844.目錄及文件系統(tǒng)管理(1)mkdir(name,mode)創(chuàng)建一個(gè)新目錄(2)rmdir(name)刪除目錄(3)mount(special,name,flag)安裝一個(gè)文件系統(tǒng)(4)umount(special)拆卸一個(gè)文件系統(tǒng)(5)chdir(dirname)改變工作目錄(6)chroot(dirname)改變根目錄4.目錄及文件系統(tǒng)管理855.維護(hù)信息(1)chmode(name,mode)改變文件的保護(hù)位(2)getuid()獲取調(diào)用進(jìn)程的uid(3)getgid()獲取調(diào)用進(jìn)程的gid(4)setuid()設(shè)置調(diào)用進(jìn)程的uid(5)setgid()設(shè)置調(diào)用進(jìn)程的gid(6)chown(name,owner,group)改變文件的屬主和組5.維護(hù)信息86

6.時(shí)間管理(1)settimer()設(shè)置一個(gè)計(jì)時(shí)器(2)timer()獲得時(shí)間6.時(shí)間管理877.網(wǎng)絡(luò)通訊服務(wù)(1)accept(socket,addr,addrlen)從連接請(qǐng)求隊(duì)列中取走下一個(gè)請(qǐng)求,并為該請(qǐng)求創(chuàng)建一個(gè)新套接字,返回新套接字描述符(2)bind(socket,localaddr,addrlen)為一個(gè)套接字指明一個(gè)本地IP和協(xié)議端口號(hào)(3)close(socket)中止通訊,并刪除套接字(4)connect(socket,addr,addrlen)允許調(diào)用者為先前創(chuàng)建的套接字指明遠(yuǎn)程端點(diǎn)的地址(5)listen(socket,queuelen)準(zhǔn)備接受聯(lián)入的請(qǐng)求(6)send(sockfd,*msg,len,flags)通過(guò)套接字接口發(fā)送信息(7)recv(sockfd,*buf,len,flags)通過(guò)套接字接口接受信息7.網(wǎng)絡(luò)通訊服務(wù)882.2.5系統(tǒng)調(diào)用的使用和執(zhí)行過(guò)程1.使用步驟(1)將系統(tǒng)調(diào)用所需的參數(shù)和參數(shù)的首址送到規(guī)定的通用寄存器。(2)設(shè)置一條調(diào)用指令(比如“訪管”指令或“軟中斷”指令)。系統(tǒng)調(diào)用命令的功能號(hào),有的系統(tǒng)直接在調(diào)用指令中給出,有的系統(tǒng)也作為調(diào)用命令的參數(shù)放入到指定的通用寄存器中。2.2.5系統(tǒng)調(diào)用的使用和執(zhí)行過(guò)程1.892.執(zhí)行過(guò)程(1)為執(zhí)行系統(tǒng)調(diào)用命令作準(zhǔn)備,將用戶程序的“現(xiàn)場(chǎng)”保留,同時(shí)將系統(tǒng)調(diào)用編號(hào)、參數(shù)等放入約定的存儲(chǔ)單元中。(2)根據(jù)系統(tǒng)調(diào)用命令號(hào),檢查是否為合法的系統(tǒng)調(diào)用。若是,根據(jù)系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用號(hào),轉(zhuǎn)入相應(yīng)的系統(tǒng)調(diào)用函數(shù)。(3)系統(tǒng)調(diào)用命令執(zhí)行完后,恢復(fù)“現(xiàn)場(chǎng)”,同時(shí)將系統(tǒng)調(diào)用命令的返回參數(shù)或參數(shù)區(qū)首址送到系統(tǒng)約定的寄存器中供用戶程序使用。2.執(zhí)行過(guò)程902.3UNIX的用戶界面Shell簡(jiǎn)介2.3.1Shell命令語(yǔ)言1.命令結(jié)構(gòu)以命令pr為例,開(kāi)關(guān)-d表示產(chǎn)生行間距為二的輸出,n表示產(chǎn)生行號(hào)。以下兩種形式是等價(jià)的:$prndfile1$prndfile1又如:$date;who這兩條命令分別打印或設(shè)置系統(tǒng)日期和時(shí)間,查看其它登錄的用戶。2.3UNIX的用戶界面Shell簡(jiǎn)介2.3.1S912.Shell元字符?匹配文件名中的任何單個(gè)字符()括號(hào)中的內(nèi)容理解為一條命令&后臺(tái)執(zhí)行命令$0,$1,...$n替換命令行中的參數(shù)$VarShell變量Var的值;命令表的分隔符2.Shell元字符?92′comd′執(zhí)行反引號(hào)中的命令,并在輸出時(shí)用該命令執(zhí) 行的結(jié)果替換命令部分Var=V將值賦給Shell變量comd1||comd2如果不成功執(zhí)行命令comd2,否則執(zhí)行comd1comd1&&comd2如果不成功執(zhí)行命令comd1,否則執(zhí)行comd2#忽略所有在#之后的內(nèi)容(即#是注釋符)例如:$who|grepmike||echowangisnotloggedin如果who和grep指出用戶mike未注冊(cè),這條命令執(zhí)行失敗,顯示echo命令后的信息。若用戶mike在線登錄,則將打印出用戶mike的信息?!鋍omd′執(zhí)行反引號(hào)中的命令,并在輸出時(shí)用該命令執(zhí) 933.Shell變量在Linux中,用戶可以設(shè)置自己的環(huán)境,特定的Shell環(huán)境是由一些變量和這些變量的值來(lái)決定的,我們稱(chēng)這些變量為Shell變量。一個(gè)Shell變量是一個(gè)標(biāo)識(shí)字符串,它的值可以是一定范圍內(nèi)的字母和數(shù)字。Shell變量分為兩類(lèi):標(biāo)準(zhǔn)Shell變量和用戶自定義的變量。3.Shell變量944.Shell常用命令(1)Password 更改帳號(hào)密碼(2)Man 聯(lián)機(jī)幫助(3)rlogin主機(jī)名[l用戶名] 遠(yuǎn)程登錄(4)ls[atFlgR][文件名]列出文件和當(dāng)前目錄下的文件名-a列出以“.”開(kāi)始的文件名-t依照文件最后修改時(shí)間的順序列出文件名-F列出當(dāng)前目錄下的文件名及其類(lèi)型-l列出目錄下的所有文件的詳細(xì)信息-lg同-l,并顯示文件所有者工作組名-R顯示目錄下及其所有子目錄的文件名4.Shell常用命令(1)Password 更改95(5)Cd[路徑名文件名] 改變工作目錄(6)cp[-r]源文件目的文件 復(fù)制文件(7)mv源文件目的文件 更改或移動(dòng)文件或目錄名稱(chēng)(8)mkdir目錄名 建立新目錄(9)rmdir目錄名或rm目錄名 刪除文件(10)Pwd 列出當(dāng)前所在的目錄位置(11)cat文件名 連接并查看文件(12)more文件名或cat文件名|more分頁(yè)查看文件內(nèi)容(13)du[-s]目錄 查看目錄所占用的磁盤(pán)容量(5)Cd[路徑名文件名] 改變工作目錄96(14)rcp[-r]源地址主機(jī)名:目的地址文件傳輸(拷貝文件 或目錄至遠(yuǎn)程工作站)rcp[-r]主機(jī)名:源地址目的地址文件傳輸(自遠(yuǎn)程工作 站拷貝文件或目錄)ftp主機(jī)名或ftpIP地址文件傳輸(本地工作站與遠(yuǎn)程工作 站之間文件傳輸)(15)chmod[-R]模式文件名或目錄名改變文件或目錄的讀、寫(xiě)、執(zhí) 行權(quán)限chmod[-R]用戶名文件名或目錄名改變文件或目錄的所有權(quán)限(16)Groups 檢查自己所屬的工作組名稱(chēng)(17)chgrp[-r]工作組名文件名或目錄名改變文件或目錄工作組所有 權(quán)限(14)rcp[-r]源地址主機(jī)名:目的地址文件傳輸97(18)ln老文件名新文件名 文件的鏈接(19)grep字符串文件名 文件中字符串的查找(20)whereis命令 顯示命令的路徑which命令 顯示命令的路徑,及使用者所定義的別名whatis命令 顯示命令功能的摘要(21)findsearch-path-namefilename-print 搜索指定路徑下某文件的路徑find/name文件名-print從目錄的根開(kāi)始搜索想要的文件與目錄(22)diff[-r]文件名1文件名2比較文件或目錄的內(nèi)容(23)lpr[-p打印機(jī)名]文件名一般文件的打印(24)troff[-p打印機(jī)名][-man][-ms]文件名troff文件的打印(18)ln老文件名新文件名 文件的鏈接98(25)lpq[-p打印機(jī)名]檢查打印機(jī)狀態(tài)、打印作業(yè)順序號(hào)和用戶名lprm[-p打印機(jī)名]用戶名或作業(yè)編號(hào)刪除打印機(jī)內(nèi)的打印作業(yè)(用戶只可以刪除自己的打印作業(yè))(26)進(jìn)程控制命令ps[-aux] 查看系統(tǒng)中的進(jìn)程-au 查看系統(tǒng)中屬于自己的進(jìn)程-x 查看系統(tǒng)中所有用戶的進(jìn)程-aux 查看系統(tǒng)中包含系統(tǒng)內(nèi)部及所有用戶的進(jìn)程kill[-9]PID結(jié)束或終止進(jìn)程(PID為利用ps命令所查出的進(jìn)程號(hào)) 命令&在后臺(tái)執(zhí)行進(jìn)程的方式j(luò)obs查看正在后臺(tái)中執(zhí)行的進(jìn)程kill%n結(jié)束或終止后臺(tái)中的進(jìn)程(25)lpq[-p打印機(jī)名]檢99(27)Shell變量set 查看Shell變量的設(shè)定值set 變量=值設(shè)定Shell變量unset 變量刪除Shell變量(28)環(huán)境變量setenv 查看環(huán)境變量的設(shè)定值echo$ 環(huán)境變量顯示指定的環(huán)境變量NAME的設(shè)定值setenv 環(huán)境變量word設(shè)定環(huán)境變量unsetenvNAME刪除環(huán)境變量(29)別名命令alias 查看自己目前定義的所有命令及所對(duì)應(yīng)的別名alias 命令查看指定的命令的別名alias 命令‘命令行’定義命令的別名unalias 別名刪除所定義的別名(27)Shell變量100(30)歷史命令sethistory=n 設(shè)定命令記錄表的長(zhǎng)度history 查看命令記錄表的內(nèi)容!! 重復(fù)執(zhí)行前一條命令!n 重復(fù)執(zhí)行命令記錄表編號(hào)為n的命令!!:p 顯示前一條命令的內(nèi)容(31)文件壓縮命令compress文件名 壓縮文件compressdir目錄名 壓縮目錄uncompress文件名 解壓縮文件uncompressdir目錄名 解壓縮目錄(32)命令1|命令2 將命令1的執(zhí)行結(jié)果送到命令2,作為命令2的 輸入(30)歷史命令101(33)輸入/輸出控制命令<文件 將文件作為命令的輸入命令>文件 將命令的執(zhí)行結(jié)果送至指定的文件中命令>!文件 將命令的執(zhí)行結(jié)果送至指定的文件中, 若文件已經(jīng)存在,則覆蓋命令>&文件 將命令執(zhí)行時(shí)屏幕所產(chǎn)生的任何信息 寫(xiě)入指定的文件中命令>>文件 將命令執(zhí)行的結(jié)果附加到指定的文件中命令>>&文件 將命令執(zhí)行時(shí)屏幕所產(chǎn)生的任何信息附 加到指定的文件中(34)查看用戶名who或finger 查看系統(tǒng)中

溫馨提示

  • 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)論