操作系統知識

来源:https://www.cnblogs.com/yinshoucheng-golden/archive/2018/04/06/8727933.html
-Advertisement-
Play Games

進程的三態模型 細分進程狀態圖 進程的通信 互斥:一次只能供一個進程使用的資源。 同步:多個進程併發進行,可能需要等待。 生產者與消費者 PV操作 PV操作是實現進程同步與互斥的常用方法,在執行期間不可分割。P代表申請一個資源,V代表釋放一個資源。 P操作定義 :S1:=S1-1,若S>=0,則P操... ...


進程的三態模型

細分進程狀態圖

進程的通信

互斥:一次只能供一個進程使用的資源。

同步:多個進程併發進行,可能需要等待。

生產者與消費者

PV操作

PV操作是實現進程同步與互斥的常用方法,在執行期間不可分割。P代表申請一個資源,V代表釋放一個資源。

P操作定義 :S1:=S1-1,若S>=0,則P操作繼續進行;若S<0,則置該進程為阻塞狀態(因為無資源可用),並將其插入阻塞隊列。

V操作定義:S2:=S2+1,若S>0,則V操作繼續進行;若S<=0,則從阻塞狀態喚醒一個進程,並將其插入就緒隊列,然後執行V操作的進程繼續。

信號量S:信號量的值表示相應資源的使用情況。所謂信號燈,實際上就是用來控制進程狀態的一個代表某一資源的存儲單元。信號量S>=0時,S表示可用資源的數量。執行一次P操作意味著請求分配一個資源,因此S的值減1;當S<0時,表示已經沒有可用資源,S的絕對值表示當前等待該資源的進程數。請求者必須等待其他進程釋放該類資源,才能繼續運行。而執行一個V操作意味著釋放一個資源,因此S的值加1;若S<=0,表示有某些進程正在等待該資源,因此要喚醒一個等待狀態的進程,使之運行下去。

臨界資源:多道程式系統環境中,各進程可以共用各類資源,但有些資源只能供一個進程使用,稱為臨界資源,如印表機、共用變數等。

臨界區:進程中對臨界資源實施操作的那段程式。

例如:設公交車司機的活動是啟動車輛,正常行車,到站停車;售票員的活動是關車門,售票,開車門,用信號量PV操作來實現他們的同步。

解析:

設置S1=0,S2=0。

司機進程:P(S1);啟動車輛;正常行駛;到站停車;V(S2);

售票員進程:關車門;V(S1);售票;P(S2);開車門;

首先,售票員執行關車門(V操作S1+1);然後,司機執行啟動車輛(P操作S1-1);第三步,司機停車(V操作S1+1),第四步,售票員開車門(P操作S2-1)。

若用PV操作控制進程P1,P2,P3,P4和P5併發執行的過程,需要設置5個信號量S1,S2,S3,S4和S5,且信號量S1~S5的初始值都等於零。如下的執行圖中a和b處應分別填寫(1),c和d出應分別填寫(2),e和f處應分別填寫(3)。

(1)P(S1)和V(S2)、V(S3)

(2)P(S2)和V(S4)

(3)P(S3)P(S4)和V(S5)

死鎖

電腦系統中的互斥資源,如兩個進程同時使用印表機,或同時進入臨界區必然會出現的問題。所謂死鎖是指兩個以上的進程互相都要求對方已經占有的資源導致無法繼續進行下去的現象。

如:系統有3個進程A、B、C,這3個進程都需要5個系統資源,那麼系統至少有多少個資源才不會發生死鎖。

解析:所有進程分配滿足需要的資源數減1,然後增加一個資源分配任意一個進程即可滿足條件,即3*4+1=13。

銀行家演算法

1、對於進程發出的每一個系統可以滿足的資源請求命令加以檢測,如果發現分配資源後系統進入不安全狀態,則不予分配。

2、若分配資源後系統仍處於安全狀態,則實施分配。

3、與死鎖預防相比,提高了資源利用率,但檢測分配後系統是否安全增加了系統開銷。

假設系統中有三類互斥資源R1、R2、R3,可用資源數分別是9、8、5。在T0時刻系統中有P1、P2、P3、P4、P5進程,這些進程對資源的最大需求量和已分配資源數如下圖,如果進程按()序列執行,那麼系統狀態是安全的。

