操作系統知識

来源: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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...