




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第七章操作系統(tǒng)接口 第七章操作系統(tǒng)接口 7.1聯(lián)機(jī)用戶接口聯(lián)機(jī)用戶接口7.2Shell命令語言命令語言7.3系統(tǒng)調(diào)用系統(tǒng)調(diào)用7.4UNIX系統(tǒng)調(diào)用系統(tǒng)調(diào)用 7.5 圖形用戶接口圖形用戶接口 第七章操作系統(tǒng)接口 7.1聯(lián)機(jī)用戶接口聯(lián)機(jī)用戶接口 7.1.1 7.1.1 聯(lián)機(jī)用戶接口聯(lián)機(jī)用戶接口聯(lián)機(jī)用戶接口,也稱為聯(lián)機(jī)命令接口。不同操作系統(tǒng)的聯(lián)機(jī)命令接口有所不同,這不僅指命令的種類、數(shù)量及功能方面,也可能體現(xiàn)在命令的形式、用法等方面。不同的用法和形式構(gòu)成了不同的用戶界面,可分成以下兩種:(1) 字符顯示式用戶界面;(2) 圖形化用戶界面。 第七章操作系統(tǒng)接口 1 1命令行方式命令行方式該方式是指以行
2、為單位輸入和顯示不同的命令。每行長度一般不超過256個(gè)字符,命令的結(jié)束通常以回車符為標(biāo)記。命令的執(zhí)行是串行、間斷的,后一個(gè)命令的輸入一般需等到前一個(gè)命令執(zhí)行結(jié)束,如用戶鍵入的一條命令處理完成后,系統(tǒng)發(fā)出新的命令輸入提示符,用戶才可以繼續(xù)輸入下一條命令。 第七章操作系統(tǒng)接口 也有許多操作系統(tǒng)提供了命令的并行執(zhí)行方式,例如一條命令的執(zhí)行需要耗費(fèi)較長時(shí)間,并且用戶也不急需其結(jié)果時(shí)(即兩條命令執(zhí)行是不相關(guān)的),則可以在一個(gè)命令的結(jié)尾輸入特定的標(biāo)記,將該命令作為后臺(tái)命令處理,用戶接著即可繼續(xù)輸入下一條命令,系統(tǒng)便可對(duì)兩條命令進(jìn)行并行處理。一般而言,對(duì)新用戶來說,命令行方式十分繁瑣,難以記憶,但對(duì)有經(jīng)驗(yàn)的
3、用戶而言,命令行方式用起來快捷便當(dāng)、十分靈活,所以,至今許多操作員仍常使用這種命令方式。簡單命令的一般形式為:Command arg1 arg2 argn其中,Command 是命令名,又稱命令動(dòng)詞,其余為該命令所帶的執(zhí)行參數(shù),有些命令可以沒有參數(shù)。 第七章操作系統(tǒng)接口 2 2批命令方式批命令方式在操作命令的實(shí)際使用過程中,經(jīng)常遇到需要對(duì)多條命令的連續(xù)使用,或若干條命令的重復(fù)使用,或?qū)Σ煌钸M(jìn)行選擇性使用的情況。如果用戶每次都采用命令行方式,將命令一條條由鍵盤輸入,既浪費(fèi)時(shí)間,又容易出錯(cuò)。因此,操作系統(tǒng)都支持一種稱為批命令的特別命令方式,允許用戶預(yù)先把一系列命令組織在一種稱為批命令文件的文件
4、中,一次建立,多次執(zhí)行。使用這種方式可減少用戶輸入命令的次數(shù),既節(jié)省了時(shí)間和減少了出錯(cuò)概率,又方便了用戶。通常批命令文件都有特殊的文件擴(kuò)展名,如MS-DOS系統(tǒng)的 .BAT文件。 第七章操作系統(tǒng)接口 同時(shí),操作系統(tǒng)還提供了一套控制子命令,增強(qiáng)對(duì)命令文件使用的支持。用戶可以使用這些子命令和形式參數(shù)書寫批命令文件,使得這樣的批命令文件可以執(zhí)行不同的命令序列,從而增強(qiáng)了命令接口的處理能力。如UNIX 和Linux 中的Shell不僅是一種交互型命令解釋程序,也是一種命令級(jí)程序設(shè)計(jì)語言解釋系統(tǒng),它允許用戶使用Shell 簡單命令、位置參數(shù)和控制流語句編制帶形式參數(shù)的批命令文件,稱做Shell 文件或S
5、hell 過程,Shell 可以自動(dòng)解釋和執(zhí)行該文件或過程中的命令。 第七章操作系統(tǒng)接口 .2聯(lián)機(jī)命令的類型聯(lián)機(jī)命令的類型為了能向用戶提供多方面的服務(wù),通常,OS都向用戶提供了幾十條甚至上百條的聯(lián)機(jī)命令。根據(jù)這些命令所完成功能的不同,可把它們分成以下幾類: 系統(tǒng)訪問類; 磁盤操作類; 文件操作類; 目錄操作類; 通信類; 其他命令?,F(xiàn)分述如下。 第七章操作系統(tǒng)接口 1 1系統(tǒng)訪問類系統(tǒng)訪問類在單用戶微型機(jī)中,一般沒有設(shè)置系統(tǒng)訪問命令。然而在多用戶系統(tǒng)中,為了保證系統(tǒng)的安全性,都毫無例外地設(shè)置了系統(tǒng)訪問命令,即注冊(cè)命令Login。用戶在每次開始使用某終端時(shí),都須使用該命令,使系統(tǒng)
6、能識(shí)別該用戶。凡要在多用戶系統(tǒng)的終端上上機(jī)的用戶,都必須先在系統(tǒng)管理員處獲得一合法的注冊(cè)名和口令。以后,每當(dāng)用戶在接通其所用終端的電源后,便由系統(tǒng)直接調(diào)用,并在屏幕上顯示出以下的注冊(cè)命令:第七章操作系統(tǒng)接口 Login: /提示用戶鍵入自己的注冊(cè)名當(dāng)用戶鍵入正確的注冊(cè)名,并按下回車鍵后,屏幕上又會(huì)出現(xiàn):Password:/提示用戶鍵入自己的口令用戶在鍵入口令時(shí),系統(tǒng)將關(guān)閉掉回送顯示,以使口令不在屏幕上顯示出來。如果鍵入的口令正確而使注冊(cè)成功時(shí),屏幕上會(huì)立即出現(xiàn)系統(tǒng)提示符(所用符號(hào)隨系統(tǒng)而異),表示用戶可以開始鍵入命令。如果用戶多次(通常不超過三次)鍵入的注冊(cè)名或口令都有錯(cuò),系統(tǒng)將解除與用戶的聯(lián)
7、接。 第七章操作系統(tǒng)接口 2 2磁盤操作命令磁盤操作命令在微機(jī)操作系統(tǒng)中,通常都提供了若干條磁盤操作命令。(1) 磁盤格式化命令Format。它被用于對(duì)指定驅(qū)動(dòng)器上的軟盤進(jìn)行格式化。每張新盤在使用前都必須先格式化。其目的是使磁盤記錄格式能為操作系統(tǒng)所接受。可見,不同操作系統(tǒng)將磁盤初始化后的格式各異。此外,在格式化過程中,還將對(duì)有缺陷的磁道和扇區(qū)加保留記號(hào),以防止將它分配給數(shù)據(jù)文件。 第七章操作系統(tǒng)接口 (2) 復(fù)制整個(gè)軟盤命令Diskcopy。該命令用于復(fù)制整個(gè)磁盤,另外它還有附加的格式化功能。如果目標(biāo)盤片是尚未格式化的,則該命令在執(zhí)行時(shí),首先將未格式化的軟盤格式化,然后再進(jìn)行復(fù)制。(3) 軟
8、盤比較命令Diskcomp。該命令用于將源盤與目標(biāo)盤的各磁道及各扇區(qū)中的數(shù)據(jù)逐一進(jìn)行比較。(4) 備份命令Backup。該命令用于把硬盤上的文件復(fù)制到軟盤上,而RESTORE命令則完成相反的操作。 第七章操作系統(tǒng)接口 3 3文件操作命令文件操作命令每個(gè)操作系統(tǒng)都提供了一組文件操作命令。在微機(jī)OS中的文件操作命令有下述幾種:(1) 顯示文件命令type:用于將指定文件內(nèi)容顯示在屏幕上。(2) 拷貝文件命令copy:用于實(shí)現(xiàn)文件的拷貝。(3) 文件比較命令comp:用于對(duì)兩個(gè)指定文件進(jìn)行比較。兩文件可以在同一個(gè)或不同的驅(qū)動(dòng)器上。(4) 重新命名命令Rename:用于將以第一參數(shù)命名的文件改成用第二
9、參數(shù)給定的名字。(5) 刪除文件命令erase:用于刪除一個(gè)或一組文件,當(dāng)參數(shù)路徑名為*.BAK時(shí),表示刪除指定目錄下的所有其擴(kuò)展名為 .Bak的文件。 第七章操作系統(tǒng)接口 4 4目錄操作命令目錄操作命令(1) 建立子目錄命令mkdir:用于建立指定名字的新目錄。(2) 顯示目錄命令dir:用于顯示指定磁盤中的目錄項(xiàng)。(3) 刪除子目錄命令rmdir:用于刪除指定的子目錄文件,但不能刪除普通文件,而且,一次只能刪除一個(gè)空目錄(其中僅含“.”和“.”兩個(gè)文件),不能刪除根及當(dāng)前目錄。(4) 顯示目錄結(jié)構(gòu)命令tree:用于顯示指定盤上的所有目錄路徑及其層次關(guān)系。(5) 改變當(dāng)前目錄命令chdir:
10、用于將當(dāng)前目錄改變?yōu)橛陕窂矫麉?shù)給定的目錄。用“.”作參數(shù)時(shí),表示應(yīng)返回到上一級(jí)目錄下。 第七章操作系統(tǒng)接口 5 5其它命令其它命令(1) 輸入輸出重定向命令。在有的OS中定義了兩個(gè)標(biāo)準(zhǔn)I/O設(shè)備。通常,命令的輸入取自標(biāo)準(zhǔn)輸入設(shè)備,即鍵盤;而命令的輸出通常是送往標(biāo)準(zhǔn)輸出設(shè)備,即顯示終端。如果在命令中設(shè)置輸出重定向“”符,其后接文件名或設(shè)備名,表示將命令的輸出改向,送到指定文件或設(shè)備上。類似地,若在命令中設(shè)置輸入重定向“”符,則不再是從鍵盤而是從重定向符左邊參數(shù)所指定的文件或設(shè)備上,取得輸入信息。 第七章操作系統(tǒng)接口 (2) 管道連接。這是指把第一條命令的輸出信息作為第二條命令的輸入信息;類似地
11、,又可把第二條命令的輸出信息作為第三條命令的輸入信息。這樣,由兩個(gè)(含兩條)以上的命令可形成一條管道。在MS-DOS和UNIX中,都用“|”作為管道符號(hào),其一般格式為:Command1 | Command2 | | Commandn; 第七章操作系統(tǒng)接口 (3) 過濾命令。在UNIX及MS-DOS中都有過濾命令,用于讀取指定文件或標(biāo)準(zhǔn)輸入,從中找出由參數(shù)指定的模式,然后把所有包含該模式的行都打印出來。例如,MS-DOS中用命令find/N“erase”(路徑名)可對(duì)由路徑名指定的輸入文件逐行檢索,把含有字符串“erase”的行輸出。其中,/N是選擇開關(guān),表示輸出含有指定字串的行;如果不用N而用
12、C,則表示只輸出含有指定字串的行數(shù);若用V,則表示輸出不含指定字串的行。 第七章操作系統(tǒng)接口 (4) 批命令。為了能連續(xù)地使用多條鍵盤命令,或多次反復(fù)地執(zhí)行指定的若干條命令,而又免去每次重敲這些命令的麻煩,可以提供一特定文件。在MS-DOS中提供了一種特殊文件,其后綴名用“.BAT”;在UNIX系統(tǒng)中稱為命令文件。它們都是利用一些鍵盤命令構(gòu)成一個(gè)程序,一次建立供多次使用。在MS-DOS中用batch命令去執(zhí)行由指定或默認(rèn)驅(qū)動(dòng)器的工作目錄上指定文件中所包含的一些命令。 第七章操作系統(tǒng)接口 .3鍵盤終端處理程序鍵盤終端處理程序?yàn)榱藢?shí)現(xiàn)人機(jī)交互,還須在微機(jī)或終端上配置相應(yīng)的鍵盤終端處
13、理程序,它應(yīng)具有下述幾方面的功能:(1) 接收用戶從終端上打入的字符。(2) 字符緩沖,用于暫存所接收的字符。(3) 回送顯示。(4) 屏幕編輯。(5) 特殊字符處理。 第七章操作系統(tǒng)接口 1 1字符接收功能字符接收功能為了實(shí)現(xiàn)人機(jī)交互,鍵盤終端處理程序必須能夠接收從終端輸入的字符,并將之傳送給用戶程序。有兩種方式來實(shí)現(xiàn)字符接收功能:(1) 面向字符方式。驅(qū)動(dòng)程序只接收從終端打入的字符,并且不加修改地將它傳送給用戶程序。這通常是一串未加工的ASCII碼。但大多數(shù)的用戶并不喜歡這種方式。 第七章操作系統(tǒng)接口 (2) 面向行方式。終端處理程序?qū)⑺邮盏淖址麜捍嬖谛芯彌_中,并可對(duì)行內(nèi)字符進(jìn)行編輯。僅
14、在收到行結(jié)束符后,才將一行正確的信息送命令解釋程序。在有的計(jì)算機(jī)中,從鍵盤硬件送出的是鍵的編碼(簡稱鍵碼),而不是ASCII碼。例如,當(dāng)打入a鍵時(shí),是將鍵碼“30”放入I/O寄存器,此時(shí),終端處理程序必須參照某種表格,將鍵碼轉(zhuǎn)換成ASCII碼。應(yīng)當(dāng)注意,某些IBM的兼容機(jī)使用的不是標(biāo)準(zhǔn)鍵碼。此時(shí),處理程序還須選用相應(yīng)的表格將其轉(zhuǎn)換成標(biāo)準(zhǔn)鍵碼。 第七章操作系統(tǒng)接口 2 2字符緩沖功能字符緩沖功能為了能暫存從終端鍵入的字符,以降低中斷處理器的頻率,在終端處理程序中,還必須具有字符緩沖功能。字符緩沖可采用以下兩種方式之一:(1) 專用緩沖區(qū)方式。這是指系統(tǒng)為每個(gè)終端設(shè)置一個(gè)緩沖區(qū),暫存用戶鍵入的一批
15、字符,緩沖區(qū)的典型長度為200個(gè)字符左右。這種方式較適合于單用戶微機(jī)或終端很少的多用戶機(jī)。當(dāng)終端數(shù)目較多時(shí),需要的緩沖區(qū)數(shù)目可能很大,且每個(gè)緩沖區(qū)的利用率也很低。例如,當(dāng)有100個(gè)終端時(shí),要求有20 KB的緩沖區(qū)。但專用緩沖區(qū)方式可使終端處理程序簡化。圖7-1(a)示出了專用緩沖區(qū)方式。 第七章操作系統(tǒng)接口 圖7-1兩種緩沖方式 終端專用緩沖區(qū)主機(jī)終端(a) 專用緩沖區(qū)方式終端主機(jī)(b) 公用緩沖池方式公用緩沖池第七章操作系統(tǒng)接口 (2) 公用緩沖池方式。系統(tǒng)不必為每個(gè)終端設(shè)置專用緩沖區(qū),只須設(shè)置一個(gè)由多個(gè)緩沖區(qū)構(gòu)成的公用緩沖池。其中的每個(gè)緩沖區(qū)大小相同,如為20個(gè)字符,再將所有的空緩沖區(qū)鏈接
16、成一個(gè)空緩沖區(qū)鏈。當(dāng)終端有數(shù)據(jù)輸入時(shí),可先向空緩沖區(qū)鏈申請(qǐng)一空緩沖區(qū)來接收輸入字符;當(dāng)該緩沖區(qū)裝滿后,再申請(qǐng)一空緩沖區(qū)。這樣,直至全部輸入完畢,并利用鏈接指針將這些裝有輸入數(shù)據(jù)的緩沖區(qū)鏈接成一條輸入鏈。每當(dāng)該輸入鏈中一個(gè)緩沖區(qū)內(nèi)的字符被全部傳送給用戶程序后,便將該緩沖區(qū)從輸入鏈中移出,再重新鏈入空緩沖區(qū)鏈中。顯然,利用公用緩沖池方式可有效地提高緩沖的利用率。圖7-1(b)示出了公用緩沖池方式。 第七章操作系統(tǒng)接口 3 3回送顯示回送顯示回送顯示(回顯)是指每當(dāng)用戶從鍵盤輸入一個(gè)字符后,終端處理程序便將該字符送往屏幕顯示。有些終端的回顯由硬件實(shí)現(xiàn),其速度較快,但往往會(huì)引起麻煩。如當(dāng)用戶鍵入口令時(shí)
17、,為防止口令被盜用,顯然不該有回顯。此外,用硬件實(shí)現(xiàn)回顯也缺乏靈活性,因而近年來多改用軟件來實(shí)現(xiàn)回顯,這樣可以做到在用戶需要時(shí)才回顯。用軟件實(shí)現(xiàn)回顯,還可方便地進(jìn)行字符變換,如將鍵盤輸入的小寫英文字母變成大寫,或相反。驅(qū)動(dòng)程序在將輸入的字符送往屏幕回顯時(shí),應(yīng)打印在正確的位置上;當(dāng)光標(biāo)走到一行的最后一個(gè)位置后,便應(yīng)返回到下一行的開始位置。例如,當(dāng)所鍵入的字符數(shù)目超過一行的80個(gè)(字符)時(shí),應(yīng)自動(dòng)地將下一個(gè)字符打印到下一行的開始位置。 第七章操作系統(tǒng)接口 4 4屏幕編輯屏幕編輯用戶經(jīng)常希望能對(duì)從鍵盤打入的數(shù)據(jù)(字符)進(jìn)行修改,如刪除(插入)一個(gè)或多個(gè)字符。為此,在終端處理程序中,還應(yīng)能實(shí)現(xiàn)屏幕編輯
18、功能,包括能提供若干個(gè)編輯鍵。常用的編輯鍵有:(1) 刪除字符鍵。它允許將用戶剛鍵入的字符刪除。在有的系統(tǒng)中是利用退格鍵即Backspace(Ctrl+H)鍵。當(dāng)用戶敲該鍵時(shí),處理程序并不將剛鍵入的字符送入字符隊(duì)列,而是從字符隊(duì)列中移出其前的一個(gè)字符。第七章操作系統(tǒng)接口 (2) 刪除一行鍵。該鍵用于將剛輸入的一行刪去。(3) 插入鍵。利用該鍵在光標(biāo)處可插入一個(gè)字符或一行正文。(4) 移動(dòng)光標(biāo)鍵。在鍵盤上有用于對(duì)光標(biāo)進(jìn)行上、下、左、右移動(dòng)的鍵。(5) 屏幕上卷或下移鍵,等等。 第七章操作系統(tǒng)接口 5 5特殊字符處理特殊字符處理終端處理程序必須能對(duì)若干特殊字符進(jìn)行及時(shí)處理,這些字符是:(1) 中斷
19、字符。當(dāng)程序在運(yùn)行中出現(xiàn)異常情況時(shí),用戶可通過鍵入中斷字符的辦法來中止當(dāng)前程序的運(yùn)行。在許多系統(tǒng)中是利用Break或Delete或Ctrl+C鍵作為中斷字符。對(duì)中斷字符的處理比較復(fù)雜。當(dāng)終端處理程序收到用戶鍵入的中斷字符后,將向該終端上的所有進(jìn)程發(fā)送一個(gè)要求進(jìn)程終止的軟中斷信號(hào),這些進(jìn)程收到該軟中斷信號(hào)后,便進(jìn)行自我終止。 第七章操作系統(tǒng)接口 (2) 停止上卷字符。用戶鍵入此字符后,終端處理程序應(yīng)使正在上卷的屏幕暫停上卷,以便用戶仔細(xì)觀察屏幕內(nèi)容。在有的系統(tǒng)中,是利用Ctrl+S鍵來停止屏幕上卷的。(3) 恢復(fù)上卷字符。有的系統(tǒng)利用Ctrl+Q鍵使停止上卷的屏幕恢復(fù)上卷。終端處理程序收到該字符
20、后,便恢復(fù)屏幕的上卷功能。上述的Ctrl+S與Ctrl+Q兩字符并不被存儲(chǔ),而是被用去設(shè)置終端數(shù)據(jù)結(jié)構(gòu)中的某個(gè)標(biāo)志。每當(dāng)終端試圖輸出時(shí),都須先檢查該標(biāo)志。若該標(biāo)志已被設(shè)置,便不再把字符送至屏幕。 第七章操作系統(tǒng)接口 .4命令解釋程序命令解釋程序1 1命令解釋程序的作用命令解釋程序的作用在聯(lián)機(jī)操作方式下,終端處理程序把用戶鍵入的信息送鍵盤緩沖區(qū)中保存。一旦用戶鍵入回車符,便立即把控制權(quán)交給命令處理程序。顯然,對(duì)于不同的命令,應(yīng)有能完成特定功能的命令處理程序與之對(duì)應(yīng)??梢?,命令解釋程序的主要作用是在屏幕上給出提示符,請(qǐng)用戶鍵入命令,然后讀入該命令,識(shí)別命令,再轉(zhuǎn)到相應(yīng)命令處理程序的
21、入口地址,把控制權(quán)交給該處理程序去執(zhí)行,并將處理結(jié)果送屏幕上顯示。若用戶鍵入的命令有錯(cuò),而命令解釋程序未能予以識(shí)別,或在執(zhí)行中間出現(xiàn)問題時(shí),則應(yīng)顯示出某一出錯(cuò)信息。 第七章操作系統(tǒng)接口 2 2命令解釋程序的組成命令解釋程序的組成(1) 常駐部分。這部分包括一些中斷服務(wù)子程序。例如:正常退出中斷INT 20,它用于在用戶程序執(zhí)行完畢后,退回操作系統(tǒng);駐留退出中斷INT 27,用這種方式,退出程序可駐留在內(nèi)存中;還有用于處理和顯示標(biāo)準(zhǔn)錯(cuò)誤信息的INT 24等。常駐部分還包括這樣的程序: 當(dāng)用戶程序終止后,它檢查暫存部分是否已被用戶程序覆蓋,若已被覆蓋,便重新將暫存部分調(diào)入內(nèi)存。 第七章操作系統(tǒng)接口
22、 (2) 初始化部分。它跟隨在常駐內(nèi)存部分之后,在啟動(dòng)時(shí)獲得控制權(quán)。這部分還包括對(duì)AUTOEXEC.BAT文件的處理程序,并決定應(yīng)用程序裝入的基地址。每當(dāng)系統(tǒng)接電或重新啟動(dòng)后,由處理程序找到并執(zhí)行AUTOEXEC.BAT文件。由于該文件在用完后不再被需要,因而它將被第一個(gè)由COMMAND.COM裝入的文件所覆蓋。(3) 暫存部分。這部分主要是命令解釋程序,并包含了所有的內(nèi)部命令處理程序、批文件處理程序,以及裝入和執(zhí)行外部命令的程序。它們都駐留在內(nèi)存中,但用戶程序可以使用并覆蓋這部分內(nèi)存,在用戶程序結(jié)束時(shí),常駐程序又會(huì)將它們重新從磁盤調(diào)入內(nèi)存,恢復(fù)暫存部分。 第七章操作系統(tǒng)接口 3 3命令解釋程
23、序的工作流程命令解釋程序的工作流程系統(tǒng)在接通電源或復(fù)位后,初始化部分獲得控制權(quán),對(duì)整個(gè)系統(tǒng)完成初始化工作,并自動(dòng)執(zhí)行AUTOEXEC.BAT文件,之后便把控制權(quán)交給暫存部分。暫存部分首先讀入鍵盤緩沖區(qū)中的命令,判別其文件名、擴(kuò)展名及驅(qū)動(dòng)器名是否正確。若發(fā)現(xiàn)有錯(cuò),在給出出錯(cuò)信息后返回;若無錯(cuò),再識(shí)別該命令。一種簡單的識(shí)別命令的方法是基于一張表格,其中的每一表目都是由命令名及其處理程序的入口地址兩項(xiàng)所組成的。如果暫存部分在該表中能找到鍵入的命令,且是內(nèi)部命令,便可以直接從對(duì)應(yīng)表項(xiàng)中獲得該命令處理程序的入口地址,然后把控制權(quán)交給該處理程序去執(zhí)行該命令。如果發(fā)現(xiàn)鍵入的命令不屬于內(nèi)部命令而是外部命令,則
24、暫存部分還須為之建立命令行;再通過執(zhí)行系統(tǒng)調(diào)用exec來裝入該命令的處理程序,并得到其基地址;然后把控制權(quán)交給該程序去執(zhí)行相應(yīng)的命令。圖7-2 示出了MS-DOS的COMMAND.COM的工作流程。 第七章操作系統(tǒng)接口 圖7-2COMMAND.COM的工作流程 是內(nèi)部命令?DIR命令處理程序Type命令處理程序Copy命令處理程序Date命令處理程序命令合法否?輸入命令行從外存調(diào)入外部命令執(zhí)行顯示提示符第七章操作系統(tǒng)接口 7.2Shell命令語言命令語言 .1簡單命令簡單命令所謂簡單命令,實(shí)際上是一個(gè)能完成某種功能的目標(biāo)程序的名字。UNIX系統(tǒng)規(guī)定的命令由小寫字母構(gòu)成(僅前8個(gè)
25、字母有效)。命令可帶有參數(shù)表,用于給出執(zhí)行命令時(shí)的附加信息。命令名與參數(shù)表之間還可使用一種稱為選項(xiàng)的自變量,用破折號(hào)開始,后跟一個(gè)或多個(gè)字母、數(shù)字。選項(xiàng)是對(duì)命令的正常操作加以修改,一條命令可有多個(gè)選項(xiàng),命令的格式如下:$ Command-option argument list例如:$ LS file1 file2 第七章操作系統(tǒng)接口 這是一條不帶選項(xiàng)的列目錄命令,$是系統(tǒng)提示符。該命令用于列出file1和file2兩個(gè)目錄文件中所包含的目錄項(xiàng),并隱含地指出按英文字母順序列表。若給出-tr選項(xiàng),該命令可表示成:$ LS-tr file1 file 2 其中,選項(xiàng)t和r分別表示按最近修改次序及按
26、反字母順序列表。通常,命令名與該程序的功能緊密相關(guān),以便于記憶。命令參數(shù)可多可少,也可缺省。例如:$ LS 第七章操作系統(tǒng)接口 1 1進(jìn)入與退出系統(tǒng)進(jìn)入與退出系統(tǒng)(1) 進(jìn)入系統(tǒng),也稱為注冊(cè)。事先,用戶須與系統(tǒng)管理員商定一個(gè)唯一的用戶名。管理員用該名字在系統(tǒng)文件樹上,為用戶建立一個(gè)子目錄樹的根結(jié)點(diǎn)。當(dāng)用戶打開自己的終端時(shí),屏幕上會(huì)出現(xiàn)Login:提示,這時(shí)用戶便可鍵入自己的注冊(cè)名,并用回車符結(jié)束。然后,系統(tǒng)又詢問用戶口令,用戶可用回車符或事先約定的口令鍵入。這兩步均須正確通過檢查,才能出現(xiàn)系統(tǒng)提示符(隨系統(tǒng)而異),以提示用戶自己已通過檢查,可以使用系統(tǒng)。若任一步驟有錯(cuò),系統(tǒng)均通過提示要求用戶重
27、新鍵入。 第七章操作系統(tǒng)接口 (2) 退出系統(tǒng)。每當(dāng)用戶用完系統(tǒng)后,應(yīng)向系統(tǒng)報(bào)告自己不再往系統(tǒng)裝入任何處理要求。系統(tǒng)得知后,便馬上為用戶記賬,清除用戶的使用環(huán)境。若用戶使用系統(tǒng)是免費(fèi)的,退出操作僅僅是一種禮貌。如果用戶使用的是多終端中的一個(gè)終端,為了退出,用戶只需按下Control-D鍵即可,系統(tǒng)會(huì)重新給出提示符即Login,以表明該終端可供另一新用戶使用。用戶的進(jìn)入與退出過程,實(shí)際上是由系統(tǒng)直接調(diào)用Login及Logout程序完成的。 第七章操作系統(tǒng)接口 2 2文件操作命令文件操作命令(1) 顯示文件內(nèi)容命令cat。如果用戶想了解自己在當(dāng)前目錄中的某個(gè)或某幾個(gè)指定文件的內(nèi)容時(shí),便可使用下述格
28、式的cat命令:$ cat filename1 filename2 執(zhí)行上述命令后,將按參數(shù)指定的順序,依次把所列名字的文件內(nèi)容送屏幕顯示。若鍵入文件名有錯(cuò),或該文件不在當(dāng)前目錄下,則該命令執(zhí)行結(jié)果將顯示指定文件不能打開的信息。 第七章操作系統(tǒng)接口 (2) 復(fù)制文件副本的命令cp。其格式為:cp source target該命令用于對(duì)已存在的文件source建立一個(gè)名為target的副本。(3) 對(duì)已有文件改名的命令mv。其格式為mv oldname newname用于把原來的老名字改成指定的新名字。(4) 撤消文件的命令rm。它給出一個(gè)參數(shù)表,是要撤消的文件名清單。(5) 確定文件類型的命令
29、file。該命令帶有一個(gè)參數(shù)表,用于給出想了解其(文件)類型的文件名清單。命令執(zhí)行的結(jié)果將在屏幕上顯示出各個(gè)文件的類型。 第七章操作系統(tǒng)接口 3 3目錄操作命令目錄操作命令(1) 建立目錄的命令mkdir(簡稱md)。當(dāng)用戶要?jiǎng)?chuàng)建或保存較多的文件時(shí),應(yīng)該以自己的注冊(cè)名作為根結(jié)點(diǎn),建立一棵子目錄樹,子樹中的各結(jié)點(diǎn)(除樹葉外)都是目錄文件??捎胢d命令來構(gòu)建一個(gè)目錄,參數(shù)是新創(chuàng)建目錄的名字。但應(yīng)注意該命令的使用,必須在其父目錄中有寫許可時(shí),才允許為其創(chuàng)建子目錄。(2) 撤消目錄的命令rmdir(簡稱rd)。它實(shí)際上是rm命令的一個(gè)特例,用于刪除一個(gè)或多個(gè)指定的下級(jí)空目錄。若目錄下仍有文件,該命令將
30、被認(rèn)為是一個(gè)錯(cuò)誤操作,這樣可以防止因不慎而消除了一個(gè)想保留的文件。命令的參數(shù)表用于給出要撤消的目錄文件清單。 第七章操作系統(tǒng)接口 (3) 改變工作目錄的命令cd。不帶參數(shù)的cd命令將使用戶從任何其它目錄回到自己的注冊(cè)目錄上;若用全路徑名作參數(shù),cd命令將使用戶來到由該路徑名確定的結(jié)點(diǎn)上;若用當(dāng)前目錄的子目錄名作參數(shù),將把用戶移到當(dāng)前目錄指定的下一級(jí)目錄上(即用其下一級(jí)目錄作為新的當(dāng)前目錄);用“.”號(hào)或“*”號(hào)將使當(dāng)前目錄上移一級(jí),即移到其父結(jié)點(diǎn)上。(4) 改變對(duì)文件的存取方式的命令chmod。其格式為chmod op-code permission filename 第七章操作系統(tǒng)接口 其中
31、,用于指明訪問者的身份,可以是用戶自己、用戶組、所有其他用戶及全部,分別用u、g、o和a表示;op-code是操作碼,分別用 +、- 及 = 表示增加、消除及賦予訪問者以某種權(quán)利;而permission則是分別用r、 w及x表示讀、 寫及執(zhí)行許可。例如,命令chmod go-w temp表示消除用戶組及所有其他用戶對(duì)文件temp的寫許可。 第七章操作系統(tǒng)接口 4 4系統(tǒng)詢問命令系統(tǒng)詢問命令(1) 訪問當(dāng)前日期和時(shí)間命令date。例如,用命令$ date 屏幕上將給出當(dāng)前的日期和時(shí)間,如為Wed Ang 14 09:27:20 PDT 1991表示當(dāng)前日期是1991年9月14日、 星期三,還有時(shí)
32、間信息。若在命令名后給出參數(shù),則date程序把參數(shù)作為重置系統(tǒng)時(shí)鐘的時(shí)間。 第七章操作系統(tǒng)接口 (2) 詢問系統(tǒng)當(dāng)前用戶的命令who。who命令可列出當(dāng)前每一個(gè)處在系統(tǒng)中的用戶的注冊(cè)名、終端名和注冊(cè)進(jìn)入時(shí)間,并按終端標(biāo)志的字母順序排序。例如,報(bào)告有下列三用戶:Veronica bxo66 Aug2713:28Rathomas dz24 Aug2807:42Jlyates tty5 Aug2807:39 第七章操作系統(tǒng)接口 用戶可用who命令了解系統(tǒng)的當(dāng)前負(fù)荷情況;也可在與其他用戶通信之前,用此命令去核實(shí)一下當(dāng)前進(jìn)入系統(tǒng)的用戶及其所使用終端名和所用的正確的注冊(cè)名。例如,用戶在使用系統(tǒng)的過程中,有
33、時(shí)會(huì)發(fā)現(xiàn)在打入一個(gè)請(qǐng)求后,系統(tǒng)響應(yīng)很慢,這時(shí)用戶可用“who|we-L”命令,使系統(tǒng)打印出當(dāng)前的用戶數(shù)目而不顯示系統(tǒng)用戶名等的完整清單,以得知當(dāng)前用戶數(shù)目。 第七章操作系統(tǒng)接口 (3) 顯示當(dāng)前目錄路徑名的命令pwd。當(dāng)前目錄的路徑名是從根結(jié)點(diǎn)開始,通過分支上的所有結(jié)點(diǎn)到達(dá)當(dāng)前目錄結(jié)點(diǎn)為止的路徑上的所有結(jié)點(diǎn)的名字拼起來構(gòu)成的。用戶的當(dāng)前目錄可能經(jīng)常在樹上移動(dòng)。如果用戶忘記了自己在哪里,便可用pwd確定自己的位置。 第七章操作系統(tǒng)接口 .2重定向與管道命令重定向與管道命令1 1重定向命令重定向命令在UNIX系統(tǒng)中,由系統(tǒng)定義了三個(gè)文件。其中,有兩個(gè)分別稱為標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出的文件
34、,各對(duì)應(yīng)于終端鍵盤輸入和終端屏幕輸出。它們是在用戶注冊(cè)時(shí),由Login程序打開的。這樣,在用戶程序執(zhí)行時(shí),隱含的標(biāo)準(zhǔn)輸入是鍵盤輸入,標(biāo)準(zhǔn)輸出即屏幕(輸出)顯示。但用戶程序中可能不要求從鍵盤輸入,而是從某個(gè)指定文件上讀取信息供程序使用;同樣,用戶可能希望把程序執(zhí)行時(shí)所產(chǎn)生的結(jié)果數(shù)據(jù),寫到某個(gè)指定文件中而非屏幕上。這就使用戶必須去改變輸入與輸出文件,即不使用標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出,而是把另外的某個(gè)指定文件或設(shè)備,作為輸入或輸出文件。 第七章操作系統(tǒng)接口 Shell向用戶提供了這種用于改變輸入、 輸出設(shè)備的手段,此即標(biāo)準(zhǔn)輸入與標(biāo)準(zhǔn)輸出的重新定向。用重定向符“”分別表示輸入轉(zhuǎn)向與輸出轉(zhuǎn)向。例如,對(duì)于命令$
35、 cat file1 表示將文件file1的內(nèi)容在標(biāo)準(zhǔn)輸出上打印出來。若改變其輸出,用命令$ cat file1file2 時(shí),表示把文件file1的內(nèi)容打印輸出到文件file2上。同理,對(duì)于命令$ wc 第七章操作系統(tǒng)接口 須指明的是,在做輸出轉(zhuǎn)向時(shí),若上述的文件file2并不存在,則先創(chuàng)建它;若已存在,則認(rèn)為它是空白的,執(zhí)行上述輸出轉(zhuǎn)向命令時(shí),是用命令的輸出數(shù)據(jù)去重寫該文件;如果文件file2事先已有內(nèi)容,則命令執(zhí)行結(jié)果將用文件file1的內(nèi)容去更新文件file2的原有內(nèi)容?,F(xiàn)在,如果又要求把file4的內(nèi)容附加到現(xiàn)有的文件file2的末尾,則應(yīng)使用另一個(gè)輸出轉(zhuǎn)向符“”,即此時(shí)應(yīng)再用命令$
36、 cat file4file2 第七章操作系統(tǒng)接口 便可在文件file2中,除了上次復(fù)制的file1內(nèi)容外,后面又附加了file4的內(nèi)容。當(dāng)然,若想一次把兩個(gè)文件file1和file4全部復(fù)制到file2中,則可用命令$ cat file1 file4file2 此外,也可在一個(gè)命令行中,同時(shí)改變輸入與輸出。例如,命令行a.outfile0 表示在可執(zhí)行文件a.out執(zhí)行時(shí),將從文件file1中提取數(shù)據(jù),而把a(bǔ).out的執(zhí)行結(jié)果數(shù)據(jù)輸出到文件file0中。 第七章操作系統(tǒng)接口 2 2管道命令管道命令在有了上述的重定向思想后,為了進(jìn)一步增強(qiáng)功能,人們又進(jìn)一步把這種思想加以擴(kuò)充,用符號(hào)“|”來連接
37、兩條命令,使其前一條命令的輸出作為后一條命令的輸入。即$ command 1| command 2 例如,對(duì)于下述輸入cat file|wc 將使命令cat把文件file中的數(shù)據(jù)作為wc命令的計(jì)數(shù)用輸入。 第七章操作系統(tǒng)接口 從概念上說,系統(tǒng)執(zhí)行上述輸入時(shí),將為管道建立一個(gè)作為通信通道的pipe文件。這時(shí),cat命令的輸出既不出現(xiàn)在終端(屏幕)上,也不存入某中間文件,而是由UNIX系統(tǒng)來“緩沖”第一條命令的輸出,并作為第二條命令的輸入。在用管道線所連接的命令之間,實(shí)現(xiàn)單向、同步運(yùn)行。其單向性表現(xiàn)在: 只把管道線前面的命令的輸出送入管道,而管道的輸出數(shù)據(jù)僅供管道線后面的命令去讀取。管道的同步特性
38、則表現(xiàn)為:當(dāng)一條管道滿時(shí),其前一條命令停止執(zhí)行;而當(dāng)管道空時(shí),則其后一條命令停止運(yùn)行。除此兩種情況外,用管道所連接的兩條命令“同時(shí)”運(yùn)行??梢姡霉艿拦δ埽梢粤魉€方式實(shí)現(xiàn)命令的流水線化,即在單一命令行下,同時(shí)運(yùn)行多條命令,以加速復(fù)雜任務(wù)的完成。 第七章操作系統(tǒng)接口 .3通信命令通信命令1 1信箱通信命令信箱通信命令mailmailmail命令被作為在UNIX的各用戶之間進(jìn)行非交互式通信的工具。mail采用信箱通信方式。發(fā)信者把要發(fā)送的消息寫成信件,“郵寄”到對(duì)方的信箱中。通常各用戶的私有信箱采用各自的注冊(cè)名命名,即它是目錄/usr/spool/mail中的一個(gè)文件,而文件
39、名又是用接收者的注冊(cè)名來命名的。信箱中的信件可以一直保留到被信箱所有者消除為止。第七章操作系統(tǒng)接口 因而,用mail進(jìn)行通信時(shí),不要求接收者利用終端與發(fā)送者會(huì)話。亦即,在發(fā)信者發(fā)送信息時(shí),雖然接收者已在系統(tǒng)中注冊(cè)過,但允許他此時(shí)沒有使用系統(tǒng);也可以是雖在使用系統(tǒng),但拒絕接收任何信息。mail命令在用于發(fā)信時(shí),把接收者的注冊(cè)名當(dāng)作參數(shù)打入后,便可在新行開始鍵入信件正文,最后仍在一個(gè)新行上用“.”來結(jié)束信件或用“D”退出mail程序(也可帶選項(xiàng),此處從略)。 第七章操作系統(tǒng)接口 接收者也用mail命令讀取信件,可使用可選項(xiàng)r、 q或p等。其命令格式為mail -r-q-p-file-F perso
40、ns由于信箱中可存放所接收的多個(gè)信件,這就存在一個(gè)選取信件的問題。上述幾個(gè)選項(xiàng)分別表示: 按先進(jìn)先出順序顯示各信件的內(nèi)容;在輸入中斷字符(Del或Return)后,退出mail程序而不改變信箱的內(nèi)容;一次性地顯示信箱全部內(nèi)容而不帶詢問;把指定文件當(dāng)作信件來顯示。在不使用-p選項(xiàng)時(shí),表示在顯示完一個(gè)信件后,便出現(xiàn)“?”,以詢問用戶是否繼續(xù)顯示下一條消息,或選讀完最后一條消息后退出mail。 第七章操作系統(tǒng)接口 2 2對(duì)話通信命令對(duì)話通信命令writewrite用這條命令可以使用戶與當(dāng)前在系統(tǒng)中的其他用戶直接進(jìn)行聯(lián)機(jī)通信。由于UNIX系統(tǒng)允許一個(gè)用戶同時(shí)在幾個(gè)終端上注冊(cè),故在用此命令前,要用who
41、命令去查看目標(biāo)用戶當(dāng)前是否聯(lián)機(jī),或確定接收者所使用的終端名。命令格式為write userttyname當(dāng)接收者只有一個(gè)終端時(shí),終端名可缺省。當(dāng)接收者的終端被允許接收消息時(shí),屏幕提示會(huì)通知接收者源用戶名及其所用終端名。 第七章操作系統(tǒng)接口 3 3允許或拒絕接收消息命令允許或拒絕接收消息命令mesgmesgmesg命令的格式為:mesg-n-y選項(xiàng)n表示拒絕對(duì)方的寫許可(即拒絕接收消息);選項(xiàng)y指示恢復(fù)對(duì)方的寫許可,僅在此時(shí),雙方才可聯(lián)機(jī)通信。當(dāng)用戶正在聯(lián)機(jī)編寫一份資料而不愿被別人干擾時(shí),常選用n選項(xiàng)來拒絕對(duì)方的寫許可。編輯完畢,再用帶有y選項(xiàng)的mesg命令來恢復(fù)對(duì)方的寫許可,不帶自變量的mes
42、g命令只報(bào)告當(dāng)前狀態(tài)而不改變它。 第七章操作系統(tǒng)接口 .4后臺(tái)命令后臺(tái)命令有些命令需要執(zhí)行很長的時(shí)間,這樣,當(dāng)用戶鍵入該命令后,便會(huì)發(fā)現(xiàn)自己已無事可做,要一直等到該命令執(zhí)行完畢,方可再鍵入下一條命令。這時(shí)用戶自然會(huì)想到應(yīng)該利用這段時(shí)間去做些別的事。UNIX系統(tǒng)提供了這種機(jī)制,用戶可以在這種命令后面再加上“&”號(hào),以告訴Shell將該命令放在后臺(tái)執(zhí)行,以便用戶在前臺(tái)繼續(xù)鍵入其它命令。 第七章操作系統(tǒng)接口 在后臺(tái)運(yùn)行的程序仍然把終端作為它的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤文件,除非對(duì)它們進(jìn)行重新定向。其標(biāo)準(zhǔn)輸入文件是自動(dòng)地被從終端定向到一個(gè)被稱為“/dev/null”的空文件中。若she
43、ll未重定向標(biāo)準(zhǔn)輸入,則shell和后臺(tái)進(jìn)程將會(huì)同時(shí)從終端進(jìn)行讀入。這時(shí),用戶從終端鍵入的字符可能被發(fā)送到一個(gè)進(jìn)程或另一個(gè)進(jìn)程,并不能預(yù)測(cè)哪個(gè)進(jìn)程將得到該字符。因此,對(duì)所有在后臺(tái)運(yùn)行的命令的標(biāo)準(zhǔn)輸入,都必須加以重定向,從而使從終端鍵入的所有字符都被送到Shell進(jìn)程。用戶可使用ps、wait及Kill命令去了解和控制后臺(tái)進(jìn)程的運(yùn)行。 第七章操作系統(tǒng)接口 7.3系系 統(tǒng)統(tǒng) 調(diào)調(diào) 用用 .1系統(tǒng)調(diào)用的基本概念系統(tǒng)調(diào)用的基本概念通常,在OS的核心中都設(shè)置了一組用于實(shí)現(xiàn)各種系統(tǒng)功能的子程序(過程),并將它們提供給應(yīng)用程序調(diào)用。由于這些程序或過程是OS系統(tǒng)本身程序模塊中的一部分,為了保護(hù)
44、操作系統(tǒng)程序不被用戶程序破壞,一般都不允許用戶程序訪問操作系統(tǒng)的程序和數(shù)據(jù),所以也不允許應(yīng)用程序采用一般的過程調(diào)用方式來直接調(diào)用這些過程,而是向應(yīng)用程序提供了一系列的系統(tǒng)調(diào)用命令,讓應(yīng)用程序通過系統(tǒng)調(diào)用去調(diào)用所需的系統(tǒng)過程。 第七章操作系統(tǒng)接口 1 1系統(tǒng)態(tài)和用戶態(tài)系統(tǒng)態(tài)和用戶態(tài)在計(jì)算機(jī)系統(tǒng)中,通常運(yùn)行著兩類程序:系統(tǒng)程序和應(yīng)用程序,為了保證系統(tǒng)程序不被應(yīng)用程序有意或無意地破壞,為計(jì)算機(jī)設(shè)置了兩種狀態(tài):系統(tǒng)態(tài)(也稱為管態(tài)或核心態(tài))和用戶態(tài)(也稱為目態(tài))。操作系統(tǒng)在系統(tǒng)態(tài)運(yùn)行,而應(yīng)用程序只能在用戶態(tài)運(yùn)行。在實(shí)際運(yùn)行過程中,處理機(jī)會(huì)在系統(tǒng)態(tài)和用戶態(tài)間切換。相應(yīng)地,現(xiàn)代多數(shù)操作系統(tǒng)將CPU的指令集分
45、為特權(quán)指令和非特權(quán)指令兩類。 第七章操作系統(tǒng)接口 1) 特權(quán)指令所謂特權(quán)指令,就是在系統(tǒng)態(tài)時(shí)運(yùn)行的指令,是關(guān)系到系統(tǒng)全局的指令。其對(duì)內(nèi)存空間的訪問范圍基本不受限制,不僅能訪問用戶存儲(chǔ)空間,也能訪問系統(tǒng)存儲(chǔ)空間,如啟動(dòng)各種外部設(shè)備、設(shè)置系統(tǒng)時(shí)鐘時(shí)間、關(guān)中斷、清主存、修改存儲(chǔ)器管理寄存器、執(zhí)行停機(jī)指令、轉(zhuǎn)換執(zhí)行狀態(tài)等。特權(quán)指令只允許操作系統(tǒng)使用,不允許應(yīng)用程序使用,否則會(huì)引起系統(tǒng)混亂。 第七章操作系統(tǒng)接口 2) 非特權(quán)指令非特權(quán)指令是在用戶態(tài)時(shí)運(yùn)行的指令。一般應(yīng)用程序所使用的都是非特權(quán)指令,它只能完成一般性的操作和任務(wù),不能對(duì)系統(tǒng)中的硬件和軟件直接進(jìn)行訪問,其對(duì)內(nèi)存的訪問范圍也局限于用戶空間。這樣
46、,可以防止應(yīng)用程序的運(yùn)行異常對(duì)系統(tǒng)造成的破壞。這種限制是由硬件實(shí)現(xiàn)的,如果在應(yīng)用程序中使用了特權(quán)指令,就會(huì)發(fā)出權(quán)限出錯(cuò)信號(hào),操作系統(tǒng)捕獲到這個(gè)信號(hào)后,將轉(zhuǎn)入相應(yīng)的錯(cuò)誤處理程序,并將停止該應(yīng)用程序的運(yùn)行,重新調(diào)度。 第七章操作系統(tǒng)接口 2 2系統(tǒng)調(diào)用系統(tǒng)調(diào)用如上所述,一方面由于系統(tǒng)提供了保護(hù)機(jī)制,防止應(yīng)用程序直接調(diào)用操作系統(tǒng)的過程,從而避免了系統(tǒng)的不安全性。但另一方面,應(yīng)用程序又必須取得操作系統(tǒng)所提供的服務(wù),否則,應(yīng)用程序幾乎無法作任何有價(jià)值的事情,甚至無法運(yùn)行。為此,在操作系統(tǒng)中提供了系統(tǒng)調(diào)用,使應(yīng)用程序可以通過系統(tǒng)調(diào)用的方法,間接調(diào)用操作系統(tǒng)的相關(guān)過程,取得相應(yīng)的服務(wù)。當(dāng)應(yīng)用程序中需要操作系
47、統(tǒng)提供服務(wù)時(shí),如請(qǐng)求I/O資源或執(zhí)行I/O操作,應(yīng)用程序必須使用系統(tǒng)調(diào)用命令。由操作系統(tǒng)捕獲到該命令后,便將CPU的狀態(tài)從用戶態(tài)轉(zhuǎn)換到系統(tǒng)態(tài),然后執(zhí)行操作系統(tǒng)中相應(yīng)的子程序(例程),完成所需的功能。執(zhí)行完成后,系統(tǒng)又將CPU狀態(tài)從系統(tǒng)態(tài)轉(zhuǎn)換到用戶態(tài),再繼續(xù)執(zhí)行應(yīng)用程序。 第七章操作系統(tǒng)接口 可見,系統(tǒng)調(diào)用在本質(zhì)上是應(yīng)用程序請(qǐng)求OS內(nèi)核完成某功能時(shí)的一種過程調(diào)用,但它是一種特殊的過程調(diào)用,它與一般的過程調(diào)用有下述幾方面的明顯差別:(1) 運(yùn)行在不同的系統(tǒng)狀態(tài)。一般的過程調(diào)用,其調(diào)用程序和被調(diào)用程序都運(yùn)行在相同的狀態(tài)系統(tǒng)態(tài)或用戶態(tài);而系統(tǒng)調(diào)用與一般調(diào)用的最大區(qū)別就在于:調(diào)用程序是運(yùn)行在用戶態(tài),而被
48、調(diào)用程序是運(yùn)行在系統(tǒng)態(tài)。 第七章操作系統(tǒng)接口 (2) 狀態(tài)的轉(zhuǎn)換通過軟中斷進(jìn)入。由于一般的過程調(diào)用并不涉及到系統(tǒng)狀態(tài)的轉(zhuǎn)換,可直接由調(diào)用過程轉(zhuǎn)向被調(diào)用過程。但在運(yùn)行系統(tǒng)調(diào)用時(shí),由于調(diào)用和被調(diào)用過程是工作在不同的系統(tǒng)狀態(tài),因而不允許由調(diào)用過程直接轉(zhuǎn)向被調(diào)用過程。通常都是通過軟中斷機(jī)制,先由用戶態(tài)轉(zhuǎn)換為系統(tǒng)態(tài),經(jīng)核心分析后,才能轉(zhuǎn)向相應(yīng)的系統(tǒng)調(diào)用處理子程序。(3) 返回問題。在采用了搶占式(剝奪)調(diào)度方式的系統(tǒng)中,在被調(diào)用過程執(zhí)行完后,要對(duì)系統(tǒng)中所有要求運(yùn)行的進(jìn)程做優(yōu)先權(quán)分析。當(dāng)調(diào)用進(jìn)程仍具有最高優(yōu)先級(jí)時(shí),才返回到調(diào)用進(jìn)程繼續(xù)執(zhí)行;否則,將引起重新調(diào)度,以便讓優(yōu)先權(quán)最高的進(jìn)程優(yōu)先執(zhí)行。此時(shí),將把調(diào)
49、用進(jìn)程放入就緒隊(duì)列。 第七章操作系統(tǒng)接口 (4) 嵌套調(diào)用。像一般過程一樣,系統(tǒng)調(diào)用也可以嵌套進(jìn)行,即在一個(gè)被調(diào)用過程的執(zhí)行期間,還可以利用系統(tǒng)調(diào)用命令去調(diào)用另一個(gè)系統(tǒng)調(diào)用。當(dāng)然,每個(gè)系統(tǒng)對(duì)嵌套調(diào)用的深度都有一定的限制,例如最大深度為6。但一般的過程對(duì)嵌套的深度則沒有什么限制。圖7-3示出了沒有嵌套及有嵌套的兩種系統(tǒng)調(diào)用情況。 第七章操作系統(tǒng)接口 圖7-3系統(tǒng)功能的調(diào)用 系統(tǒng)調(diào)用命令調(diào)用返回系統(tǒng)功能用戶程序(a) 系統(tǒng)調(diào)用與返回系統(tǒng)調(diào)用命令調(diào)用系統(tǒng)功能系統(tǒng)調(diào)用命令返回系統(tǒng)子功能(b) 程序之間的嵌套調(diào)用第七章操作系統(tǒng)接口 3 3中斷機(jī)制中斷機(jī)制系統(tǒng)調(diào)用是通過中斷機(jī)制實(shí)現(xiàn)的,并且一個(gè)操作系統(tǒng)的所
50、有系統(tǒng)調(diào)用都通過同一個(gè)中斷入口來實(shí)現(xiàn)。如MS-DOS提供了INT 21H,應(yīng)用程序通過該中斷獲取操作系統(tǒng)的服務(wù)。對(duì)于擁有保護(hù)機(jī)制的操作系統(tǒng)來說,中斷機(jī)制本身也是受保護(hù)的,在IBM PC上,Intel提供了多達(dá)255 個(gè)中斷號(hào),但只有授權(quán)給應(yīng)用程序保護(hù)等級(jí)的中斷號(hào),才是可以被應(yīng)用程序調(diào)用的。對(duì)于未被授權(quán)的中斷號(hào),如果應(yīng)用程序進(jìn)行調(diào)用,同樣會(huì)引起保護(hù)異常,而導(dǎo)致自己被操作系統(tǒng)停止。如Linux 僅僅給應(yīng)用程序授權(quán)了4 個(gè)中斷號(hào):3、4、5以及80h,前三個(gè)中斷號(hào)是提供給應(yīng)用程序調(diào)試所使用的,而80h正是系統(tǒng)調(diào)用(system call)的中斷號(hào)。 第七章操作系統(tǒng)接口 .2系統(tǒng)調(diào)用的
51、類型系統(tǒng)調(diào)用的類型1 1進(jìn)程控制類系統(tǒng)調(diào)用進(jìn)程控制類系統(tǒng)調(diào)用這類系統(tǒng)調(diào)用主要用于對(duì)進(jìn)程的控制,如創(chuàng)建一個(gè)新的進(jìn)程和終止一個(gè)進(jìn)程的運(yùn)行,獲得和設(shè)置進(jìn)程屬性等。1) 創(chuàng)建和終止進(jìn)程的系統(tǒng)調(diào)用在多道程序環(huán)境下,為使多道程序能并發(fā)執(zhí)行,必須先利用創(chuàng)建進(jìn)程的系統(tǒng)調(diào)用來為欲參加并發(fā)執(zhí)行的各程序分別創(chuàng)建一個(gè)進(jìn)程。當(dāng)進(jìn)程已經(jīng)執(zhí)行結(jié)束時(shí)、 或因發(fā)生異常情況而不能繼續(xù)執(zhí)行時(shí),可利用終止進(jìn)程的系統(tǒng)調(diào)用來結(jié)束該進(jìn)程的運(yùn)行。 第七章操作系統(tǒng)接口 2) 獲得和設(shè)置進(jìn)程屬性的系統(tǒng)調(diào)用當(dāng)我們創(chuàng)建了一個(gè)(些)新進(jìn)程后,為了能控制它(們)的運(yùn)行,應(yīng)當(dāng)能了解、 確定和重新設(shè)置它(們)的屬性。這些屬性包括: 進(jìn)程標(biāo)識(shí)符、進(jìn)程優(yōu)先級(jí)、
52、最大允許執(zhí)行時(shí)間等。此時(shí),我們可利用獲得進(jìn)程屬性的系統(tǒng)調(diào)用,來了解某進(jìn)程的屬性,利用設(shè)置進(jìn)程屬性的系統(tǒng)調(diào)用,來確定和重新設(shè)置進(jìn)程的屬性。 第七章操作系統(tǒng)接口 3) 等待某事件出現(xiàn)的系統(tǒng)調(diào)用進(jìn)程在運(yùn)行過程中,有時(shí)需要等待某事件(條件)出現(xiàn)后方可繼續(xù)執(zhí)行。例如,一進(jìn)程在創(chuàng)建了一個(gè)(些)新進(jìn)程后,需要等待它(們)運(yùn)行結(jié)束后,才能繼續(xù)執(zhí)行,此時(shí)可利用等待子進(jìn)程結(jié)束的系統(tǒng)調(diào)用進(jìn)行等待;又如,在客戶/服務(wù)器模式中,若無任何客戶向服務(wù)器發(fā)出消息,則服務(wù)器接收進(jìn)程便無事可做,此時(shí)該進(jìn)程就可利用等待(事件)的系統(tǒng)調(diào)用,使自己處于等待狀態(tài),一旦有客戶發(fā)來消息時(shí),接收進(jìn)程便被喚醒,進(jìn)行消息接收的處理。 第七章操作系
53、統(tǒng)接口 2 2文件操縱類系統(tǒng)調(diào)用文件操縱類系統(tǒng)調(diào)用對(duì)文件進(jìn)行操縱的系統(tǒng)調(diào)用數(shù)量較多,有創(chuàng)建文件、刪除文件、打開文件、關(guān)閉文件、讀文件、寫文件、建立目錄、移動(dòng)文件的讀/寫指針、改變文件的屬性等。1) 創(chuàng)建和刪除文件當(dāng)用戶需要在系統(tǒng)中存放程序或數(shù)據(jù)時(shí),可利用創(chuàng)建文件的系統(tǒng)調(diào)用creat,由系統(tǒng)根據(jù)用戶提供的文件名和存取方式來創(chuàng)建一個(gè)新文件;當(dāng)用戶已不再需要某文件時(shí),可利用刪除文件的系統(tǒng)調(diào)用unlink將指名文件刪除。 第七章操作系統(tǒng)接口 2) 打開和關(guān)閉文件用戶在第一次訪問某個(gè)文件之前,應(yīng)先利用打開文件的系統(tǒng)調(diào)用open,將指名文件打開,即系統(tǒng)將在用戶(程序)與該文件之間建立一條快捷通路。在文件被
54、打開后,系統(tǒng)將給用戶返回一個(gè)該文件的句柄或描述符;當(dāng)用戶不再訪問某文件時(shí),又可利用關(guān)閉文件的系統(tǒng)調(diào)用close,將此文件關(guān)閉,即斷開該用戶程序與該文件之間的快捷通路。 第七章操作系統(tǒng)接口 3) 讀和寫文件用戶可利用讀系統(tǒng)調(diào)用read,從已打開的文件中讀出給定數(shù)目的字符,并送至指定的緩沖區(qū)中;同樣,用戶也可利用寫系統(tǒng)調(diào)用write,從指定的緩沖區(qū)中將給定數(shù)目的字符寫入指定文件中。read和write兩個(gè)系統(tǒng)調(diào)用是文件操縱類系統(tǒng)調(diào)用中使用最頻繁的。 第七章操作系統(tǒng)接口 3 3進(jìn)程通信類系統(tǒng)調(diào)用進(jìn)程通信類系統(tǒng)調(diào)用在OS中經(jīng)常采用兩種進(jìn)程通信方式,即消息傳遞方式和共享存儲(chǔ)區(qū)方式。當(dāng)系統(tǒng)中采用消息傳遞方
55、式時(shí),在通信前,必須先打開一個(gè)連接。為此,應(yīng)由源進(jìn)程發(fā)出一條打開連接的系統(tǒng)調(diào)用open connection,而目標(biāo)進(jìn)程則應(yīng)利用接受連接的系統(tǒng)調(diào)用accept connection表示同意進(jìn)行通信;然后,在源和目標(biāo)進(jìn)程之間便可開始通信??梢岳冒l(fā)送消息的系統(tǒng)調(diào)用send message或者用接收消息的系統(tǒng)調(diào)用receive message來交換信息。通信結(jié)束后,還須再利用關(guān)閉連接的系統(tǒng)調(diào)用close connection結(jié)束通信。 第七章操作系統(tǒng)接口 用戶在利用共享存儲(chǔ)區(qū)進(jìn)行通信之前,須先利用建立共享存儲(chǔ)區(qū)的系統(tǒng)調(diào)用來建立一個(gè)共享存儲(chǔ)區(qū),再利用建立連接的系統(tǒng)調(diào)用將該共享存儲(chǔ)區(qū)連接到進(jìn)程自身的虛
56、地址空間上,然后便可利用讀和寫共享存儲(chǔ)區(qū)的系統(tǒng)調(diào)用實(shí)現(xiàn)相互通信。除上述的三類外,常用的系統(tǒng)調(diào)用還包括設(shè)備管理類系統(tǒng)調(diào)用和信息維護(hù)類系統(tǒng)調(diào)用,前者主要用于實(shí)現(xiàn)申請(qǐng)?jiān)O(shè)備、釋放設(shè)備、設(shè)備I/O 和重定向、獲得和設(shè)置設(shè)備屬性、邏輯上連接和釋放設(shè)備等功能,后者主要用來獲得包括有關(guān)系統(tǒng)和文件的時(shí)間、日期信息、操作系統(tǒng)版本、當(dāng)前用戶以及有關(guān)空閑內(nèi)存和磁盤空間大小等多方面的信息。 第七章操作系統(tǒng)接口 7.3.3 POSIX7.3.3 POSIX標(biāo)準(zhǔn)標(biāo)準(zhǔn)目前許多操作系統(tǒng)都提供了上面所介紹的各種類型的系統(tǒng)調(diào)用,實(shí)現(xiàn)的功能也相類似,但在實(shí)現(xiàn)的細(xì)節(jié)和形式方面卻相差很大,這種差異給實(shí)現(xiàn)應(yīng)用程序與操作系統(tǒng)平臺(tái)的無關(guān)性帶來
57、了很大的困難。為解決這一問題,國際標(biāo)準(zhǔn)化組織ISO給出的有關(guān)系統(tǒng)調(diào)用的國際標(biāo)準(zhǔn)POSIX1003.1(Portable Operating System IX),也稱為“基于UNIX 的可移植操作系統(tǒng)接口”。POSIX 定義了標(biāo)準(zhǔn)應(yīng)用程序接口(API),用于保證編制的應(yīng)用程序可以在源代碼一級(jí)上在多種操作系統(tǒng)上移植運(yùn)行。只有符合這一標(biāo)準(zhǔn)的應(yīng)用程序,才有可能完全兼容多種操作系統(tǒng),即在多種操作系統(tǒng)下都能夠運(yùn)行。 第七章操作系統(tǒng)接口 POSIX 標(biāo)準(zhǔn)定義了一組過程,這組過程是構(gòu)造系統(tǒng)調(diào)用所必須的。通過調(diào)用這些過程所提供的服務(wù),確定了一系列系統(tǒng)調(diào)用的功能。一般而言,在POSIX標(biāo)準(zhǔn)中,大多數(shù)的系統(tǒng)調(diào)用是
58、一個(gè)系統(tǒng)調(diào)用直接映射一個(gè)過程,但也有一個(gè)系統(tǒng)調(diào)用對(duì)應(yīng)若干個(gè)過程的情形,如一個(gè)系統(tǒng)調(diào)用所需要的過程是其它系統(tǒng)調(diào)用的組合或變形時(shí), 則往往會(huì)對(duì)應(yīng)多個(gè)過程。 第七章操作系統(tǒng)接口 需要明確的是,POSIX標(biāo)準(zhǔn)所定義的一組過程雖然指定了系統(tǒng)調(diào)用的功能,但并沒有明確規(guī)定系統(tǒng)調(diào)用是以什么形式實(shí)現(xiàn)的,是庫函數(shù)還是其它形式。如早期操作系統(tǒng)的系統(tǒng)調(diào)用使用匯編語言編寫,這時(shí)的系統(tǒng)調(diào)用可看成是擴(kuò)展的機(jī)器指令,因而,能在匯編語言編程中直接使用。而在一些高級(jí)語言或C語言中,尤其是最新推出的一些操作系統(tǒng),如UNIX新版本、Linux、Windows 和OS/2 等,其系統(tǒng)調(diào)用干脆用C語言編寫,并以庫函數(shù)形式提供,所以在用C
59、 語言編制的應(yīng)用程序中,可直接通過使用對(duì)應(yīng)的庫函數(shù)來使用系統(tǒng)調(diào)用,庫函數(shù)的目的是隱藏訪管指令的細(xì)節(jié),使系統(tǒng)調(diào)用更像過程調(diào)用。但一般地說,庫函數(shù)屬于用戶程序而非系統(tǒng)調(diào)用程序。如圖7-4示出了UNIX/Linux的系統(tǒng)程序、庫函數(shù)、系統(tǒng)調(diào)用的層次關(guān)系。 第七章操作系統(tǒng)接口 圖7-4 Unix/Linux系統(tǒng)程序、庫函數(shù)、系統(tǒng)調(diào)用的分層關(guān)系 操作系統(tǒng)系統(tǒng)調(diào)用:進(jìn)程管理、存儲(chǔ)管理、文件管理、設(shè)備管理標(biāo)準(zhǔn)庫函數(shù)標(biāo)準(zhǔn)函數(shù):打開、關(guān)閉、讀、寫、創(chuàng)建、撤銷標(biāo)準(zhǔn)系統(tǒng)程序(實(shí)用程序)系統(tǒng)程序:匯編、編譯、編輯、Shell用 戶用戶接口庫函數(shù)接口系統(tǒng)調(diào)用接口第七章操作系統(tǒng)接口 7.3.4 7.3.4 系統(tǒng)調(diào)用的實(shí)現(xiàn)
60、系統(tǒng)調(diào)用的實(shí)現(xiàn)1 1中斷和陷入硬件機(jī)構(gòu)中斷和陷入硬件機(jī)構(gòu)1) 中斷和陷入的概念中斷是指CPU對(duì)系統(tǒng)發(fā)生某事件時(shí)的這樣一種響應(yīng): CPU暫停正在執(zhí)行的程序,在保留現(xiàn)場(chǎng)后自動(dòng)地轉(zhuǎn)去執(zhí)行該事件的中斷處理程序;執(zhí)行完后,再返回到原程序的斷點(diǎn)處繼續(xù)執(zhí)行。圖7-5表示中斷時(shí)CPU的活動(dòng)軌跡。還可進(jìn)一步把中斷分為外中斷和內(nèi)中斷。所謂外中斷,是指由于外部設(shè)備事件所引起的中斷,如通常的磁盤中斷、打印機(jī)中斷等;而內(nèi)中斷則是指由于CPU內(nèi)部事件所引起的中斷,如程序出錯(cuò)(非法指令、地址越界)、電源故障等。內(nèi)中斷(trap)也被譯為“捕獲”或“陷入”。通常,陷入是由于執(zhí)行了現(xiàn)行指令所引起的;而中斷則是由于系統(tǒng)中某事件引起的,該
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45210-2025增材制造標(biāo)準(zhǔn)測(cè)試件增材制造系統(tǒng)幾何成形能力評(píng)估
- 離婚協(xié)議與財(cái)產(chǎn)分割合同范本
- 地鐵建設(shè)項(xiàng)目施工及設(shè)備安裝合同
- 新車購銷合同書
- 施工合同安全責(zé)任書:版
- 客戶預(yù)收款退款合同擔(dān)保
- 4感官幫助我 教學(xué)設(shè)計(jì)-2024-2025學(xué)年科學(xué)一年級(jí)上冊(cè)冀人版
- 人力資源服務(wù)合同(二)
- 7 不甘屈辱奮勇抗?fàn)?第一課時(shí) 教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治五年級(jí)下冊(cè)統(tǒng)編版
- 度員工派遣合同范本
- 四年級(jí)數(shù)學(xué)(四則混合運(yùn)算帶括號(hào))計(jì)算題專項(xiàng)練習(xí)與答案
- 2024年中考語文(云南卷)真題詳細(xì)解讀及評(píng)析
- 電梯消防安全與維護(hù)
- 夜景照明吊繩施工方案
- 2025借款合同范本個(gè)人向公司借款
- 文化差異下的家庭教育與親子關(guān)系探討
- 2025年中國棕櫚粕行業(yè)市場(chǎng)現(xiàn)狀、前景分析研究報(bào)告(智研咨詢發(fā)布)
- 【大學(xué)課件】工程倫理與社會(huì)
- 2025屆江蘇省南京市、鹽城市高三語文一模調(diào)研作文題目解析及范文:直路、陡坡、彎道
- 幼兒教育專業(yè)國家技能人才培養(yǎng)工學(xué)一體化課程設(shè)置方案
- 貨物學(xué) 課件全套 孔月紅 項(xiàng)目1-8:貨物與貨物學(xué)概述-集裝箱貨物
評(píng)論
0/150
提交評(píng)論