版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第七章 操作系統(tǒng)接口本章主要講述操作系統(tǒng)向用戶(hù)提供的各種接口,具體包括命令接口、系統(tǒng)功能調(diào)用、圖形用戶(hù)接口等內(nèi)容。7.1 聯(lián)機(jī)用戶(hù)接口7.1.1 聯(lián)機(jī)用戶(hù)接口 1. 命令行方式 簡(jiǎn)單命令的一般形式為:command arg1 arg2 argn 2. 批命令方式7.1.2 聯(lián)機(jī)命令的類(lèi)型 為了能向用戶(hù)提供多方面的服務(wù),通常,OS都向用戶(hù)提供了幾十條甚至上百條的聯(lián)機(jī)命令。根據(jù)這些命令所完成功能的不同,可把它們分成以下幾類(lèi): 系統(tǒng)訪(fǎng)問(wèn)類(lèi); 磁盤(pán)操作類(lèi); 文件操作類(lèi); 目錄操作類(lèi); 通信類(lèi); 其他命令。 1. 系統(tǒng)訪(fǎng)問(wèn)類(lèi)在單用戶(hù)微型機(jī)中,一般沒(méi)有設(shè)置系統(tǒng)訪(fǎng)問(wèn)命令; 然而在多用戶(hù)系統(tǒng)中,為了保證系統(tǒng)的
2、安全性,都毫無(wú)例外地設(shè)置了系統(tǒng)訪(fǎng)問(wèn)命令, 即注冊(cè)命令Login。 用戶(hù)在每次開(kāi)始使用某終端時(shí),都須使用該命令,使系統(tǒng)能識(shí)別該用戶(hù)。凡要在多用戶(hù)系統(tǒng)的終端上上機(jī)的用戶(hù),都必須先在系統(tǒng)管理員處獲得一合法的注冊(cè)名和口令。以后,每當(dāng)用戶(hù)在接通其所用終端的電源后,便由系統(tǒng)直接調(diào)用并在屏幕上顯示出以下的注冊(cè)命令: Login: /提示用戶(hù)鍵入自己的注冊(cè)名 當(dāng)用戶(hù)鍵入正確的注冊(cè)名,并按下回車(chē)鍵后,屏幕上又會(huì)出現(xiàn): Password: /提示用戶(hù)鍵入自己的口令2. 鍵盤(pán)操作命令(1) 磁盤(pán)格式化命令Format。 它被用于對(duì)指定驅(qū)動(dòng)器上的軟盤(pán)進(jìn)行格式化。 每張新盤(pán)在使用前都必須先格式化。 其目的是使其記錄格式
3、能為操作系統(tǒng)所接受,可見(jiàn),不同操作系統(tǒng)將磁盤(pán)初始化后的格式各異。此外,在格式化過(guò)程中,還將對(duì)有缺陷的磁道和扇區(qū)加保留記號(hào),以防止將它分配給數(shù)據(jù)文件。 (2) 復(fù)制整個(gè)軟盤(pán)命令Diskcopy。 該命令用于復(fù)制整個(gè)磁盤(pán),另外它還有附加的格式化功能。 如果目標(biāo)盤(pán)片是尚未格式化的,則該命令在執(zhí)行時(shí), 首先將未格式化的軟盤(pán)格式化,然后再進(jìn)行復(fù)制。(3) 軟盤(pán)比較命令Diskcomp。 該命令用于將源盤(pán)與目標(biāo)盤(pán)的各磁道及各扇區(qū)中的數(shù)據(jù)逐一進(jìn)行比較。(4) 備份命令Backup。 該命令用于把硬盤(pán)上的文件復(fù)制到軟盤(pán)上;而RESTORE命令則完成相反的操作。 3. 文件操作命令(1) 顯示文件命令type。
4、用于將指定文件顯示在屏幕上。(2) 拷貝文件命令copy。 用于實(shí)現(xiàn)文件的拷貝。(3) 文件比較命令comp。該命令用于對(duì)兩個(gè)指定文件進(jìn)行比較。 兩文件可以在同一個(gè)或不同的驅(qū)動(dòng)器上。(4) 重新命名命令Rename。該命令用于將以第一參數(shù)命名的文件, 改成用第二參數(shù)給定的名字。(5) 刪除文件命令erase。該命令用于刪除一個(gè)或一組文件,當(dāng)參數(shù)路徑名為*.BAK時(shí),表示刪除指定目錄下的所有其擴(kuò)展名為.Bak的文件。4. 目錄操作命令(1) 建立子目錄命令mkdir。 用于建立指定名字的新目錄。(2) 顯示目錄命令dir。顯示指定磁盤(pán)中的目錄項(xiàng)。(3) 刪除子目錄命令rmdir。該命令用于刪除指
5、定的子目錄文件,但不能刪除普通文件,而且,一次只能刪除一個(gè)空目錄(其中僅含“.”和“.”兩個(gè)文件),不能刪除根及當(dāng)前目錄。(4) 顯示目錄結(jié)構(gòu)命令tree。該命令用于顯示指定盤(pán)上的所有目錄路徑及其層次關(guān)系。(5) 改變當(dāng)前目錄命令chdir。該命令用于將當(dāng)前目錄改變?yōu)橛陕窂矫麉?shù)給定的目錄。用“.”作參數(shù)時(shí),表示應(yīng)返回到上一級(jí)目錄下。 5. 其它命令(1) 輸入輸出重定向命令。 在有的OS中定義了兩個(gè)標(biāo)準(zhǔn)I/O設(shè)備。通常,命令的輸入取自標(biāo)準(zhǔn)輸入設(shè)備,即鍵盤(pán);而命令的輸出通常是送往標(biāo)準(zhǔn)輸出設(shè)備, 即顯示終端。 如果在命令中設(shè)置輸出重定向“”符,其后接文件名或設(shè)備名, 表示將命令的輸出改向, 送到
6、指定文件或設(shè)備上。類(lèi)似地,若在命令中設(shè)置輸入重定向“”符, 則不再是從鍵盤(pán)而是從重定向符左邊參數(shù)所指定的文件或設(shè)備上,取得輸入信息。 (2) 管道連接。 這是指把第一條命令的輸出信息作為第二條命令的輸入信息;類(lèi)似地,又可把第二條命令的輸出信息作為第三條命令的輸入信息。這樣,由兩個(gè)(含兩條)以上的命令可形成一條管道。在MS-DOS和UNIX中,都用“|”作為管道符號(hào)。其一般格式為: Command1 |Command2| | Commandn; (3) 過(guò)濾命令。 在UNIX及MS-DOS中,都有過(guò)濾命令,用于讀取指定文件或標(biāo)準(zhǔn)輸入,從中找出由參數(shù)指定的模式,然后把所有包含該模式的行都打印出來(lái)。
7、 例如, MS-DOS中用命令 find/N“erase”(路徑名)可對(duì)由路徑名指定的輸入文件逐行檢索,把含有字符串“erase”的行輸出。其中, /N是選擇開(kāi)關(guān),表示輸出含有指定字串的行;如果不用N而用C, 則表示只輸出含有指定字串的行數(shù);若用V, 則表示輸出不含指定字串的行。 (4) 批命令。 為了能連續(xù)地使用多條鍵盤(pán)命令,或多次反復(fù)地執(zhí)行指定的若干條命令, 而又免去每次重敲這些命令的麻煩,可以提供一特定文件。在MS-DOS中提供了一種特殊文件,其后綴名用“.BAT”;在UNIX系統(tǒng)中稱(chēng)為命令文件。它們都是利用一些鍵盤(pán)命令構(gòu)成一個(gè)程序,一次建立供多次使用。 在MS-DOS中用batch命令
8、去執(zhí)行由指定或默認(rèn)驅(qū)動(dòng)器的工作目錄上指定文件中所包含的一些命令。 7.1.3 鍵盤(pán)終端處理程序?yàn)榱藢?shí)現(xiàn)人機(jī)交互,還須在微機(jī)或終端上配置相應(yīng)的鍵盤(pán)終端處理程序,它應(yīng)具有下述幾方面的功能: (1) 接收用戶(hù)從終端上打入的字符。 (2) 字符緩沖, 用于暫存所接收的字符。 (3) 回送顯示。 (4) 屏幕編輯。 (5) 特殊字符處理。 1. 字符接收功能為了實(shí)現(xiàn)人機(jī)交互,鍵盤(pán)終端處理程序必須能夠接收從終端輸入的字符,并將之傳送給用戶(hù)程序。有兩種方式來(lái)實(shí)現(xiàn)字符接收功能:(1) 面向字符方式。驅(qū)動(dòng)程序只接收從終端打入的字符, 并且不加修改地將它傳送給用戶(hù)程序。這通常是一串未加工的ASCII碼。(2) 面
9、向行方式。 終端處理程序?qū)⑺邮盏淖址麜捍嬖谛芯彌_中, 并可對(duì)行內(nèi)字符進(jìn)行編輯。僅在收到行結(jié)束符后, 才將一行正確的信息送命令解釋程序。在有的計(jì)算機(jī)中,從鍵盤(pán)硬件送出的是鍵的編碼(簡(jiǎn)稱(chēng)鍵碼),而不是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)鍵碼。 2. 字符緩沖功能(1) 專(zhuān)用緩沖方式。 這是指系統(tǒng)為每個(gè)終端設(shè)置一個(gè)緩沖區(qū),暫存用戶(hù)鍵入的一批字符,緩沖區(qū)的典型長(zhǎng)度為200個(gè)字符左右。這種方式較適合于單用戶(hù)微機(jī)或終端
10、很少的多用戶(hù)機(jī)。當(dāng)終端數(shù)目較多時(shí),需要的緩沖數(shù)目可能很大,且每個(gè)緩沖的利用率也很低。例如,當(dāng)有100個(gè)終端時(shí),要求有20 KB的緩沖區(qū)。 但專(zhuān)用緩沖方式可使終端處理程序簡(jiǎn)化。 圖 7-1 兩種緩沖方式 (2) 公用緩沖方式。 系統(tǒng)不必為每個(gè)終端設(shè)置專(zhuān)用緩沖區(qū), 只須設(shè)置一個(gè)由多個(gè)緩沖區(qū)構(gòu)成的公用緩沖池。其中的每個(gè)緩沖區(qū)大小相同,如為20個(gè)字符,再將所有的空緩沖區(qū)鏈接成一個(gè)空緩沖區(qū)鏈。當(dāng)終端有數(shù)據(jù)輸入時(shí),可先向空緩沖區(qū)鏈申請(qǐng)一空緩沖區(qū)來(lái)接收輸入字符;當(dāng)該緩沖區(qū)裝滿(mǎn)后,再申請(qǐng)一空緩沖區(qū)。這樣, 直至全部輸入完畢,并利用鏈接指針將這些裝有輸入數(shù)據(jù)的緩沖區(qū)鏈接成一條輸入鏈。每當(dāng)該輸入鏈中一個(gè)緩沖區(qū)內(nèi)的
11、字符被全部傳送給用戶(hù)程序后,便將該緩沖區(qū)從輸入鏈中移出,再重新鏈入空緩沖區(qū)鏈中。顯然,利用公用緩沖池方式可有效地提高緩沖的利用率。圖 7-1(b)示出了公用緩沖池方式。 3. 回送顯示回送顯示(回顯)是指每當(dāng)用戶(hù)從鍵盤(pán)輸入一個(gè)字符后,終端處理程序便將該字符送往屏幕顯示。有些終端的回顯由硬件實(shí)現(xiàn), 其速度較快,但往往會(huì)引起麻煩。如當(dāng)用戶(hù)鍵入口令時(shí),為防止口令被盜用,顯然不該有回顯。此外,用硬件實(shí)現(xiàn)回顯也缺乏靈活性,因而近年來(lái)多改用軟件來(lái)實(shí)現(xiàn)回顯,這樣可以做到在用戶(hù)需要時(shí)才回顯。用軟件實(shí)現(xiàn)回顯,還可方便地進(jìn)行字符變換,如將鍵盤(pán)輸入的小寫(xiě)英文字母變成大寫(xiě), 或相反。 驅(qū)動(dòng)程序在將輸入的字符送往屏幕回
12、顯時(shí),應(yīng)打印在正確的位置上;當(dāng)光標(biāo)走到一行的最后一個(gè)位置后,便應(yīng)返回到下一行的開(kāi)始位置。例如,當(dāng)所鍵入的字符數(shù)目超過(guò)一行的80個(gè)(字符)時(shí), 應(yīng)自動(dòng)地將下一個(gè)字符打印到下一行的開(kāi)始位置4. 屏幕編輯 (1) 刪除字符鍵。 (2) 刪除一行鍵。 (3) 插入鍵。 (4) 移動(dòng)光標(biāo)鍵。 (5) 屏幕上卷或下移鍵, 等等。 5. 特殊字符處理 (1) 中斷字符。 當(dāng)程序在運(yùn)行中出現(xiàn)異常情況時(shí),用戶(hù)可通過(guò)鍵入中斷字符的辦法來(lái)中止當(dāng)前程序的運(yùn)行。在許多系統(tǒng)中是利用Break或Delete或Ctrl+C鍵作為中斷字符。(2) 停止上卷字符。 用戶(hù)鍵入此字符后,終端處理程序應(yīng)使正在上卷的屏幕暫停上卷,以便用
13、戶(hù)仔細(xì)觀察屏幕內(nèi)容。在有的系統(tǒng)中,是利用Ctrl+S鍵來(lái)停止屏幕上卷的。(3) 恢復(fù)上卷字符。 有的系統(tǒng)利用Ctrl+Q鍵使停止上卷的屏幕恢復(fù)上卷。終端處理程序收到該字符后, 便恢復(fù)屏幕的上卷功能。上述的Ctrl+S與Ctrl+Q兩字符并不被存儲(chǔ),而是被用去設(shè)置終端數(shù)據(jù)結(jié)構(gòu)中的某個(gè)標(biāo)志。每當(dāng)終端試圖輸出時(shí),都須先檢查該標(biāo)志,若該標(biāo)志已被設(shè)置,便不再把字符送至屏幕。7.1.4 命令解釋程序 1. 命令解釋程序的作用在聯(lián)機(jī)操作方式下,終端處理程序把用戶(hù)鍵入的信息送鍵盤(pán)緩沖區(qū)中保存。一旦用戶(hù)鍵入回車(chē)符,便立即把控制權(quán)交給命令處理程序。顯然,對(duì)于不同的命令,應(yīng)有能完成特定功能的命令處理程序與之對(duì)應(yīng)???/p>
14、見(jiàn),命令解釋程序的主要作用,是在屏幕上給出提示符,請(qǐng)用戶(hù)鍵入命令,然后讀入該命令,識(shí)別命令,再轉(zhuǎn)到相應(yīng)命令處理程序的入口地址,把控制權(quán)交給該處理程序去執(zhí)行,并將處理結(jié)果送屏幕上顯示。 若用戶(hù)鍵入的命令有錯(cuò),而命令解釋程序未能予以識(shí)別,或在執(zhí)行中間出現(xiàn)問(wèn)題時(shí),則應(yīng)顯示出某一出錯(cuò)信息2. 命令解釋程序的組成 (1) 常駐部分。 這部分包括一些中斷服務(wù)子程序。例如,正常退出中斷INT 20,它用于在用戶(hù)程序執(zhí)行完畢后,退回操作系統(tǒng); 駐留退出中斷INT 27,用這種方式,退出程序可駐留在內(nèi)存中;還有用于處理和顯示標(biāo)準(zhǔn)錯(cuò)誤信息的INT 24等。常駐部分還包括這樣的程序:當(dāng)用戶(hù)程序終止后,它檢查暫存部分
15、是否已被用戶(hù)程序覆蓋,若已被覆蓋,便重新將暫存部分調(diào)入內(nèi)存(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)存中,但用戶(hù)程序可以使用并覆蓋這部分內(nèi)存,在用戶(hù)程序結(jié)束時(shí),常駐程序又會(huì)將它們重新從磁盤(pán)
16、 3. 命令解釋程序的工作流程系統(tǒng)在接通電源或復(fù)位后,初始化部分獲得控制權(quán),對(duì)整個(gè)系統(tǒng)完成初始化工作,并自動(dòng)執(zhí)行AUTOEXEC.BAT文件, 之后便把控制權(quán)交給暫存部分。暫存部分首先讀入鍵盤(pán)緩沖區(qū)中的命令,判別其文件名、擴(kuò)展名及驅(qū)動(dòng)器名是否正確。 若發(fā)現(xiàn)有錯(cuò),在給出出錯(cuò)信息后返回;若無(wú)錯(cuò),再識(shí)別該命令。一種簡(jiǎn)單的識(shí)別命令的方法是基于一張表格,其中的每一表目都是由命令名及其處理程序的入口地址兩項(xiàng)所組成。 如果暫存部分在該表中能找到鍵入的命令,且是內(nèi)部命令,便可以直接從對(duì)應(yīng)表項(xiàng)中獲得該命令處理程序的入口地址,然后把控制權(quán)交給該處理程序去執(zhí)行該命令。 圖 7-2 COMMAND.COM的工作流程7
17、.2 Shell命令語(yǔ)言 7.2.1 簡(jiǎn)單命令 所謂簡(jiǎn)單命令,實(shí)際上是一個(gè)能完成某種功能的目標(biāo)程序的名字。UNIX系統(tǒng)規(guī)定的命令由小寫(xiě)字母構(gòu)成(但僅前8個(gè)字母有效)。命令可帶有參數(shù)表,用于給出執(zhí)行命令時(shí)的附加信息。命令名與參數(shù)表之間還可使用一種稱(chēng)為選項(xiàng)的自變量, 用破折號(hào)開(kāi)始,后跟一個(gè)或多個(gè)字母、數(shù)字。 $ Command-option argument list例如: $ LS file1 file2 這是一條不帶選項(xiàng)的列目錄命令,$是系統(tǒng)提示符。該命令用于列出file1和file2兩個(gè)目錄文件中所包含的目錄項(xiàng), 并隱含地指出按英文字母順序列表。若給出tr選項(xiàng),該命令可表示成: $ LS-t
18、r file1 file 2 其中,選項(xiàng)t和r分別表示按最近修改次序及按反字母順序列表。通常,命令名與該程序的功能緊密相關(guān),以便于記憶。命令參數(shù)可多可少,也可缺省。 例如: $ LS 表示自動(dòng)以當(dāng)前工作目錄為缺省參數(shù),打印出當(dāng)前工作目錄所包含的目錄項(xiàng)。簡(jiǎn)單命令的格式比較自由,包括命令名字符的個(gè)數(shù)及用于分隔命令名、選項(xiàng)、各參數(shù)間的空格數(shù)等,都是任意的。簡(jiǎn)單命令的數(shù)量易于擴(kuò)充。 系統(tǒng)管理員與用戶(hù)自行定義的命令,其執(zhí)行方式與系統(tǒng)標(biāo)準(zhǔn)命令的執(zhí)行方式相同。 1. 進(jìn)入與退出系統(tǒng) (1) 進(jìn)入系統(tǒng),也稱(chēng)為注冊(cè)。事先, 用戶(hù)須與系統(tǒng)管理員商定一個(gè)唯一的用戶(hù)名。管理員用該名字在系統(tǒng)文件樹(shù)上,為用戶(hù)建立一個(gè)子目
19、錄樹(shù)的根結(jié)點(diǎn)。當(dāng)用戶(hù)打開(kāi)自己的終端時(shí),屏幕上會(huì)出現(xiàn)Login:提示,這時(shí)用戶(hù)便可鍵入自己的注冊(cè)名,并用回車(chē)符結(jié)束。然后,系統(tǒng)又詢(xún)問(wèn)用戶(hù)口令,用戶(hù)可用回車(chē)符或事先約定的口令鍵入 (2) 退出系統(tǒng)。 每當(dāng)用戶(hù)用完系統(tǒng)后,應(yīng)向系統(tǒng)報(bào)告自己不再往系統(tǒng)裝入任何處理要求。系統(tǒng)得知后,便馬上為用戶(hù)記賬, 清除用戶(hù)的使用環(huán)境。 若用戶(hù)使用系統(tǒng)是免費(fèi)的,退出操作僅僅是一種禮貌。如果用戶(hù)使用的是多終端中的一個(gè)終端,為了退出,用戶(hù)只須按下Control-D鍵即可,系統(tǒng)會(huì)重新給出提示符即Login,以表明該終端可供另一新用戶(hù)使用。 用戶(hù)的進(jìn)入與退出過(guò)程,實(shí)際上是由系統(tǒng)直接調(diào)用Login及Logout程序完成的。 2.
20、 文件操作命令 (1) 顯示文件內(nèi)容命令cat。如果用戶(hù)想了解自己在當(dāng)前目錄中的某個(gè)或某幾個(gè)指定文件的內(nèi)容時(shí),便可使用下述格式的cat命令: $ cat filename1 filename2 (2) 復(fù)制文件副本的命令cp。其格式為: cp source target該命令用于對(duì)已存在的文件source建立一個(gè)名為target的副本。 (3) 對(duì)已有文件改名的命令mv。 其格式為: mv oldname newname 用于把原來(lái)的老名字改成指定的新名字。 (4) 撤消文件的命令rm。它給出一個(gè)參數(shù)表, 是要撤消的文件名清單。 (5) 確定文件類(lèi)型的命令file。該命令帶有一個(gè)參數(shù)表, 用于
21、給出想了解其(文件)類(lèi)型的文件名清單。命令執(zhí)行的結(jié)果,將在屏幕上顯示出各個(gè)文件的類(lèi)型。 3. 目錄操作命令(1) 建立目錄的命令mkdir(簡(jiǎn)稱(chēng)md)。(2) 撤消目錄的命令rmdir(簡(jiǎn)稱(chēng)rd)。(3) 改變工作目錄的命令cd。(4) 改變對(duì)文件的存取方式的命令chmod。 其格式為: chmodwho op-code permission filename 4. 系統(tǒng)詢(xún)問(wèn)命令 (1)訪(fǎng)問(wèn)當(dāng)前日期和時(shí)間命令date。例如,用命令 $ date 屏幕上將給出當(dāng)前的日期和時(shí)間,如為: Wed Ang 14 09:27:20 PDT 1991 表示當(dāng)前日期是1991年9月14日、星期三,還有時(shí)間信
22、息若在命令名后給出參數(shù),則date程序把參數(shù)作為重置系統(tǒng)時(shí)鐘的時(shí)間。 (2) 詢(xún)問(wèn)系統(tǒng)當(dāng)前用戶(hù)的命令who。 who命令可列出當(dāng)前每一個(gè)處在系統(tǒng)中的用戶(hù)的注冊(cè)名、終端名和注冊(cè)進(jìn)入時(shí)間,并按終端標(biāo)志的字母順序排序。例如,報(bào)告有下列三用戶(hù): Veronica bxo66 Aug 27 13:28 Rathomas dz24 Aug 28 07:42 Jlyates tty5 Aug 28 07:39 (3) 顯示當(dāng)前目錄路徑名的命令pwd。當(dāng)前目錄的路徑名是從根結(jié)點(diǎn)開(kāi)始,通過(guò)分支上的所有結(jié)點(diǎn)到達(dá)當(dāng)前目錄結(jié)點(diǎn)為止的路徑上的所有結(jié)點(diǎn)的名字拼起來(lái)構(gòu)成的。 用戶(hù)的當(dāng)前目錄可能經(jīng)常在樹(shù)上移動(dòng)。如果用戶(hù)忘記了
23、自己在哪里,便可用pwd確定自己的位置。 7.2.2 重定向與管道命令 1. 重定向命令 在UNIX系統(tǒng)中,由系統(tǒng)定義了三個(gè)文件。其中,有兩個(gè)分別稱(chēng)為標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出的文件,各對(duì)應(yīng)于終端鍵盤(pán)輸入和終端屏幕輸出。它們是在用戶(hù)注冊(cè)時(shí),由Login程序打開(kāi)的。 這樣,在用戶(hù)程序執(zhí)行時(shí),隱含的標(biāo)準(zhǔn)輸入是鍵盤(pán)輸入,標(biāo)準(zhǔn)輸出即屏幕(輸出)顯示。但用戶(hù)程序中可能不要求從鍵盤(pán)輸入,而是從某個(gè)指定文件上讀取信息供程序使用;同樣,用戶(hù)可能希望把程序執(zhí)行時(shí)所產(chǎn)生的結(jié)果數(shù)據(jù),寫(xiě)到某個(gè)指定文件中而非屏幕上。這就使用戶(hù)必須去改變輸入與輸出文件,即不使用標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出,而是把另外的某個(gè)指定文件或設(shè)備,作為輸入或輸出文
24、件。 Shell向用戶(hù)提供了這種用于改變輸入、輸出設(shè)備的手段,此即標(biāo)準(zhǔn)輸入與標(biāo)準(zhǔn)輸出的重新定向。用重定向符“”和“”分別表示輸入轉(zhuǎn)向與輸出轉(zhuǎn)向。例如, 對(duì)于命令 $ cat file1 表示將文件file1的內(nèi)容,在標(biāo)準(zhǔn)輸出上打印出來(lái)。若改變其輸出,用命令 $ cat file1file2 時(shí),表示把文件file1的內(nèi)容,打印輸出到文件file2上。同理, 對(duì)于命令 $ wc 表示對(duì)標(biāo)準(zhǔn)輸入中的行中字和字符進(jìn)行計(jì)數(shù)。 若改變其輸入, 用命令 $ wcfile3 則表示把從文件file3中讀出的行中的字和字符進(jìn)行計(jì)數(shù)。 須指明的是,在做輸出轉(zhuǎn)向時(shí),若上述的文件file2并不存在,則先創(chuàng)建它;若已
25、存在,則認(rèn)為它是空白的,執(zhí)行上述輸出轉(zhuǎn)向命令時(shí),是用命令的輸出數(shù)據(jù)去重寫(xiě)該文件;如果文件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)再用命令 $ cat file4file2 便可在文件file2中,除了上次復(fù)制的file1內(nèi)容外,后面又附加了file4的內(nèi)容。 當(dāng)然,若想一次把兩個(gè)文件file1和file4全部復(fù)制到file2中,則可用命令 $ cat file1 file4file2 此外,也可在一個(gè)命令行中,同時(shí)改變輸入與輸出。例如
26、, 命令行 a.outfile1file0 表示,在可執(zhí)行文件a.out執(zhí)行時(shí),將從文件file1中提取數(shù)據(jù), 而把a(bǔ).out的執(zhí)行結(jié)果數(shù)據(jù)輸出到文件file0中。 2. 管道命令 在有了上述的重定向思想后,為了進(jìn)一步增強(qiáng)功能, 人們又進(jìn)一步把這種思想加以擴(kuò)充,用符號(hào)“|”來(lái)連接兩條命令,使其前一條命令的輸出作為后一條命令的輸入。 即 $ command 1|command 2 例如,對(duì)于下述輸入 cat file|wc 將使命令cat把文件file中的數(shù)據(jù),作為wc命令的計(jì)數(shù)用輸入。 7.2.3 通信命令 1. 信箱通信命令mail 它被作為在UNIX的各用戶(hù)之間, 進(jìn)行非交互式通信的工具。
27、mail采用信箱通信方式。發(fā)信者把要發(fā)送的消息寫(xiě)成信件,“郵寄”到對(duì)方的信箱中。通常各用戶(hù)的私有信箱采用各自的注冊(cè)名命名,即它是目錄/usr/spool/mail中的一個(gè)文件,而文件名又是用接收者的注冊(cè)名來(lái)命名的。信箱中的信件可以一直保留到被信箱所有者消除為止。因而,用mail進(jìn)行通信時(shí),不要求接收者利用終端與發(fā)送者會(huì)話(huà)。亦即,在發(fā)信者發(fā)送信息時(shí),雖然接收者已在系統(tǒng)中注冊(cè)過(guò),但允許他此時(shí)沒(méi)有使用系統(tǒng);也可以是雖在使用系統(tǒng),但拒絕接收任何信息。 接收者也用mail命令讀取信件,可使用可選項(xiàng)r、q或p等。 其命令格式為: mail-r-q-p-file-F persons由于信箱中可存放所接收的多
28、個(gè)信件,這就存在一個(gè)選取信件的問(wèn)題。上述幾個(gè)選項(xiàng)分別表示:按先進(jìn)先出順序顯示各信件的內(nèi)容;在打入中斷字符(DEL或RETURN)后,退出mail程序而不改變信箱的內(nèi)容;以及一次性地顯示信箱全部?jī)?nèi)容而不帶詢(xún)問(wèn),把指定文件當(dāng)作信件來(lái)顯示。在不使用-p選項(xiàng)時(shí),表示在顯示完一個(gè)信件后,便出現(xiàn)“?”,以詢(xún)問(wèn)用戶(hù)是否繼續(xù)顯示下一條消息,或選讀完最后一條消息后退出mail。 2. 對(duì)話(huà)通信命令write 命令格式為: write userttyname 當(dāng)接收者只有一個(gè)終端時(shí),終端名可缺省。當(dāng)接收者的終端被允許接收消息時(shí),屏幕提示會(huì)通知接收者源用戶(hù)名及其所用終端名。 3. 允許或拒絕接收消息命令mesg 其
29、格式為: mesg-n-y選項(xiàng)n表示拒絕對(duì)方的寫(xiě)許可(即拒絕接收消息);選項(xiàng)y指示恢復(fù)對(duì)方的寫(xiě)許可,僅在此時(shí),雙方才可聯(lián)機(jī)通信。當(dāng)用戶(hù)正在聯(lián)機(jī)編寫(xiě)一份資料而不愿被別人干擾時(shí),常選用n選項(xiàng)來(lái)拒絕對(duì)方的寫(xiě)許可。編輯完畢,再用帶有y選項(xiàng)的mesg命令來(lái)恢復(fù)對(duì)方的寫(xiě)許可,不帶自變量的mesg命令只報(bào)告當(dāng)前狀態(tài)而不改變它。 7.2.4 后臺(tái)命令 UNIX系統(tǒng)提供了這種機(jī)制, 用戶(hù)可以在這種命令后面再加上“&”號(hào),以告訴Shell將該命令放在后臺(tái)執(zhí)行, 以便用戶(hù)在前臺(tái)繼續(xù)鍵入其它命令。在后臺(tái)運(yùn)行的程序仍然把終端作為它的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤文件,除非對(duì)它們進(jìn)行重新定向。其標(biāo)準(zhǔn)輸入文件是自動(dòng)地被從終端定向到一個(gè)
30、被稱(chēng)為“/dev/null”的空文件中。若shell未重定向標(biāo)準(zhǔn)輸入, 則shell和后臺(tái)進(jìn)程將會(huì)同時(shí)從終端進(jìn)行讀入。這時(shí),用戶(hù)從終端鍵入的字符可能被發(fā)送到一個(gè)進(jìn)程或另一個(gè)進(jìn)程, 并不能預(yù)測(cè)哪個(gè)進(jìn)程將得到該字符。7.3 系統(tǒng)調(diào)用7.3.1 系統(tǒng)調(diào)用的基本概念 1. 系統(tǒng)態(tài)和用戶(hù)態(tài)1) 特權(quán)指令 2) 非特權(quán)指令2. 系統(tǒng)調(diào)用 (1) 運(yùn)行在不同的系統(tǒng)狀態(tài)。 (2) 通過(guò)軟中斷進(jìn)入。(3) 返回問(wèn)題。(4) 嵌套調(diào)用。3. 中斷機(jī)制圖 7-3 系統(tǒng)功能的調(diào)用 7.3.2 系統(tǒng)調(diào)用的類(lèi)型 1. 進(jìn)程控制類(lèi)系統(tǒng)調(diào)用 (1) 創(chuàng)建和終止進(jìn)程的系統(tǒng)調(diào)用。 (2) 獲得和設(shè)置進(jìn)程屬性的系統(tǒng)調(diào)用。 (3)
31、等待某事件出現(xiàn)的系統(tǒng)調(diào)用。 2. 文件操縱類(lèi)系統(tǒng)調(diào)用 (1)創(chuàng)建和刪除文件。 (2) 打開(kāi)和關(guān)閉文件。 (3) 讀和寫(xiě)文件。 3. 進(jìn)程通信類(lèi)系統(tǒng)調(diào)用 在OS中經(jīng)常采用兩種進(jìn)程通信方式,即消息傳遞方式和共享存儲(chǔ)區(qū)方式。當(dāng)系統(tǒng)中采用消息傳遞方式時(shí),在通信前, 必須先打開(kāi)一個(gè)連接。為此,應(yīng)由源進(jìn)程發(fā)出一條打開(kāi)連接的系統(tǒng)調(diào)用open connection, 而目標(biāo)進(jìn)程則應(yīng)利用接受連接的系統(tǒng)調(diào)用accept connection表示同意進(jìn)行通信;然后, 在源和目標(biāo)進(jìn)程之間便可開(kāi)始通信。 可以利用發(fā)送消息的系統(tǒng)調(diào)用send message或者用接收消息的系統(tǒng)調(diào)用receive message來(lái)交換信息。
32、通信結(jié)束后,還須再利用關(guān)閉連接的系統(tǒng)調(diào)用close connection結(jié)束通信。 7.3.3 POSIX標(biāo)準(zhǔn)POSIX(Portable Operating System IX),也稱(chēng)為“基于UNIX的可移植操作系統(tǒng)接口” 。POSIX定義了標(biāo)準(zhǔn)應(yīng)用程序接口(API),用于保證編制的應(yīng)用程序可以在源代碼一級(jí)上在多種操作系統(tǒng)上移植運(yùn)行。POSIX標(biāo)準(zhǔn)定義了一組過(guò)程,這組過(guò)程是構(gòu)造系統(tǒng)調(diào)用所必須的。7.3.4 系統(tǒng)調(diào)用的實(shí)現(xiàn)1. 中斷和陷入硬件機(jī)構(gòu)(1) 什么是中斷和陷入。 中斷是指CPU對(duì)系統(tǒng)發(fā)生某事件時(shí)的這樣一種響應(yīng):CPU暫停正在執(zhí)行的程序,在保留現(xiàn)場(chǎng)后自動(dòng)地轉(zhuǎn)去執(zhí)行該事件的中斷處理程序;
33、執(zhí)行完后,再返回到原程序的斷點(diǎn)處繼續(xù)執(zhí)行 。圖 7 - 4 中斷時(shí)的CPU軌跡 (2) 中斷和陷入向量2. 系統(tǒng)調(diào)用號(hào)和參數(shù)的設(shè)置 (1) 直接將參數(shù)送入相應(yīng)的寄存器中。 (2) 參數(shù)表方式。 圖 7 - 6 系統(tǒng)調(diào)用的參數(shù)形式 3. 系統(tǒng)調(diào)用的處理步驟 首先,將處理機(jī)狀態(tài)由用戶(hù)態(tài)轉(zhuǎn)為系統(tǒng)態(tài);之后,由硬件和內(nèi)核程序進(jìn)行系統(tǒng)調(diào)用的一般性處理,即首先保護(hù)被中斷進(jìn)程的CPU環(huán)境,將處理機(jī)狀態(tài)字PSW、程序計(jì)數(shù)器PC、系統(tǒng)調(diào)用號(hào)、用戶(hù)棧指針以及通用寄存器內(nèi)容等,壓入堆棧;然后,將用戶(hù)定義的參數(shù)傳送到指定的地方保存起來(lái)。其次,是分析系統(tǒng)調(diào)用類(lèi)型,轉(zhuǎn)入相應(yīng)的系統(tǒng)調(diào)用處理子程序。最后,在系統(tǒng)調(diào)用處理子程序執(zhí)
34、行完后,應(yīng)恢復(fù)被中斷的或設(shè)置新進(jìn)程的CPU現(xiàn)場(chǎng),然后返回被中斷進(jìn)程或新進(jìn)程, 繼續(xù)往下執(zhí)行。 4. 系統(tǒng)調(diào)用處理子程序的處理過(guò)程進(jìn)入Creat的處理子程序后,核心將根據(jù)用戶(hù)給定的文件路徑名Path, 利用目錄檢索過(guò)程,去查找指定文件的目錄項(xiàng)。查找目錄的方式可以用順序查找法,也可用Hash查找法。如果在文件目錄中找到了指定文件的目錄項(xiàng),表示用戶(hù)要利用一個(gè)已有文件來(lái)建立一個(gè)新文件。但如果在該已有(存)文件的屬性中有不允許寫(xiě)屬性,或者創(chuàng)建者不具有對(duì)該文件進(jìn)行修改的權(quán)限,使認(rèn)為是出錯(cuò)而做出錯(cuò)處理;若不存在訪(fǎng)問(wèn)權(quán)限問(wèn)題,便將已存文件的數(shù)據(jù)盤(pán)塊釋放掉,準(zhǔn)備寫(xiě)入新的數(shù)據(jù)文件。如未找到指名文件,則表示要?jiǎng)?chuàng)建一
35、個(gè)新文件,核心便從其目錄文件中找出一個(gè)空目錄項(xiàng),并初始化該目錄項(xiàng),包括填寫(xiě)文件名、文件屬性、文件建立日期等,然后將新建文件打開(kāi)。 7.4 UNIX系統(tǒng)調(diào)用7.4.1 UNIX系統(tǒng)調(diào)用的類(lèi)型 1. 進(jìn)程控制 (1) 創(chuàng)建進(jìn)程(fork)。(2) 終止進(jìn)程(exit)。 (3) 等待子進(jìn)程結(jié)束(wait)。 (4) 執(zhí)行一個(gè)文件(exec)。 (5) 獲得進(jìn)程ID。 (6) 獲得用戶(hù)ID。 (7) 進(jìn)程暫停(pause)。 2. 文件操縱 (1)創(chuàng)建文件(creat)。 (2) 打開(kāi)文件(open)。 (3) 關(guān)閉文件(close)。 (4) 讀和寫(xiě)文件read和write。 文件描述符fd; b
36、uf緩沖區(qū)首址。 用戶(hù)要求傳送的字節(jié)數(shù)nbyte。 (5) 連接和去連接(link和unlink)。 3. 進(jìn)程間通信 (1)消息機(jī)制。 (2) 共享存儲(chǔ)器機(jī)制。 (3) 信號(hào)量機(jī)制。 4. 信息維護(hù) (1)設(shè)置和獲得時(shí)間。(2) 獲得進(jìn)程和子進(jìn)程時(shí)間(times)。 (3) 設(shè)置文件訪(fǎng)問(wèn)和修改時(shí)間(utime)。 (4) 獲得當(dāng)前UNIX系統(tǒng)的名稱(chēng)(uname)。 7.4.2 被中斷進(jìn)程的環(huán)境保護(hù) 1. CPU環(huán)境保護(hù)當(dāng)用戶(hù)程序處在用戶(hù)態(tài),且在執(zhí)行系統(tǒng)調(diào)用命令(即CHMK命令)之前,應(yīng)在用戶(hù)空間提供系統(tǒng)調(diào)用所需的參數(shù)表,并將該參數(shù)表的地址送入R0寄存器。在執(zhí)行CHMK命令后,處理機(jī)將由用戶(hù)態(tài)
37、轉(zhuǎn)為核心態(tài),并由硬件自動(dòng)地將處理機(jī)狀態(tài)長(zhǎng)字(PSL)、程序計(jì)數(shù)器(PC)和代碼操作數(shù)(code)壓入用戶(hù)核心棧,繼而從中斷和陷入向量表中取出trap.S的入口地址然后便轉(zhuǎn)入中斷和陷入總控程序trap.S中執(zhí)行。 trap.S程序執(zhí)行后,繼續(xù)將陷入類(lèi)型type和用戶(hù)棧指針usp壓入用戶(hù)核心棧,接著還要將被中斷進(jìn)程的CPU環(huán)境中的一系列寄存器如R0R11的部分或全部?jī)?nèi)容壓入棧中。至于哪些寄存器的內(nèi)容要壓入棧中,這取決于特定寄存器中的屏蔽碼,該屏蔽碼的每一位都與R0R11中的一個(gè)寄存器相對(duì)應(yīng)。當(dāng)某一位置成1時(shí),表示對(duì)應(yīng)寄存器的內(nèi)容應(yīng)壓入棧中。 2. AP和FP指針 圖 7 - 7 用戶(hù)核心棧 7.4
38、.3 系統(tǒng)調(diào)用陷入后需處理的若干公共問(wèn)題 1. 確定系統(tǒng)調(diào)用號(hào) trap(usp, type, code, PC, PSL)其中,參數(shù)PSL為陷入時(shí)處理機(jī)狀態(tài)字長(zhǎng),PC為程序計(jì)數(shù)器,code為代碼操作數(shù),type為陷入類(lèi)型號(hào),usp為用戶(hù)棧指針。對(duì)陷入的處理可分為多種情況,如果陷入是由于系統(tǒng)調(diào)用所引起的,則對(duì)此陷入的第一步處理, 便是確定系統(tǒng)調(diào)用號(hào)。通常,系統(tǒng)調(diào)用號(hào)是包含在代碼操作數(shù)中,故可利用code來(lái)確定系統(tǒng)調(diào)用號(hào)i。 其方法是: 令 i=code & 0377 2. 參數(shù)傳送這是對(duì)因系統(tǒng)調(diào)用引起的陷入的第二步處理。參數(shù)傳送是指由trap.C程序?qū)⑾到y(tǒng)調(diào)用參數(shù)表中的內(nèi)容,從用戶(hù)區(qū)傳送到Us
39、er結(jié)構(gòu)的U.U-arg 中,供系統(tǒng)調(diào)用處理程序使用。由于用戶(hù)程序在執(zhí)行系統(tǒng)調(diào)用命令之前,已將參數(shù)表的首址放入R0寄存器中,在進(jìn)入trap.C程序后,該程序便將該首址賦予U.U-arg 指針, 因此, trap.C在處理參數(shù)傳送時(shí),可讀取該指針的內(nèi)容,以獲得用戶(hù)所提供的參數(shù)表, 并將之送至U.U-arg 中。應(yīng)當(dāng)注意,對(duì)不同的系統(tǒng)調(diào)用所需傳送參數(shù)的個(gè)數(shù)并不相同,trap.C程序應(yīng)根據(jù)在系統(tǒng)調(diào)用定義表中所規(guī)定的參數(shù)個(gè)數(shù)來(lái)進(jìn)行傳送,最多允許10個(gè)參數(shù)。 3. 利用系統(tǒng)調(diào)用定義表轉(zhuǎn)入相應(yīng)的處理程序在UNIX系統(tǒng)中,對(duì)于不同(編號(hào))的系統(tǒng)調(diào)用,都設(shè)置了與之相應(yīng)的處理子程序。為使不同的系統(tǒng)調(diào)用能方便地轉(zhuǎn)入其相應(yīng)的處理子程序,也將各處理子程序的入口地址放入了系統(tǒng)調(diào)用定義表即Sysent 中。該表實(shí)際上是一個(gè)結(jié)構(gòu)數(shù)組, 在每個(gè)結(jié)構(gòu)中包含三個(gè)元素,其中第一個(gè)元素是相應(yīng)系統(tǒng)調(diào)用所需參數(shù)的個(gè)數(shù);第二個(gè)元素是系統(tǒng)調(diào)用經(jīng)寄存器傳送的參數(shù)個(gè)數(shù);第三個(gè)元素是相應(yīng)系統(tǒng)調(diào)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 如何規(guī)范現(xiàn)金管理制度
- 中小企業(yè)記賬規(guī)范制度
- 保安崗?fù)さ篱l制度規(guī)范
- 地坪施工規(guī)范制度范本
- 醫(yī)生護(hù)士操作規(guī)范制度
- 為了更加規(guī)范合同制度
- 鳥(niǎo)巢運(yùn)動(dòng)場(chǎng)管理制度規(guī)范
- 大學(xué)發(fā)文規(guī)范管理制度
- 冰箱藥品管理制度規(guī)范
- 南京市高淳區(qū)衛(wèi)健委所屬部分事業(yè)單位2025年公開(kāi)招聘高層次人才備考題庫(kù)及1套參考答案詳解
- 燙傷課件教學(xué)課件
- 2025年國(guó)家開(kāi)放大學(xué)《經(jīng)濟(jì)學(xué)基礎(chǔ)》期末考試備考試題及答案解析
- 長(zhǎng)期照護(hù)師操作考核試卷及答案
- 2025-2030中國(guó)車(chē)規(guī)級(jí)芯片設(shè)計(jì)行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 肝癌破裂出血課件
- 《地基處理技術(shù)》課件
- 老年人床上擦浴課件
- 2025年安全教育培訓(xùn)試題及答案
- 地勘合同(標(biāo)準(zhǔn)版)
- 材料租賃經(jīng)營(yíng)方案(3篇)
- 2025秋季學(xué)期國(guó)開(kāi)電大法律事務(wù)專(zhuān)科《民法學(xué)(2)》期末紙質(zhì)考試名詞解釋題庫(kù)珍藏版
評(píng)論
0/150
提交評(píng)論