161.操做系統接口

操做系統接口編程

 

9.1  用 戶 接 口

 

9.1.1  字符顯示式聯機用戶接口

  不一樣的OS,其聯機用戶接口是不一樣的,即它們的命令形式和用法各不相同,甚至在同一系統中,命令的不一樣形式構成了不一樣的用戶界面,通常可分爲字符顯示式聯機用戶接口和圖形化聯機用戶接口兩類。安全

  1. 命令行方式數據結構

  該方式是以行爲單位,輸入和顯示不一樣的命令。每行長度通常不超過256個字符,通常狀況下,以回車符做爲一個命令的結束標記。一般,命令的執行採用的是間斷式的串行執行方式,即後一個命令的輸入通常需等到前一個命令執行結束,如用戶鍵入的一條命令處理完成後系統發出新的命令輸入提示符,用戶才能夠繼續輸入下一條命令。函數

  2. 批命令方式工具

  在操做命令的實際使用過程當中,常常遇到須要對多條命令的連續使用、或對若干條命令的重複使用、或對不一樣命令進行選擇性使用的狀況,若是用戶每次都採用命令行方式將命令一條條由鍵盤輸入,既浪費時間,又容易出錯。所以,操做系統都支持一種稱爲批命令的特別命令方式,容許用戶預先把一系列命令組織在一種稱爲批命令文件的文件中,一次創建,屢次執行。使用這種方式可減小用戶輸入命令的次數,既節省了時間,減小了出錯機率,又方便了用戶。post

9.1.2  圖形化聯機用戶接口 

  1. 圖形用戶接口GUI(Graphics User Interface)的引入操作系統

  雖然用戶能夠經過命令行方式和批命令方式,取得操做系統的服務,並控制本身的做業運行,但卻要牢記各類命令的動詞和參數,必須嚴格按規定的格式輸入命令,並且不一樣操做系統所提供的命令語言的詞法、語法、語義及表達形式是不同的,這樣既不方便又花費時間。因而,圖形化用戶接口GUI(Graphics User Interface)便應運而生。命令行

  2. 使用WIMP技術指針

  GUI採用了圖形化的操做界面,使用WIMP 技術,該技術將窗口(Window)、圖標(Icon)、菜單(Menu)、鼠標(Pointing device)和麪向對象技術等集成在一塊兒,引入形象的各類圖標,將系統的各項功能、各類應用程序和文件直觀、逼真地表示出來,造成一個圖文並茂的視窗操做環境。code

  3.  Windows的GUI簡介

  以Microsoft公司的Windows 操做系統爲例,在系統初始化後,OS爲終端用戶生成了一個運行explorer.exe的進程,它運行一個具備窗口界面的命令解釋程序,該窗口是一個特殊的窗口,即桌面。

9.1.3  聯機命令的類型  

  1. 系統訪問類

  在多用戶系統中,爲了保證系統的安全性,都毫無例外地設置註冊命令Login。凡要在多用戶系統的終端上上機的用戶,都必須先在系統管理員處得到一合法的註冊名和口令。之後,每當用戶在接通其所用終端的電源後,便由系統直接調用,並在屏幕上顯示出如下的註冊命令:

    Login:    /提示用戶鍵入本身的註冊名

  當用戶鍵入正確的註冊名並按下回車鍵後,屏幕上又會出現:

    Password:    /提示用戶鍵入本身的口令

  2. 文件操做命令

  (1) 顯示文件命令type,用於將指定文件內容顯示在屏幕上。

  (2) 拷貝文件命令copy,用於實現文件的拷貝。

  (3) 文件比較命令comp,該命令用於對兩個指定文件進行比較,兩文件能夠在同一個或不一樣的驅動器上。

  (4) 從新命名命令Rename,該命令用於將以第一參數命名的文件改爲用第二參數給定的名字。

  (5) 刪除文件命令erase,該命令用於刪除一個或一組文件,例如,當參數路徑名爲*.BAK時,表示刪除指定目錄下的全部其擴展名爲 .Bak的文件。

  3. 目錄操做命令

  (1) 創建子目錄命令mkdir,用於創建指定名字的新目錄。

  (2) 顯示目錄命令dir,顯示指定磁盤中的目錄項。

  (3) 刪除子目錄命令rmdir,用於刪除指定的子目錄文件,但不能刪除普通文件,並且一次只能刪除一個空目錄(其中僅含「.」和「..」兩個文件),不能刪除根及當前目錄。

  (4) 顯示目錄結構命令tree,顯示指定盤上的全部目錄路徑及其層次關係。

  (5) 改變當前目錄命令chdir,將當前目錄改變爲由路徑名參數給定的目錄。用「..」做參數時,表示應返回到上一級目錄下。

  4. 其它命令

  (1) 輸入輸出重定向命令。

  (2) 管道鏈接。

  (3) 過濾命令。

  (4) 批命令。

      

