一、操作系統接口
操作系統接口是連接操作系統和應用軟件的函數,表現爲系統調用
二、系統調用
2.1 什麼是系統調用
根據進程訪問資源的特點,可以把進程在系統上的運行分爲兩個級別:
- 用戶態:可以直接讀取用戶程序的數據的進程;
- 內核態:可以訪問計算機任何資源的進程
凡是與系統態級別的資源有關的操作(如文件管理、進程控制、內存管理等)都必須通過系統調用方式向操作系統提出服務請求,並由操作系統代爲完成。
系統調用功能大致分類:
- 設備管理:完成設備的請求、釋放、啓動等功能;
- 文件管理:完成文件的讀、寫、創建和刪除等功能;
- 進程控制:完成進程的創建、撤銷、阻塞和喚醒等功能;
- 進程通信:完成進程間消息傳遞或信號傳遞等功能;
- 內存管理:完成內存分配、回收以及獲取作業佔用內存區大小及地址等功能。
2.2 系統調用的實現
內存被硬件分割成兩部分:內核態和用戶態
用戶態的應用程序不能進入內核態,因爲內核中保存了操作系統的重要信息,比如 Linux 的 root 密碼,如果被用戶程序直接訪問,很容易引起災難;
操作系統保證用戶態的應用程序不能進入內核態的方法:通過比較 DPL(目標特權級別) 和 CPL(當前特權級別) 的大小
系統調用如何進入內核態:硬件提供了主動進入內核的方法——中斷:中斷指令將 CPL 改成 0