【操作系統】操作系統接口


 

用戶接口 

  聯機命令類型

  • 系統訪問類:如注冊命名Login;
  • 磁盤操作類:如磁盤格式化命令Format,復制整個軟盤命令Diskcopy,軟盤比較命令Diskcomp,備份命令Backup;
  • 文件操作類:如顯示文件命令type,拷貝文件命令copy,文件比較命令comp,重新命名命令Rename,刪除文件命令erase;
  • 目錄操作命令:如建立子目錄命令mkdir, 顯示目錄命令dir,刪除子目錄命令rmdir,顯示目錄結構命令tree, 改變當前目錄命令chdir;
  • 其他命令:如輸入輸出重定向命令,管道連接,過濾命令,批命令。

  鍵盤終端處理程序  

  為了實現人機交互,還須在微機或終端上配置相應的鍵盤終端處理程序,它應具有下述幾方面的功能:

  • 接收用戶從終端上打入的字符。
  • 字符緩沖,用於暫存所接收的字符。
  • 回送顯示。
  • 屏幕編輯。
  • 特殊字符處理。

  命令解釋程序

  終端處理程序把用戶鍵入的信息送鍵盤緩沖區中保存。一旦用戶鍵入回車符,便立即把控制權交給命令處理程序。命令解釋程序的主要作用是在屏幕上給出提示符,請用戶鍵入命令,然后讀入該命令,識別命令,再轉到相應命令處理程序的入口地址,把控制權交給該處理程序去執行,並將處理結果送屏幕上顯示。若用戶鍵入的命令有錯,而命令解釋程序未能予以識別,或在執行中間出現問題時,則應顯示出某一出錯信息。

系統調用

  系統調用提供了用戶程序和操作系統之間的接口,應用程序通過系統調用實現其與OS的通信,並可取得它的服務。系統調用不僅可供所有的應用程序使用,而且也可供OS自身的其它部分,尤其是命令處理程序使用。系統調用可分為:進程控制、文件操縱、通信管理、設備管理和信息維護等幾大類。

  計算機設置了兩種狀態:系統態(也稱為管態或核心態)和用戶態(也稱為目態)。操作系統在系統態運行,而應用程序只能在用戶態運行。處理機會在系統態和用戶態間切換。

  相應地,CPU的指令集分為特權指令和非特權指令兩類。特權指令是在系統態時運行的指令,是關系到系統全局的指令;非特權指令是在用戶態時運行的指令。

  系統調用和一般調用的區別

  • 運行在不同的系統狀態
  • 狀態的轉換通過軟中斷進入
  • 返回時需要對進程做優先級分析,只有當其優先級最高時才繼續執行,否則重新調度。
  • 嵌套調用時系統一般對深度有限制

  標准POSIX(Portable Operating System IX),也稱為“基於UNIX 的可移植操作系統接口”。  

 

   系統調用是通過中斷機制實現的,並且一個操作系統的所有系統調用都通過同一個中斷入口來實現。當應用程序使用OS的系統調用時,產生一條相應的指令,CPU 在執行這條指令時發生中斷,並將有關信號送給中斷和陷入硬件機構,該機構收到信號后,啟動相關的中斷與陷入處理程序進行處理,實現該系統調用所需要的功能。中斷分為外中斷和內中斷,是指由於外部設備事件所引起的中斷,如通常的磁盤中斷、打印機中斷等;而內中斷(也稱陷入)則是指由於CPU 內部事件所引起的中斷,如程序出錯(非法指令、地址越界)、電源故障等。內中斷(trap)也被譯為“捕獲”或“陷入”。通常,陷入是由於執行了現行指令所引起的;而中斷則是由於系統中某事件引起的,該事件與現行指令無關。由於系統調用引起的中斷屬於內中斷,因此把由於系統調用引起中斷的指令稱為陷入指令。

  每條系統調用一個唯一的系統調用號。給系統調用傳遞參數的方式有三種:陷入指令自帶參數、直接將參數送入相應的寄存器中、參數表方式(將系統調用所需的參數放入一張參數表中,再將指向該參數表的指放在某個指定的寄存器中)。

  系統調用處理步驟:

  1. CPU從用戶態轉為系統態,保護CPU現場,將相關內容壓棧;
  2. 分析系統調用類型,找到子程序入口,交由子程序執行;
  3. 執行完后恢復被中斷的CPU現場。