9.2  Shell 命令語言

 

9.2.1  簡單命令簡介 

  在Shell命令語言中提供了許多不一樣形式的命令,並容許在一條命令行中有多個命令。若是在一條命令行中僅有一個命令,就把它稱爲簡單命令。實際上,一條簡單命令即是一個能完成某種功能的目標程序的名字。

  1. 簡單命令的格式

  簡單命令的格式比較自由,包括命令名字符的個數及用於分隔命令名、選項、各參數間的空格數等,都是任意的。在UNIX和Linux系統中都規定,命令由小寫字母構成,命令可帶有參數表,用於給出執行命令時的附加信息,每一個參數是一個單詞。命令名與參數表之間還可以使用一種稱爲選項的自變量,用減號開始,後跟一個或多個字母、數字。一條命令可有多個選項,用於改變命令執行動做的類型。

  2. 簡單命令的分類

  在Linux或UNIX系統中,通常把簡單命令分爲兩類:

  (1) 系統提供的標準命令,包括調用各類語言處理程序、實用程序等,其數量隨系統版本的不一樣而有所差別,系統管理員能夠增添新的系統標準命令。

  (2) 用戶自定義的命令。系統管理員和用戶自行定義的命令的執行方式與系統標準命令的執行方式相同。

  對於簡單命令,還可根據命令是否包含在Shell內部,便是否常駐內存,而分爲內部命令和外部命令兩類:

  (1) 內部命令。Shell中少數標準命令,如改變工做目錄命令cd等,是包含在Shell內部的,做爲內部命令常駐內存。

  (2) 外部命令。Shell中大多數的命令如拷貝命令cp和移動命令rm等,均保存於外存(盤)上,即每一個命令是存在於文件系統中某個目錄下的單獨程序。這樣作的好處在於,能夠很大程度地節省內存空間。

  3.  Shell的種類  

  如今流行的Shell有多種類型,下面簡單介紹幾種流行的Shell:

  (1)  ourne Shell。

  (2)   Shell。C Shell是一種比B Shell更適於編程的Shell,是標準BSD(Berkeley System Distribution)命令解釋。

  (3) Korn Shell。Korn Shell集合了C Shell和B Shell的優勢,而且和B Shell徹底兼容,它的名字是K Sh。

9.2.2  簡單命令的類型   

  根據簡單命令功能的不一樣,可將它們分紅以下五大類:

  1. 進入與退出系統

  (1) 進入系統,也稱爲註冊。

  (2) 退出系統。

  2. 文件操做命令

  (1) 顯示文件內容命令cat。

  (2) 複製文件副本的命令cp。

  (3) 對已有文件更名的命令mv。

  (4) 撤消文件的命令rm。

  (5) 肯定文件類型的命令file。

  3. 目錄操做命令

  (1) 創建目錄的命令mkdir(簡稱md)。

  (2) 撤消目錄的命令rmdir(簡稱rd)。

  (3) 改變工做目錄的命令cd。

  4. 系統詢問命令

  (1) 訪問當前日期和時間命令date。

  (2) 詢問系統當前用戶的命令who。

  (3) 顯示當前目錄路徑名的命令pwd。

