




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