作業系統筆記 清華大學陳渝

2021-10-01 21:51:14 字數 3623 閱讀 1156

分頁page:記憶體塊大小固定(幀)

頁表:page - frame

解決頁表過大:

最不常用演算法(least frequently used, lfu),將訪問次數最少的資料換出

belady現象,分配更多物理記憶體,缺頁反而更多的現象,如fifo

全域性頁面置換演算法

抖動(thrashing),記憶體嚴重不足時,大量時間耗費在換入換出操作上,程式執行效率大大降低的現象

pcb實現方式:鍊錶、索引表

生命週期管理:

程序(執行緒)狀態:new、readyrunningblocked、exit

os對各狀態分別維護佇列,並按優先順序區分多個佇列

各就緒態程序分時占用cpu,os管理時鐘

程序掛起(suspend):將記憶體中的資料換出到磁碟中;就緒或阻塞時可掛起,優先掛起阻塞程序;相反的過程:程序解掛/啟用(activate)

執行緒(thread)

執行緒實現方式:

程序控制

實時排程演算法(嵌入式)

多處理器排程演算法(多核)

優先順序反轉

互斥實現方式

離開臨界區

flag[i] = false;

多個程序互斥,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操作,fullbuffersemptybuffers實現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管理和排程 共享 同時 訪問或互斥共享 虛擬利用多道程式設計技術,讓每乙...