9.2.3  重定向與管道命令

  1. 重定向命令

  在Linux系統中,由系統定義了三個文件。其中,有兩個分別稱爲標準輸入和標準輸出的文件,各對應於終端鍵盤輸入和終端屏幕輸出。它們是在用戶註冊時,由Login程序打開的。這樣,在用戶程序執行時,隱含的標準輸入是鍵盤輸入,標準輸出即屏幕(輸出)顯示。但用戶程序中可能不要求從鍵盤輸入,而是從某個指定文件上讀取信息供程序使用;一樣,用戶可能但願把程序執行時所產生的結果數據寫到某個指定文件中而非屏幕上。

  2. 管道命令

  人們又進一步把重定向思想加以擴充,用符號「|」來鏈接兩條命令,使其前一條命令的輸出做爲後一條命令的輸入。

9.2.4  通訊命令  

  1. 信箱通訊命令mail

  信箱通訊是做爲在UNIX的各用戶之間進行非交互式通訊的工具。發信者把要發送的消息寫成信件,「郵寄」到對方的信箱中。

  2. 對話通訊命令write

  用這條命令可使用戶與當前在系統中的其餘用戶直接進行聯機通訊。

  3. 容許或拒絕接收消息的mesg命令

  其格式爲:

      mesg[-n][-y]

9.2.5  後臺命令  

  有些命令須要執行很長的時間,這樣,當用戶鍵入該命令後,便會發現本身已無事可作,要一直等到該命令執行完畢,方可再鍵入下一條命令。這時用戶天然會想到應該利用這段時間去作些別的事。UNIX系統提供了這種機制,用戶能夠在這種命令後面再加上「&」號,以告訴Shell將該命令放在後臺執行,以便用戶能在前臺繼續鍵入其它命令,完成其它工做。

     9.3  聯機命令接口的實現

 

9.3.1  鍵盤終端處理程序  

  在微機或終端上所配置的鍵盤終端處理程序應具備下述幾方面的功能:① 接收用戶從終端上打入的字符;② 字符緩衝,用於暫存所接收的字符;③ 回送顯示;④ 屏幕編輯;⑤ 特殊字符處理。

  1. 字符接收功能

  爲了實現人機交互,鍵盤終端處理程序必須可以接收從終端輸入的字符,並將之傳送給用戶程序。有兩種方式可實現字符接收功能:

  (1) 面向字符方式。

  (2) 面向行方式。

  2. 字符緩衝功能

  爲了能暫存從終端鍵入的字符,以下降中斷處理器的頻率,在終端處理程序中,還必須具備字符緩衝功能。字符緩衝可採用如下兩種方式之一:

  (1) 專用緩衝方式。

  (2) 公用緩衝方式。

 

圖9-1  兩種緩衝方式

  3. 回送顯示

  回送顯示(回顯)是指每當用戶從鍵盤輸入一個字符後,終端處理程序便將該字符送往屏幕顯示。有些終端的回顯由硬件實現,其速度較快,但每每會引發麻煩。如當用戶鍵入口令時,爲防止口令被盜用,顯然不應有回顯。此外,用硬件實現回顯也缺少靈活性,於是近年來多改用軟件來實現回顯,這樣能夠作到在用戶須要時纔回顯。

  4. 屏幕編輯

  用戶常常但願能對從鍵盤打入的數據(字符)進行修改,如刪除(插入)一個或多個字符。爲此,在終端處理程序中,還應能實現屏幕編輯功能,包括能提供若干個編輯鍵。經常使用的編輯鍵有:

  (1) 刪除字符鍵。

  (2) 刪除一行鍵。

  (3) 插入鍵。

  (4) 移動光標鍵。

  (5) 屏幕上卷或下移鍵等。

  5. 特殊字符處理

  終端處理程序必須能對若干特殊字符進行及時處理,這些字符是:

  (1) 中斷字符。

  (2) 中止上卷字符。

  (3) 恢復上卷字符。