解析:

已分配資源數R1:7,R2:7,R3:5。

剩餘資源數:R1:2,R2:1,R3:0。

P1進程還需資源數:R1:5,R2:3,R3:1。

P2進程還需資源數:R1:0,R2:1,R3:0。

P3進程還需資源數:R1:6,R2:0,R3:1。

P4進程還需資源數:R1:0,R2:0,R3:1。

P5進程還需資源數:R1:2,R2:3,R3:1。

釋放的資源數量為:現有資源數+已經分配資源數

為防止死鎖進程執行順序為:P2àP4àP5àP1àP3

分區存儲管理

(1)固定分區

(2)可變分區

假設電腦系統的記憶體大小為128K,採用可變分區分配方式進行記憶體分配,當前系統記憶體分塊情況如下圖所示,現有作業4申請9K記憶體,不同分配方式產生的結果?

迴圈首次適應法

(3)可重定位分區

頁式存儲管理

段式存儲管理

段頁式存儲

最好的提高了主存利用率。

局部性原理

(1)時間局部性

  1. int i,a = 0;
  2. for(i=1;i<100;i++){
  3.    for(j=1;j<100;j++){
  4.       a+=j
  5.    }
  6. }
  7. printf("結果為":%d,a)

(2)空間局部性

進程P有6個頁面,頁號分別為0~5,頁面大小為4K,頁面變換表如下所示。表中狀態位等於1和0分別表示頁面在記憶體和不在記憶體。假設系統給進程P分配了4個存儲塊,進程P要訪問的邏輯地址為十六進位1165H,那麼該地址經過變換後,其物理地址應為十六進位();如果進程P要訪問的頁面4不存在記憶體,那麼應該淘汰頁號為()的頁面。

解析:4K=1012,即12位。邏輯地址1165H,其頁號為1,查頁表後知頁幀號為3,該地址經過變換後,其物理地址應為頁幀號3拼上頁內地址165H,即十六進位3165H。

系統應該首先淘汰未被訪問的頁面,因為根據程式的局部性原理,最近被訪問的相鄰頁面下次被訪問的概率更大,所以應該淘汰5。

虛擬存儲

虛擬存儲是具有請求調入功能和置換功能,僅能把作業的一部分裝入主存便可運行作業的存儲系統。

(1)請求分頁系統。

(2)請求分段系統。

(3)請求段頁式系統。

缺頁中斷

在一臺按位元組編址的8位電腦系統中,採用虛擬頁式存儲管理方案,頁面的大小為1KB,且系統中沒有使用塊表(或聯想存儲器)。圖示的是劃分成6個頁面的用戶程式。圖中swap指令放在記憶體的1023單元中,操作數A存放在記憶體的3071單元中,操作數B存放在記憶體的5119單元中。執行swap指令將產生()次缺頁中斷。

解析:指令只產生一次中斷,A產生2次,B產生2次,共計5次。

頁面置換演算法

(1)最佳置換演算法

(2)先進先出(FIFO)置換演算法

(3)最近最少未使用(LRU)置換演算法

(4)最近未用(NRU)置換演算法

設備管理技術

(1)通道技術

(2)DMA技術

(3)緩衝技術

(4)Spooling技術

文件的物理結構

(1)連續結構

(2)鏈接結構

(3)索引結構

(4)多個物理塊的索引結構

文件目錄

在下圖所示的樹型文件系統中,方框表示目錄,圓圈表示文件,"/"表示路徑中的分隔符,"/"在路徑之首時表示根目錄。

假設當前目錄是D2,進程A以如下兩種方式打開文件f2。

方式j    fd1=open("____/f2",O_RDONLY);

方式k    fd1=open("/D2/W2/f2",O_RDONLY);

其中,方式j的工作效率比方式k的工作效率高,因為採用方式j,文件系統是從____。

解析:

(1)相對路徑W2。

(2)當前路徑開始查找文件f2,系統查找時間少,讀取f2文件次數不變。

文件存儲空間管理

(1)空閑區表

(2)位示圖

