王道考研-操作系統學習筆記
- 聯機命令接口(交互式命令)&脫機命令接口(批處理命令接口)
- 單道批處理程序時的監控程序是操作系統的原型,多道批處理程序時操作系統正式誕生
- 運行機制
- 兩種指令
- 特權指令
- 非特權指令
- 兩種狀態(用PSW 寄存器的某個標記位表示)
- 核心態(管態)
- 用戶態(目態)
- 兩種程序
- 應用程序
- 內核程序
- 兩種指令
- 中斷和異常
- 本質:在多道批處理后引入了中斷機制,本質:中斷發生之后需要操作系統介入,進行一些管理工作
- 用戶態-->核心態的切換是通過【中斷】實現的,且中斷是唯一的途徑
- 核心態-->用戶態的切換是通過一個特權指令,獎PSW寄存器的標記設置為“用戶態”即可
- 中斷分為兩大類
- 內中斷(信號來源:CPU內部,與當前執行的指令有關,也成為異常、陷入)
- 自願中斷(如內核系統調用)
- 強迫中斷(硬件故障,缺頁。軟件中斷,除0)
- 外中斷(信號來源:CPU外部,與當前執行的指令五關)
- 外設請求(IO操作完成)
- 人工干預(用戶強制中斷執行)
- 內中斷(信號來源:CPU內部,與當前執行的指令有關,也成為異常、陷入)
- int 指令(interrupt 又稱為 陷入\trap\訪管指令,在用戶態調用,立即引發內中斷,處理系統調用的相關代碼進入核心態)
- CPU 每執行一條指令后就會去檢查是否有中斷發生
- 進程
- 進程由PCB(進程控制塊)、程序段、數據段組成
- 進程控制-- 實現進程各種狀態的轉換,通過原語實現 ,原語是被 【關中斷】和【開中斷】指令包含的原語代碼,CPU不會被外部中斷打斷
- 進程控制原語(阻塞原語和喚醒原語需要成對出現 )
- 更新PCB中的信息
- 將PCB 插入合適隊列
- 分配回收資源
- 進程通信指是進程間的信息交換
- 共享存儲(必須互斥、PV操作)
- 基於數據結構的共享,低級通信
- 基於存儲區域的共享,高級通信
- 消息傳遞(以格式化的消息message為單位,通過操作系統提供的發送\接收消息原語進行數據交換)
- 直接通信,消息直接掛到接收進程的消息隊列
- 間接通信,消息要先發到中間實體
- 管道通信
- 半雙工通信,同一個時刻只能向一個方向通信,兩個管道實現全雙工
- 需要互斥,寫滿write 阻塞,讀空read阻塞。
- 沒寫滿,不允許讀,沒讀空,不允許寫。
- 共享存儲(必須互斥、PV操作)
- 線程
- 傳統的進程是執行流調度的最小單位,現在線程是CPU執行的基本單元,進一步提高了系統的並發度。
- 進程只作為除CPU之外的系統資源的分配單元
- 線程實現方式
- 用戶級線程,線程通過應用程序的線程庫創建,在用戶空間,由用戶程序負責調度,操作系統看不到
- 內核級線程,線程通過操作系統內核創建,由內核調度。在內核空間。
- 多線程模型
- 多對一、一對一、多對多
- 調度機
- 不能調度的情況:1、處理中斷的過程中 2、操作系統內核臨界區中不能進行調度 3、原語不能進行調度
- 進程切換
- 對原來運行進程的各種數據的保存
- 對新的進程的各種數據的恢復(計數器、程序狀態字、各種數據寄存器等處理機現場信息,一般保存再進程控制塊中、進程控制塊在隊列中、常駐內存)
- 多級反饋隊列調度算法:多個隊列優先級從高到低,時間片從小到大
- 進程同步、互斥
- 進程異步,各並發執行的進程以各自獨立的、不可預知的速度向前推進,(步調不一致)
- 進程同步,直接制約關系,協調多個多個異步進程的工作次序,使他們之間相互合作(步調一致)
- 互斥指臨界資源的訪問方式(識別臨界資源)
- 代碼分為:進入區、臨界區、退出區、剩余區
- 遵循原則:空閑讓進、忙則等待、有限等待、讓權等待
- 進程互斥的軟件實現方法
- 進程互斥的硬件時間方法
- 中斷屏蔽方法(開/關中斷指令)
- 優點:簡單、高效;缺點:不適用多處理機,只適用操作系統內核進程、不適用用戶進程
- TestAndSet(TS指令、TSL testandsetLock) 是用硬件實現的,執行過程不會被中斷
- SWAP 指令
- 中斷屏蔽方法(開/關中斷指令)
- 信號量實現進程互斥、同步、前驅
- 實現互斥:
- 分析出臨界區
- 設置互斥信號量 mutex 設置為1
- (信號量是指操作系統中的某種資源,臨界區也可以是一個資源)
- (進程)程序代碼先對互斥信號量進行P操作,
- (進程)程序代碼再對互斥信號量進行V操作
- 實現同步(由於進程並發執行,時間片輪轉、程序內順序執行、程序間存在異步性,同一個程序的多個進程(線程)間的代碼片段交替執行次序是不確定的)
- 需要先分析什么地方需要實現同步關系(進程間代碼片段1要比代碼片段2先執行)
- 設置同步信號量S,初始為0
- 在“前操作”之后執行V(S)
- 在“后操作”之前執行P(S)
- 實現前驅(多級同步關系)
- 需要為每一對前驅關系各設置一個同步變量
- 在“前操作”之后對響應的同步變量執行V操作
- 在“后操作”之前對響應的同步變量執行P操作
- 實現互斥:
- 內存
- 操作系統負責內存的分配和回收
- 連續分配
- 固定分區分配
- 動態分區分配 z
- 非連續分配
- 頁框(物理塊)是內存的分配和回收單位,實際物理地址還是字節,是由頁號+頁內偏移量計算得到的,計算機實際操作的地址仍然是字節
- 邏輯地址和物理地址的轉換
- 計算進程內頁號(邏輯頁號),計算方法:地址除以頁大小
- 計算進程內頁面內偏移量(頁內便宜量),計算方法:地址模頁大小
- 根據頁表得到實際物理塊號
- 根據物理塊號(塊大小可以得到物理地址)+頁內偏移量得到 物理地址
- 頁表項大小的計算
- 頁表在內存中是連續存儲的,數組存儲而不是鍵值對,比如頁表項是3個字節大小,邏輯0號頁,對應的物理地址存在0~2 三個字節中
- 每個進程有一個頁表,頁表有頁號和塊號組成
- 每個頁表項長度是相同的,頁號是隱含的,這樣通過數組就能實現頁號和塊號的對應,計算頁表項長度的方法
- 未運行時頁表啟始地址和頁表長度(校驗頁號是否合法)是放在進程pcb中,當進程被調度時,放入ptr頁表寄存器中。
- 因為時間局部性和空間局部性引入了快表機制,又稱為聯想寄存器(TLB),內存中頁表又稱為慢表。
- 單級頁表的問題
- 頁表必須連續存放,如果頁表很大,需要占用很多連續的頁框
- 沒必要讓整個頁表常駐內存,大部分情況只需要特定的幾個頁表就可以
- 多級頁表的大小不能超過一個頁面
- 基本分段管理(和分頁管理不同是分配的單位不一樣)
- 按照程序自身邏輯 划分為若干段,各段之間不相鄰,段內地址連續,段內地址從0開始
- 頁是信息的物理單位,分頁的主要目的是為了實現離散分配,提高利用率,僅僅是系統管理需要,對用戶是不可見的
- 段是信息的邏輯單位。分段的主要目的是為了更好的滿足程序員的需求。一個段通常包含着一組屬於一個邏輯模塊的信息。分段是對用戶可見的,用戶編程時需要顯示的給出段名
- 頁大小時固定由系統決定的,段的長度不固定。決定於用戶編寫的程序。分頁是一維的,分段是二維的
- 分段更容易實現信息的共享和保護(因為分段是按照代碼邏輯划分的,可控制)
- 段頁式內存管理
- 一個程序有一個段表,每個段項對應一個頁表。一個進程可能有多個頁表
- 連續分配
- 邏輯上對內存空間進行擴充(虛擬內存)
- 覆蓋、交換
- 虛擬內存技術
- 傳統的缺點:一次性裝入內存、一直駐留內存
- 請求調頁
- 頁換出
- 實現邏輯地址和物理地址的轉換
- 內存保護
- LRU (最近最少使用算法)
- 從當前的訪問位置,向前追溯訪問歷史,最久沒被用到的元素,被淘汰掉。
- 駐留集:分配給進程的物理塊集合,常駐內存
- 操作系統負責內存的分配和回收
- 文件管理
- 在很多操作系統中磁盤塊的大小設置和內存頁大小一致,便於內存和外存間的數據交換
- 外存的管理方式和內存思路一樣,分塊、邏輯地址和物理地址及映射表
- FAT (顯式連接文件分配表)整個磁盤僅僅有一張,索引文件每個文件都有一個分配表
- 平時使用的個人電腦是把一個磁盤划分為多個邏輯卷,在大型操作系統中,也可以由多個磁盤組成一個邏輯卷
- Unix 系統使用“成組鏈接法”跟蹤空閑磁盤號,試用超大文件系統,由超級塊記錄
- 兩種打開文件表
- 系統的打開文件表(整個操作系統只有一張),提供了打開技術器,一共被多少進程打開
- 用戶進程的打開文件表
- 磁盤初始化
- 低級格式化,划分扇區
- 磁盤分區
- 邏輯格式化(創建文件系統)
- 自舉程序(bootstrap),ROM 存放了一個很小的“自舉裝入程序”,完整的自舉程序裝在啟動塊中
- IO控制方式
- 程序控制方式(輪詢:CPU干預頻率高:傳送單位字:IO設備--》CPU寄存器--》內存:CPU和IO 串行工作)
- 中斷驅動方式(中斷,每個指令執行末尾檢查中斷:CPU每次IO操作之前和完成之后CPU介入,干預頻率低:每次中斷一個字節:IO設備--》CPU寄存器--》內存:CPU和IO並行處理,傳輸大量數據需要很多中斷,耗費CPU)
- DMA方式(直接內存訪問:僅僅在傳送一個或者多個數據塊開始結束時才需要CPU干預:每次讀寫一個塊:IO設備--》內存:CPU 和IO並行,性能進一步提高。只能讀寫連續塊,否則也需要CPU多次干預)
- 通道控制方式(通道是一種硬件,弱雞版CPU,可以識別並執行一系列通道指令:每次讀寫完一組塊數據CPU干預:IO設備-》內存:實現復雜,需要專門硬件支持)
- 注意的問題:
- 完成一次讀寫操作的流程
- CPU干預的頻率
- 數據傳送的單位
- 數據的流向
- 主要的缺點和優點
- 什么是脫機技術
- 脫離主機(CPU)的控制進行輸入和輸出的操作。緩解CPU和設備間的速度矛盾,實現數據的預輸入和緩輸出。紙帶機-》外圍控制-》磁帶-》計算機
- 假脫機(SPOOLING) 用軟件的方式模擬脫機技術。用輸入井模擬外圍控制機+磁帶