9.3.2  MS-DOS解釋程序  

  1. 命令解釋程序的做用

  在聯機操做方式下,終端處理程序把用戶鍵入的信息送鍵盤緩衝區中保存。一旦用戶鍵入回車符,便當即把控制權交給命令解釋程序。顯然,對於不一樣的命令,應有能完成特定功能的命令處理程序與之對應。可見,命令解釋程序的主要做用是在屏幕上給出提示符,請用戶鍵入命令,而後讀入該命令,識別命令,再轉到相應命令處理程序的入口地址,把控制權交給該處理程序去執行,並將處理結果送屏幕上顯示。若用戶鍵入的命令有錯,而命令解釋程序未能予以識別,或在執行中間出現問題時,則應顯示出某一出錯信息。

  2. 命令解釋程序的組成

  MS-DOS是1981年由Microsoft公司開發的、 配置在微機上的OS。隨着微機的發展,MS-DOS的版本也在不斷升級,由開始時的1.0版本升級到1994年的6.X版本。在此期間,它已經是事實上的16位微機OS的標準。咱們以MS-DOS操做系統中的COMMAND.COM處理程序爲例來講明命令解釋程序的組成。它包括如下三部分:

  (1) 常駐部分。

  (2) 初始化部分。

  (3) 暫存部分。

  3. 命令解釋程序的工做流程

  系統在接通電源或復位後,初始化部分得到控制權,對整個系統完成初始化工做,並自動執行AUTOEXEC.BAT文件,以後便把控制權交給暫存部分。暫存部分首先讀入鍵盤緩衝區中的命令,判別其文件名、擴展名及驅動器名是否正確。若發現有錯,在給出出錯信息後返回;若無錯,再識別該命令。

 

圖9-2  COMMAND.COM的工做流程

9.3.3  Shell解釋程序

  1.  Shell命令的特色

  前面咱們介紹了MS-DOS的命令解釋程序,它很是簡單。而Shell命令解釋程序就複雜得多,這主要是由於Shell命令的類型多而複雜所致。主要表現以下:

  (1) 一條命令行中含有多個命令。

  (2) 具備不一樣的分隔符。

  2. 二叉樹結構的命令行樹

  1) 命令表型結點

  Shell命令解釋程序按命令行語句的結構順序進行檢查,每當遇到「;」及「&」分隔符時便爲之創建一個命令表型結點,將分隔符左面部分構成該結點的左子樹,右面部分構成右子樹。例以下面的命令行所構成的命令樹如圖9-3所示:

   Command 1;Command 2;& Command 3

 

圖9-3  命令表型結點及其左、右子樹

  2) 管道文件型結點

  當Shell命令解釋程序遇到管道算符「Ι」時,先爲之創建一個管道文件型結點,再將分隔符左面部分構成該結點的左子樹,右面部分構成右子樹。例如對下面的命令行所構成的命令樹如圖9-4所示:

    Command 1 Ι Command 2 Ι  Command 3

 

圖9-4  管道文件型結點及其左、右子樹

  3) 簡單命令型結點

  對於簡單命令,在命令行中僅有一條命令,它是屬於能夠當即執行的命令,系統無需爲它創建二叉樹結構的命令行樹。當命令解釋程序讀入鍵盤緩衝區中的命令後,若斷定它是簡單命令,再進一步肯定是不是內部命令。

  3.  Linux命令解釋程序的工做流程  

  在Linux系統中,系統初啓後,內核爲每一個終端用戶創建一個進程,去執行Shell解釋程序。

 

圖9-5  Shell基本執行過程及父子進程之間的關係

    

9.4  系統調用的概念和類型

 

