作業系統程式、儲存和I/O
文章目錄
一、程式
1.前驅圖
- 有向無迴圈圖(有迴圈表明存在死鎖)
- 直接前驅
- 直接後繼
- 初始結點
- 終止結點
- 權重:程式量或執行時間
2.程式
1.概念
為充分利用系統資源,在主存中同時存放多道作業執行,各作業並行執行。
是資源擁有的基本單位。
2.特徵
1)動態性
2)併發行
3)獨立性
4)非同步性
5)結構特性:由程式段、資料段和程式控制塊三部分組成
3.使用Bernstein條件判斷相鄰程式是否可併發執行
R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)={}
3.程式狀態轉換
原語
- create
- suspend
- active
- wakeup
- block
4.程式控制塊PCB
主要包括四個方面資訊:
1)程式識別符號
2)處理機狀態
3)程式排程資訊
4)程式控制資訊
PCB組織方式
1)連結方式
2)索引方式
5.訊號量集解決程式同步問題
- 生產者—消費者問題
- 讀者—寫者問題
- 圖書館閱覽室問題
- 哲學家進餐問題
- 理髮師問題
- 吃水果問題
- 司機—售票員問題
- 過河問題
6.執行緒
1.概念
作為分派和排程的基本單位,共享建立它的程式的資源。
作業系統的任務排程,實際上的排程物件是執行緒,而程式只是給執行緒提供了虛擬記憶體、全域性變數等資源。
2.執行緒執行的三個狀態
1)執行狀態
2)就緒狀態
3)阻塞狀態
7.作業與作業排程
作業>程式>程式>執行緒
1.作業執行的三個階段和三種狀態
1)收容階段,後備狀態
2)執行階段,執行狀態
3)完成階段,完成狀態
2.排程演算法
1)先來先服務FCFS
可用於作業排程,也可用於程式排程。
2)短作業優先SJF
作業越短,優先順序越高。長短以作業要求的執行時間衡量。SJF演算法可以分別用於作業排程和程式排程。
3)優先順序排程演算法PSA
基於作業的緊迫程度,由外部賦予作業相應的優先順序。可以用於作業排程和程式排程。
4)高響應比優先排程演算法HRRN
R =(作業等待時間+需執行時間)/ 需執行時間
5)輪轉排程演算法RR
主要用於程式排程。
在輪轉法中,時間片長度的選取非常重要,時間片長度的選擇會直接影響系統開銷和響應時間。
6)多級反饋佇列排程演算法
目前公認的一種較好的程式排程演算法。
1 設定多級就緒佇列;
2 各級就緒佇列具有不同大小的時間片;
3 一個新程式在系統佇列;
4 按佇列優先順序高到低進行程式排程;
5 一程式進入較高優先順序佇列時可能要重新排程。
排程演算法的效能:具有較好的效能,能照顧到各種使用者的利益
3.產生死鎖的必要條件
1)互斥請求
2)請求和保持條件
3)不可搶佔條件
4)迴圈等待條件
4.避免死鎖-銀行家演算法
設Requesti是程式Pi的請求向量,如果程式Pi需要K個Rj類資源,當Pi發出資源請求後,系統按下述步驟進行檢查:
1.如果Requesti≤Needi,則轉向步驟2;否則認為出錯。(因為它所需要的資源數已超過它所宣佈的最大值。
2.如果Requesti≤Available,則轉向步驟3;否則,表示系統中尚無足夠的資源,Pi必須等待
3.系統試探把要求的資源分配給程式Pi,並修改下面資料結構中的數值:
Available:=Available-Requesti;
Allocation:=Allocation+Requesti;
Needi:= Needi- Requesti;
4.系統執行安全性演算法,檢查此次資源分配後,系統是否處於安全狀態。若安全,正式將資源分配給程式Pi,以完成本次分配;否則,將試探分配作廢,恢復原來的資源分配狀態,讓程式Pi等待。
5.死鎖的檢測-資源分配圖
死鎖定理
S為死鎖狀態的充分條件是 當且僅當S狀態的資源分配圖不可完全化簡。
二、儲存器管理
1.程式裝入
-
絕對裝入
程式設計師直接賦予程式中所使用的相對地址,只適用於單道程式環境。
-
可重定位裝入
多道程式環境下無法預知編譯後在記憶體中的位置,故需要採用可重定位裝入方式。通常在程式裝入時一次完成地址變換,故稱靜態重定位。
-
動態執行時裝入
把裝入模組裝入記憶體後,把裝入模組中的邏輯地址轉換為實體地址的過程推遲到程式真正要執行時進行。因此裝入後的所有地址仍為邏輯地址。引入重定位暫存器的支援以地址轉換不影響指令執行速度。
2.連續分配儲存管理方式
1.固定分割槽分配
1)分割槽大小相等
2)分割槽大小不等
2.動態分割槽分配
為描述空閒分割槽和已分配分割槽的情況,設定有兩種形式資料結構:空閒分割槽表和空閒分割槽鏈。
1)首次適應演算法FF
或稱最先適應演算法,該演算法要求空閒分割槽按照首地址遞增的順序排列。
優點:優先使用低地址部分空閒分割槽,保留了高地址部分的大量空閒分割槽,有利於大程式或作業的裝入。
缺點:記憶體的低地址區留下了許多難以利用的很小空閒分割槽,即記憶體“碎片”;演算法每次都從低地址部分開始查詢,這增加了查詢可用空閒分割槽的開銷。
2)迴圈首次適應演算法NF
空閒分割槽按照首地址遞增的順序排列。每次記憶體分配時,不再從表頭(或鏈首)開始查詢,而是從上次分配的空閒分割槽的下一個空閒分割槽開始順序查詢。
優點:記憶體的空閒分割槽分佈較均勻,減少查詢空閒分割槽的開銷。
缺點:經多次分配後,記憶體缺少較大的空閒分割槽,以分配給較大的程式或作業。
3)最佳適應演算法BF
或稱最優適應演算法,該演算法要求將空閒分割槽按從小到大的順序排列。
優點:較大的空閒分割槽被儘量的保留下來,有利於大程式或作業的分配。
缺點:容易產生記憶體碎片;每次分配後需要更新空閒分割槽表(鏈),增加了系統開銷;分割後小的空閒分割槽處於分割槽表(鏈)首,增加了查詢空閒分割槽的時間。
4)最壞適應演算法WF
又稱最差適應演算法,該演算法空閒分割槽按從大到小的順序排列的。
優點:不會產生過多的碎片,有利於中、小程式或作業,且查詢效率高。
缺點:影響大程式或作業的分配。此外,每次分配後需要更新空閒分割槽表(鏈),增加了系統開銷。
5)演算法比較
從搜尋速度上看,FF具有最佳效能。
•首次適應演算法具有最佳效能;空間利用方面,首次適應演算法比最佳適應演算法好,最壞適應演算法最差。
•最佳適應演算法找到的空閒分割槽是最佳的,但記憶體利用率不一定最優;
•首次適應演算法儘可能利用低地址空間,保證了高地址有較大空閒分割槽,以分配給較大的程式或作業;
•最壞適應演算法總是分割大的空閒分割槽,這有利於中、小程式或作業,但不利於較大的程式或作業。在實際系統中,首次適應演算法使用較廣泛。
3.分頁儲存管理
一維查詢,每次查詢要訪問2次記憶體。
1.頁號、頁內偏移地址和邏輯地址關係
邏輯地址=頁號×頁長+頁內偏移地址
頁面與物理塊對映關係如圖。
2.分頁儲存地址轉換
某個邏輯地址,其對應的頁號和頁內(偏移)地址分別為該邏輯地址與頁面大小的商和餘數,然後根據頁號查詢該使用者程式的頁表,獲取相應的物理塊號,並計算最終的實體地址,即:
實體地址=塊號×塊的大小+塊內地址
由於頁表儲存了頁號與物理塊號之間的對映關係,所以,地址轉換任務需藉助頁表來完成。分頁儲存管理的地址轉換如圖。
3.改進-快表
分頁儲存執行一次訪內操作至少要訪問主存兩次。這樣就把程式的執行速度降低一倍。為了提高存取速度,通常設定一個專用的高速緩衝暫存器組,用來存放頁表的一部分。我們把存放在高速緩衝暫存器中的頁表叫快表,這個高速緩衝暫存器又叫聯想存貯器。
設定快表主要是基於區域性性原理,即程式在執行的過程中,一段時間內總是經常訪問某些頁面。地址轉換如圖。
一維查詢,每次查詢要訪問1到2次記憶體。
4.分段儲存管理
頁面的劃分是由機器硬體實現的,沒有考慮使用者程式的邏輯結構,且不利於共享和保護。使用者程式或作業通常由若干段組成,每段都有完整的邏輯意義,且具有不同的長度。為此,提出了分段的離散儲存分配方式。
二維查詢,查詢一個地址要判斷2次越界。
1.邏輯地址結構
使用者程式作業按照程式的邏輯關係,被劃分為若干個具有完整邏輯意義的段,對每個段從“0”開始編號,稱為段號。每段的內部從“0”開始依次編址,稱為段內(偏移)地址。
分段儲存管理中,使用者程式或作業的地址空間由兩部分組成:段號和段內(偏移)地址,其地址結構如圖所示。
如果系統中地址空間長度為32位,其中015位為段內偏移地址,1631位為段號,那麼使用者程式的邏輯地址空間最多可以包括216個段,段號編碼從0~216-1,且每段的大小(即容量)為216=64KB。
2.段表
段表:程式中的邏輯段與記憶體的物理段之間的對應關係。每個段在段表中佔有一個表項,。記錄該段在記憶體中的起始地址、段的長度和段號。
分段儲存的邏輯段物理段對映如圖。
3.分段儲存管理的地址轉換
5.段頁式儲存管理
段頁式儲存管理中,程式或作業的邏輯地址由段號和段內地址組成。機器硬體將段內地址進一步劃分為頁號和頁內地址,其中即高位表示為頁號,低位表示為頁內地址。如圖2.8.
查詢一個地址訪問3次記憶體,判斷2次越界,是二維查詢。
1.段表和頁表示意
2.段頁式儲存管理的地址轉換
6.虛擬儲存器
1.區域性性原理
**時間的區域性性。**如果程式中的某條指令或資料被訪問後,那麼它可能很快會再次被訪問。產生時間區域性性的典型原因是程式中存在迴圈操作;
**空間的區域性性。**如果某個儲存單元被訪問,那麼其附近的儲存單元很快也會被訪問。其典型情況是程式的順序執行。
2.定義
指具有請求調入功能和置換功能,能從邏輯上對記憶體容量加以擴充的一種儲存器系統。
3.特徵
1)多次性
2)對換性
3)虛擬性
4)離散性
7.虛擬儲存器實現方式
1.分頁請求系統
在分頁系統基礎上增加了請求調頁功能和頁面置換功能形成的頁式虛擬儲存系統。置換以頁面為單位,一般採用區域性淘汰。
2.請求分段系統
在分段系統基礎上增加了請求調段以及分段置換功能後形成的段式虛擬儲存系統。
8.頁面置換演算法
1.先進先出頁面置換演算法FIFO
淘汰最先進入記憶體的頁面,不符合程式實際執行規律,效能最差。
2.最佳置換演算法OPT
從記憶體中淘汰以後再也不需要訪問的頁面、或者淘汰在最長時間內不再被訪問的頁面。理論演算法,常用於衡量其他演算法優劣。
3.最近最久未使用置換演算法LRU
最近最久未使用置換演算法是一種比較好的置換演算法,某些情況下效能接近最佳置換演算法,但是它的實現需要較多的硬體支援,導致成本較高。現實情況中,通常使用暫存器或棧來實現最近最久未使用演算法
4.時鐘置換演算法CLOCK
時鐘置換演算法是從最近一段時期內未被訪問的頁面中任意選擇一個頁面予以淘汰,故而也稱最近未使用演算法(NRU)。
三、輸入輸出系統
1. I/O系統中模組間層次
I/O系統中各種I/O模組之間的層次檢視。
1.I/O系統的上下介面
(1)I/O系統介面。是I/O系統與上層系統間介面,向上層提供對裝置進行操作的抽象I/O命令。
(2)軟體/硬體(RW/HW)介面。上面是中斷處理程式和裝置管理器,下面是各種裝置控制器。
2.I/O系統的分層
(1)中斷處理程式。處於I/O系統底層,直接與硬體互動。I/O裝置發來中斷請求訊號時,中斷硬體作初步處理後轉向中斷處理程式。
(2)裝置驅動程式。處於I/O系統次底層,是程式和裝置控制器之間的通訊程式。
(3)裝置獨立性軟體。也稱與裝置無關的軟體,這類I/O軟體獨立於具體使用的物理裝置。
2.I/O通道
根據資訊交換方式分為三類。
1)位元組多路通道
適用於低速裝置。多個裝置以時間片輪轉方式共享子通道。
2)陣列選擇通道
適用於中速裝置。可連線多臺裝置但是隻有一個分配型子通道。當裝置、裝置控制器、分配型子通道都空閒時才可分配。
3)陣列多路通道
適用於高速裝置。結合前兩者特點,以時間片輪轉形式分配,使各子通道分時並行操作。
3.中斷
1. 分類
1)中斷(外中斷,指狹義的“中斷”)
CPU對I/O裝置發來的中斷訊號的一種響應。
2)陷入(內中斷trap)
由CPU內部事件引起的中斷。如運算溢位、程式錯誤、電源故障等。
3)軟中斷
由程式產生的中斷(前兩類中斷也統稱為硬中斷)。
對作業系統而言,主機是指 CPU+記憶體
2.中斷向量表和中斷優先順序
1)中斷向量表
每個表項放置裝置中斷請求的中斷號和中斷處理程式入口地址
2)中斷優先順序
對多中斷訊號源規定不同優先順序
3.對多中斷源的處理方式
1) 遮蔽(禁止)中斷
當處理機正在處理一箇中斷,暫時對任何新的中斷不予理睬,完成本次中斷處理後再檢查是否有中斷的發生
2)巢狀中斷
(1)同時多個不同優先順序中斷請求,CPU優先響應最高優先順序的中斷請求
(2)高優先順序中斷請求搶佔正在執行的低優先順序中斷的處理機。
4.I/O系統中資訊傳輸的控制方式
1)程式直接控制方式(輪詢可程式設計I/O方式)
是唯一序列方式。工作簡單,效率低下。
2)中斷方式
CPU和I/O可並行工作,提高資源利用率和系統吞吐量。但是資料傳輸是以位元組形式進行。
3)DMA方式
使得裝置在 CPU 不參與的情況下,能夠自行完成把裝置 I/O 資料放入到記憶體。那要實現 DMA 功能要有 「DMA 控制器」硬體的支援。
DMA 的工作方式如下:
- CPU 需對 DMA 控制器下發指令,告訴它想讀取多少資料,讀完的資料放在記憶體的某個地方就可以了;
- 接下來,DMA 控制器會向磁碟控制器發出指令,通知它從磁碟讀資料到其內部的緩衝區中,接著磁碟控制器將緩衝區的資料傳輸到記憶體;
- 當磁碟控制器把資料傳輸到記憶體的操作完成後,磁碟控制器在匯流排上發出一個確認成功的訊號到 DMA 控制器;
- DMA 控制器收到訊號後,DMA 控制器發中斷通知 CPU 指令完成,CPU 就可以直接用記憶體裡面現成的資料了;
可以看到, CPU 當要讀取磁碟資料的時候,只需給 DMA 控制器傳送指令,然後返回去做其他事情,當磁碟資料拷貝到記憶體後,DMA 控制機器通過中斷的方式,告訴 CPU 資料已經準備好了,可以從記憶體讀資料了。僅僅在傳送開始和結束時需要 CPU 干預。
4)通道方式(I/O處理機)
雖然DMA方式比起中斷方式來已經顯著地減少了CPU的干預,即已由以字(節)為單位的干預減少到以資料塊為單位的干預,但CPU每發出一條I/O指令,也只能去讀(或寫)一個連續的資料塊。而當我們需要一次去讀多個資料塊且將它們分別傳送到不同的記憶體區域,或者相反時,則須由CPU分別發出多條I/O指令及進行多次中斷處理才能完成。
通道是通過執行通道程式並與裝置控制器共同實現對I/O裝置的控制的。通道程式是由一系列通道指令(或稱為通道命令)所構成的。
5.裝置分配
在進行資料分配時需要如下資料結構:
1)裝置控制表DCT(Device Contro Table)
2)控制器控制表COCT
3)通道控制表CHTC
4)系統裝置表SDT
6.SPOOLing系統
假離線輸入輸出,將獨佔裝置改造成共享裝置的一種技術。
1.主要構成部分
1)輸入井和輸出井
在磁碟上開闢出的兩個儲存區域。輸入井模擬離線輸入時的磁碟,用於收容I/O裝置輸入的資料。輸出井模擬離線輸出時的磁碟,用於收容I/O裝置輸出的資料。
2)輸入緩衝區和輸出緩衝區
在記憶體中開闢兩個緩衝區。用於緩和CPU和磁碟之間速度不匹配的矛盾。輸入緩衝區用於暫存由輸入裝置傳送的資料,之後再傳送到輸入井。輸出緩衝區用於暫存從輸出井傳送的資料,之後再傳送到輸出裝置。
3)輸入程式和輸出程式
輸入程式也稱為預輸入程式,用於模擬離線輸入時的外圍控制機,將使用者要求的資料從輸入裝置傳送到緩衝區,再存入輸入井。CPU需要輸入裝置時,直接從輸入井讀入記憶體。
4)井管理程式
控制作業與磁碟井之間資訊的交換。
2.假離線印表機系統
利用假離線技術可將它改造為一臺可供多個使用者共享的列印裝置,從而提高裝置的利用率,也方便了使用者。共享印表機技術已被廣泛地用於多使用者系統和區域網路中。假離線列印系統主要有以下三部分:
(1) 磁碟緩衝區。
(2) 列印緩衝區。
(3) 假離線管理程式和假離線列印程式。
3.SPOOLing系統特點
(1) 提高了I/O的速度。
(2) 將獨佔裝置改造為共享裝置。
(3) 實現了虛擬裝置功能。
7.緩衝區引入
原因:
1)緩和CPU與I/O裝置間速度不匹配的矛盾
2)減少對CPU的中斷頻率,放寬對CPU中斷響應時間的限制
3)提高CPU和I/O裝置間的並行性
4)解決資料粒度不匹配問題
8.磁碟排程演算法
1.先來先服務(FCFS)
根據程式請求訪問磁碟的先後次序進行排程。僅適用於請求磁碟I/O的程式數目較少的場合使用。
2.最短尋道時間優先(SSTF)
要求訪問的磁軌與當前磁頭所在的磁軌距離最近,使每次的尋道時間最短。
3.掃描(SCAN)演算法
優先考慮磁頭當前的移動方向,下一個訪問物件總是既在當前磁頭移動方向,又距離最近,直到同向再無磁軌需要訪問時才將磁臂換方向後移動。又稱電梯排程演算法。
相關文章
- 作業系統—I/O 模型作業系統模型
- 作業系統(8)儲存器管理作業系統
- 作業系統儲存器管理筆記作業系統筆記
- 作業系統I/O模型及輪詢技術演變作業系統模型
- Java NIO系列1:從作業系統的角度剖析I/OJava作業系統
- 系統程式設計 - I/O模型程式設計模型
- 【作業系統筆記】動態儲存管理作業系統筆記
- 作業系統ENDIAN(位元組儲存次序)作業系統
- 系統級 I/O
- JAVA I/O系統Java
- 如何在Linux系統伺服器中測試儲存/磁碟I/O效能?Linux伺服器
- mmap共享儲存對映(儲存I/O對映)系列詳解
- 作業系統儲存管理和oracle資料庫(第二篇)作業系統Oracle資料庫
- 作業系統儲存管理和oracle資料庫(第三篇)作業系統Oracle資料庫
- 利用oracle儲存過程執行作業系統命令Oracle儲存過程作業系統
- 作業系統儲存管理和oracle資料庫(第一篇)作業系統Oracle資料庫
- 儲存器、I/O組織、微處理器
- 作業系統——c++實現頁式虛擬儲存管理作業系統C++
- Java I/O系統學習系列一:File和RandomAccessFileJavarandomMac
- 作業系統實驗2 程式控制和系統呼叫作業系統
- 完美,騰訊技術專家總結作業系統基礎+程式和執行緒+記憶體+檔案系統+I/O+死鎖+面試題作業系統執行緒記憶體面試題
- I/O埠和I/O記憶體記憶體
- 作業系統-程式管理作業系統
- 【作業系統之程式】作業系統
- 理解作業系統之儲存管理作業系統
- 儲存系統
- 作業系統儲存管理實驗:最近最少使用LRU(Least Recently Used)作業系統AST
- 細說Oracle資料庫與作業系統儲存管理二三事Oracle資料庫作業系統
- AIX系統磁碟I/O效能評估AI
- 04 磁碟儲存和檔案系統
- AIX作業系統掛載iSCSI磁碟裝置,並建立為共享儲存AI作業系統
- 從零開始學Python(七):檔案儲存I/O流和異常捕捉Python
- 作業系統篇-程式管理作業系統
- 【作業系統】程式管理(二)作業系統
- Java I/O系統學習系列二:輸入和輸出Java
- 作業系統檔案轉儲成BLOB作業系統
- 作業系統(1)——作業系統概述作業系統
- 作業系統(一):作業系統概述作業系統