版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 1第九章 操作系統(tǒng)接口第九章第九章 操作系統(tǒng)接口操作系統(tǒng)接口9.1 用戶接口9.2 Shell 命令語言9.3 聯(lián)機(jī)命令接口的實(shí)現(xiàn)9.4 系統(tǒng)調(diào)用的概念和類型9.5 UNIX系統(tǒng)調(diào)用9.6 系統(tǒng)調(diào)用的實(shí)現(xiàn)習(xí)題2 2第九章 操作系統(tǒng)接口9.1 用 戶 接 口9.1.1 字符顯示式聯(lián)機(jī)用戶接口不同的OS,其聯(lián)機(jī)用戶接口是不同的,即它們的命令形式和用法各不相同,甚至在同一系統(tǒng)中,命令的不同形式構(gòu)成了不同的用戶界面,一般可分為字符顯示式聯(lián)機(jī)用戶接口和圖形化聯(lián)機(jī)用戶接口兩類。3 3第九章 操作系統(tǒng)接口1. 命令行方式該方式是以行為單位,輸入和顯示不同的命令。每行長(zhǎng)度一般不超過256個(gè)字符,一般情況下
2、,以回車符作為一個(gè)命令的結(jié)束標(biāo)記。通常,命令的執(zhí)行采用的是間斷式的串行執(zhí)行方式,即后一個(gè)命令的輸入一般需等到前一個(gè)命令執(zhí)行結(jié)束,如用戶鍵入的一條命令處理完成后系統(tǒng)發(fā)出新的命令輸入提示符,用戶才可以繼續(xù)輸入下一條命令。4 4第九章 操作系統(tǒng)接口2. 批命令方式在操作命令的實(shí)際使用過程中,經(jīng)常遇到需要對(duì)多條命令的連續(xù)使用、或?qū)θ舾蓷l命令的重復(fù)使用、或?qū)Σ煌钸M(jìn)行選擇性使用的情況,如果用戶每次都采用命令行方式將命令一條條由鍵盤輸入,既浪費(fèi)時(shí)間,又容易出錯(cuò)。因此,操作系統(tǒng)都支持一種稱為批命令的特別命令方式,允許用戶預(yù)先把一系列命令組織在一種稱為批命令文件的文件中,一次建立,多次執(zhí)行。使用這種方式可減
3、少用戶輸入命令的次數(shù),既節(jié)省了時(shí)間,減少了出錯(cuò)概率,又方便了用戶。 5 5第九章 操作系統(tǒng)接口9.1.2 圖形化聯(lián)機(jī)用戶接口 1. 圖形用戶接口GUI(Graphics User Interface)的引入雖然用戶可以通過命令行方式和批命令方式,取得操作系統(tǒng)的服務(wù),并控制自己的作業(yè)運(yùn)行,但卻要牢記各種命令的動(dòng)詞和參數(shù),必須嚴(yán)格按規(guī)定的格式輸入命令,而且不同操作系統(tǒng)所提供的命令語言的詞法、語法、語義及表達(dá)形式是不一樣的,這樣既不方便又花費(fèi)時(shí)間。于是,圖形化用戶接口GUI(Graphics User Interface)便應(yīng)運(yùn)而生。6 6第九章 操作系統(tǒng)接口2. 使用WIMP技術(shù)GUI采用了圖形化
4、的操作界面,使用WIMP 技術(shù),該技術(shù)將窗口(Window)、圖標(biāo)(Icon)、菜單(Menu)、鼠標(biāo)(Pointing device)和面向?qū)ο蠹夹g(shù)等集成在一起,引入形象的各種圖標(biāo),將系統(tǒng)的各項(xiàng)功能、各種應(yīng)用程序和文件直觀、逼真地表示出來,形成一個(gè)圖文并茂的視窗操作環(huán)境。 7 7第九章 操作系統(tǒng)接口3. Windows的GUI簡(jiǎn)介以Microsoft公司的Windows 操作系統(tǒng)為例,在系統(tǒng)初始化后,OS為終端用戶生成了一個(gè)運(yùn)行explorer.exe的進(jìn)程,它運(yùn)行一個(gè)具有窗口界面的命令解釋程序,該窗口是一個(gè)特殊的窗口,即桌面。 8 8第九章 操作系統(tǒng)接口9.1.3 聯(lián)機(jī)命令的類型 1. 系
5、統(tǒng)訪問類在多用戶系統(tǒng)中,為了保證系統(tǒng)的安全性,都毫無例外地設(shè)置注冊(cè)命令Login。凡要在多用戶系統(tǒng)的終端上上機(jī)的用戶,都必須先在系統(tǒng)管理員處獲得一合法的注冊(cè)名和口令。以后,每當(dāng)用戶在接通其所用終端的電源后,便由系統(tǒng)直接調(diào)用,并在屏幕上顯示出以下的注冊(cè)命令:Login:/提示用戶鍵入自己的注冊(cè)名當(dāng)用戶鍵入正確的注冊(cè)名并按下回車鍵后,屏幕上又會(huì)出現(xiàn):Password:/提示用戶鍵入自己的口令9 9第九章 操作系統(tǒng)接口2. 文件操作命令(1) 顯示文件命令type,用于將指定文件內(nèi)容顯示在屏幕上。(2) 拷貝文件命令copy,用于實(shí)現(xiàn)文件的拷貝。(3) 文件比較命令comp,該命令用于對(duì)兩個(gè)指定文件
6、進(jìn)行比較,兩文件可以在同一個(gè)或不同的驅(qū)動(dòng)器上。(4) 重新命名命令Rename,該命令用于將以第一參數(shù)命名的文件改成用第二參數(shù)給定的名字。(5) 刪除文件命令erase,該命令用于刪除一個(gè)或一組文件,例如,當(dāng)參數(shù)路徑名為*.BAK時(shí),表示刪除指定目錄下的所有其擴(kuò)展名為.Bak的文件。10 10第九章 操作系統(tǒng)接口3. 目錄操作命令(1) 建立子目錄命令mkdir,用于建立指定名字的新目錄。(2) 顯示目錄命令dir,顯示指定磁盤中的目錄項(xiàng)。(3) 刪除子目錄命令rmdir,用于刪除指定的子目錄文件,但不能刪除普通文件,而且一次只能刪除一個(gè)空目錄(其中僅含“.”和“.”兩個(gè)文件),不能刪除根及當(dāng)
7、前目錄。(4) 顯示目錄結(jié)構(gòu)命令tree,顯示指定盤上的所有目錄路徑及其層次關(guān)系。(5) 改變當(dāng)前目錄命令chdir,將當(dāng)前目錄改變?yōu)橛陕窂矫麉?shù)給定的目錄。用“.”作參數(shù)時(shí),表示應(yīng)返回到上一級(jí)目錄下。11 11第九章 操作系統(tǒng)接口4. 其它命令(1) 輸入輸出重定向命令。(2) 管道連接。 (3) 過濾命令。(4) 批命令。 12 12第九章 操作系統(tǒng)接口9.2 Shell 命令語言 9.2.1 簡(jiǎn)單命令簡(jiǎn)介 在Shell命令語言中提供了許多不同形式的命令,并允許在一條命令行中有多個(gè)命令。如果在一條命令行中僅有一個(gè)命令,就把它稱為簡(jiǎn)單命令。實(shí)際上,一條簡(jiǎn)單命令便是一個(gè)能完成某種功能的目標(biāo)程序
8、的名字。13 13第九章 操作系統(tǒng)接口1. 簡(jiǎn)單命令的格式簡(jiǎn)單命令的格式比較自由,包括命令名字符的個(gè)數(shù)及用于分隔命令名、選項(xiàng)、各參數(shù)間的空格數(shù)等,都是任意的。在UNIX和Linux系統(tǒng)中都規(guī)定,命令由小寫字母構(gòu)成,命令可帶有參數(shù)表,用于給出執(zhí)行命令時(shí)的附加信息,每個(gè)參數(shù)是一個(gè)單詞。命令名與參數(shù)表之間還可使用一種稱為選項(xiàng)的自變量,用減號(hào)開始,后跟一個(gè)或多個(gè)字母、數(shù)字。一條命令可有多個(gè)選項(xiàng),用于改變命令執(zhí)行動(dòng)作的類型。 14 14第九章 操作系統(tǒng)接口2. 簡(jiǎn)單命令的分類在Linux或UNIX系統(tǒng)中,一般把簡(jiǎn)單命令分為兩類:(1) 系統(tǒng)提供的標(biāo)準(zhǔn)命令,包括調(diào)用各種語言處理程序、實(shí)用程序等,其數(shù)量隨系
9、統(tǒng)版本的不同而有所差異,系統(tǒng)管理員可以增添新的系統(tǒng)標(biāo)準(zhǔn)命令。(2) 用戶自定義的命令。系統(tǒng)管理員和用戶自行定義的命令的執(zhí)行方式與系統(tǒng)標(biāo)準(zhǔn)命令的執(zhí)行方式相同。15 15第九章 操作系統(tǒng)接口對(duì)于簡(jiǎn)單命令,還可根據(jù)命令是否包含在Shell內(nèi)部,即是否常駐內(nèi)存,而分為內(nèi)部命令和外部命令兩類:(1) 內(nèi)部命令。Shell中少數(shù)標(biāo)準(zhǔn)命令,如改變工作目錄命令cd等,是包含在Shell內(nèi)部的,作為內(nèi)部命令常駐內(nèi)存。(2) 外部命令。Shell中大多數(shù)的命令如拷貝命令cp和移動(dòng)命令rm等,均保存于外存(盤)上,即每個(gè)命令是存在于文件系統(tǒng)中某個(gè)目錄下的單獨(dú)程序。這樣做的好處在于,可以很大程度地節(jié)省內(nèi)存空間。16
10、16第九章 操作系統(tǒng)接口3. Shell的種類 現(xiàn)在流行的Shell有多種類型,下面簡(jiǎn)單介紹幾種流行的Shell:(1) Bourne Shell。(2) C Shell。C Shell是一種比B Shell更適于編程的Shell,是標(biāo)準(zhǔn)BSD(Berkeley System Distribution)命令解釋。(3) Korn Shell。Korn Shell集合了C Shell和B Shell的優(yōu)點(diǎn),并且和B Shell完全兼容,它的名字是K Sh。 17 17第九章 操作系統(tǒng)接口9.2.2 簡(jiǎn)單命令的類型 根據(jù)簡(jiǎn)單命令功能的不同,可將它們分成如下五大類: 1. 進(jìn)入與退出系統(tǒng)(1) 進(jìn)入
11、系統(tǒng),也稱為注冊(cè)。(2) 退出系統(tǒng)。18 18第九章 操作系統(tǒng)接口2. 文件操作命令(1) 顯示文件內(nèi)容命令cat。(2) 復(fù)制文件副本的命令cp。(3) 對(duì)已有文件改名的命令mv。(4) 撤消文件的命令rm。(5) 確定文件類型的命令file。19 19第九章 操作系統(tǒng)接口3. 目錄操作命令(1) 建立目錄的命令mkdir(簡(jiǎn)稱md)。(2) 撤消目錄的命令rmdir(簡(jiǎn)稱rd)。(3) 改變工作目錄的命令cd。 2020第九章 操作系統(tǒng)接口4. 系統(tǒng)詢問命令(1) 訪問當(dāng)前日期和時(shí)間命令date。(2) 詢問系統(tǒng)當(dāng)前用戶的命令who。(3) 顯示當(dāng)前目錄路徑名的命令pwd。 21 21第九
12、章 操作系統(tǒng)接口9.2.3 重定向與管道命令1. 重定向命令在Linux系統(tǒng)中,由系統(tǒng)定義了三個(gè)文件。其中,有兩個(gè)分別稱為標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出的文件,各對(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è)指定文件中而非屏幕上。 2222第九章 操作系統(tǒng)接口2. 管道命令人們又進(jìn)一步把重定向思想加以擴(kuò)充,用符號(hào)“|”來連接兩條命令,使其前一條命令的輸出作為后一條命令的輸
13、入。 2323第九章 操作系統(tǒng)接口9.2.4 通信命令 1. 信箱通信命令mail信箱通信是作為在UNIX的各用戶之間進(jìn)行非交互式通信的工具。發(fā)信者把要發(fā)送的消息寫成信件,“郵寄”到對(duì)方的信箱中。 2424第九章 操作系統(tǒng)接口2. 對(duì)話通信命令write用這條命令可以使用戶與當(dāng)前在系統(tǒng)中的其他用戶直接進(jìn)行聯(lián)機(jī)通信。 2525第九章 操作系統(tǒng)接口3. 允許或拒絕接收消息的mesg命令其格式為: mesg-n-y2626第九章 操作系統(tǒng)接口9.2.5 后臺(tái)命令 有些命令需要執(zhí)行很長(zhǎng)的時(shí)間,這樣,當(dāng)用戶鍵入該命令后,便會(huì)發(fā)現(xiàn)自己已無事可做,要一直等到該命令執(zhí)行完畢,方可再鍵入下一條命令。這時(shí)用戶自然
14、會(huì)想到應(yīng)該利用這段時(shí)間去做些別的事。UNIX系統(tǒng)提供了這種機(jī)制,用戶可以在這種命令后面再加上“&”號(hào),以告訴Shell將該命令放在后臺(tái)執(zhí)行,以便用戶能在前臺(tái)繼續(xù)鍵入其它命令,完成其它工作。2727第九章 操作系統(tǒng)接口9.3 聯(lián)機(jī)命令接口的實(shí)現(xiàn)9.3.1 鍵盤終端處理程序 在微機(jī)或終端上所配置的鍵盤終端處理程序應(yīng)具有下述幾方面的功能: 接收用戶從終端上打入的字符; 字符緩沖,用于暫存所接收的字符; 回送顯示; 屏幕編輯; 特殊字符處理。2828第九章 操作系統(tǒng)接口1. 字符接收功能為了實(shí)現(xiàn)人機(jī)交互,鍵盤終端處理程序必須能夠接收從終端輸入的字符,并將之傳送給用戶程序。有兩種方式可實(shí)現(xiàn)字符接
15、收功能:(1) 面向字符方式。(2) 面向行方式。 2929第九章 操作系統(tǒng)接口2. 字符緩沖功能為了能暫存從終端鍵入的字符,以降低中斷處理器的頻率,在終端處理程序中,還必須具有字符緩沖功能。字符緩沖可采用以下兩種方式之一:(1) 專用緩沖方式。(2) 公用緩沖方式。 3030第九章 操作系統(tǒng)接口圖9-1 兩種緩沖方式31 31第九章 操作系統(tǒng)接口3. 回送顯示回送顯示(回顯)是指每當(dāng)用戶從鍵盤輸入一個(gè)字符后,終端處理程序便將該字符送往屏幕顯示。有些終端的回顯由硬件實(shí)現(xiàn),其速度較快,但往往會(huì)引起麻煩。如當(dāng)用戶鍵入口令時(shí),為防止口令被盜用,顯然不該有回顯。此外,用硬件實(shí)現(xiàn)回顯也缺乏靈活性,因而近
16、年來多改用軟件來實(shí)現(xiàn)回顯,這樣可以做到在用戶需要時(shí)才回顯。 3232第九章 操作系統(tǒng)接口4. 屏幕編輯用戶經(jīng)常希望能對(duì)從鍵盤打入的數(shù)據(jù)(字符)進(jìn)行修改,如刪除(插入)一個(gè)或多個(gè)字符。為此,在終端處理程序中,還應(yīng)能實(shí)現(xiàn)屏幕編輯功能,包括能提供若干個(gè)編輯鍵。常用的編輯鍵有:(1) 刪除字符鍵。(2) 刪除一行鍵。(3) 插入鍵。(4) 移動(dòng)光標(biāo)鍵。(5) 屏幕上卷或下移鍵等。3333第九章 操作系統(tǒng)接口5. 特殊字符處理終端處理程序必須能對(duì)若干特殊字符進(jìn)行及時(shí)處理,這些字符是:(1) 中斷字符。(2) 停止上卷字符。(3) 恢復(fù)上卷字符。 3434第九章 操作系統(tǒng)接口9.3.2 MS-DOS解釋程
17、序 1. 命令解釋程序的作用在聯(lián)機(jī)操作方式下,終端處理程序把用戶鍵入的信息送鍵盤緩沖區(qū)中保存。一旦用戶鍵入回車符,便立即把控制權(quán)交給命令解釋程序。顯然,對(duì)于不同的命令,應(yīng)有能完成特定功能的命令處理程序與之對(duì)應(yīng)??梢姡罱忉尦绦虻闹饕饔檬窃谄聊簧辖o出提示符,請(qǐng)用戶鍵入命令,然后讀入該命令,識(shí)別命令,再轉(zhuǎn)到相應(yīng)命令處理程序的入口地址,把控制權(quán)交給該處理程序去執(zhí)行,并將處理結(jié)果送屏幕上顯示。若用戶鍵入的命令有錯(cuò),而命令解釋程序未能予以識(shí)別,或在執(zhí)行中間出現(xiàn)問題時(shí),則應(yīng)顯示出某一出錯(cuò)信息。3535第九章 操作系統(tǒng)接口2. 命令解釋程序的組成MS-DOS是1981年由Microsoft公司開發(fā)的、
18、配置在微機(jī)上的OS。隨著微機(jī)的發(fā)展,MS-DOS的版本也在不斷升級(jí),由開始時(shí)的1.0版本升級(jí)到1994年的6.X版本。在此期間,它已是事實(shí)上的16位微機(jī)OS的標(biāo)準(zhǔn)。我們以MS-DOS操作系統(tǒng)中的COMMAND.COM處理程序?yàn)槔齺碚f明命令解釋程序的組成。它包括以下三部分:(1) 常駐部分。(2) 初始化部分。(3) 暫存部分。 3636第九章 操作系統(tǒng)接口3. 命令解釋程序的工作流程系統(tǒng)在接通電源或復(fù)位后,初始化部分獲得控制權(quán),對(duì)整個(gè)系統(tǒng)完成初始化工作,并自動(dòng)執(zhí)行AUTOEXEC.BAT文件,之后便把控制權(quán)交給暫存部分。暫存部分首先讀入鍵盤緩沖區(qū)中的命令,判別其文件名、擴(kuò)展名及驅(qū)動(dòng)器名是否正確
19、。若發(fā)現(xiàn)有錯(cuò),在給出出錯(cuò)信息后返回;若無錯(cuò),再識(shí)別該命令。 3737第九章 操作系統(tǒng)接口圖9-2 COMMAND.COM的工作流程3838第九章 操作系統(tǒng)接口9.3.3 Shell解釋程序1. Shell命令的特點(diǎn)前面我們介紹了MS-DOS的命令解釋程序,它非常簡(jiǎn)單。而Shell命令解釋程序就復(fù)雜得多,這主要是因?yàn)镾hell命令的類型多而復(fù)雜所致。主要表現(xiàn)如下:(1) 一條命令行中含有多個(gè)命令。(2) 具有不同的分隔符。3939第九章 操作系統(tǒng)接口2. 二叉樹結(jié)構(gòu)的命令行樹1) 命令表型結(jié)點(diǎn)Shell命令解釋程序按命令行語句的結(jié)構(gòu)順序進(jìn)行檢查,每當(dāng)遇到“;”及“&”分隔符時(shí)便為之建立一
20、個(gè)命令表型結(jié)點(diǎn),將分隔符左面部分構(gòu)成該結(jié)點(diǎn)的左子樹,右面部分構(gòu)成右子樹。例如下面的命令行所構(gòu)成的命令樹如圖9-3所示:Command 1;Command 2;& Command 34040第九章 操作系統(tǒng)接口圖9-3 命令表型結(jié)點(diǎn)及其左、右子樹41 41第九章 操作系統(tǒng)接口2) 管道文件型結(jié)點(diǎn)當(dāng)Shell命令解釋程序遇到管道算符“”時(shí),先為之建立一個(gè)管道文件型結(jié)點(diǎn),再將分隔符左面部分構(gòu)成該結(jié)點(diǎn)的左子樹,右面部分構(gòu)成右子樹。例如對(duì)下面的命令行所構(gòu)成的命令樹如圖9-4所示:Command 1 Command 2 Command 34242第九章 操作系統(tǒng)接口圖9-4 管道文件型結(jié)點(diǎn)及其左、
21、右子樹4343第九章 操作系統(tǒng)接口3) 簡(jiǎn)單命令型結(jié)點(diǎn)對(duì)于簡(jiǎn)單命令,在命令行中僅有一條命令,它是屬于可以立即執(zhí)行的命令,系統(tǒng)無需為它建立二叉樹結(jié)構(gòu)的命令行樹。當(dāng)命令解釋程序讀入鍵盤緩沖區(qū)中的命令后,若判定它是簡(jiǎn)單命令,再進(jìn)一步確定是否是內(nèi)部命令。 4444第九章 操作系統(tǒng)接口3. Linux命令解釋程序的工作流程 在Linux系統(tǒng)中,系統(tǒng)初啟后,內(nèi)核為每個(gè)終端用戶建立一個(gè)進(jìn)程,去執(zhí)行Shell解釋程序。 4545第九章 操作系統(tǒng)接口圖9-5 Shell基本執(zhí)行過程及父子進(jìn)程之間的關(guān)系4646第九章 操作系統(tǒng)接口9.4 系統(tǒng)調(diào)用的概念和類型9.4.1 系統(tǒng)調(diào)用的基本概念 在計(jì)算機(jī)系統(tǒng)中,通常運(yùn)行
22、著兩類程序:系統(tǒng)程序和應(yīng)用程序。為了防止應(yīng)用程序?qū)S的破壞,應(yīng)用程序和OS的內(nèi)核是運(yùn)行在不同的狀態(tài),即OS的內(nèi)核是運(yùn)行在系統(tǒng)態(tài),而應(yīng)用程序是運(yùn)行在用戶態(tài)。4747第九章 操作系統(tǒng)接口1. 系統(tǒng)態(tài)和用戶態(tài)如在2.3.1小節(jié)中所述,在計(jì)算機(jī)系統(tǒng)中設(shè)置了兩種狀態(tài):系統(tǒng)態(tài)(或稱為核心態(tài))和用戶態(tài)。在實(shí)際運(yùn)行過程中,處理機(jī)會(huì)在系統(tǒng)態(tài)和用戶態(tài)間切換。相應(yīng)地,現(xiàn)代多數(shù)OS將CPU的指令集分為特權(quán)指令和非特權(quán)指令兩類。(1) 特權(quán)指令。(2) 非特權(quán)指令。 4848第九章 操作系統(tǒng)接口2. 系統(tǒng)調(diào)用在OS中提供系統(tǒng)調(diào)用的目的,是使應(yīng)用程序可以通過它間接調(diào)用OS中的相關(guān)過程,取得相應(yīng)的服務(wù)。系統(tǒng)調(diào)用在本質(zhì)上是
23、應(yīng)用程序請(qǐng)求OS內(nèi)核完成某功能時(shí)的一種過程調(diào)用,但它是一種特殊的過程調(diào)用,它與一般的過程調(diào)用有下述幾方面的明顯差別:(1) 運(yùn)行在不同的系統(tǒng)狀態(tài)。(2) 狀態(tài)的轉(zhuǎn)換。(3) 返回問題。(4) 嵌套調(diào)用。 4949第九章 操作系統(tǒng)接口圖9-6 系統(tǒng)功能的調(diào)用5050第九章 操作系統(tǒng)接口3. 中斷機(jī)制系統(tǒng)調(diào)用是通過中斷機(jī)制實(shí)現(xiàn)的,并且一個(gè)操作系統(tǒng)的所有系統(tǒng)調(diào)用,都通過同一個(gè)中斷入口來實(shí)現(xiàn)。如MS-DOS提供了INT 21H,應(yīng)用程序通過該中斷獲取操作系統(tǒng)的服務(wù)。51 51第九章 操作系統(tǒng)接口9.4.2 系統(tǒng)調(diào)用的類型 1. 進(jìn)程控制類系統(tǒng)調(diào)用主要用于對(duì)進(jìn)程控制的系統(tǒng)調(diào)用有:(1) 創(chuàng)建和終止進(jìn)程的
24、系統(tǒng)調(diào)用。(2) 獲得和設(shè)置進(jìn)程屬性的系統(tǒng)調(diào)用。(3) 等待某事件出現(xiàn)的系統(tǒng)調(diào)用。 5252第九章 操作系統(tǒng)接口2. 文件操縱類系統(tǒng)調(diào)用對(duì)文件進(jìn)行操縱的主要系統(tǒng)調(diào)用如下:(1) 創(chuàng)建和刪除文件。(2) 打開和關(guān)閉文件的系統(tǒng)調(diào)用。(3) 讀和寫文件的系統(tǒng)調(diào)用。 5353第九章 操作系統(tǒng)接口3. 進(jìn)程通信類系統(tǒng)調(diào)用在單處理機(jī)系統(tǒng)中,OS經(jīng)常采用消息傳遞方式和共享存儲(chǔ)區(qū)方式。當(dāng)采用消息傳遞方式時(shí),在通信前需先打開一個(gè)連接。為此,應(yīng)由源進(jìn)程發(fā)出一條打開連接的系統(tǒng)調(diào)用,而目標(biāo)進(jìn)程則應(yīng)利用接受連接的系統(tǒng)調(diào)用表示同意進(jìn)行通信;然后,在源和目標(biāo)進(jìn)程之間便可開始通信??梢岳冒l(fā)送消息的系統(tǒng)調(diào)用或者用接收消息的系
25、統(tǒng)調(diào)用來交換信息。通信結(jié)束后,還須再利用關(guān)閉連接的系統(tǒng)調(diào)用結(jié)束通信。5454第九章 操作系統(tǒng)接口9.4.3 POSIX標(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)性帶來了很大的困難。為解決這一問題,國(guó)際標(biāo)準(zhǔn)化組織ISO給出的有關(guān)系統(tǒng)調(diào)用的國(guó)際標(biāo)準(zhǔn)POSIX1003.1(Portable Operating System IX),也稱為“基于UNIX的可移植操作系統(tǒng)接口”。5555第九章 操作系統(tǒng)接口圖9-7 UNIX/Linux系統(tǒng)程序、庫函數(shù)、系統(tǒng)調(diào)用的分層關(guān)系5656第九章 操
26、作系統(tǒng)接口9.5 UNIX系統(tǒng)調(diào)用9.5.1 進(jìn)程控制該類系統(tǒng)調(diào)用包括創(chuàng)建進(jìn)程的系統(tǒng)調(diào)用fork、終止進(jìn)程的系統(tǒng)調(diào)用exit、等待子進(jìn)程結(jié)束的系統(tǒng)調(diào)用wait等十多條。5757第九章 操作系統(tǒng)接口1. 進(jìn)程的創(chuàng)建和終止(1) 創(chuàng)建進(jìn)程(fork)。(2) 終止進(jìn)程(exit)。 5858第九章 操作系統(tǒng)接口2. 改變進(jìn)程映像和等待(1) 執(zhí)行一個(gè)文件(exec)。(2) 等待子進(jìn)程結(jié)束(wait)。 5959第九章 操作系統(tǒng)接口3. 其它進(jìn)程調(diào)用(1) 獲得進(jìn)程ID。(2) 獲得用戶ID。(3) 進(jìn)程暫停(pause)。 6060第九章 操作系統(tǒng)接口9.5.2 文件操縱用于對(duì)文件進(jìn)行操縱的系統(tǒng)
27、調(diào)用是數(shù)量最多的一類系統(tǒng)調(diào)用,其中包括創(chuàng)建文件、 打開文件、關(guān)閉文件、讀文件及寫文件等二十多條。61 61第九章 操作系統(tǒng)接口1. 文件的創(chuàng)建和刪除(1) 創(chuàng)建文件(creat)。 (2) 刪除文件。 6262第九章 操作系統(tǒng)接口2. 文件的打開和關(guān)閉(1) 打開文件(open)。(2) 關(guān)閉文件(close)。 6363第九章 操作系統(tǒng)接口3. 文件的讀和寫讀和寫文件的系統(tǒng)調(diào)用是read和write。僅當(dāng)用戶利用open打開指定文件后,方可調(diào)用read或write對(duì)文件執(zhí)行讀或?qū)懖僮?。兩個(gè)系統(tǒng)調(diào)用都要求用戶提供三個(gè)輸入?yún)?shù): 文件描述符fd。 buf緩沖區(qū)首址。對(duì)讀而言,這是用戶所要求的信息
28、傳送的目標(biāo)地址;對(duì)寫而言,則是信息傳送的源地址。 用戶要求傳送的字節(jié)數(shù)nbyte。6464第九章 操作系統(tǒng)接口4. 建立與文件的連接和去連接(1) 連接(link)。 (2) 去連接(unlink)。 6565第九章 操作系統(tǒng)接口9.5.3 進(jìn)程通信和信息保護(hù) 1. 進(jìn)程通信(1) 消息機(jī)制。(2) 共享存儲(chǔ)器機(jī)制。(3) 信號(hào)量機(jī)制。 6666第九章 操作系統(tǒng)接口2. 信息維護(hù)在UNIX系統(tǒng)中,設(shè)置了許多條用于系統(tǒng)維護(hù)的系統(tǒng)調(diào)用,下面介紹常用的幾條。(1) 設(shè)置和獲得時(shí)間。(2) 獲得進(jìn)程和子進(jìn)程時(shí)間(times)。(3) 設(shè)置文件訪問和修改時(shí)間(utime)。(4) 獲得當(dāng)前UNIX系統(tǒng)的
29、名稱(uname)。 6767第九章 操作系統(tǒng)接口9.6 系統(tǒng)調(diào)用的實(shí)現(xiàn)系統(tǒng)調(diào)用的實(shí)現(xiàn)與一般過程調(diào)用的實(shí)現(xiàn)相比,兩者間有很大差異。對(duì)于系統(tǒng)調(diào)用,控制是由原來的用戶態(tài)轉(zhuǎn)換為系統(tǒng)態(tài),這是借助于陷入機(jī)制來完成的,在該機(jī)制中包括陷入硬件機(jī)構(gòu)及陷入處理程序兩部分。 6868第九章 操作系統(tǒng)接口9.6.1 系統(tǒng)調(diào)用的實(shí)現(xiàn)方法1. 系統(tǒng)調(diào)用號(hào)和參數(shù)的設(shè)置 往往在一個(gè)系統(tǒng)中設(shè)置了許多條系統(tǒng)調(diào)用,并賦予每條系統(tǒng)調(diào)用一個(gè)唯一的系統(tǒng)調(diào)用號(hào)。在系統(tǒng)調(diào)用命令(陷入指令)中把相應(yīng)的系統(tǒng)調(diào)用號(hào)傳遞給中斷和陷入機(jī)制的方法有很多,在有的系統(tǒng)中,直接把系統(tǒng)調(diào)用號(hào)放在系統(tǒng)調(diào)用命令(陷入指令)中,如 IBM 370和早期的UNIX系
30、統(tǒng),是把系統(tǒng)調(diào)用命令的低8位用于存放系統(tǒng)調(diào)用號(hào);在另一些系統(tǒng)中,則將系統(tǒng)調(diào)用號(hào)裝入某指定寄存器或內(nèi)存單元中,如MS-DOS是將系統(tǒng)調(diào)用號(hào)放在AH寄存器中,Linux則是利用EAX寄存器來存放應(yīng)用程序傳遞的系統(tǒng)調(diào)用號(hào)。6969第九章 操作系統(tǒng)接口每一條系統(tǒng)調(diào)用都含有若干個(gè)參數(shù),在執(zhí)行系統(tǒng)調(diào)用時(shí),如何設(shè)置系統(tǒng)調(diào)用所需的參數(shù),即如何將這些參數(shù)傳遞給陷入處理機(jī)構(gòu)和系統(tǒng)內(nèi)部的子程序(過程),常用的實(shí)現(xiàn)方式有以下幾種:(1) 陷入指令自帶方式。(2) 直接將參數(shù)送入相應(yīng)的寄存器中。 (3) 參數(shù)表方式。 7070第九章 操作系統(tǒng)接口圖9-8 系統(tǒng)調(diào)用的參數(shù)形式71 71第九章 操作系統(tǒng)接口2. 系統(tǒng)調(diào)用的
31、處理步驟 在設(shè)置了系統(tǒng)調(diào)用號(hào)和參數(shù)后,便可執(zhí)行一條系統(tǒng)調(diào)用命令。不同的系統(tǒng)可采用不同的執(zhí)行方式。在UNIX系統(tǒng)中,是執(zhí)行CHMK命令;而在MS-DOS中則是執(zhí)行INT 21軟中斷。 7272第九章 操作系統(tǒng)接口3. 系統(tǒng)調(diào)用處理子程序的處理過程 系統(tǒng)調(diào)用的功能主要是由系統(tǒng)調(diào)用子程序來完成的。對(duì)于不同的系統(tǒng)調(diào)用,其處理程序?qū)?zhí)行不同的功能。 7373第九章 操作系統(tǒng)接口9.6.2 UNIX系統(tǒng)調(diào)用的實(shí)現(xiàn) 1. CPU環(huán)境保護(hù)當(dāng)用戶程序處在用戶態(tài),且在執(zhí)行系統(tǒng)調(diào)用命令(即CHMK命令)之前,應(yīng)在用戶空間提供系統(tǒng)調(diào)用所需的參數(shù)表,并將該參數(shù)表的地址送入R0寄存器。在執(zhí)行CHMK命令后,處理機(jī)將由用戶
32、態(tài)轉(zhuǎn)為核心態(tài),并由硬件自動(dòng)地將處理機(jī)狀態(tài)長(zhǎng)字(PSL)、程序計(jì)數(shù)器(PC)和代碼操作數(shù)(code)壓入用戶核心棧,繼而從中斷和陷入向量表中取出trap.S的入口地址,然后便轉(zhuǎn)入中斷和陷入總控程序trap.S中執(zhí)行。7474第九章 操作系統(tǒng)接口2. AP和FP指針為了實(shí)現(xiàn)系統(tǒng)調(diào)用的嵌套使用,在系統(tǒng)中還設(shè)置了兩個(gè)指針,其一是系統(tǒng)調(diào)用參數(shù)表指針AP,用于指示正在執(zhí)行的系統(tǒng)調(diào)用所需參數(shù)表的地址,通常是把該地址放在某個(gè)寄存器中,例如放在R12中;再者,還須設(shè)置一個(gè)調(diào)用棧幀指針。所謂調(diào)用棧幀(或簡(jiǎn)稱棧幀),是指每個(gè)系統(tǒng)調(diào)用需要保存而被壓入用戶核心棧的所有數(shù)據(jù)項(xiàng);而棧幀指針FP則是用于指示本次系統(tǒng)調(diào)用所保存
33、的數(shù)據(jù)項(xiàng)。每當(dāng)出現(xiàn)新的系統(tǒng)調(diào)用時(shí),還須將AP和FP303壓入棧中,圖9-9示出了在trap.S總控程序執(zhí)行后用戶核心棧的情況。7575第九章 操作系統(tǒng)接口圖9-9 用戶核心棧7676第九章 操作系統(tǒng)接口3. 確定系統(tǒng)調(diào)用號(hào)由上所述得知,在中斷和陷入發(fā)生后,應(yīng)先經(jīng)硬件陷入機(jī)構(gòu)予以處理,再進(jìn)入中斷和陷入總控程序trap.S,在保護(hù)好CPU現(xiàn)場(chǎng)后再調(diào)用trap.C繼續(xù)處理。 7777第九章 操作系統(tǒng)接口4. 參數(shù)傳送參數(shù)傳送是指由trap.C程序?qū)⑾到y(tǒng)調(diào)用參數(shù)表中的內(nèi)容從用戶區(qū)傳送到User結(jié)構(gòu)的U.U-arg中,供系統(tǒng)調(diào)用處理程序使用。 7878第九章 操作系統(tǒng)接口5. 利用系統(tǒng)調(diào)用定義表轉(zhuǎn)入相應(yīng)
34、的處理程序在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中。7979第九章 操作系統(tǒng)接口6. 系統(tǒng)調(diào)用返回前的公共處理在UNIX系統(tǒng)中,進(jìn)程調(diào)度的主要依據(jù)是進(jìn)程的動(dòng)態(tài)優(yōu)先級(jí)。隨著進(jìn)程執(zhí)行時(shí)間的加長(zhǎng),其優(yōu)先級(jí)將逐步降低。每當(dāng)執(zhí)行了系統(tǒng)調(diào)用命令并由系統(tǒng)調(diào)用處理子程序返回到trap.C后,都將重新計(jì)算該進(jìn)程的優(yōu)先級(jí);另外,在系統(tǒng)調(diào)用執(zhí)行過程中,若發(fā)生了錯(cuò)誤使進(jìn)程無法繼續(xù)運(yùn)行時(shí),系統(tǒng)會(huì)設(shè)置再調(diào)度標(biāo)志。處理子程序在計(jì)算了進(jìn)程的優(yōu)先級(jí)后,又去檢查該再調(diào)度標(biāo)志是否已又被設(shè)置。若已設(shè)置,便調(diào)用switch調(diào)度程序,再去從所有的就緒進(jìn)程中選擇優(yōu)先級(jí)最高的進(jìn)程,把處理機(jī)讓給該進(jìn)程去運(yùn)行。8080第九章 操作系統(tǒng)接口9.6.5 Linux系統(tǒng)調(diào)用 與UNIX相似,Linux采用類似技術(shù)實(shí)現(xiàn)系統(tǒng)調(diào)用。Linux系統(tǒng)在CPU的保護(hù)模式下提供了四個(gè)特權(quán)級(jí)別,目前內(nèi)核都只用到了其中的兩個(gè)特權(quán)級(jí)別,分別為“特權(quán)級(jí)0”(即內(nèi)核態(tài))和“特權(quán)級(jí)3”(即用戶態(tài))。用戶對(duì)系統(tǒng)調(diào)用不能任意攔截和修改,以保證內(nèi)核的安全性。Linux最多可以有190個(gè)系統(tǒng)調(diào)用。應(yīng)用程序和Shell需要通過系統(tǒng)調(diào)用機(jī)制訪問L
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)出租車計(jì)價(jià)器用傳感器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年厚料縫機(jī)項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年防銹乳化型水溶切削油項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年藝術(shù)晶雕項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年電話旋轉(zhuǎn)頭項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年平網(wǎng)立式曝光機(jī)項(xiàng)目投資價(jià)值分析報(bào)告
- 二零二五年度養(yǎng)老社區(qū)物業(yè)管理委托服務(wù)合同
- 二零二五年度藥店藥品配送員勞動(dòng)合同及薪資福利協(xié)議
- 二零二五餐飲連鎖店兼職餐飲服務(wù)員服務(wù)合同
- 二零二五年度工業(yè)生產(chǎn)安全環(huán)保管理體系建設(shè)合同3篇
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級(jí)歷史下冊(cè)
- 2025-2030年中國(guó)糖醇市場(chǎng)運(yùn)行狀況及投資前景趨勢(shì)分析報(bào)告
- 冬日暖陽健康守護(hù)
- 水處理藥劑采購(gòu)項(xiàng)目技術(shù)方案(技術(shù)方案)
- 2024級(jí)高一上期期中測(cè)試數(shù)學(xué)試題含答案
- 山東省2024-2025學(xué)年高三上學(xué)期新高考聯(lián)合質(zhì)量測(cè)評(píng)10月聯(lián)考英語試題
- 不間斷電源UPS知識(shí)培訓(xùn)
- 三年級(jí)除法豎式300道題及答案
- 品學(xué)課堂新范式
- GB/T 1196-2023重熔用鋁錠
- 幼兒園教師培訓(xùn):計(jì)數(shù)(數(shù)數(shù))的核心經(jīng)驗(yàn)
評(píng)論
0/150
提交評(píng)論