9.4.1  系統調用的基本概念  

  在計算機系統中,一般運行着兩類程序:系統程序和應用程序。爲了防止應用程序對OS的破壞,應用程序和OS的內核是運行在不一樣的狀態,即OS的內核是運行在系統態,而應用程序是運行在用戶態。

  1. 系統態和用戶態

  如在2.3.1小節中所述,在計算機系統中設置了兩種狀態:系統態(或稱爲核心態)和用戶態。在實際運行過程當中,處理機會在系統態和用戶態間切換。相應地,現代多數OS將CPU的指令集分爲特權指令和非特權指令兩類。

  (1) 特權指令。

  (2) 非特權指令。

  2. 系統調用

  在OS中提供系統調用的目的,是使應用程序能夠經過它間接調用OS中的相關過程,取得相應的服務。系統調用在本質上是應用程序請求OS內核完成某功能時的一種過程調用,但它是一種特殊的過程調用,它與通常的過程調用有下述幾方面的明顯差異:

  (1) 運行在不一樣的系統狀態。

  (2) 狀態的轉換。

  (3) 返回問題。

  (4) 嵌套調用。

 

圖9-6  系統功能的調用

  3. 中斷機制

  系統調用是經過中斷機制實現的,而且一個操做系統的全部系統調用,都經過同一個中斷入口來實現。如MS-DOS提供了INT 21H,應用程序經過該中斷獲取操做系統的服務。

9.4.2  系統調用的類型  

  1. 進程控制類系統調用

  主要用於對進程控制的系統調用有:

  (1) 建立和終止進程的系統調用。

  (2) 得到和設置進程屬性的系統調用。

  (3) 等待某事件出現的系統調用。

  2. 文件操縱類系統調用

  對文件進行操縱的主要系統調用以下:

  (1) 建立和刪除文件。

  (2) 打開和關閉文件的系統調用。

  (3) 讀和寫文件的系統調用。

  3. 進程通訊類系統調用

  在單處理機系統中,OS常常採用消息傳遞方式和共享存儲區方式。當採用消息傳遞方式時,在通訊前需先打開一個鏈接。爲此,應由源進程發出一條打開鏈接的系統調用,而目標進程則應利用接受鏈接的系統調用表示贊成進行通訊;而後,在源和目標進程之間即可開始通訊。能夠利用發送消息的系統調用或者用接收消息的系統調用來交換信息。通訊結束後,還須再利用關閉鏈接的系統調用結束通訊。

9.4.3  POSIX標準

  目前許多操做系統都提供了上面所介紹的各類類型的系統調用,實現的功能也相相似,但在實現的細節和形式方面卻相差很大,這種差別給實現應用程序與操做系統平臺的無關性帶來了很大的困難。爲解決這一問題,國際標準化組織ISO給出的有關係統調用的國際標準POSIX1003.1(Portable Operating System IX),也稱爲「基於UNIX的可移植操做系統接口」。

 

圖9-7  UNIX/Linux系統程序、庫函數、系統調用的分層關係

       

9.5  UNIX系統調用

 

9.5.1  進程控制

  該類系統調用包括建立進程的系統調用fork、終止進程的系統調用exit、等待子進程結束的系統調用wait等十多條。

  1. 進程的建立和終止

  (1) 建立進程(fork)。

  (2) 終止進程(exit)。

  2. 改變進程映像和等待

  (1) 執行一個文件(exec)。

  (2) 等待子進程結束(wait)。

  3. 其它進程調用

  (1) 得到進程ID。

  (2) 得到用戶ID。

  (3) 進程暫停(pause)。

9.5.2  文件操縱

  用於對文件進行操縱的系統調用是數量最多的一類系統調用,其中包括建立文件、 打開文件、關閉文件、讀文件及寫文件等二十多條。

  1. 文件的建立和刪除

  (1) 建立文件(creat)。

  (2) 刪除文件。

  2. 文件的打開和關閉

  (1) 打開文件(open)。

  (2) 關閉文件(close)。

  3. 文件的讀和寫

  讀和寫文件的系統調用是read和write。僅當用戶利用open打開指定文件後,方可調用read或write對文件執行讀或寫操做。兩個系統調用都要求用戶提供三個輸入參數:① 文件描述符fd。② buf緩衝區首址。對讀而言,這是用戶所要求的信息傳送的目標地址;對寫而言,則是信息傳送的源地址。③ 用戶要求傳送的字節數nbyte。

  4. 創建與文件的鏈接和去鏈接

  (1) 鏈接(link)。

  (2) 去鏈接(unlink)。

