系統調用的實現
DOS: h號中斷的系統服務功能以及參數列表
Linux: x (或)中斷向量用來實現系統調用
現代操作系統一般不直接提供系統調用指令接口 通常做法 提供一套方便實用的應用程序函數庫 (應用程序設計接口API )
從應用層面重新封裝系統調用屏蔽復雜的系統調用傳參問題提供高級語言接口 有助於快速開發
在更高層面提供系統程序設計模板庫和類庫 如
Windows /XP 提供封裝系統用Win API和高層編程設施MFC以及ATL
Linux 提供封裝系統調用符合POSIX標准 API和C運行庫
系統調用的處理過程
為了保證OS不被用戶程序破壞 不允許用戶程序直接訪問OS的系統程序和數據
用戶怎樣得到系統服務的呢?
需要有一個類似於硬件中斷處理的處理機構當用戶使用操作系統調用時產生一條相應的指令處理機在執行到該指令時發生相應的中斷並發出有關的信號給該處理機構該處理機構在收到了處理機發來的信號後 啟動相關的處理程序去完成該系統調用所要求的功能
在系統中為控制系統調用服務的機構被稱為陷入(TRAP)或異常處理機構相對應把由於系統調用引起處理機中斷的指令稱為陷入或異常指令(或稱訪管指令)
在操作系統中每個系統調用都對應一個事先給定的功能號如 等
在陷入指令中必須包括對應系統調用的功能號而且在有些陷入指令中還帶有傳給陷入處理機構和內部處理程序的有關參數必須為實現系統調用功能的子程序編造入口地址表
每個入口地址與相應的系統程序名對應陷入處理程序把陷入指令包含功能號與入口地址表有關項對應 系統調用功能號驅動有關子程序執行
在系統調用處理結束之後用戶程序需利用系統調用返回結果繼續執行
保護和恢復現場
在進入系統調用處理之前陷入處理機構還需保存處理機現場
在系統調用處理結束之後要恢復處理機現場現場被保護在特定的內存區或寄存器中
[] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/czxt/201311/24196.html