基本特徵
1. 併發
併發是指宏觀上在一段時間內能同時運行多個程序,而並行則指同一時刻能運行多個指令。
並行需要硬件支持,如多流水線、多核處理器或者分佈式計算系統。
操作系統通過引入進程和線程,使得程序能夠併發運行。
2. 共享
共享是指系統中的資源可以被多個併發進程共同使用。
有兩種共享方式:互斥共享和同時共享。
互斥共享的資源稱爲臨界資源,例如打印機等,在同一時刻只允許一個進程訪問,需要用同步機制來實現互斥訪問。
3. 虛擬
虛擬技術把一個物理實體轉換爲多個邏輯實體。
主要有兩種虛擬技術:時(時間)分複用技術和空(空間)分複用技術。
多個進程能在同一個處理器上併發執行使用了時分複用技術,讓每個進程輪流佔用處理器,每次只執行一小個時間片並快速切換。
虛擬內存使用了空分複用技術,它將物理內存抽象爲地址空間,每個進程都有各自的地址空間。地址空間的頁被映射到物理內存,地址空間的頁並不需要全部在物理內存中,當使用到一個沒有在物理內存的頁時,執行頁面置換算法,將該頁置換到內存中。
4. 異步
異步指進程不是一次性執行完畢,而是走走停停,以不可知的速度向前推進。
基本功能
1. 進程管理
進程控制、進程同步、進程通信、死鎖處理、處理機調度等。
2. 內存管理
內存分配、地址映射、內存保護與共享、虛擬內存等。
3. 文件管理
文件存儲空間的管理、目錄管理、文件讀寫管理和保護等。
4. 設備管理
完成用戶的 I/O 請求,方便用戶使用各種設備,並提高設備的利用率。
主要包括緩衝管理、設備分配、設備處理、虛擬設備等。
系統調用
如果一個進程在用戶態需要使用內核態的功能,就進行系統調用從而陷入內核,由操作系統代爲完成。
Linux 的系統調用主要有以下這些:
Task | Commands |
---|---|
進程控制 | fork(); exit(); wait(); |
進程通信 | pipe(); shmget(); mmap(); |
文件操作 | open(); read(); write(); |
設備操作 | ioctl(); read(); write(); |
信息維護 | getpid(); alarm(); sleep(); |
安全 | chmod(); umask(); chown(); |
大內核和微內核
1. 大內核
大內核是將操作系統功能作爲一個緊密結合的整體放到內核。
由於各模塊共享信息,因此有很高的性能。
2. 微內核
由於操作系統不斷複雜,因此將一部分操作系統功能移出內核,從而降低內核的複雜性。移出的部分根據分層的原則劃分成若干服務,相互獨立。
在微內核結構下,操作系統被劃分成小的、定義良好的模塊,只有微內核這一個模塊運行在內核態,其餘模塊運行在用戶態。
因爲需要頻繁地在用戶態和核心態之間進行切換,所以會有一定的性能損失。
中斷分類
1. 外中斷
由 CPU 執行指令以外的事件引起,如 I/O 完成中斷,表示設備輸入/輸出處理已經完成,處理器能夠發送下一個輸入/輸出請求。此外還有時鐘中斷、控制檯中斷等。
2. 異常
由 CPU 執行指令的內部事件引起,如非法操作碼、地址越界、算術溢出等。
3. 陷入
在用戶程序中使用系統調用。