位示圖是利用二進位的一位來表示磁碟中的一個盤塊的使用情況。當其值為"0"時,表示對應的盤塊空閑;為"1"時,表示已經分配。有的系統把"0"作為盤塊已分配的標記,把"1"作為空閑標誌。(它們的本質上是相同的,都是用一位的兩種狀態標誌空閑和已分配兩種情況。)磁碟上的所有盤塊都有一個二進位與之對應,這樣,由所有盤塊所對應的位構成一個集合,稱為位示圖。

某文件管理系統在磁碟上建立了位示圖(bitmap),記錄磁碟的使用情況。若磁碟上的物理塊依次編號為0,1,2,…,系統中字長32位,每一位對應文件存儲器上的一個物理塊,取值0和1分別表示空閑和占用,如下圖所示。

假設將4195號物理塊分配給某文件,那麼該物理塊的使用情況在位示圖中的第()個字中描述,系統應該將該字的第()位置1。

解析:

(a)(4195-0+1)/32=131.125=第132字

(b)131*32=4192,即0~4191塊,第0位4192,第1位4193,第2位4194,第三位4195。

某字長為32位的電腦的文件管理系統採用位示圖(bitmap)記錄磁碟的使用情況。若磁碟的容量為300GB,物理塊的大小為1MB,那麼位示圖的大小為()個字。

解析:300G/32MB=9600

(3)空閑塊鏈

(4)成組鏈接法

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • "— Java攻城獅學習路線 —" 一. JavaScript基礎 輸出 使用 window.alert() 彈出警告框。 使用 document.write() 方法將內容寫到 HTML 文檔中。 使用 innerHTML 寫入到 HTML 元素。 使用 console.log() 寫入到瀏覽器的 ...
  • 常用的一些快捷鍵: Windows + e 我的電腦Ctrl + Tab 網頁間不同頁面切換F2 重命名Ctrl+Shift+S 另存為 前端的一些常識:前端意義:將效果圖生成網頁網頁組成:文字、圖片、輸入框、視頻、音頻、超鏈接Web標準:Html 結構標準;Css 表現標準;Js 行為標準 瀏覽器 ...
  • 最近想用LayaBox做個小游戲,然而Laya本身不自帶構建工具。然後覺得寫模塊化的東西還是用webpack好使,用es6的語法也比較清晰。 於是就裝了webpack,只用babel-loader來編譯用es6寫的代碼。配置文件如下: 一開始我沒有設定mode,雖然我在babelrc裡面寫了comp ...
  • 一、對象冒充 其原理如下:構造函數使用 this 關鍵字給所有屬性和方法賦值(即採用類聲明的構造函數方式)。因為構造函數只是一個函數,所以可使 Parent 構造函數 成為 Children 的方法,然後調用它。Children 就會收到 Parent 的構造函數中定義的屬性和方法。原理:就是把 ... ...
  • Object構造函數 創建自定義對象最簡單的方式就是創建一個 Object 的實例,然後再為它添加屬性和方法: 缺點 代碼冗餘,會產生大量重覆代碼 無法識別對象(無法知道對象的類型) 對象字面量 對象字面量相比較於 Object 構造函數,代碼會比較直觀一些: 缺點 代碼冗餘,會產生大量重覆代碼 無 ...
  • 原生JavaScript實現頁面回到頂部的功能,如果想實現點擊一個按鈕讓滾動條回到最頂部的功能,首先可能就會想到它是從底部位置移動到頂部的位置 它是一個運動的過程,只要知道當前位置(current Position)和想要到達的位置(target Position)不就可以啦 只不過以前用的都是元素... ...
  • 迭代器在STL運用廣泛,類似容器的迭代已經成為其重要特性,而迭代器模式則是利用迭代器概念進行的抽象運用,迭代器模式運用廣泛和有用,因為其能夠不考慮數據的存儲方式,而是直接面對數據進行迭代,也就是說我們不用考慮集合是數組(或vector)、鏈表、棧還是隊列,而是通過統一的介面進行順序的訪問。 作用 迭 ...
  • 我有點像瘋子,一個人開了一天酒店,來寫這個。我發現我寫這個系列,閱讀的人很少。也許是程式員不重視思想的東西,也許是感覺我寫的很Low,無所謂,我只想告訴同行,程式員重在編程思想,有了編程思想技術的路才能走的更長更遠。我很孤獨,在自己的小世界里存活著。但是我也要耐著孤獨,向更好的方向發展需要孤獨,孤獨 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...