9.5.3  進程通訊和信息保護  

  1. 進程通訊

  (1) 消息機制。

  (2) 共享存儲器機制。

  (3) 信號量機制。

  2. 信息維護

  在UNIX系統中,設置了許多條用於系統維護的系統調用,下面介紹經常使用的幾條。

  (1) 設置和得到時間。

  (2) 得到進程和子進程時間(times)。

  (3) 設置文件訪問和修改時間(utime)。

  (4) 得到當前UNIX系統的名稱(uname)。

     

9.6  系統調用的實現

 

  系統調用的實現與通常過程調用的實現相比,二者間有很大差別。對於系統調用,控制是由原來的用戶態轉換爲系統態,這是藉助於陷入機制來完成的,在該機制中包括陷入硬件機構及陷入處理程序兩部分。

9.6.1  系統調用的實現方法

  1. 系統調用號和參數的設置 

  每每在一個系統中設置了許多條系統調用,並賦予每條系統調用一個惟一的系統調用號。在系統調用命令(陷入指令)中把相應的系統調用號傳遞給中斷和陷入機制的方法有不少,在有的系統中,直接把系統調用號放在系統調用命令(陷入指令)中,如 IBM 370和早期的UNIX系統,是把系統調用命令的低8位用於存放系統調用號;在另外一些系統中,則將系統調用號裝入某指定寄存器或內存單元中,如MS-DOS是將系統調用號放在AH寄存器中,Linux則是利用EAX寄存器來存放應用程序傳遞的系統調用號。

  每一條系統調用都含有若干個參數,在執行系統調用時,如何設置系統調用所需的參數,即如何將這些參數傳遞給陷入處理機構和系統內部的子程序(過程),經常使用的實現方式有如下幾種:

  (1) 陷入指令自帶方式。

  (2) 直接將參數送入相應的寄存器中。

  (3) 參數表方式。

 

圖9-8  系統調用的參數形式

  2. 系統調用的處理步驟  

  在設置了系統調用號和參數後,即可執行一條系統調用命令。不一樣的系統可採用不一樣的執行方式。在UNIX系統中,是執行CHMK命令;而在MS-DOS中則是執行INT 21軟中斷。

  3. 系統調用處理子程序的處理過程  

  系統調用的功能主要是由系統調用子程序來完成的。對於不一樣的系統調用,其處理程序將執行不一樣的功能。

9.6.2  UNIX系統調用的實現 

  1.  CPU環境保護

  當用戶程序處在用戶態,且在執行系統調用命令(即CHMK命令)以前,應在用戶空間提供系統調用所需的參數表,並將該參數表的地址送入R0寄存器。在執行CHMK命令後,處理機將由用戶態轉爲核心態,並由硬件自動地將處理機狀態長字(PSL)、程序計數器(PC)和代碼操做數(code)壓入用戶核心棧,繼而從中斷和陷入向量表中取出trap.S的入口地址,而後便轉入中斷和陷入總控程序trap.S中執行。

  2.  AP和FP指針

  爲了實現系統調用的嵌套使用,在系統中還設置了兩個指針,其一是系統調用參數表指針AP,用於指示正在執行的系統調用所需參數表的地址,一般是把該地址放在某個寄存器中,例如放在R12中;再者,還須設置一個調用棧幀指針。所謂調用棧幀(或簡稱棧幀),是指每一個系統調用須要保存而被壓入用戶核心棧的全部數據項;而棧幀指針FP則是用於指示本次系統調用所保存的數據項。每當出現新的系統調用時,還須將AP和FP303壓入棧中,圖9-9示出了在trap.S總控程序執行後用戶核心棧的狀況。

 