UNIX系統調用

  進程控制

  • 創建進程fork:創建一個子進程,它繼承了父進程幾乎所有的屬性,並具有與其父進程基本上相同的進程映像。
  • 終止進程exit:進程實現自我終止,通常,在父進程創建子進程時,便在子進程的末尾安排一條exit系統調用。
  • 等待子進程結束wait:將調用者進程自身掛起,直至它的某一子進程終止為止。
  • 獲得進程ID:用於獲得進程標識符的系統調用。
  • 獲得用戶ID:用於獲得用戶ID 的系統調用。
  • 進程暫停pause:可用此系統調用將調用進程掛起,直至它收到一個信號為止。

  進程間通信

  • 消息機制。用戶(進程)在利用消息機制進行通信時,必須先利用msgget系統調用來建立一個消息隊列。若成功,便返回消息隊列描述符msgid,以后用戶便可利用msgid去訪問該消息隊列。用戶(進程)可利用發送消息的系統調用msgsend向用戶指定的消息隊列發送消息;利用msgrcv系統調用從指定的消息隊列中接收指定類型的消息。
  • 共享存儲器機制。當用戶(進程)要利用共享存儲器機制進行通信時,必須先利用shmget系統調用來建立一個共享存儲區,若成功,便返回該共享存儲區描述符shmid。以后,用戶便可利用shmid 去訪問該共享存儲區。進程在建立了共享存儲區之后,還必須再利用shmat將該共享存儲區連接到本進程的虛地址空間上。以后,在進程之間便可利用該共享存儲區進行通信。當進程不再需要該共享存儲區時,可利用shmdt 系統調用來拆除進程與共享存儲區間的連接。
  • 信號量機制

  文件操作

  • 創建文件(creat)。系統調用creat的功能是根據用戶提供的文件名和許可權方式,來創建一個新文件或重寫一個已存文件。創建后的文件隨即被打開,並返回其文件描述符fd。若creat執行失敗,便返回“-1”。
  • 打開文件(open)。設置系統調用open的目的,是為了方便用戶及簡化系統的處理。open 的功能是把有關的文件屬性從磁盤拷貝到內存中,以及在用戶和指名文件之間建立一條快捷的通路,並給用戶返回一個文件描述符fd。文件被打開后,用戶對文件的任何操作都只須使用fd而非路徑名。
  • 關閉文件(close)。當把一個文件用畢且暫不訪問時,開用戶程序與該文件之間已經建立的快捷通路
  • 讀和寫文件read 和write
  • 連接和去連接(link 和unlink)。為了實現文件共享,必須記住所有共享該文件的用戶數目。為此,在該文件的索引結點中設置了一個連接計數i.link。每當有一用戶要共享某文件時,須利用系統調用link 來建立該用戶(進程)與此文件之間的連接,並對i.link 做加1操作。當用戶不再使用此文件時,應利用系統調用unlink去斷開此連接,亦即做i.link的減1 操作。當i.link 減1 后結果為0 時,表示已無用戶需要此文件,此時才能將該文件從文件系統中刪除。

  unix中有一個trap.S文件,它是中斷和陷入總控程序。該程序用於中斷和陷入的一般性處理。為提高運行效率,該文件采用匯編語言編寫。為了實現系統調用的嵌套使用,在系統中還設置了兩個指針,其一是系統調用參數表指針AP;再者,還須設置一個調用棧幀指針FP。當 trap.S完成被中斷進程的CPU環境和AP及FP指針的保存后,將會調用公共處理程序trap.C,以繼續處理本次的系統調用所要完成的公共處理部分(確定系統調用號、實現參數傳送、轉入相應的系統調用處理子程序)。

  

參考

《計算機操作系統》第三版  湯小丹


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM