分頁page:記憶體塊大小固定(幀)
頁表:page - frame
解決頁表過大:
最不常用演算法(least frequently used, lfu),將訪問次數最少的資料換出
belady現象,分配更多物理記憶體,缺頁反而更多的現象,如fifo
全域性頁面置換演算法
抖動(thrashing),記憶體嚴重不足時,大量時間耗費在換入換出操作上,程式執行效率大大降低的現象
pcb實現方式:鍊錶、索引表
生命週期管理:
程序(執行緒)狀態:new、ready、running、blocked、exit
os對各狀態分別維護佇列,並按優先順序區分多個佇列
各就緒態程序分時占用cpu,os管理時鐘
程序掛起(suspend):將記憶體中的資料換出到磁碟中;就緒或阻塞時可掛起,優先掛起阻塞程序;相反的過程:程序解掛/啟用(activate)
執行緒(thread)
執行緒實現方式:
程序控制
實時排程演算法(嵌入式)
多處理器排程演算法(多核)
優先順序反轉
互斥實現方式
多個程序互斥,eisenberg and mcguire演算法(迴圈),bakery演算法(排隊取號,同號比id)
需要共享資料(flag、turn),存在忙等待,需要硬體支援(原子性load、store)
更高階的抽象,主流方式
鎖的實現
class lock
lock::acquire()
lock::release()
以上是忙等版本,適用於臨界區較小的情況;如果臨界區較大,則加入阻塞和喚醒語句,會產生上下文切換開銷
優點:適用於多處理器,多程序,多臨界區,簡單
需要考慮:忙等待,隨機進入臨界區導致飢餓,優先順序反轉
排程約束,sem初值設為0,thread a在某處p(),thread b在某處v(),確保thread a在p()之後的語句一定在thread b的v()執行之後才會開始執行
producer - buffer - consumer:buffer用於存放產品,buffer大小為n;生產者向buffer中放入產品,消費者從buffer中取走產品;mutex
控制同一時間只有乙個生產者或消費者可以對buffer操作,fullbuffers
和emptybuffers
實現buffer滿時阻塞生產者、空時阻塞消費者
訊號量的實現,p()
和v()
的實現使用禁用中斷、test-and-set等原子指令,需要等待時將執行緒放入等待佇列使之掛起
訊號量的一些問題:開發難度較大,忘記釋放訊號量,語句順序錯誤導致死鎖
管程 monitor
用管程實現生產者-消費者模型
hansen vs. hoare
一些經典同步問題:
讀者 - 寫者問題(寫者優先,管程實現):
資源分配圖 resource allocation graph,一組頂點v和邊e的集合
死鎖出現的必要條件
死鎖解決方法,約束力度逐漸減弱;實際os中往往選擇忽略死鎖問題,因為解決開銷過大,影響了效能
演算法死鎖檢測 deadlock detection,允許死鎖出現,通過檢測演算法發現死鎖並恢復
死鎖恢復 recovery from deadlock
程序間通訊 inter-process communication, ipc
訊號 signal,短小的bit,不能用於傳遞資料;不同的訊號對應有handler,kernel傳送訊息給程序,並跳轉到handler的stack
管道 pipe,用於傳遞位元組流,使得多個程式組合起來實現更負責的功能;shell對其子程序的輸入輸出重定向,串聯成管道,kernel中的乙個buffer
訊息佇列 message queue,無繼承關係的程序間,結構化的資料結構
共享記憶體 shared memory,兩個程序的共享區域,直接通訊,快速,需要設定同步互斥;通過將同一塊物理記憶體分別對映到兩個程序的page中
socket機制,詳見網路原理課程
檔案元資料資訊(名稱、大小、修改時間等等)儲存在檔案頭中
檔案描述符,open(filename)返回的乙個int值,表示已開啟檔案表的乙個index,對應到乙個檔案
開啟的檔案需要的元資料:檔案指標表示讀寫位置,開啟計數表示開啟乙個檔案的程序數量,為0時從檔案表中移除檔案,檔案磁碟位置,訪問許可權
塊(邏輯單元,比如4kb大小)< - > 扇區(物理單元),讀寫是以乙個扇區為單位的,即使只讀寫乙個位元組
順序訪問、隨機訪問、基於內容訪問(資料庫)
os不關心複雜的檔案結構,只看做位元組流
對不同使用者(owner、同組使用者、所有使用者)設定訪問許可權,讀、寫、執行
對檔案共享(多個程式都可以訪問同乙個檔案)的支援,互斥,不同粒度的鎖
目錄是一張表,構成目錄和檔案的樹形結構,hash表實現
通過路徑逐級解析找到檔案,通過快取當前工作目錄來加快這一過程
掛載,跨越不同的檔案系統進行訪問,乙個目錄對應乙個檔案系統,unix
檔案別名,多個檔名指向同乙個檔案,硬鏈結(多個檔案項,刪除時減少計數,為0時才真正刪除),軟鏈結(快捷方式)
避免形成路徑的迴圈(你中有我,我中有你)
檔案系統類別,for windows - fat、ntfs,for unix - ext2/3
虛擬檔案系統層,遮蔽掉底層檔案系統,為應用提供統一api
常用資料會快取到記憶體中,預先讀取,延遲寫入,以頁為粒度快取,減少對硬碟的讀寫次數
開啟檔案的資料結構,將被開啟檔案的檔案控制塊讀入記憶體,放入表中,偏移量offset表示需要讀寫檔案的何處,查詢到檔案對應的磁碟位置後將資料返回給程式;對檔案的鎖,強制或建議
對儲存空間的分配,時間空間效率,類似於記憶體分配,頁表
空閒空間管理,用bitmap表示,先將硬碟上的bit置為1,再分配空間,以保證一致性;也可以通過鍊錶實現
多磁碟管理 raid,冗餘磁碟陣列,通過多磁碟提高速度、可靠性;os實現或硬體實現
磁碟排程,在os層面組織請求順序,減少磁碟讀寫
(完)
作業系統筆記 清華大學陳渝
分頁page 記憶體塊大小固定 幀 頁表 page frame 解決頁表過大 最不常用演算法 least frequently used,lfu 將訪問次數最少的資料換出 belady現象,分配更多物理記憶體,缺頁反而更多的現象,如fifo 全域性頁面置換演算法 抖動 thrashing 記憶體嚴重...
作業系統from清華大學向勇,陳渝 筆記(一)緒論
下篇和下下篇在這裡 二 作業系統的啟動 中斷 異常 系統呼叫 三 計算機體系結構,位址空間 連續記憶體分配 四 非連續記憶體分配 分段,分頁 五 覆蓋和交換,虛擬記憶體 index 1 2 什麼是作業系統 1 3 為什麼學習os 1 4 怎麼學習作業系統 1 5 作業系統例項 1 6作業系統歷史 1...
清華大學作業系統公開課筆記(向勇 陳渝)
核心功能 物理記憶體管理 虛擬記憶體管理 檔案系統管理 中斷處理和io裝置驅動 底層硬體 核心特徵 併發 指一段時間內多個程式執行 而並行是指乙個時間點上多個程式執行,要求多個cpu 計算機系統中同時存在多個執行的程式,需要os管理和排程 共享 同時 訪問或互斥共享 虛擬利用多道程式設計技術,讓每乙...