圖9-9  用戶核心棧

  3. 肯定系統調用號

  由上所述得知,在中斷和陷入發生後,應先經硬件陷入機構予以處理,再進入中斷和陷入總控程序trap.S,在保護好CPU現場後再調用trap.C繼續處理。

  4. 參數傳送

  參數傳送是指由trap.C程序將系統調用參數表中的內容從用戶區傳送到User結構的U.U-arg中,供系統調用處理程序使用。

  5. 利用系統調用定義錶轉入相應的處理程序

  在UNIX系統中,對於不一樣(編號)的系統調用,都設置了與之相應的處理子程序。爲使不一樣的系統調用能方便地轉入其相應的處理子程序,也將各處理子程序的入口地址放入了系統調用定義表即Sysent[]中。

  6. 系統調用返回前的公共處理

  在UNIX系統中,進程調度的主要依據是進程的動態優先級。隨着進程執行時間的加長,其優先級將逐步下降。每當執行了系統調用命令並由系統調用處理子程序返回到trap.C後,都將從新計算該進程的優先級;另外,在系統調用執行過程當中,若發生了錯誤使進程沒法繼續運行時,系統會設置再調度標誌。處理子程序在計算了進程的優先級後,又去檢查該再調度標誌是否已又被設置。若已設置,便調用switch調度程序,再去從全部的就緒進程中選擇優先級最高的進程,把處理機讓給該進程去運行。

9.6.5  Linux系統調用 

  與UNIX類似,Linux採用相似技術實現系統調用。Linux系統在CPU的保護模式下提供了四個特權級別,目前內核都只用到了其中的兩個特權級別,分別爲「特權級0」(即內核態)和「特權級3」(即用戶態)。用戶對系統調用不能任意攔截和修改,以保證內核的安全性。Linux最多能夠有190個系統調用。應用程序和Shell須要經過系統調用機制訪問Linux內核(功能)。

9.6.6  Win32的應用程序接口  

  首先須要說明的是應用程序接口(API)與系統調用的區別和聯繫。API是一個函數的定義,說明如何得到一個給定的服務,而系統調用是經過中斷向內核發出的一個請求。一個API函數可能不與任何系統調用相對應,也能夠調用若干個系統調用,不一樣的API函數可能封裝了相同的系統調用。

      

 

習    題 8:

 

  1. 操做系統用戶接口中包括哪幾種接口? 它們分別適用於哪一種狀況?

  2. 什麼是WIMP 技術? 它被應用到何種場合?

  3. 聯機命令一般有哪幾種類型? 每種類型中包括哪些主要命令?

  4. 什麼是輸入輸出重定向? 舉例說明之。

  5. 何謂管道聯接? 舉例說明之。

  6. 爲了將已存文件更名,應用什麼UNIX命令?

  7. 要想將工做目錄移到目錄樹的某指定結點上,應使用什麼命令?

  8. 若是但願把file 1的內容附加到原有的文件file 2的末尾,應用什麼命令?

  9. 試比較mail和write命令的做用有何不一樣。

  10. 聯機命令接口由哪幾部分組成?

  11. 終端設備處理程序的主要做用是什麼? 它具備哪些功能?

  12. 命令解釋程序的主要功能是什麼?

  13. 試說明MS-DOS的命令處理程序COMMAND.COM的工做流程。

  14. Shell命令有何特色? 它對命令解釋程序有何影響。

  15. 試舉例說明如何創建二叉樹結構的命令行樹。

  16. 試比較通常的過程調用與系統調用。

  17. 系統調用有哪幾種類型?

  18. 如何設置系統調用所需的參數?

  19. 試說明系統調用的處理步驟。

  20. 爲何在訪問文件以前,要用open系統調用先打開該文件?

  21. 在UNIX系統中是否設置了專門用來刪除文件的系統調用? 爲何?

  22. 在IPC軟件包中包含哪幾種通訊機制? 在每種通訊機制中設置了哪些系統調用?

  23.  rap.S是什麼程序? 它完成哪些主要功能?

  24. 在UNIX系統內,被保護的CPU環境中包含哪些數據項?

  25.  rap.C是什麼程序? 它將完成哪些處理?

  26. 爲方便轉入系統調用處理程序,在UNIX系統中配置了什麼樣的數據結構?

 

 

 

相關文章
相關標籤/搜索