操作系統-個人總結與思考
- 什麼是進程(Process)和線程(Thread)?有何區別?
進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。一個線程可以創建和撤銷另一個線程,同一個進程中的多個線程之間可以併發執行。
進程與應用程序的區別在於應用程序作爲一個靜態文件存儲在計算機系統的硬盤等存儲空間中,而進程則是處於動態條件下由操作系統維護的系統資源管理實體。
2.談談操作系統的內存管理
圍繞內存管理三個核心詞展開:翻譯、保護、內存分配。
1.保護:程序是如何在內存中執行的? 運行時重定位(爲執行程序而對其中出現的地址所做的修改)支持移動和保護。
2.內存分配:
連續內存分配:碎片問題、內存緊縮時間成本太高
分段: 段號+段內偏移 碎片問題
分頁: 頁號+偏移
段頁結合: 段號+偏移 (邏輯地址)—> 頁號+偏移(線性地址) —> 物理頁號+偏移(物理地址)
3.翻譯:地址翻譯
另外就是虛擬內存技術:
優點:
實現:按需調頁(請求調頁)
頁面置換策略:
1.FIFO:先入先出
2.OPT(MIN):選擇未來最遠將使用的頁淘汰
3.LRU:最近最少是用
LRU實現:計數器法、頁碼棧法、近似實現的clock算法
其他問題: 需要給進程分配頁框(幀) => 全局、局部 => 顛簸 =>Belady異常=>棧式算法
談談CPU調度
CPU調度的概念,搶佔式調度與非搶佔式調度,
CPU調度算法:
(1)先到先服務調度 FCFS
(2)最短作業優先調度 SJF、SRJF
(3)優先級調度
(4)轉輪法調度 RR
(5)多級隊列調度
(6)多級反饋隊列調度
Linux系統採用調度方法:採用優先權的、基於信用度的、可搶佔的RR調度談談進程互斥與同步
互斥與臨界區的概念
進程同步的概念
解決臨界區問題的方法-實現互斥與同步
(1)一般軟件方法
(2)關中斷方法
(3)硬件原子指令方法
(4)信號量方法