期末知識點復習
- 行程狀態變化
- 死鎖
- 行程調度演算法
- 作業調度演算法
- 先來先服務(FCFS)
- 短作業優先(SJF)
- 高回應比優先(HRRN)
- 死鎖預防
- 頁表暫存器
- 分頁與磁區
- 重定位
- 存盤保護
- 虛存管理和實存管理的區別
- 請求分頁管理
- 缺頁中斷
- 中斷
- Belady現象
- 請求段的分配管理
- LRU置換演算法所基于的思想
- 虛擬存盤
- 頁式虛擬存盤管理
- 程式動態鏈接
- 首次適應演算法的空閑區
- 最差適應演算法
- 記憶體碎片
- 抖動
- 在固定磁區分配中
- 在可變式磁區分配方案
- 可重入碼
- 頁式存盤管理
- 存盤模型
- 段式存盤管理
- IO控制方式
- 程式IO方式
- 中斷IO方式
- DMA方式
- IO通道方式
- 緩沖技術
- 通道
- 虛擬存盤器
- 并行技術
- 緩沖技術
- 單緩沖技術
- 雙緩沖技術
- 磁盤設備
- 磁盤尋址
- SPOOLing假脫機技術
- SPOOLing系統(假脫機)的特點
- 虛擬設備
- IO重定向
- 分時作業系統
- 系統開銷
- CPU利用率
- 通信時中斷計算
- 資料塊處理時間(單緩沖雙緩沖)
- 檔案
- 多道程式設計
- 行程
- UNIX 作業系統 (分時作業系統)
- 作業系統的特征
- 磁區
- 原語
- 系統呼叫
- 五大型別作業系統各自的特點
- 批處理作業系統
- 分時作業系統
- 實時作業系統
- 網路作業系統
- 分布式作業系統
- 比較頁式虛擬存盤器和段式虛擬存盤器的優缺點
- 簡述什么是RAID,RAID0
- SimpleTest
- A
- fill blank
- choice question
- short question
- B
- fill blank
- choice question
- short question
- mooc
整理與往年卷子,copy過來,加深一點印象
- 通道能夠完成(CPU與主存)之間資料的傳輸,
通道是獨立于CPU的、專門負責資料共享以及傳輸作業的處理單元,
通道是計算機系統中傳送資訊和資料的裝置,主要有主存盤器讀寫通道和輸入、輸出通道,
一個獨立于CPU的專門I/O控制的處理機,控制設備與記憶體直接進行資料交換,它有自己的通道命令,可由CPU執行相應指令來啟動通道,并在操作結束時向CPU發出中斷信號,
通道指令的格式一般由:操作碼,記數段,記憶體地址段,結束標志組成,一個系統中可設立三種型別的通道:位元組多路通道、陣列多路通道、選擇通道,
- 沒有了(OS)計算機系統就啟動不起來了,
- 特權指令可以在(任意的時間)中執行,
- 中斷機構是多道作業系統不可缺少的硬體支持,
- 一般用戶更喜歡使用的系統是多道批處理
- 與計算機硬體關系最密切的軟體是 OS
- 現代OS具有并發性和共享性,是由(多道程式)的引入而導致的,
- 早期的OS主要追求的是 系統的效率
- 單用戶單任務 不是多道程式系統,
- 系統的主要功能有 處理機管理、存盤器管理、設備管理、檔案系統
- 單處理機計算機系統中 處理機操作和通道操作是并行操作的,
通道的出現則進一步提高了CPU的效率.這是因為通道是一個特殊功能的處理器.它有自己的指令和程式專門負責資料輸入輸出的傳輸控制.而CPU將“傳輸控制”的功能下放給通道后只負責“資料處理”功能.
- 處理機的所有指令可以在(系統態)中執行
當CPU處于用戶態時,不允許執行特權指令,當CPU處于系統態時,可執行包括特權指令在內的一切機器指令,
- 對程式進行編譯功能不是作業系統直接完成的功能,
作業系統的功能: 行程與處理機管理、作業管理、存盤管理、設備管理、檔案管理,對應即可 編譯器是在作業系統之上的,由編譯器完成程式的編譯
- 要求在規定的時間內對外界的請求必須給予及時相應的OS是 實時系統
- 作業系統是對(計算機資源)進行管理的軟體
- 互動性 對多用戶分時系統最重要
分時系統的四個特點:
1、多路性,允許一臺主機上聯接多臺終端,系統按分時原則為每個用戶服務;
2、獨立性,每個用戶各占一個終端,獨立操作,互不干擾;
3、及時性,用戶的請求能在很短的時間內獲得回應;
4、互動性,用戶可通過終端與系統進行廣泛的人機對話,
分時作業系統是利用時間片,輪轉對多個用戶進行服務,而時間片輪轉的方式肯定是實時性不高的,分時系統所考慮的主要是使多個用戶感覺不到是在多人共享計算機,互動性較好,
- 運行效率 對多道批處理系統最重要,
- 及時性 對實時系統最重要,
- Windows 98 是(單用戶多任務)作業系統,
- 分布式系統和網路系統的主要區別是 共享性
計算機網路系統要求用戶在使用計算機資源時必須了解網路資源的分布情況,在 “共享 ” 某一臺計算機資源時,必須了解網路分布情況,而分布式系統自動為用戶呼叫網路資源,“共享 ” 同一臺計算機時不需要申請資源,透明也是在共享的情況下才體現出來的,所以正確答案應該是共享性,網路系統,用戶實實在在管理整個網路的每個計算機資源
分布式系統自動管理計算機資源,用戶使用起來和單個計算機一樣方便,但是在必要的時候效率會很高,因為后臺會有資源的協調處理,
在一個分布式系統中,一組獨立的計算機展現給用戶的是一個統一的整體,就好像是一個系統似的,系統擁有多種通用的物理和邏輯資源,可以動態的分配任務,分散的物理和邏輯資源通過計算機網路實作資訊交換,系統中存在一個以全域的方式管理計算機資源的分布式作業系統,通常,對用戶來說,分布式系統只有一個模型或范型,在作業系統之上有一層軟體中間件(middleware)負責實作這個模型,一個著名的分布式系統的例子是萬維網(World Wide Web),在萬維網中,所有的一切看起來就好像是一個檔案(Web頁面)一樣,
在計算機網路中,這種統一性、模型以及其中的軟體都不存在,用戶看到的是實際的機器,計算機網路并沒有使這些機器看起來是統一的,如果這些機器有不同的硬體或者不同的作業系統,那么,這些差異對于用戶來說都是完全可見的,如果一個用戶希望在一臺遠程機器上運行一個程式,那么,他必須登陸到遠程機器上,然后在那臺機器上運行該程式,
分布式系統和計算機網路系統的共同點是:多數分布式系統是建立在計算機網路之上的,所以分布式系統與計算機網路在物理結構上是基本相同的,
他們的區別在于:分布式作業系統的設計思想和網路作業系統是不同的,這決定了他們在結構、作業方式和功能上也不同,網路作業系統要求網路用戶在使用網路資源時首先必須了解網路資源,網路用戶必須知道網路中各個計算機的功能與配置、軟體資源、網路檔案結構等情況,在網路中如果用戶要讀一個共享檔案時,用戶必須知道這個檔案放在哪一臺計算機的哪一個目錄下;分布式作業系統是以全域方式管理系統資源的,它可以為用戶任意調度網路資源,并且調度程序是“透明”的,當用戶提交一個作業時,分布式作業系統能夠根據需要在系統中選擇最合適的處理器,將用戶的作業提交到該處理程式,在處理器完成作業后,將結果傳給用戶,在這個程序中,用戶并不會意識到有多個處理器的存在,這個系統就像是一個處理器一樣,
- 網路 作業系統允許在一臺主機上同時連接多臺終端,多個用戶可以通過各自的終端同時互動的使用計算機,
- 如果分時作業系統的時間片一定,那么(用戶數越多),則相應時間越長,
- 下面六個系統中,必須是實時作業系統的有
實時系統,顧名思義對系統的回應時間有要求,航空訂票系統,程序控制系統,機器口語翻譯系統這三個對于請求的回應顯然都應該是實時的,
- 關于OS的描述
OS是系統資源管理程式
OS是為用戶提供服務的程式
OS是其他軟體的支撐程式
- OS的不確定性是指
程式的運行結果不確定
程式的運行次序不確定
程式多次運行的時間不確定
- 程式并發執行的特點
程式執行的間斷性
相互通信的可能性
資源分配的動態性
- 產生死鎖的必要條件
1.請求保持
2.互斥
3.回圈等待
4.不可剝奪
- 在下面關于并發性的敘述中正確的是 并發性是指若干事件在同一時間間隔發生
- 一般來說,為了實作多道程式設計,計算機最需要 更大的記憶體
相比于單道程式設計(記憶體中僅有一道作業),多道程式設計按照一定的作業調度演算法將作業佇列中的作業調入記憶體,使他們共享CPU和各種資源,因此需要更大的記憶體以容納超過一道的作業,
- Unix作業系統的行程控制塊中常駐記憶體的是 proc結構
Unix把行程分成兩大類:
一類是系統行程,另一類是用戶行程,系統行程執行作業系統程式,提供系統功能,作業于核心態,用戶行程執行用戶程式,在作業系統的管理和控制下執行,作業于用戶態,行程在不同的狀態下執行時擁有不同的權力,
在Unix系統中行程由三部分組成,分別是行程控制塊、正文段和資料段,
Unix系統中把行程控制塊分成proc結構和user結構兩部分
proc存放的是系統經常要查詢和修改的資訊,需要快速訪問,因此常將其裝入記憶體
行程狀態變化
就緒態:行程已經準備好運行的狀態,即行程分配到除CPU以外的所有必要資源,
執行態:行程獲得CPU,其程式正在執行的狀態,
阻塞態:正在執行的行程由于發生某事件(如:IO請求、申請緩沖區失敗)暫時無法繼續執行的狀態,亦即行程的執行收到阻塞,此時引起行程調度,OS把處理機分配給另一個就緒行程,
- 時間片到 行程從執行狀態轉變為就緒狀態,
就緒狀態—>運行狀態:
獲得處理機資源(分派處理機的時間片)
運行狀態—>就緒狀態:
1)處于運行狀態的行程時間片用完
2)當有更高優先級的行程就緒時
運行狀態—>阻塞狀態:
1)行程請求資源(外設)使用和分配
2)等待某一事件的發生(IO操作完成)
阻塞狀態—>就緒狀態:
當行程等待事件到來(IO操作結束或者中斷的結束)
-
一個正在運行的行程,當所分配的時間片用完后,將其掛在 就緒佇列

-
某行程在運行程序中需要等待從磁盤上讀入資料,此時該行程的狀態將從運行變為阻塞
-
一個行程被喚醒意味著 行程變為就緒狀態
-
下列性質中,哪一個不是分時系統的特征 成批性
-
在行程狀態轉換時,下列(阻塞態→運行態)轉換是不可能發生的
-
下列各項作業步驟中,(作業調度程式為行程分配CPU)不是創建行程所必需的步驟,分配cpu時間片是執行的程序
-
創建行程的步驟(不需要立馬分配CPU)
1,申請空白PCB(行程控制塊);
2,為新行程分派資源;
3,初始化PCB;
4,將新行程插入就緒佇列;
- 行程通過行程調度程式而獲得CPU
行程優先級可以改變
CPU可以空轉沒有行程運行
得不到滿足轉為就緒狀態
- 從資源管理的角度看,行程調度屬于 處理機管理
處理機管理其實就是給行程控制和分配資源,考慮行程創建、行程撤銷、如何避免沖突、如何死鎖處理,其主要任務就是處理行程通信、行程調度等
-
一個行程釋放一種資源將有可能導致一個或幾個行程 由就緒變運行
-
一次I/O操作的結束,有可能導致 一個行程由睡眠變運行
-
當一個行程從CPU上退下來時,它的狀態應變為 靜止睡眠
-
為使行程由活動就緒變為靜止就緒,應利用( Suspend )原語
-
一個行程可創建一個或多個執行緒
一個執行緒可創建一個或多個執行緒
一個執行緒可創建一個或多個執行緒 -
若系統中只有用戶級執行緒,則處理機調度單位是 執行緒
-
一個行程是 PCB結構與程式和資料的組合
一個行程包括控制結構和執行結構;控制結構是行程控制塊PCB,執行結構包括程式以及需要操縱的資料集合,
- 行程不是程式
行程(Process)是計算機中的程式關于某資料集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是作業系統結構的基礎,行程是一個具有一定獨立功能的程式關于某個資料集合的一次運行活動,行程的概念主要有兩點:
第一,行程是一個物體,每一個行程都有它自己的地址空間,一般情況下,包括文本區域(text region)、資料區域(data region)和堆疊 (stackregion),文本區域存盤處理器執行的代碼;資料區域存盤變數和行程執行期間使用的動態分配的記憶體;堆疊區域存盤著活動程序呼叫的指令和本地變數,
第二,行程是一個“執行中的程式”,程式是一個沒有生命的物體,只有處理器賦予程式生命時(作業系統執行之),它才能成為一個活動的物體,我們稱其為行程,
- 引入執行緒可提高程式并發執行的程度,可進一步提高系統效率
執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制,
- 不管系統中是否有執行緒,行程都是擁有資源的獨立單位
用戶級執行緒是指有關執行緒的所有管理作業都由用戶態運行的執行緒庫(如POSIX的pthread庫)完成,系統內核并不知道執行緒的存在,應用程式可以根據需要,在同一個行程中創建執行緒,自己設計調度單位,調度指定執行緒運行,由于內核是單執行緒,仍以行程為單位進行調度,核心級執行緒(系統支持執行緒)是指有關執行緒的所有管理作業都是由系統內核完成的,
對于普通的作業系統,未引入執行緒的話,行程是系統進行資源分 配和調度的獨立單位
在多處理機作業系統中,引入執行緒后,行程是資源的分配單 位或者叫做資源的容器,執行緒是處理機的調度單位,
- 執行緒的切換,可能引起行程的切換
屬于同一行程的多個執行緒之間的切換不會引起行程的切換,只有屬于不同行程的執行緒之間的切換才會引起行程的切換,
- 行程的控制資訊和描述資訊存放在 PCB
- 行程依靠("合作"行程的喚醒)從阻塞狀態過渡到就緒狀態,
引起行程阻塞和喚醒的事件:
1、向系統請求共享資源失敗,行程轉變為阻塞狀態,
2、等待某種操作完成,比如行程啟動了I/O設備,必須等I/O操作完成后,行程才能繼續,
3、新資料尚未到達,對于合作的行程,如果一個行程A需要先獲得另一行程B提供的資料后,才能對該資料行程處理,只要資料尚未到達,行程A只能阻塞,當行程B提供資料后,便可以去喚醒行程A,
4、等待新任務到達,用于特定的系統行程,它們每當完成任務后,就把自己阻塞起來,等待新任務,
- 在Windows NT中( 行程 )可以處于就緒狀態,
作業:向計算機提交任務的任務物體;
作業是指用戶在一次解決或一個事務處理程序中要求計算機系統所做的作業的集合,包括用戶程式、資料、作業說明書等,
行程:執行物體,是資源分配的基本單位;
執行緒:處理機除錯的基本單位;
程式:先簡單粗暴地理解為代碼吧,
- 作用于一個行程只有一次的原語是 創建
- 在Unix系統中,處于(記憶體就緒)狀態的行程最容易被執行,
- 從執行狀態掛起的行程解除掛起時進入(就緒)狀態,
- 一個行程執行程序中不可能對應 多個PCB
- 用P、V操作管理臨界區時,信號量的初值一般應定義為 1
- 有m個行程共享同一臨界資源,若使用信號量機制實作對一臨界資源的互斥訪問,則信號量的變化范圍是 1 ~ -m
- 臨界資源是互斥共享資源
- 對行程間互斥的使用臨界資源,行程可以互斥的進入各自的臨界區
- 設兩個行程共用一個臨界資源的互斥信號量mutex,當mutex=1時表示 沒有一個行程進入臨界區
- 設兩個行程共用一個臨界資源的互斥信號量mutex,當mutex=-1時表示 一個行程進入了臨界區,另一個行程等待
- 當一行程因在記錄型信號量S上執行P(S)操作而被阻塞后,S的值為 < 0
- 當一行程因在記錄型信號量S上執行V(S)操作而導致喚醒另一行程后,S的值為 <= 0
- 如果信號量的當前值為-4,則表示系統中在該信號量上有(4)個行程等待
- 若有4個行程共享同一程式段,而且每次最多允許3個行程進入該程式段,則信號量的變化范圍是 3,2,1,0,-1
- 若信號S的初值為2,當前值為-1,則表示有(1)個等待行程,
- 并發行程之間 可能需要同步或互斥
- 在作業系統中,有一組行程,行程之間具有直接相互制約性,這組并發行程之間 必定相關
- 為行程分配處理機 操作不是P操作可完成的,
P操作分配的是我們申請的資源,并不是處理機
信號量
信號量是最早出現的用來解決行程同步與互斥問題的機制,
信號量(Saphore)值表示相應資源的使用情況,信號量S>=0時,S表示可用資源的數量,執行一次P操作意味著請求分配一個資源,因此S的值減1;當S<0時,表示已經沒有可用資源,S的絕對值表示當前等待該資源的行程數,請求者必須等待其他行程釋放該類資源,才能繼續運行,而執行一個V操作意味著釋放一個資源,因此S的值加1;若S<0,表示有某些行程正在等待該資源,因此要喚醒一個等待狀態的行程,使之運行下去,注意,信號量的值只能由PV操作來改變,
死鎖
如果一組行程中的每一個行程都在等待該組其他行程所占用的資源就稱為死鎖,
- 某系統采用了銀行家演算法, 系統處于不安全狀態時可能會發生死鎖
系統處于安全狀態,一定不會發生死鎖;
- 強占式靜態優先權法 可能導致行程饑餓
搶占式保證了高優先級的行程可以直接搶奪低優先級行程的資源,優先運行;
靜態優先權是指:在行程運行前就已經分配了固定的優先權,在行程運行的程序中不再對優先權進行調整,這樣就導致了低優先級的行程一直得不到資源,即“饑餓”狀態!
1. 預防死鎖,
這是一種較簡單和直觀的事先預防的方法,
方法是通過設定某些限制條件,去破壞產生死鎖的四個必要條件中的一個或者幾個,來預防發生死鎖,
預防死鎖是一種較易實作的方法,已被廣泛使用,但是由于所施加的限制條件往往太嚴格,可能會導致系統資源利用率和系統吞吐量降低,
2. 避免死鎖,
該方法同樣是屬于事先預防的策略,但它并不須事先采取各種限制措施去破壞產生死鎖的的四個必要條件,
而是在資源的動態分配程序中,用某種方法去防止系統進入不安全狀態,從而避免發生死鎖,
3. 檢測死鎖,
這種方法并不須事先采取任何限制性措施,也不必檢查系統是否已經進入不安全區,此方法允許系統在運行程序中發生死鎖,
但可通過系統所設定的檢測機構,及時地檢測出死鎖的發生,并精確地確定與死鎖有關的行程和資源,然后采取適當措施,從系統中將已發生的死鎖清除掉,
4. 解除死鎖,
這是與檢測死鎖相配套的一種措施,
當檢測到系統中已發生死鎖時,須將行程從死鎖狀態中解脫出來,
常用的實施方法是撤銷或掛起一些行程,以便回收一些資源,再將這些資源分配給已處于阻塞狀態的行程,使之轉為就緒狀態,以繼續運行,
死鎖的檢測和解除措施,有可能使系統獲得較好的資源利用率和吞吐量,但在實作上難度也最大,
- 銀行家演算法是避免死鎖
- 資源靜態分配是預防死鎖的方法
預防是破壞四大條件任意一條
避免是不破壞四大條件,對行程新的資源請求進行判斷,如果有可能導致就不分配,
銀行家演算法 避免死鎖
終止行程法、剝奪資源法 解除死鎖
資源靜態分配法 預防死鎖
資源分配圖簡化法 檢測死鎖
行程調度演算法
-
為了照顧緊迫型作業,應采用 優先權調度演算法
-
在采用動態優先權的優先權調度演算法中,如果所有行程都具有相同優先權初值,則此時的優先權調度演算法實際上和(先來先服務調度演算法)相同,
-
作業從后備作業到被調度程式選中的時間稱為 等待調度時間
-
資源靜態分配法可以預防死鎖的發生,因為使死鎖四個條件中的(請求和保持條件)不成立,
靜態分配資源,所有行程在開始運行之前,一次性地申請其在整個運行程序所需的全部資源,但在分配資源時,只要有一種資源不能滿足某行程的要求,即使它所需的其他資源都空閑,也不分配給該行程,而讓行程等待,
在行程的等待期間,它并未占有任何資源,摒棄了“保持”條件,避免發生死鎖,
作業調度演算法
先來先服務(FCFS)
First Come First Serve
- 演算法思想
主要從“公平”的角度考慮(類似排隊) - 演算法規則
按照作業/行程到達的先后順序進行服務 - 用于作業/行程調度
用于作業調度時,考慮的是哪個作業先到達后備佇列;
用于行程調度時,考慮的是哪個行程先到達就緒佇列 - 是否可搶占?
非搶占式的演算法 - 優缺點
優點:公平、演算法實作簡單
缺點:排在長作業(行程)后面的短作業需要等待很長時間,帶權周轉時間很大,對短作業來說用戶體驗不好,即,FCFS演算法對長作業有利,對短作業不利, - 是否會導致饑餓
不會
- 例題

短作業優先(SJF)
Shortest Job First
- 演算法思想
追求最少的平均等待時間,最少的平均周轉時間、最少的平均帶權周轉時間 - 演算法規則
最短的作業/行程優先得到服務(所謂“最短”,是指要求服務時間最短) - 用于作業/行程調度
既可用于作業調度,也可用于行程調度,用于行程調度時稱為“短行程優先(SPF, Shortest Process First)演算法” - 是否可搶占?
SJF和SPF是非搶占式的演算法,但是也有搶占式的版本–最短剩余時間優先演算法(SRTN, Shortest Remaining Time Next) - 優缺點
優點:“ 最短的”平均等待時間、平均周轉時間
缺點:不公平,對短作業有利,對長作業不利,可能產生饑餓現象,另外,作業/行程的運行時間是由用戶提供的,并不一定真實,不一定能做到真正的短作業優先 - 是否會導致饑餓
會,如果源源不斷地有短作業/行程到來,可能使長作業/行程長時間得不到服務,產生“饑餓”現象,如果一直得不到服務,則稱為“餓死”



高回應比優先(HRRN)
Highest Response Ratio Next
- 演算法思想
要綜合考慮作業/行程的等待時間和要求服務的時間 - 演算法規則
在每次調度時先計算各個作業/行程的回應比,選擇回應比最高的作業/行程為其服務

- 用于作業/行程調度
既可用 于作業調度,也可用于行程調度 - 是否可搶占?
非搶占式的演算法,因此只有當前運行的作業/行程主動放棄處理機時,才需要調度,才需要計算回應比 - 優缺點
綜合考慮了等待時間和運行時間(要求服務時間)
①等待時間相同時,要求服務時間短的優先(SJF 的優點)
②要求服務時間相同時,等待時間長的優先(FCFS 的優點)
③對于長作業來說,隨著等待時間越來越久,其回應比也會越來越大,從而避免了長作業饑餓的問題 - 是否會導致饑餓
不會

死鎖預防
對于死鎖的預防(deadlock prevention):死鎖產生時,產生死鎖的四個必要條件必定同時保持,如果至少能使其中一個條件不滿足,那么死鎖將是不可能產生的了,四個必要條件如下:
破壞互斥條件,
破壞保持和請求條件 : 行程在開始運行前,必須獲得所需的全部資源,若系統不能滿足,則該行程等待,這就是資源的靜態分配,這種分配方式使資源利用率很低,而且,許多程式在開始運行之前,不能精確提出所需資源數量,
破壞非剝奪條件,
破壞回圈等待條件,
死鎖的預防即不允許死鎖的發生,可以從破除死鎖發生的四個必要條件入手,因為如果不具備上述四個必要條件,那么死鎖就一定不會發生,
(1)互斥:不容易破除
(2)占有并等待(請求和保持):靜態資源分配,資源不夠不開始,
(3)不可搶占:外界撤銷某些行程,
(4)環路等待:行程按順序訪問資源(執行)(給資源編號),
頁表暫存器
- 分頁存盤管理的存盤保護是通過(頁表(頁表暫存器))完成的,

- 把作業地址空間中使用的邏輯地址變成記憶體中物理地址稱為 重定位
- 在可變磁區存盤管理中的緊湊技術可以集中空閑區
- 在存盤管理中,采用覆寫與交換技術的目的是 減少程式占用的主存空間
覆寫技術的實作是把程式劃分為若干個功能上相對獨立的程式段,按照其自身的邏輯結構使那些不會同時運行的程式段共享同一塊記憶體區域,程式段先保存在磁盤上,當有關程式的前一部分執行結束后,把后續程式段調入記憶體,覆寫前面的程式段,
交換技術:在分時系統中,用戶的行程比記憶體能容納的數量更多,系統將那些不再運行的行程或某一部分調出記憶體,暫時放在外存上的一個后備存盤區,通常稱為交換區,當需要運行這些行程時,再將它們裝入記憶體
1、固定磁區存盤管理
其基本思想是將記憶體劃分成若干固定大小的磁區,每個磁區中最多只能裝入一個作業,
當作業申請記憶體時,系統按一定的演算法為其選擇一個適當的磁區,并裝入記憶體運行,
由于磁區大小是事先固定的,因而可容納作業的大小受到限制,而且當用戶作業的地址空間小于磁區的存盤空間時,造成存盤空間浪費,
一、空間的分配與回收
系統設定一張“磁區分配表”來描述各磁區的使用情況,登記的內容應包括:磁區號、起始地址、長度和占用標志,
其中占用標志為“0”時,表示目前該磁區空閑;否則登記占用作業名(或作業號),有了“磁區分配表”,空間分配與回收作業是比較簡單的,
二、地址轉換和存盤保護
固定磁區管理可以采用靜態重定位方式進行地址映射,
為了實作存盤保護,處理器設定了一對“下限暫存器”和“上限暫存器”,
當一個已經被裝入主存盤器的作業能夠得到處理器運行時,行程調度應記錄當前運行作業所在的磁區號,且把該磁區的下限地址和上限地址分別送入下限暫存器和上限暫存器中,
處理器執行該作業的指令時必須核對其要訪問的絕對地址是否越界,
三、多作業佇列的固定磁區管理
為避免小作業被分配到大的磁區中造成空間的浪費,可采用多作業佇列的方法,即系統按磁區數設定多個作業佇列,將作業按其大小排到不同的佇列中,一個佇列對應某一個磁區,以提高記憶體利用率,
2、可變磁區存盤管理
可變磁區存盤管理不是預先將記憶體劃分磁區,而是在作業裝入記憶體時建立磁區,使磁區的大小正好與作業要求的存盤空間相等,這種處理方式使記憶體分配有較大的靈活性,也提高了記憶體利用率,但是隨著對記憶體不斷地分配、釋放操作會引起存盤碎片的產生,
一、空間的分配與回收
采用可變磁區存盤管理,系統中的磁區個數與磁區的大小都在不斷地變化,系統利用“空閑區表”來管理記憶體中的空閑磁區,其中登記空閑區的起始地址、長度和狀態,
當有作業要進入記憶體時,在“空閑區表”中查找狀態為“未分配”且長度大于或等于作業的空閑磁區分配給作業,并做適當調整;當一個作業運行完成時,應將該作業占用的空間作為空閑區歸還給系統,
可以采用首先適應演算法、最佳(優)適應演算法和最壞適應演算法三種分配策略之一進行記憶體分配,
二、地址轉換和存盤保護
可變磁區存盤管理一般采用動態重定位的方式,為實作地址重定位和存盤保護,系統設定相應的硬體:基址/限長暫存器(或上界/下界暫存器)、加法器、比較線路等,
基址暫存器用來存放程式在記憶體的起始地址,限長暫存器用來存放程式的長度,處理機在執行時,用程式中的相對地址加上基址暫存器中的基地址,形成一個絕對地址,并將相對地址與限長暫存器進行計算比較,檢查是否發生地址越界,
三、存盤碎片與程式的移動
所謂碎片是指記憶體中出現的一些零散的小空閑區域,由于碎片都很小,無法再利用,
如果記憶體中碎片很多,將會造成嚴重的存盤資源浪費,解決碎片的方法是移動所有的占用區域,使所有的空閑區合并成一片連續區域,這一技術稱為移動技術(緊湊技術),
移動技術除了可解決碎片問題還使記憶體中的作業進行擴充,顯然,移動帶來系統開銷加大,并且當一個作業如果正與外設進行I/O時,該作業是無法移動的,
3、頁式存盤管理
基本原理
1.等分記憶體
頁式存盤管理將記憶體空間劃分成等長的若干區域,每個區域的大小一般取2的整數冪,稱為一個物理頁面有時稱為塊,記憶體的所有物理頁面從0開始編號,稱作物理頁號,
2.邏輯地址
系統將程式的邏輯空間按照同樣大小也劃分成若干頁面,稱為邏輯頁面也稱為頁,程式的各個邏輯頁面從0開始依次編號,稱作邏輯頁號或相對頁號,每個頁面內從0開始編址,稱為頁內地址,程式中的邏輯地址由兩部分組成:
邏輯地址
頁號p
頁內地址 d
3.記憶體分配
系統可用一張“位示圖”來登記記憶體中各塊的分配情況,存盤分配時以頁面(塊)為單位,并按程式的頁數多少進行分配,相鄰的頁面在記憶體中不一定相鄰,即分配給程式的記憶體塊之間不一定連續,
對程式地址空間的分頁是系統自動進行的,即對用戶是透明的,由于頁面尺寸為2的整數次冪,故相對地址中的高位部分即為頁號,低位部分為頁內地址,
3.5.2實作原理
1.頁表
系統為每個行程建立一張頁表,用于記錄行程邏輯頁面與記憶體物理頁面之間的對應關系,地址空間有多少頁,該頁表里就登記多少行,且按邏輯頁的順序排列,形如:
邏輯頁號
主存塊號
0
B0
1
B1
2
B2
3
B3
2.地址映射程序
頁式存盤管理采用動態重定位,即在程式的執行程序中完成地址轉換,處理器每執行一條指令,就將指令中的邏輯地址(p,d)取來從中得到邏輯頁號(p),硬體機構按此頁號查頁表,得到記憶體的塊號B’,便形成絕對地址(B’,d),處理器即按此地址訪問主存,
3.頁面的共享與保護
當多個不同行程中需要有相同頁面資訊時,可以在主存中只保留一個副本,只要讓這些行程各自的有關項中指向記憶體同一塊號即可,同時在頁表中設定相應的“存取權限”,對不同行程的訪問權限進行各種必要的限制,
4、段式存盤管理
基本原理
1.邏輯地址空間
程式按邏輯上有完整意義的段來劃分,稱為邏輯段,例如主程式、子程式、資料等都可各成一段,將一個程式的所有邏輯段從0開始編號,稱為段號,每一個邏輯段都是從0開始編址,稱為段內地址,
2.邏輯地址
程式中的邏輯地址由段號和段內地址(s,d)兩部分組成,
3.記憶體分配
系統不進行預先劃分,而是以段為單位進行記憶體分配,為每一個邏輯段分配一個連續的記憶體區(物理段),邏輯上連續的段在記憶體不一定連續存放,
3.6.2實作方法
1.段表
系統為每個行程建立一張段表,用于記錄行程的邏輯段與記憶體物理段之間的對應關系,至少應包括邏輯段號、物理段首地址和該段長度三項內容,
2.建立空閑區表
系統中設立一張記憶體空閑區表,記錄記憶體中空閑區域情況,用于段的分配和回收記憶體,
3.地址映射程序
段式存盤管理采用動態重定位,處理器每執行一條指令,就將指令中的邏輯地址(s,d)取來從中得到邏輯段號(s),硬體機構按此段號查段表,得到該段在記憶體的首地址S’, 該段在記憶體的首地址S’加上段內地址d,便形成絕對地址(S’+d),處理器即按此地址訪問主存,
5、段頁式存盤管理
頁式存盤管理的特征是等分記憶體,解決了碎片問題;段式存盤管理的特征是邏輯分段,便于實作共享,為了保持頁式和段式上的優點,結合兩種存盤管理方案,形成了段頁式存盤管理,
段頁式存盤管理的基本思想是:把記憶體劃分為大小相等的頁面;將程式按其邏輯關系劃分為若干段;再按照頁面的大小,把每一段劃分成若干頁面,程式的邏輯地址由三部分組成,形式如下:
邏輯地址
段號s
頁號p
頁內地址d
記憶體是以頁為基本單位分配給每個程式的,在邏輯上相鄰的頁面記憶體不一定相鄰,
系統為每個行程建立一張段表,為行程的每一段各建立一張頁表,地址轉換程序,要經過查段表、頁表后才能得到最終的物理地址,
- 存盤管理方法中,( 單一連續區 )用戶可采用覆寫技術
在單道連續分配中,當存盤空間容不下程式時,可采用覆寫方法來解決;
覆寫基本思想:由于程式運行時并非各個部分都要訪問,因此可以將用戶空間分成一個固定區和多個覆寫區,
將經常活躍的放入固定區,將那些將要用的段放入覆寫區,在需要時提前調入覆寫區,替換原有的段,
覆寫技術是早期在單一連續存盤管理中使用的擴大存盤器容量的一種技術,
- 在記憶體分配的"最佳適應法"中,空閑塊是按 塊的大小從小到大排序
最優適應演算法:通常將空閑區按長度遞增順序排列,查找時總是從最小一個空閑區開始,直到找到滿足要求的磁區為止,此演算法保證不會分割一個更大的區域,使得裝入大作業的要求容易得到滿足,
補充:
首次適應演算法:通常將空閑區按地址從小到大排列,查找時總是從低地址開始,可使高地址盡量少用,以保持一個大空閑區,有利于大作業的裝入;缺點是記憶體低地址和高地址兩端的磁區利用不平衡,回收磁區較麻煩,
最壞適應演算法:通常將空閑區按長度遞減順序排列
查找時從最大的一個空閑區開始,總是挑選一個最大的空閑區分割給作業使用,其優點是使剩下的空閑區不致于太小,這樣有利于中小型作業,但不利于大作業,
- 段的邏輯地址形式是段號10位,段內地址20位,記憶體1MB,輔存10GB,那么虛擬存盤器最大實際容量可能是:
虛擬存盤器最大實際容量= min(計算機地址,記憶體+輔存),計算機地址= 2^ 10 * 2^20=1024M
段內地址20位說白了就是段內偏移量,對應2^20個地址,如果按位元組編址就是1024*1024B=1MB
10位段號說白了就是最多2^10個段,也就是1024段,每段內部又對應1MB,總共就是1024MB=1GB
- 用空白鏈記錄記憶體空白塊的主要缺點是 分配空間時可能需要一定的查鏈時間
C 首次適應,是按地址排序,然后依次找到大小滿足要求(比需要的大即可)的記憶體塊,劃分出一定大小,剩下空閑塊的還在鏈上,
D最佳適應,空閑塊還是從小到大排序,找到大小最接近的記憶體塊,摘鏈,多出來的再插入鏈表,
對于選項C,D,空間地址是遞增的,每個空白塊的大小不確定,所以這兩個演算法只需在鏈表中查找所需大小的空白塊,沒有好不好實作一說,
對于選項A,指標大小4位元組(32位),和指標所指向的空白塊相比,其大小基本可以忽略,就算指標很多,占用了空間,但也說明了空白塊也很多,所以對比下,指標所占空間基本可以忽略,
B選項:在分配空間的時候,會進行空白塊的查找,根據演算法的不同,欲分配空間大小的不同,其查找的時間總是不容易計算的,
- 一般而言,計算機中(虛擬存盤器)容量(個數)最多
一般情況下虛擬記憶體的大小大于物理記憶體與外部存盤的大小總和,比如對于一臺80x86上運行的32位Linux,其可尋址的物理地址空間為4GB,虛存大小上限為 4GB * 行程數上限,
允許設定的虛擬記憶體最小值為2MB,最大值不能超過當前硬碟的剩余空間值,同時也不能超過32位作業系統的記憶體尋址范圍——4GB,
分頁與磁區
- 磁區管理和分頁管理的主要區別是 磁區要求一道程式存放在連續的空間內而分頁沒有這種要求
一、磁區存盤管理
1、固定磁區:
優點:易于實作、開銷小
缺點:存在內部碎片(磁區內未被利用空間)、磁區總數固定,限制了并發執行的程式數量,
2、動態創建磁區:按照程式申請要求分配,
優點: 沒有內部碎片
缺點:有外部碎片(難以利用的小空閑磁區)
二、頁式存盤管理
優點:沒有外部碎片,最后一頁可能有內碎片但不大; 程式不必連續存放;便于改變程式占用空間大小,
缺點: 程式仍需要全部裝入記憶體,
重定位
- 靜態重定位的時機是 程式裝入時
對程式進行重定位的技術按重定位的時機可分為兩種:靜態重定位和動態重定位,
靜態重定位:是在目標程式裝入記憶體時,由裝入程式對目標程式中的指令和資料的地址進行修改,即把程式的邏輯地址都改成實際的地址,對每個程式來說,這種地址變換只是在裝入時一次完成,在程式運行期間不再進行重定位,
優點:是無需增加硬體地址轉換機構,便于實作程式的靜態連接,在早期計算機系統中大多采用這種方案,
缺點:
(1)程式的存盤空間只能是連續的一片區域,而且在重定位之后就不能再移動,這不利于記憶體空間的有效使用,(2)各個用戶行程很難共享記憶體中的同一程式的副本,
動態重定位:是在程式執行期間每次訪問記憶體之前進行重定位,這種變換是靠硬體地址變換機構實作的,通常采用一個重定位暫存器,其中放有當前正在執行的程式在記憶體空間中的起始地址,而地址空間中的代碼在裝入程序中不發生變化,
優點:
(1)程式占用的記憶體空間動態可變,不必連續存放在一處,
(2)比較容易實作幾個行程對同一程式副本的共享使用,
缺點:是需要附加的硬體支持,增加了機器成本,而且實作存盤管理的軟體演算法比較復雜, 現在一般計算機系統中都采用動態重定位方法,
- 采用動態重定位方式裝入作業,在執行中允許(作業系統有條件的)將其移走,
絕對裝入方式:絕對裝入需要實作知道程式駐留在記憶體的位置,程式按照裝入模塊中的地址,將程式和資料裝入記憶體,所以程式中的邏輯地址與實際地址完全相同,當作業系統把程式裝入記憶體時,不需要對程式和資料進行地址修改;
-
把邏輯地址轉變為記憶體的物理地址的程序稱作 重定位或地址映射
-
采用可重定位磁區分配方式,解決了碎片問題
可重定位磁區分配方式也是屬于連續分配方式的,只是它在記憶體碎片很多而導致的程式不能放入記憶體時,進行“緊湊”(可能會移動原來的資料的,所以此時就需要重定位啦緊湊完了,就能放進去啦~)
連續分配方式是指為一個用戶程式分配一個連續的記憶體空間,在連續分配方式中,必須把一個系統或用戶程式裝入一連續的記憶體空間,如果在系統中只有若干個小的磁區,即使他的容量總和大于要裝入的程式,但由于這些磁區不相鄰接的小磁區,他們單獨的容量不能滿足作業大小但它們的容量總和大于作業的要求時,若想把作業裝入,可采用的可重定位磁區分配方式,
可重定位磁區分配方式與拼接方式不同在于拼接時機的不同,前者是在某個磁區回收時立即進行拼接,這樣在記憶體中總是只有一個連續的空閑區,但由于拼接很費時間,拼接頻率過高會使系統開銷加大,后者是當找不到足夠大的空閑區且空閑區的容量可以滿足作業要求時進行拼接,拼接的頻率比第一種要小得多,但空閑區的管理稍微復雜一些,
動態重定位是指在虛擬地址空間向物理地址空間裝換的程序中利用的技術,
存盤保護
- 通常所說的"存盤保護"的基本含義是 防止程式間相互越界訪問
存盤保護
在采用虛擬存盤技術的存盤系統中,一個多任務的作業系統經常將多個不同的程式同時調入主存執行,因此,首先需要保證這些程式間不會相互覆寫,并且,一個程式不能訪問其他程式的資料以及不是分配給他的主存區域,其次,一個程式出錯不會破壞其他用戶程式和系統程式,通過一些限制方式保護主存中程式的技術被稱為存盤保護,簡單的說,存盤保護就是對主存中的程式和資料進行保護,為了降低開銷,在進行存盤保護的時候,通常不會直接保護單個存盤單元,而是以頁或者段為單位進行保護,存盤保護主要包括以下兩個方面內容,
存盤區域保護: 存盤區域保護主要是為了防止地址越界,常用的存盤區域保護方式有基于頁表或段表的保護,鍵保護和環保護,
(1)基于頁表或段表的保護,在分頁式虛存中,每個程式的虛頁號是固定的經過地址變換后的實存頁號也是固定的,這樣,程式只能訪問或影響到相應的主存頁面,不會影響或訪問其他程式空間,
在分段式虛存中,段表和頁表的保護功能類似,但段表還需要記錄段的上界,下界和段長,這樣就很容易保證程式訪問的地址不越界,
(2)鍵保護方式:作業系統為主存中的每一頁分配一個鍵,通常被稱為存盤鍵,用于指明保護的等級,!存盤鍵相當于一把鎖,只有擁有打開這把鎖的鑰匙才能訪問相應的頁面,而鑰匙就是作業系統為每道程式分配的!訪問鍵,該訪問鍵通常保存在!該道程式的《狀態暫存器》中,當程式要訪問主存的某一頁時,程式的訪問鍵要與該頁的存盤鍵!進行比較,若兩鍵相符,則允許訪問該頁,否則拒絕訪問,
(3)環保護方式:作業系統按照系統程式和用戶程式的重要性及對整個系統正常運行的影響程度,將程式分為多個保護級別(層),每個級別稱為一個環,這樣,各個級別就構成了同心環,在現行程式運行前由作業系統為程式設定!個頁的環號,并置入頁表中,并將該道程式的開始環號保存在CPU的<現行環號暫存器》中,程式可以訪問任何外層空間,訪問內層空間則需要由作業系統的環控《例行程式》判斷這個向內訪問是否合法,pentium微處理器采用環保護方式,
訪問方式保護
訪問方式保護是為了保證程式不能對主存執行非授權的操作,通常,通過對頁表或者段表設定訪問權限標志位來實作,
對記憶體資訊的使用可以有以下三種方式:讀(R),寫(w)和執行(E),因此相應的訪問權限就是R,W,E三種方式形成的邏輯組合,例如,R+W+E表示可以進行任何訪問(全權限),(R+W)*E表示能夠讀和寫但不能執行,
通常,作業系統對每個程式訪問方式保護的規定如下:《對本程式所在存盤區域擁有全權限,對共享!資料區域(或獲得授權的其他用戶資料區域)可讀不可寫,對共享程式區域(或獲得授權的其他用戶程式區域)!可執行,對作業系統內核等非授權區域不可訪問,
這種訪問方式經常和存盤區域保護結合起來實作,例如基于頁表和段表的保護方式下,通常將訪問方式“位”保存在段表和頁表中,使得同一個段內的不同頁有不同的訪問方式,這樣可以提高保護的靈活性,
存盤保護一般以硬體保護為主,以降低系統實作開銷,提高保護效率,當發生訪問越界等非法操作時,硬體產生中斷,進入作業系統處理,
虛存管理和實存管理的區別
- 虛存管理和實存管理的主要區別是 實存要求一程式全部裝入記憶體才開始運行,虛存允許程式在執行的程序中逐步裝入
虛存之所謂稱之為虛,就是因為邏輯記憶體要大于物理記憶體,
假如程式要求全部裝入才可以執行,根本沒必要有虛存的存在了,
所以是否要求程式一次性全部裝入記憶體,是實存和虛存的根本區別,
- 能夠裝入記憶體任何位置的代碼程式必須是 可動態鏈接的
程式的鏈接有以下三種方式:
靜態鏈接:在程式運行之前,先將各目標模塊及它們所需的庫函式鏈接成一個完整的可執行程式,以后不再拆開,
裝入時動態鏈接:將用戶源程式編譯后所得到的一組目標模塊,在裝入記憶體時,釆用邊裝入邊鏈接的鏈接方式,
運行時動態鏈接:對某些目標模塊的鏈接,是在程式執行中需要該目標模塊時,才對它進行的鏈接,其優點是便于修改和更新,便于實作對目標模塊的共享,記憶體的裝入模塊在裝入記憶體時,同樣有以下三種方式:
絕對裝入,在編譯時,如果知道程式將駐留在記憶體的某個位置,編譯程式將產生絕對地址的目標代碼,絕對裝入程式按照裝入模塊中的地址,將程式和資料裝入記憶體,由于程式中的邏輯地址與實際記憶體地址完全相同,故不需對程式和資料的地址進行修改,
絕對裝入方式只適用于單道程式環境,另外,程式中所使用的絕對地址,可在編譯或匯編時給出,也可由程式員直接賦予,而通常情況下在程式中釆用的是符號地址,編譯或匯編時再轉換為絕對地址,
可重定位裝入,在多道程式環境下,多個目標模塊的起始地址通常都是從0開始,程式中的其他地址都是相對于起始地址的,此時應釆用可重定位裝入方式,根據記憶體的當前情況,將裝入模塊裝入到記憶體的適當位置,裝入時對目標程式中指令和資料的修改程序稱為重定位,地址變換通常是在裝入時一次完成的,所以又稱為靜態重定位
靜態重定位的特點是在一個作業裝入記憶體時,必須分配其要求的全部記憶體空間,如果沒有足夠的記憶體,就不能裝入該作業,此外,作業一旦進入記憶體后,在整個運行期間不能在記憶體中移動,也不能再申請記憶體空間,
動態運行時裝入,也稱為動態重定位,程式在記憶體中如果發生移動,就需要釆用動態的裝入方式,裝入程式在把裝入模塊裝入記憶體后,并不立即把裝入模塊中的相對地址轉換為絕對地址,而是把這種地址轉換推遲到程式真正要執行時才進行,因此,裝入記憶體后的所有地址均為相對地址,這種方式需要一個重定位暫存器的支持,如上圖B所示,
動態重定位的特點是可以將程式分配到不連續的存盤區中;在程式運行之前可以只裝入它的部分代碼即可投入運行,然后在程式運行期間,根據需要動態申請分配記憶體;便于程式段的共享,可以向用戶提供一個比存盤空間大得多的地址空間,
請求分頁管理
在頁表中要有"狀態位"、"訪問位"等資訊
在請求分頁系統中,只要求將當前需要的一部分頁面裝入記憶體,便可以啟動作業運行,在作業執行程序中,當所要訪問的頁面不在記憶體時,再通過調頁功能將其調入,同時還可以通過置換功能將暫時不用的頁面換出到外存上,以便騰出記憶體空間,
為了實作請求分頁,系統必須提供一定的硬體支持,除了需要一定容量的記憶體及外存的計算機系統,還需要有頁表機制、缺頁中斷機構和地址變換機構,請求分頁系統的頁表機制不同于基本分頁系統,請求分頁系統在一個作業運行之前不要求全部一次性調入記憶體,因此在作業的運行程序中,必然會出現要訪問的頁面不在記憶體的情況,如何發現和處理這種情況是請求分頁系統必須解決的兩個基本問題,為此,在請求頁表項中增加了四個欄位:
增加的四個欄位說明如下:
狀態位P:用于指示該頁是否已調入記憶體,供程式訪問時參考,
訪問欄位A:用于記錄本頁在一段時間內被訪問的次數,或記錄本頁最近己有多長時間未被訪問,供置換演算法換出頁面時參考,
修改位M:標識該頁在調入記憶體后是否被修改過,
外存地址:用于指出該頁在外存上的地址,通常是物理塊號,供調入該頁時參考,
在請求分頁系統中,每當所要訪問的頁面不在記憶體時,便產生一個缺頁中斷,請求作業系統將所缺的頁調入記憶體,此時應將缺頁的行程阻塞(調頁完成喚醒),如果記憶體中有空閑塊,則分配一個塊,將要調入的頁裝入該塊,并修改頁表中相應頁表項,若此時記憶體中沒有空閑塊,則要淘汰某頁(若被淘汰頁在記憶體期間被修改過,則要將其寫回外存),
- 在請求分頁系統中,頁表中的修改位是供 頁面置換
頁表項(頁描述子)中各個位的作用:
- 頁號
- 塊號(頁框號)
- 中斷位: 用于判斷該頁是不是在記憶體中,如果是0,表示該頁面不在記憶體中,會引起一個缺頁中斷
- 保護位(存取控制位):用于指出該頁允許什么型別的訪問,如果用一位來標識的話:1表示只讀,0表示讀寫
- 修改位(臟位):用于頁面的換出,如果某個頁面被修改過(即為臟),在淘汰該頁時,必須將其寫回磁盤,反之,可以直接丟棄該頁
- 訪問位:不論是讀還是寫(get or set),系統都會設定該頁的訪問位,它的值用來幫助作業系統在發生缺頁中斷時選擇要被淘汰的頁,即用于頁面置換
- 高速快取禁止位(輔存地址位):對于那些映射到設備暫存器而不是常規記憶體的頁面有用,假設作業系統正在回圈等待某個I/O設備對其指令進行回應,保證硬體不斷的從設備中讀取資料而不是訪問一個舊的高速快取中的副本是非常重要的,即用于頁面調入,
- 在請求分頁系統中,頁表中的輔存始地址是供(頁面調入)參考的,
1)狀態位P:用于指示該頁是否已調入記憶體,供程式訪問時參考;
2)訪問欄位A:用于記錄本頁在一段時間內被訪問次數,供選擇置換頁面時參考;
3)修改位M:表示該頁在調入記憶體后是否被修改過,供換出頁面時參考;
4)外存地址:用于指出該頁在外存上的地址,通常是物理塊號,供調入該頁時參考;
- 在請求分頁管理中,已修改過的頁面再次裝入時應來自 磁盤對換區
未被修改的頁直接從檔案區讀入,而被置換時不需要調出;已被修改的頁面,被置換時需要調出到交換區,以后從交換區調入,
請求分頁系統,缺頁時,如果頁面未被修改是直接從磁盤檔案區調入,對于那些可能修改的頁面,在將它們換出時,便須調到對換區,以后需要時,再從對換區調入,(對換區采用連續分配方式,故磁盤I/O速度要較快一些,)
- 在請求頁式存盤管理中,若頁面尺寸變小,則缺頁中斷的次數可能增加也可能減少
1.Belady現象:是指當所分配的物理塊數增大而頁故障數不減反增的例外現象,
2.抖動現象:是指剛付訓出的頁面馬上又要換入記憶體,剛付訓入的頁面馬上又要換出主存,這種頻繁的頁面調度行為稱為抖動,或者顛簸,
-
請求分頁管理中,若把頁面尺寸增大一倍而且可容納的最大頁數不變,則在程式順序執行時缺頁中斷次數會(B)
A.增加 B.減少 C.不變 D.可能增加也可能減少
因為在請求分頁存盤器中,由于頁面尺寸增大,存放程式需要的頁幀數就會減少,因此缺頁中斷的次數也會減少, -
在硬體和環境相同的條件下,一個作業在(分頁)存盤管理系統中運行的時間最長,
分頁式存盤管理可能將連續的指令放置在不同的頁中,會發生換頁中斷,而分段、段頁都是邏輯分配空間,段長可變,邏輯上相對連續的指令放在同一段中,不會像分頁那樣頻繁換頁操作,
- 計算題

地址偏移量=邏輯地址%頁面大小(1024)=0A1F(H)(2591)%1024=543
頁號=邏輯地址/頁面大小=2591/1024=2
查頁表得到塊號為3,
故物理地址=3*1024+543=3615=0E1F(H)
- 在頁式存盤管理中,當CPU形成一個有效地址時,要查頁表,這一作業是由(硬體自動)實作的,
這是地址映射的知識點,為了提高系統效率,邏輯地址到物理地址的映射,是由處理機中設定的專門硬體完成,即地址管理部件,
當行程要訪問某個邏輯地址中的資料時,分頁地址變換機構會自動地將有效地址分為頁號和頁內地址兩個部分,再以頁號為索引去檢索頁表,查找操作由硬體執行,
缺頁中斷
- 在請求分頁存盤管理的系統中,若采用FIFO頁面淘汰演算法,則當行程分配到的頁面數增加時,缺頁中斷的次數 可能增加也可能減少
隨著記憶體的增大:缺頁次數增加的現象:稱之為 Belady 現象(例外現象); 我們都知道常用的頁面淘汰演算法有五種:
1 : FIFO: 先進先出 頁面淘汰演算法會產生Belady現象2 :LRU 最近最久未用置換演算法
3 : LFU 最近訪問頻率最低的
4 : NUR 最近沒有使用頁面淘汰演算法( NUR )
5: 理想的淘汰演算法:( OPT )
這五種演算法可見簡單的將其分為兩類,堆疊型演算法和非堆疊型演算法; 注意:堆疊型演算法:最新壓入到堆疊中的永遠在堆疊頂;堆疊頂是剛剛訪問過的,堆疊底是最久沒有訪問過的; LRU和LFU都 是堆疊型演算法, OPT 也是堆疊演算法; 但是 FIFO非堆疊型演算法 ; 非堆疊式演算法可能出現 Belady 問題,是堆疊式演算法不會出現類似問題;
缺頁中斷的次數是由頁面數量,頁面置換演算法與頁面走向三個因素決定的,題目中采用FIFO,頁面數增大,但是頁面走向不確定,所以缺頁次數可能增大頁可能減小,比如Belady例外
- 在請求分頁存盤管理中,當訪問的頁面不在記憶體時,便產生缺頁中斷,缺頁中斷是屬于 程式中斷
中斷
中斷型別分為如下兩大類:
一、強迫性中斷:正在運行的程式所不期望的,來自硬體故障或外部請求,
1、I/O 中斷:來自外部設備通道;
2、程式性中斷:運行程式本身的中斷,如 溢位、缺頁中斷、缺段中斷、地址越界,
3、時鐘中斷
4、控制臺中斷
5、硬體故障二、自愿性中斷:用戶在編程時要求作業系統提供的服務,使用訪管指令或系統呼叫使中斷發生,也稱為訪管中斷,包括執行I/O,創建行程,分配記憶體,信號量操作,發送/接收訊息,
訪管中斷是用戶程式在運行中請求作業系統為其提供服務而執行一條“訪管指令”所引起的中斷,又稱軟體中斷,訪管中斷是行程所期待的,它是自愿性的中斷,又稱自愿中斷,其它幾種中斷不是運行行程所期望的,它屬于強迫性中斷事件,
外部中斷一般是由計算機外設發出的中斷請指求,如:鍵盤中斷、列印機中斷、定時器中斷等
- 分頁式存盤系統中,頁面的大小與可能產生的缺頁中斷次數 無關
一種說法:
由于記憶體的大小是固定的,所以無論頁面是大是小,可以進入記憶體的大小也是固定的,最多不超過記憶體的大小,實際上,分頁的大小并不影響進入記憶體作業的數量,從宏觀上看,進入記憶體的頁面內容是沒有變化的,
所以分頁式虛擬存盤管理系統中,頁面的大小與可能產生的缺頁中斷次數關系不大,
在分頁存盤管理系統中,頁面的大小是由計算機系統的地址結構所決定的,一般由軟硬體共同決定,
對于某一種系統一般采用一種大小的頁面(也有部分現代作業系統采用雙頁面系統的),
在確定地址結構時,若選擇的頁面較小,一方面可使內碎片減小,并減少了內碎片的總空間,有利于提高記憶體利用率,
另一方面,也會使每個行程要求較多的頁面,從而導致頁表過長,占用大量記憶體,此外還會降低頁面換進換出的效率,
若選擇的頁面較大,雖然可減少頁表長度,提高換進換出效率,但卻又會使頁內碎片增大,由于記憶體的大小是固定的,所以無論頁面是大是小,可以進入記憶體的作業大小也是固定的,最多不超過記憶體的大小,
實際上,分頁的大小并不影響進入記憶體作業的數量,從宏觀上看,進入記憶體的頁面內容是沒有變化的,所以分頁式虛擬存盤管理系統中,頁面的大小與可能產生的缺頁中斷次數關系并沒有確定的關系,
Belady現象
Belady現象是指:在分頁式虛擬存盤器管理中,發生缺頁時的置換演算法采用FIFO( 先進先出 )演算法時,如果對—個行程未分配它所要求的全部頁面,有時就會出現分配的頁面數增多但缺頁率反而提高的例外現象,
1.Belady現象:是指當所分配的物理塊數增大而頁故障數不減反增的例外現象,
2.抖動現象:是指剛付訓出的頁面馬上又要換入記憶體,剛付訓入的頁面馬上又要換出主存,這種頻繁的頁面調度行為稱為抖動,或者顛簸,
請求段的分配管理
適應于請求段的記憶體分配方法是 最佳適應和可變磁區
請求分段系統是在分段系統的基礎上,增加了請求調段功能和分段置換功能所形成的分段式虛擬存盤系統,分段式存盤管理方式分配演算法與可變磁區的分配演算法相似,可以采用最佳適應法、最壞適應法和首次適應法等分配演算法,顯然仍然要解決外碎片的問題,
首次 適應分配演算法: 這種演算法按磁區序號從空閑磁區表的第一個表目開始查找該表, 把最先找到的大于或等于作業大小的空閑磁區分給要求的作業,然后,再按照作業的大小,從該磁區中劃出一塊記憶體空間分配給作業,余下的空閑磁區仍留在空閑磁區表中,如果查找到磁區表的最后仍沒有找到大于或等于該作業的空閑區,則此次分配失敗,
優點:優先利用記憶體中低址部分的空閑磁區,而高址部分的空閑磁區很少被利用,從而保留了高址部分的大空閑區,為以后到達的大作業分配大的記憶體空間創造了條件,
缺點:低址部分不斷被劃分,致使留下許多難以利用的、很小的空閑磁區,
回圈 首次 適應分配演算法:
這種演算法是由最先適應分配演算法經過改進而形成的,在為作業分配記憶體時,不再每次從空閑磁區表的第一個表項開始查找,而是從上次找到的空閑區的下一個空閑區開始查找,直至找到第一個能滿足要求的空閑區為止,并從中劃分出一塊與請求大小相等的記憶體空間分配給作業,為實作該演算法,應設定一起始查找指標,以指示下一次開始查找的空閑磁區,并采用回圈查找方式,即如果最后一個空閑磁區的大小仍不能滿足要求,則回傳到第一個空閑磁區進行查找,
優點 :記憶體中的空閑區分布得更均勻,減少查找空閑磁區的開銷,
缺點 :系統中缺乏大的空閑磁區,對大作業不利,
最佳適應分配演算法:該演算法從所有未分配的磁區中挑選一個 最接近作業大小且大于或等于作業的空閑磁區分配給作業
,目的是使每次分配后剩余的碎片最小,為了查找到大小最合適的空閑磁區,需要查遍整個空閑磁區表,從而增加了查找時間,因此,為了加快查找速度,要求將所有的空閑磁區,按從小到大遞增的順序進行排序,這樣,第一次找到的滿足要求的空閑磁區,必然是最佳的,
缺點 :每次分配之后形成的剩余部分,卻是一些小的碎片,不能被別的作業利用,因此,該演算法的記憶體利用率是不高的, 最壞適應分配演算法:
該演算法從所有未分配的磁區中挑選一個 最大的空閑磁區分配給作業
,目的是使分配后剩余的空閑磁區足夠大,可以被別的作業使用,為了查找到最大的空閑磁區,需要查遍整個空閑磁區表,從而增加了查找時間,因此,為了加快查找速度,要求將所有的空閑磁區按從大到小遞減的順序進行排序,這樣,第一次找到的空閑磁區,必然是最大的,優點:最壞適應分配演算法在分配后剩余的空閑磁區可能比較大,仍能滿足一般作業的要求,可供以后使用,從而最大程度地減少系統中不可利用的碎片,缺點:這種演算法使系統中的各空閑磁區比較均勻地減小,作業一段時間以后,就不能滿足對較大空閑磁區的分配要求,
- 例題

最佳適應演算法(Best Fit): 它從全部空閑區中找出能滿足作業要求的、且大小最小的空閑磁區,這種方法能使碎片盡量小
LRU置換演算法所基于的思想
在最近的過去很久未使用的在最近的將來也不會使用
LRU是最近最少使用頁面置換演算法(Least Recently Used),也就是首先淘汰最長時間未被使用的頁面!
LFU是最近最不常用頁面置換演算法(Least Frequently Used),也就是淘汰一定時期內被訪問次數最少的頁!
LRU:僅與上一次的使用時間有關,選擇距離最遠的;
LFU:與一定時間內的使用頻率有關,選擇頻率最小的;
- 選擇在最近的過去使用次數最少的頁面予以淘汰的演算法稱為 LFU
- 選擇在最近的過去很久未訪問的頁面予以淘汰的演算法稱為 LRU
LRU 最近最久未使用 recently:也就是首先淘汰最長時間未被使用的頁面!
LFU 最不頻繁被使用 frequenly:也就是淘汰一定時期內被訪問次數最少的頁!
虛擬存盤
在下面關于虛擬存盤器的敘述中,正確的是 要求程式運行前不必全部裝入記憶體且在運行程序中不必一直駐留在記憶體,
虛擬存盤的基本原理是:在程式裝入時不必將其全部讀到記憶體,而只需將當前需要執行的部分頁或段讀到記憶體,就可讓程式開始執行,在程式執行程序中,如果需執行的指令或訪問的資料尚未在記憶體,則由處理器通知作業系統將相應的頁或段調入到記憶體,然后繼續執行程式,另一方面,作業系統將記憶體中暫時不使用的頁或段調出保存在外存上,從而騰出空間存放將要調入的頁或段
-
虛存的可行性基礎是計算機中著名的區域性原理,
-
虛存最基本的特征是 多次性
虛擬記憶體的特征是:
1.虛擬擴充 即不是物理上而是邏輯上擴充了記憶體容量
2.部分裝入 即每個作業不是全部一次性地裝入記憶體,而是只裝入一部分
3.離散分配 即不必占用連續的記憶體空間,而是“見縫插針”
4.多次對換 即所需的全部程式和資料要分成多次調入記憶體
- 虛存的實際存盤容量=min(內、外存容量之和,CPU邏輯地址給出的空間大小)
- 實作虛存最主要的技術是 對換技術
根據程式執行的互斥性和區域性兩個特點,我們允許作業裝入的時候只裝入一部分,另一部分放在磁盤上,當需要的時候再裝入到主存,這樣以來,在一個小的主存空間就可以運行一個比它大的作業,因此虛擬存盤的主要技術是部分對換,
- 實作虛擬存盤的目的是 擴充主存容量
根據程式執行的互斥性和區域性兩個特點,我們允許作業裝入的時候只裝入一部分,另一部分放在磁盤上,當需要的時候再裝入到主存,這樣以來,在一個小的主存空間就可以運行一個比它大的作業,同時,用戶編程的時候也擺脫了一定要撰寫小于主存容量的作業的限制,也就是說,用戶的邏輯地址空間可以比主存的絕對地址空間要大,對用戶來說,好像計算機系統具有一個容量很大的主存盤器,稱為“虛擬存盤器”,
虛擬存盤(Storage Virtualization)是指將多個不同型別、獨立存在的物理存盤體,通過軟、硬體技術,集成轉化為一個邏輯上的虛擬的存盤單元,集中管理供用戶統一使用,這個虛擬邏輯存盤單元的存盤容量是它所集中管理的各物理存盤體的存盤量的總和,而它具有的訪問帶寬則在一定程度上接近各個物理存盤體的訪問帶寬之和,
- 靜態頁式管理記憶體管理方法不能實作虛存
頁式管理有: 靜態頁式管理; 動態頁式管理;
其中,靜態頁式管理是在作業或行程執行前,把作業或行程全部裝進記憶體中,如果記憶體中可用頁面數小于請求頁面數,該作業或行程等待,
動態頁式管理不會把作業或行程一次性全部裝進記憶體,只裝入被反復呼叫或執行的部分,其他部分在執行程序中動態裝入,
靜態頁式管理是一次性為要求記憶體的行程分配足夠多的頁面,無法將外存的空間利用起來實作虛存
虛存是 充分利用了地址空間
把輔存作為對主存的擴充,向用戶提供了一個比實際主存大得多的地址空間,即充分利用了輔存的地址空間,
- 虛擬存盤器的最大容量是由(計算機系統的地址結構和外存空間)決定的,
虛擬存盤器的最大容量 = min(記憶體+外存,2^n),n為計算機的地址總線位數,
- 若處理器有32位地址,則它的虛擬地址空間為 4G
頁式虛擬存盤管理
頁式虛擬存盤管理的主要特點是不要求將作業同時全部裝入到主存的連續區域
程式動態鏈接
程式動態鏈接的時刻是 裝入時 呼叫時
動態鏈接,在可執行檔案裝載時或運行時,由作業系統的裝載程式加載庫,大多數作業系統將決議外部參考(比如庫)作為加載程序的一部分,在這些系統上,可執行檔案包含一個叫做import
directory的表,該表的每一項包含一個庫的名字,根據表中記錄的名字,裝載程式在硬碟上搜索需要的庫,然后將其加載到記憶體中預先不確定的位置,之后根據加載庫后確定的庫的地址更新可執行程式,可執行程式根據更新后的庫資訊呼叫庫中的函式或參考庫中的資料,這種型別的動態加載成為裝載時加載
,被包括Windows和Linux的大多數系統采用, 作業系統在加載應用軟體時要完成的最復雜的作業之一就是加載時鏈接,其他作業系統可能在運行時決議參考,在這些系統上,可執行程式呼叫作業系統API,將庫的名字,函式在庫中的編號和函式引數一同傳遞,作業系統負責立即決議然后代表應用呼叫合適的函式,這種動態鏈接叫做運行時鏈接
,因為每個呼叫都會有系統開銷,運行時鏈接要慢得多,對應用的性能有負面影響,現代作業系統已經很少使用運行時鏈接,
可以動態鏈接的庫,在Windows上是dynamic link library (DLL),在UNIX或Linux上是Shared
Library,庫檔案是預先編譯鏈接好的可執行檔案,存盤在計算機的硬碟上,大多數情況下,同一時間多個應用可以使用一個庫的同一份拷貝,作業系統不需要加載這個庫的多個實體,
- 下面哪種記憶體管理方法有利于程式的動態鏈接?
分段存盤管理
動態鏈接 是指在作業運行之前,并不把幾個 目標程式 段鏈接起來,要運行時,先將主程式所對應的 目標程式
裝入記憶體并啟動運行,當運行程序中又需要呼叫某段時,才將該段(目標程式)調入記憶體并進行鏈接,可見, 動態鏈接 也要求以段作為管理的單位,
首次適應演算法的空閑區
首次適應演算法(First Fit):
從空閑磁區表的第一個表目起查找該表,把最先能夠滿足要求的空閑區分配給作業,這種方法目的在于減少查找時間,為適應這種演算法,空閑磁區表(空閑區鏈)中的空閑磁區要按地址由低到高進行排序,該演算法優先使用低址部分空閑區,在低址空間造成許多小的空閑區,在高地址空間保留大的空閑區,
最差適應演算法
在可變式磁區分配方案中,只需要進行一次比較就可以判定系統是否能滿足作業對主存空間要求的演算法是 最差適應演算法
最先適應演算法:依次判定后找到第一個滿足要求的哈 最佳適應演算法:對空閑區按從小到大排序,第一個滿足的就是啦
最差適應演算法:對空閑區按從大到小排序,第一個滿足的就是啦固定式磁區演算法:是磁區的
記憶體碎片
- 采用(分段式存盤管理)不會產生內部碎片
在記憶體管理中,內部碎片是已經被分配出去的的記憶體空間大于請求所需的記憶體空間,
外部碎片是指還沒有分配出去,但是由于大小太小而無法分配給申請空間的新行程的記憶體空間空閑塊,
固定磁區存在內部碎片,可變式磁區分配會存在外部碎片; 頁式虛擬存盤系統存在內部碎片;段式虛擬存盤系統,存在外部碎片
為了有效的利用記憶體,使記憶體產生更少的碎片,要對記憶體分頁,記憶體以頁為單位來使用,最后一頁往往裝不滿,于是形成了內部碎片,
為了共享要分段,在段的換入換出時形成外部碎片,比如5K的段換出后,有一個4k的段進來放到原來5k的地方,于是形成1k的外部碎片,
在記憶體管理中,內部碎片是已經被分配出去的的記憶體空間大于請求所需的記憶體空間,
外部碎片是指還沒有分配出去,但是由于大小太小而無法分配給申請空間的新行程的記憶體空間空閑塊,
段式存盤管理會出現外部碎片,
- 解決碎片問題,以及使程式可浮動的最好的辦法是采用動態重定位技術
靜態重定位:即在程式裝入記憶體的程序中完成,是指在程式開始運行前,程式中的各個地址有關的項均已完成重定位,地址變換通常是在裝入時一次完成的,以后不再改變,
動態重定位即在程式運行程序中要訪問資料時再進行邏輯地址與物理地址的變換(即在逐條指令執行時完成地址映射,
動態記憶體分配是指在程式執行的程序中動態地分配或者回收存盤空間的分配記憶體的方法,動態記憶體分配不象陣列等靜態記憶體分配方法那樣需要預先分配存盤空間,而是由系統根據程式的需要即時分配,且分配的大小就是程式要求的大小,
記憶體的靜態分配和動態分配的區別主要是兩個: 一是時間不同,靜態分配發生在程式編譯和連接的時候,動態分配則發生在程式調入和執行的時候,
二是空間不同,堆都是動態分配的,沒有靜態分配的堆,
抖動
系統"抖動"現象的發生是由 置換演算法選擇不當
在請求分頁存盤管理中,剛被替換出去的頁,立即又要被訪問,此時因無空閑記憶體,又要替換另一頁,而后者又是下一次要被訪問的頁,于是系統需花費大量的時間忙于進行這種頻繁的頁面交換,致使系統的實際效率很低,這種現象稱為抖動現象,一般都是由于置換演算法不佳引起
在固定磁區分配中
在固定磁區分配中,每個磁區的大小是 可以不同但預先固定
固定磁區分配,是滿足多道程式設計的存盤技術,可以將記憶體劃分成多個區,每個區運行一個作業,從而達到多道程式設計的多個作業同時在記憶體中的設計,
但是固定磁區分配是提前將記憶體劃分成多個區,區的大小可以不同,但是劃分好后,個數和大小都不能發生改變,
作業到來,選擇一個合適大小的區放置,但是作業長度不一,不會有太合適的區恰好滿足其大小,從而會造成區空間的浪費,并且此浪費非常嚴重,
在可變式磁區分配方案
在可變式磁區分配方案中,某一作業完成后,系統識訓其主存空間,并與相鄰空閑區合并,為此需修改空閑區表,造成空閑區數減2的情況是 有上鄰空閑區,也有下鄰空閑區
作業歸還磁區,要調整空閑區表,把空閑區表調整成空閑區長度遞減的次序排列登記,
可變磁區分配方式下,當識訓主存時,應檢查是否有與歸還區相鄰的空閑區,若有,則應合并成一個空閑區,
相鄰可能有上鄰空閑區、下鄰空閑區、既上鄰又下鄰空閑區、既無上鄰又無下鄰空閑區,
若有上鄰空閑區,只修改上鄰空閑區長度(為識訓的空閑區長度與原上鄰區長度之和)即可;
若有下鄰空閑區,改記錄這個下鄰空閑區記錄的地址為識訓空閑區的地址,長度為下鄰空閑區的長度和識訓空閑區的長度即可;
若既有上鄰又有下鄰空閑區,改記錄上鄰區記錄的長度(為上鄰區長度、下鄰區長度和識訓區長度之和),再把下鄰區記錄的標志位改為空即可;
若既無上鄰區又無下鄰區,那么找一個標志位為空的記錄,記下該回收區的起始地址和長度,且改寫相應的標志位為未分配,表明該登記欄中指示了一個空閑區,
還有一種情況,合并后空閑區數不變,是有下鄰區,沒有上鄰區
-
在可變式磁區分配方案中,某一作業完成后,系統識訓其主存空間,并與相鄰空閑區合并,為此需修改空閑區表,造成空閑區數減 1 的情況是 有上鄰空閑區,也有下鄰空閑區
-
在可變磁區存盤管理中的拼接技術可以 集中空閑區
用“拼接”技術把存盤空間內的碎片合并成一個更大的空間,
可重入碼
如果一個程式為多個程式所共享,那么該程式的代碼在執行的程序中不能被修改,即程式應該是可重入碼
可重入碼:當被多個執行緒呼叫的時候,不會參考任何共享資料,他們是執行緒安全的,(注意與執行緒安全做區別 可重入是執行緒安全的真子集)
重入代碼(Reentry code)也叫純代碼(Pure
code)是一種允許多個行程同時訪問的代碼,為了使各行程所執行的代碼完全相同,故不允許任何行程對其進行修改,程式在運行程序中可以被打斷,并由開始處再次執行,并且在合理的范圍內(多次重入,而不造成堆疊溢位等其他問題),程式可以在被打斷處繼續執行,且執行結果不受影響,
頁式存盤管理

物理地址=記憶體塊號*塊長+頁內地址 ;
塊的大小與葉大小一致;
由于頁面大小是4K = 2^12 ,所以邏輯地址的后12位為 頁內地址;
所以物理地址 = 2 *(2^12) + 0 = 8192;
邏輯地址=頁號頁面大小+頁內地址=04096+0=0 頁號=邏輯地址/頁面大小; 0/4096=0
頁內地址=邏輯地址%頁面大小;0%4096=0 通過頁號0找出對應的塊號為2,另外,塊大小=頁面大小=4096
物理地址=塊號塊大小+頁內地址=24096(4KB)+0=8192
- 由連續分配方式發展為分頁存盤管理方式的主要動力是 提高記憶體利用率
存盤模型
存盤模型可以分為六種方式:
- 單一連續區:一段時間內只能有一個行程在記憶體中,因此記憶體利用率低
- 固定磁區:把記憶體空間分割成若干區域,成為磁區,每個磁區裝載一個且只能有行程
- 可變磁區:根據行程的需要,把記憶體空間分割出一個磁區,分配給行程,剩余的部分成為新的空閑區, 缺點:產生外部碎片,記憶體利用率低
- 頁式存盤
- 段式存盤
- 段頁式存盤
這里的連續區應該就是單一連續區,頁式存盤改善了記憶體利用率低的特點
引入段式分配才是為了滿足用戶的需求
那么應該是引入多道序程式提高系統利用率,而基于段頁式不連續的記憶體分配的交換技術更好地滿足了多道程式的運行需要,
段式存盤管理
- 某段表的內容如表所示,480KB+154

段號為2,那么查表可以知道段首地址為480KB,也就是說段號為2的這個段的段首在存盤區中的位置為480KB,然后154為邏輯地址中的偏移量,也就是相對于地址480KB的相對位置,那么物理地址就是 480KB+154
- 在段頁式存盤管理系統中其虛擬地址空間是 二維
段頁式存盤是二維的,段號+頁號 頁內位移不算一維
首先,頁式存盤是一維的,段式存盤是二維的, 其次,這是兩種存盤管理的設計初衷決定的,跟邏輯地址的結構沒有關系,
在程式員的角度,你想操作一個記憶體地址,
(1)頁式存盤,你直接給一個邏輯地址就行,所以是一維的,雖然這個邏輯地址包含(頁號,偏移量),但是,分頁那是系統自己完成的事,我們不知道也不用關心最終地址到底在哪個頁上,
(2)段式存盤,你必須給出(段號,偏移量),所以是二維的, 因為分段的好處就是程式模塊化,不同的段權限不同,所以在哪個段上,是我們關心的,
- 分段尺寸受記憶體空間的限制,但作業總的尺寸不受記憶體空間的限制,
分段對應的是記憶體具體存盤管理的一種方式,是對具體記憶體進行管理,段號+基地址,分段尺寸最大為具體記憶體,
在動態鏈接時先將主程式所對應的目標程式裝入記憶體并啟動運行,運行程序中需要呼叫某段時才將該段記憶體合并進行鏈接,
而作業的大小不受記憶體大小限制,由虛擬存盤器解決空間不夠問題,允許作業裝入的時候只裝入一部分,另一部分放在 磁盤上,當需要的時候再裝入到主存,這樣以來,在一個小的主存空間就可以運行一個比它大的作業,同時,用戶編程的時候也擺脫了一定要撰寫小于主存容量的作業的限制,
IO控制方式
在下面的I/O控制方式中,需要CPU干預最少的方式是 I/O通道控制方式
程式IO方式
程式IO方式,是采用busy-waiting的方式,即CPU會采用輪詢的方式來詢問資料的方式來詢問資料-------效果最差
中斷IO方式
中斷IO方式,是設備控制器當取出一個資料之后向CPU發送一個中斷,然后CPU將資料從控制器中取到CPU暫存器,再然后轉移到記憶體中,這種方式,CPU是以位元組的方式來回應資料的,
DMA方式
DMA方式,是CPU通過向DMA控制器設定若干引數,然后DMA打開了一條記憶體到設備的通道,這樣,設備(記憶體)中的資料可以不通過CUl來進行資料互動,缺點是,DMA是多少設備就需要多少DMA,而且,DMA方式下,CPU的訪問設備是以資料塊為周期的,
IO通道方式
IO通道方式,IO通道相當于一個簡單的處理機,有自己的指令,也可以執行指令,指令存盤在記憶體,
IO通道相當于一條PCI總線,一條IO通道可以連接所有的設備控制器,然后CPU向IO通道發出指令,IO通道將會自動進行獲取資料,
另外,IO通道是以一組塊為單位進行獲取的,
所以,IO通道方式需要最少的CPU干預
一個獨立于CPU的專門I/O控制的處理機,控制設備與記憶體直接進行資料交換,
它有自己的通道命令,可由CPU執行相應指令來啟動通道,并在操作結束時向CPU發出中斷信號,
通道指令的格式一般由:操作碼,記數段,記憶體地址段,結束標志組成,
一個系統中可設立三種型別的通道:位元組多路通道、陣列多路通道、選擇通道,
- 利用通道實作了(記憶體和外設)之間資料的快速傳輸,
DMA控制器的出現已經減輕了CPU對資料輸入輸出的控制、使得CPU的效率合顯著的提高.
而通道的出現則進一步提高了CPU的效率.這是因為通道是一個特殊功能的處理器.
它有自己的指令和程式專門負責資料輸入輸出的傳輸控制.而CPU將“傳輸控制”的功能下放給通道后只負責“資料處理”功能.這樣.通道與CPU分時使用記憶體,實作了CPU內部運算與I/O設備的平行作業.
緩沖技術
CPU輸出資料的速度遠遠超過列印機的列印速度,影響程式執行速度,為解決這一問題,可以采用 緩沖技術
通道
通道是一個獨立與CPU的專管輸入/輸出控制的處理機,它控制設備與記憶體直接進行資料交換,引入通道的目的是讓資料的傳輸獨立于CPU,使CPU從繁重的I/O作業中解脫出來,它有自己的通道指令,這些指令受CPU啟動,并在操作結束向CPU發出中斷信號,通道技術主要是為了減輕CPU的作業負擔,增加了計算機系統的并行作業程度,
- 下列關于通道、設備、設備控制器三者間關系的敘述中正確的是 通道控制設備控制器,設備控制器控制設備
CPU要完成一組I/O操作,只需要向I/O通道發送一條I/O指令,通道接到指令,通過執行通道程式,并且與設備控制器一起共同來實作對I/O設備的控制和操作,
CPU控制I/O通道,I/O通道控制設備控制器,設備控制器控制設備
通道是一種特殊的處理機,具有(執行I/O指令集)能力,
I/O通道的目的是為了建立獨立的I/O通道,使得原來一些由CPU處理的I/O任務由通道來承擔,從而解脫cpu,
通道所能執行的命令局限于I/O操作的指令,也就是執行I/O指令集,
虛擬存盤器
虛擬存盤器:它使得應用程式認為它擁有連續的可用的記憶體,而實際上,它通常是被分隔成多個物理記憶體碎片,還有部分暫時存盤在外部磁盤存盤器上,在需要時進行資料交換,
并行技術
并行技術可以分為多行程編程和多執行緒編程,通常用IPC的形式來實作行程間的同步,如管道,信號量,訊息佇列或者共享存盤,在所有IPC敏感詞享存盤器是最快的,
緩沖技術
緩沖技術是為了緩和CPU和I/O設備速度不匹配的矛盾,提高CPU和I/O設備的并行性,在現代作業系統中,幾乎所以的I/O設備在與處理機交換資料時都用了快取區,并提供獲得和釋放緩沖區的手段,
總的來說,緩沖區技術用到了緩沖區,而緩沖區的引入是為了緩和CPU和I/O設備速度不匹配,從而可以有效的減少CPU的終端頻率,提高CPU和I/O設備的并行性,
單緩沖技術
- 設從磁盤將一塊資料傳送到緩沖區所用實際為80μs,將緩沖區中資料傳送到用戶區所用時間為40μs,CPU處理資料所用的時間為30μs,則處理該資料,采用單緩沖傳送磁盤資料,系統所用總時間為(120μs),
max(磁盤到緩沖區,CPU處理) + 緩沖區到用戶區 = max(80, 30) + 40 = 120


T和C并行,max(t,c)+m
快取區存在的意義是:使用戶輸入資料的速度與cpu處理資料的速度相協調; 因而,用戶輸入資料的程序與cpu處理的程序可以并行;
雙緩沖技術

- 為了實作CPU與外部設備間最大的并行性,應采用 通道設備
緩沖是進一步提高兩者的并行,而通道就是為了解放CPU才提出來的,如果沒有通道,CPU需要對設備進行較多的控制,如何能并行?
- 作業系統采用緩沖技術,能夠減少對CPU的 中斷 次數,從而提高資源的利用率,
緩沖區的作用是提高了IO速度,減少了中斷的可能性
- 在現代作業系統中采用緩沖技術的主要目的是 提高CPU與設備之間的并行程度
磁盤設備
磁盤設備的特點
傳輸速率較高,以資料塊為傳輸單位
I/O控制方式常采用DMA方式
可以尋址,隨即地讀/寫任意資料塊
一段時間內只允許多個用戶(行程)訪問
磁盤允許一段時間內,多個行程交叉訪問,對于每一時刻而言,只允許一個行程訪問,
磁盤尋址

SPOOLing假脫機技術
假脫機又稱為Spooling,是用來保存設備輸出的緩沖區,這些設備不能接受交叉的資料流,例如列印機雖然只能一次列印一個任務,但是可能有多個程式希望希望并發列印而又不能將其輸出混在一起,應用程式的輸出先是假脫機到一個獨立的磁盤上,當應用程式完成列印時,假脫機系統將回應的待送列印機的假脫機檔案進行排隊,
- 假脫機技術中,對列印機的操作實際上是用借助磁盤存盤實作的,這樣實作的列印機構是 共享設備
虛擬設備是種技術,將獨占設備變成共享設備
spooling技術又稱“假脫機”技術 :是用軟體的方式實作脫機技術 脫機技術:脫離主機的控制進行的輸入/輸出 操作
例子:共享列印機:列印機原本是一種“獨占式”設備,使用spooling技術
可以變為邏輯上的共享設備,當多個用戶行程提出列印請求時,系統會答應它們的請求,但不會真正把列印機分配給它們,而是把資料放到磁盤的輸出井中,然后把該行程用戶列印請求表掛到假脫機佇列中,當列印機空閑時,才進行列印
- 使用SPOOLing系統的目的是為了提高(I/O設備)的使用效率,
SPOOLing (即 外部設備 聯機并行操作),即Simultaneous Peripheral Operation
On-Line的縮寫,它是關于慢速 字符設備 如何與計算機主機交換資訊的一種技術,通常稱為“ 假脫機 技術”, SPOOLing 技術特點:
(1)提高了I/O速度.從對低速I/O設備進行的I/O操作變為對輸入井或輸出井的操作,如同脫機操作一樣,提高了I/O速度,緩和了CPU與低速I/O設備速度不匹配的矛盾.
(2)設備并沒有分配給任何行程.在輸入井或輸出井中,分配給行程的是一存盤區和建立一張I/O請求表.
(3)實作了虛擬設備功能.多個行程同時使用一獨享設備,而對每一行程而言,都認為自己獨占這一設備,不過,該設備是邏輯上的設備.
SPOOLing系統(假脫機)的特點
①提高了I/O的速度,
②將獨占設備改造為共享設備,
③實作了虛擬設備功能,
虛擬設備是種技術,假脫機對設備本身而言實作了將獨占設備變成共享設備
使用SPOOLing系統的目的是為了提高(I/O設備)的使用效率,
SPOOLing (即外部設備聯機并行操作),即Simultaneous Peripheral Operation On-Line的縮寫,它是關于慢速字符設備如何與計算機主機交換資訊的一種技術,通常稱為“假脫機技術”,
該技術是在通道技術和多道程式設計基礎上產生的,它由主機和相應的通道共同承擔作業的輸入輸出作業,利用磁盤作為后援存盤器,實作外圍設備同時聯機操作,
SPOOLing系統由專門負責I/O的常駐記憶體的行程以及輸入井、輸出井組成;它將獨占設備改造為共享設備,實作了虛擬設備功能,
緩和CPU與低速I/O設備速度不匹配的矛盾; 實作了 虛擬設備 功能 ,
虛擬設備
虛擬設備是指把一個物理設備變換成多個對應的邏輯設備,
通過SPOOLing技術可將一臺物理I/O設備虛擬為多臺邏輯I/O設備,允許多個用戶共享一臺物理I/O設備,如列印機,
IO重定向
是指將命令的執行結果重新匯出到其他的設備或者檔案,主要包括輸入重定向和輸出重定向
I/O重定向,是指用于I/O操作的設備可以更換(重定向),而不必改變應用程式,比如除錯程式,可將所有輸出送螢屏顯示,而程式除錯完后,如需正式列印出來,需將I/O重定向中的資料結構—邏輯設備表中的顯示終端改為列印機,
-
在除錯程式時,可以把所有輸出送到螢屏顯示,而不必正式輸出到列印設備,其運用了 IO重定向
-
一計算機系統配備了三臺HP1000激光列印機、一臺繪圖機,為此該系統需在記憶體中配置(2)個設備驅動程式,
分時作業系統
把計算機與許多終端用戶連接起來,分時作業系統將系統 處理機
時間與記憶體空間按一定的時間間隔,輪流地切換給各終端用戶的程式使用,由于時間間隔很短,每個用戶的感覺就像他獨占計算機一樣,分時作業系統的特點是可有效增加資源的使用率,例如UNIX系統就采用剝奪式動態優先的CPU調度,有力地支持分時操作,——百度百科詞條:分時作業系統
分時會導致行程切換,效率反而不高, 應該是多道程式的出現是為了提高系統資源的利用率
- 推動分時作業系統形成和發展的主要動力是 方便用戶
分時系統可以很好的將一臺計算機提供給多個用戶使用,主要用于查詢系統,
用戶需求表現:
1人機互動
2 共享主機
3 便于用戶上機
系統開銷
- 假設就緒佇列中有10個行程,以時間片輪轉方式進行行程調度,時間片大小為300ms,CPU進行行程切換需要花費10ms,則系統開銷所占比率和行程數目增加到30個,其余條件不變時系統開銷所占的比率相比,其結果是 等于
行程數為 10 的情況下,系統開銷比率等于切換行程總時間 / 行程總共運行時間,其中切換行程運行時間為 1010ms ,行程運行總時間為
30010+1010ms ,因此系統開銷比率為 1010/(30010+1010),
可以看出系統開銷比率與行程數無關,故選擇等于選項,
CPU利用率
- 測得某個請求調頁的計算機系統部分狀態資料為:CPU利用率20%,用于對換空間的硬碟利用率為97.7%,其他設備的利用率為5%,由此斷定該系統例外,此情況下(安裝一個更快的硬碟、減少運行的行程數目)能提高CPU的利用率,
cpu利用率的瓶頸是硬碟的讀寫慢:
一,安裝 一個更快的硬碟,相當于拓寬公路,因此A肯定沒有為題,
二,減少行程數,相當于本來擁堵的公路車采取限號,讓整個路更通暢了,這里有一個誤區,并不是行程數越多,cpu利用率越高,就好像公路上車越多,單位時間內通過的車就越多一樣,也可能情況相反,還不如讓車少一點,單位時間內通過的車可能會更多,
對換空間的硬碟利用率為97.7% 可見行程數目太多導致記憶體不足,導致頻繁的換頁
CPU和I/O設備占用率較低,而磁盤交換區占用率非常高,說明當前系統頻繁缺頁,頻繁進行頁面置換,導致真正執行任務的時間變短,效率變低,系統發生抖動,因此要緩解這種情況就需要降低系統缺頁率,才能使系統有更多時間來處理任務而不是置換頁面,
對于A,安裝一個更快的硬碟,既把交換磁區放在更快的硬碟上,相當于給你電腦把分頁檔案pagefile.sys放在固態硬碟上肯定比你放在機械硬碟上在交換頁面的時候速度要快,但是這并沒有從根本上解決頁面置換演算法的抖動現象,換入換出的頻率并沒有改變,只是一定程度上的改善了這一狀況,
對于D,減少行程運行數目,這樣每個行程分配到的記憶體空間會相對增大,可以有效降低缺頁率, 還有在增加記憶體的情況下也可以從根本上解決這一情況,
通信時中斷計算
在利用RS-232串口進行通信時,其通信速率為9.6Kb/s(b為bit),如果通信串口中設定了一個16位暫存器作為緩沖暫存器,這意味著每隔(1.6ms)時間便要中斷一次CPU,
t=16/(9.6*2^10)=1.62ms
在資料通訊的時候,1Kb/s = 1000bit/s,只有關于記憶體和存盤時,才是1024,9.6kb/s = 9600bit/s,計算出約為1.6ms
資料塊處理時間(單緩沖雙緩沖)
假定把磁盤上的一個資料塊中的資訊輸入到一個雙緩沖區的時間為T=0.1ms,將緩沖區中的資料傳送到用戶區的時間M=0.05ms,而CPU對資料的處理時間C=0.05ms,這樣系統對每個資料塊的處理時間為:
因為是雙緩沖,所以從磁盤讀資料到緩沖區和CPU處理緩沖區資料可以同步進行,因此時間為0.1ms
對于單緩沖: 假定從磁盤把一塊資料輸入到緩沖區的時間為T,作業系統將該緩沖區中的資料傳送到用戶區的時間為M,而CPU對這一塊資料處理的時間為C,由于T和C是可以并行的,當T>C時,系統對每一塊資料的處理時間為M十T,反之則為M+C,故可把系統對每一塊資料的處理時間表示為Max(C,T)+M,
對于雙緩沖: 系統處理一塊資料的時間可以粗略地認為是MAC(C, T),如果C<T,可使塊設備連續輸入;如果C>T,則可使CPU不必等待設備輸入,對于字符設備,若釆用行輸入方式,則釆用雙緩沖可使用戶在輸入完第一行之后,在CPU執行第一行中的命令的同時,用戶可繼續向第二緩沖區輸入下一行資料,而單緩沖情況下則必須等待一行資料被提取完畢才可輸入下一行的資料,
對每一塊的平均耗時:MAX(T,C+M);
檔案
- 檔案的物理結構不僅與外存的分配方式相關,還與存盤介質的特性相關,通常在磁帶上只適合使用順序結構,
- 采用順序結構的檔案既適合進行順序訪問,也適合進行隨機訪問,
- 雖然磁盤是隨機訪問的設備,但其中的檔案也可以使用順序結構,
- 順序檔案必須采用連續分配方式,而鏈接檔案和索引檔案則可采用離散分配方式,
檔案分配對應于檔案的物理結構,是指如何為檔案分配磁盤塊,常用的磁盤空間分配方 法有三種:連續分配、鏈接分配和索引分配,
順序分配:順序分配方法要求每個檔案在磁盤上占有一組連續的塊,
隱式鏈接分配:
每個檔案對應一個磁盤塊的鏈表;磁盤塊分布在磁盤的任何地方,除最后一個盤塊外,每一個盤塊都有指向下一個盤塊的指標,這些指標對用戶是透明的,
顯式鏈接分配:是指把用于鏈接檔案各物理塊的指標,顯式地存放在記憶體的一張鏈接表中,
該表在整個磁盤僅設定一張,每個表項中存放鏈接指標,即下一個盤塊號, 在該表中,凡是屬于某一檔案的第一個盤塊號,或者說是每一條鏈的鏈首指標所對應的盤塊號,均作為檔案地址被填入相應檔案的FCB的“物理地址”欄位中,
由于查找記錄的程序是在記憶體中進行的,因而不僅顯著地提高了檢索速度,而且大大減少了訪問磁盤的次數,由于分配給檔案的 所有盤塊號都放在該表中,故稱該表為檔案分配表(File Allocation Table, FAT),
MS-DOS 采用的就是這種方式,
- 磁帶機屬于 順序存取 設備
- 在UNIX中,通常把設備作為(特殊)檔案來處理,
- 外存上存放的資料 必須在訪問前先裝入記憶體
- 檔案的存盤方法依賴于 檔案的物理結構和存放檔案的存盤設備的特性
- 目錄檔案所存放的資訊是 該目錄中所有子目錄檔案和資料檔案的目錄
檔案目錄:把所有的FCB組織在一起,就構成了檔案目錄,即檔案控制塊的有序集合;
目錄檔案:為了實作對檔案目錄的管理,通常將檔案目錄以檔案的形式保持在外存,這個檔案就叫目錄檔案,
多道程式設計
- 多道程式設計是指在一臺處理機上并發運行多個程式
- 在計算機系統中,作業系統是 核心系統軟體
作業系統,是計算機系統中負責支撐應用程式運行環境以及用戶操作環境的系統軟體,同時也是計算機系統的核心與基石,即作業系統首先是軟體,而且是系統軟體,它在計算機系統中的作用,大致可以從兩方面體會:對內,作業系統管理計算機系統的各種資源,擴充硬體的功能;對外,作業系統提供良好的人機界面,方便用戶使用計算機
多道程式技術運行的特征:多道、宏觀上并行、微觀上串行
-
多道程式運行的特征:多道 、宏觀上并行、實際上多道程式是串插運行的
-
引入多道程式的目的在于 充分利用CPU,減少CPU等待時間
多道程式設計技術是在計算機記憶體中同時存放幾道相互獨立的程式,使它們在管理程式控制下,相互穿插運行,兩個或兩個以上程式在計算機系統中同處于開始到結束之間的狀態,
這些程式共享計算機系統資源,
與之相對應的是單道程式,即在計算機記憶體中只允許一個的程式運行,
即:提高CPU的利用率,
在多道程式環境下,多個程式共享計算機資源當某個程式等待I/O操作時,CPU可以執行其他程式,大大提高CPU的利用率,
行程
由程式段、相關資料段和PCB三部分便構成行程物體(行程映像)
(1)行程是程式的一次執行
(2)行程是一個程式及其資料在處理機上順序執行時所發生的活動
(3)行程是具有獨立功能的程式在一個資料集合上運行的程序,它是系統進行資源分配和調度的一個獨立單位
- 行程是動態的,程式是靜態的,這是行程和程式的一個本質區別,
- 行程在系統中是否存在的惟一標志是 行程控制塊
行程唯一表征為以下元素:標示符,狀態,優先級,程式計數器,記憶體指標,背景關系資料,I/O狀態資訊,記賬資訊,這些資訊被存盤在一個稱為行程控制塊(PCB)的資料結構中,
UNIX 作業系統 (分時作業系統)
UNIX作業系統是著名的 分時系統
UNIX作業系統(尤尼斯),是一個強大的多用戶、多任務 作業系統 ,支持多種 處理器架構 ,按照作業系統的分類,屬于 分時作業系統
UNIX系統是一個多用戶,多任務的分時作業系統,
UNIX的系統結構可分為三部分:作業系統內核(是UNIX系統核心管理和控制中心,在系統啟動或常駐記憶體),系統呼叫(供程式開發者開發應用程式時呼叫系統組件,包括行程管理,檔案管理,設備狀態等),應用程式(包括各種開發工具,編譯器,網路通訊處理程式等,所有應用程式都在Shell的管理和控制下為用戶服務),
UNIX系統大部分是由C語言撰寫的,這使得系統易讀,易修改,易移植,
UNIX提供了豐富的,精心挑選的系統呼叫,整個系統的實作十分緊湊,簡潔,
UNIX提供了功能強大的可編程的Shell語言(外殼語言)作為用戶界面具有簡潔,高效的特點,
UNIX系統采用樹狀目錄結構,具有良好的安全性,保密性和可維護性,
UNIX系統采用行程對換(Swapping)的記憶體管理機制和請求調頁的存盤方式,實作了虛擬記憶體管理,大大提高了記憶體的使用效率,
UNIX系統提供多種通信機制,如:管道通信,軟中斷通信,訊息通信,共享存盤器通信,信號燈通信,
不是分時系統的特征 成批性
特征:
互動性 多路性 獨占性
作業系統的特征
- 現代作業系統的兩個基本特征是(程式的并發執行)和 資源共享,
作業系統的特征:并發,共享,虛擬和異步 并發:計算機中存在多個運行的程式,需要OS管理和調度,
多個應用程式交替執行,需要知道所有運行的程式當前的執行的位置,當前正在執行的是哪一個應用,如果應用之間有切換的時候,切換到下一個應用的時候,它上次執行到什么位置,這次就從什么時候開始,當時的狀態是什么樣子,都需要作業系統來維護,
共享: “同時”共享 和 互斥共享
多個應用并發執行的時候,宏觀上要體現出它們在同時訪問資源的情況,而微觀上要實作它們的互斥訪問,比如說我們說到的記憶體,兩個應用同時訪問記憶體,那這個時候,每個應用需要知道它訪問的是哪一個,另一個應用訪問的是哪一個,他們倆之間不能訪問出錯,其中一個需要保護的記憶體資源,不能讓另外一個應用去訪問,在微觀上需要對它們做很好的隔離,因為在資料總線上任何時刻只有一個應用去訪問存盤單元,這就是所說的微觀上的互斥,
虛擬:利用多道程式設計技術(程式的交替運行),讓每個用戶都覺得有一個計算機專門為他服務,
作業系統在每個應用執行的時候,這種交替執行的交替頻率特別高,讓用戶在應用的時候感覺不太出來這臺機器還有其他用戶在用,當然負載大到一定程度,用戶是可以感覺到的,
異步:
1.程式的執行不是一貫到底的,而是走走停停,向前推進的速度不可預知,
2.只要運行的環境相同,OS需要保證程式運行的結果也要相同,如果說某個應用就是需要知道跟時間相關的這種走走停停的資訊,也是可以在作業系統的支持之下,發現這種時間上的差異的,
- 在作業系統中,可以并行作業的基本單位是 行程
并行性:兩個或多個事件在同一時刻發生
并發性:兩個或多個事件在同一時間間隔內發生作業只能并發操作,行程可以并行
- 作業系統是一種 系統軟體
- 從用戶的觀點來看,作業系統是 用戶與計算機之間的介面
- 下列的(中斷)不屬于作業系統所管理的資源,
資料、記憶體、CPU
- 作業系統的功能不包括 用戶管理
處理機管理、存盤管理、檔案管理、設備管理
磁區
磁區 存盤管理支持多道程式設計,演算法簡單,但存盤碎片多,
磁區分配是能滿足多道程式設計需要的一種最簡單的存盤管理技術,如可變式磁區法,基本思想是,當用戶作業要求進入主存時,在主存可利用的空間區中,找到大于等于用戶作業所需要的空間容量,如果該空間大于用戶用需要的容量,那么作業系統將會把該磁區分成兩部份,一部份大小是剛好用戶作業所需要的大小,一份則是較小剩下來的,由此可見,這樣就會產生很多小的存盤碎片,
其他選項就不是很簡單的演算法了,均需要地址變換,
為了支持多道程式系統和分時系統,支持多個程式并發執行,引入了磁區式存盤管理,磁區式存盤管理是把記憶體分為一些大小相等或不等的磁區,作業系統占用其中一個磁區,其余的磁區由應用程式使用,每個應用程式占用一個或幾個磁區,磁區式存盤管理雖然可以支持并發,但難以進行記憶體磁區的共享,
常用的磁區方法有固定磁區和動態磁區,而動態磁區中常用的磁區分配演算法有首次適配法,下次適配法,最佳適配法,最差適配法,
為了解決磁區分配帶來的碎片問題,引入了伙伴系統:無論已分配磁區或空閑磁區,其大小均為2的k次冪,在系統運行程序中,由于不斷的劃分,可能會形成若干個不連續的空閑磁區,將這些空閑磁區根據磁區的大小進行分類,對于每一類具有相同大小的所有空閑磁區,單獨設立一個空閑磁區雙向鏈表,這樣,不同大小的空閑磁區形成了k個空閑磁區鏈表,
原語
原語是一種特殊的系統呼叫命令,它的特點是 執行時不可中斷
原語和廣義指令都可以被行程所呼叫,兩者的差別在于原語有不可中斷性,它是通過在執行程序中關閉中斷實作的,且一般由系統行程呼叫,
原語是由若干個 機器指令 構成的完成某種特定功能的一段程式,具有不可分割性·即原語的執行必須是連續的,在執行程序中不允許被中斷,
原語通常由若干條指令組成,用來實作某個特定的操作,
通過一段不可分割的或不可中斷的程式實作其功能,
原語是作業系統的核心,它不是由行程而是由一組程式模塊所組成,是作業系統的一個組成部分,它必須在管態(一種機器狀態,管態下執行的程式可以執行特權和非特權兩類指令,通常把它定義為作業系統的狀態)下執行,并且常駐記憶體,而個別系統有一部分不在管態下運行,
原語和廣義指令都可以被行程所呼叫,兩者的差別在于原語有不可中斷性,它是通過在執行程序中關閉中斷實作的,且一般由系統行程呼叫,
許多廣義指令的功能都可用目態(一種機器狀態,通常把它作為用戶程式執行時的狀態)下運行的系統行程完成,而不一定要在管態下完成,例如檔案的建立、打開、關閉、洗掉等廣義指令,都是借助中斷進入管態程式,然后轉交給相應的行程,最終由行程實作其功能,
引進原語的主要目的是為了實作行程的通信和控制,
系統呼叫
系統呼叫的目的是 請求系統服務
請求系統服務,
作業系統編制了許多不同功能的子程式,供用戶程式執行中呼叫,這些由作業系統提供的子程式稱為系統功能呼叫,簡稱系統呼叫,
系統呼叫是作業系統為用戶程式提供的一種服務界面,或者說,是作業系統保證程式設計語言能正常作業的一種支持,
作業系統的主要功能是為管理硬體資源和為應用程式開發人員提供良好的環境來使應用程式具有更好的兼容性,為了達到這個目的,內核提供一系列具備預定功能的多內核函式,通過一組稱為系統呼叫(system call)的介面呈現給用戶,
系統呼叫把應用程式的請求傳給內核,呼叫相應的的內核函式完成所需的處理,將處理結果回傳給應用程式,
系統呼叫,也稱為系統功能呼叫,作業系統編制了許多不同功能的小程式,供用戶程式執行中呼叫,這些由作業系統提供的子程式稱為系統呼叫,
- 時間片輪轉法進行行程調度是為了 多個終端都能得到系統的及時回應
時間片輪轉法是以選擇一個單位時間片進行調度的,若當前行程在單位時間片內沒有執行完成,會將其根據背景關系以FIFO的形式放到佇列最后,進而執行下一個時間片的行程
時間片輪轉就是保證每個都能得到等概率的執行
- 作業系統內核與用戶程式、應用程式之間的介面是 系統呼叫
計算機結構分析自底向上依次是: 硬體->驅動程式->內核->用戶介面程式->應用程式,
用戶介面程式:基于文本的叫shell,基于圖示的叫圖形用戶界面(GUI)如Gnome、KDE,

系統呼叫為用戶程式提供了介面,
內核空間和用戶空間之間存在著明顯的權限差異,
而作業系統會在程式,系統部件以及內核與外部程式之間設定安全隔離,系統呼叫此時提供了一個系統級的介面,使得用戶程式可以合法使用系統功能,(超越用戶態的權限和功能)
- 在一段時間內,只允許一個行程訪問的資源稱為 臨界資源 ,訪問這類資源的代碼叫做 臨界區
對臨界資源,應采取 互斥訪問 方式,來實作共享
五大型別作業系統各自的特點
批處理作業系統
(1) 批處理作業系統的特點有:
a.用戶脫機使用計算機,用戶提交作業之后直到獲得結果之前就不再和計算機打交道,作業提交的方式可以是直接交給計算中心的管理操作員,也可以是通過遠程通訊線路提交,提交的作業由系統外存收容成為后備作業,
b.成批處理,操作員把用戶提交的作業分批進行處理,每批中的作業將由作業系統或監督程式負責作業間自動調度執行,
c.多道程式運行,按多道程式設計的調度原則,從一批后備作業中選取多道作業調入記憶體并組織它們運行,成為多道批處理,
分時作業系統
(2)分時作業系統的特點有:
a. 互動性:首先,用戶可以在程式動態運行情況下對其加以控制,其次,用戶上機提交作業方便,分時系統還為用戶之間進行合作提供方便,
b.多用戶同時性:多個用戶同時在自己的終端上上機,共享CPU和其他資源,充分發揮系統的效率,
c.獨立性:客觀效果上用戶彼此間感覺不到有別人也在使用該臺計算機,如同自己獨占計算機一樣,
就緒佇列中行程的數目;
系統的處理能力;
系統對回應時間的要求
是分時系統中確定時間片大小需要考慮的因素,
實時作業系統
(3) 實時作業系統的特點有:
a.實時時鐘管理(定時處理和延時處理),
b. 連續的人-機對話,這對實時控制往往是必須的,
c.要求采取過載保護措施,例如對于短期過載,把輸入任務按一定的策略在緩沖區排隊,等待調度; 對于持續性過載,可能要拒絕某些任務的輸入;
在實時控制系統中,則及時處理某些任務,放棄某些任務或降低對某些任務的服務頻率,
d.高度可靠性和安全性需采取冗余措施,雙機系統前后臺作業,包括必要的保密措施等,
網路作業系統
(4) 網路作業系統的特點有:
a.計算機網路是一個互連的計算機系統的群體,
b. 這些計算機是自治的,每臺計算機有自己的作業系統,各自獨立作業,它們在網路協議控制下協同作業,
c.系統互連要通過通信設施(硬體、軟體)來實作, d.系統通過通信設施執行資訊交換、資源共享、互操作和協作處理,實作多種應用要求,
網路作業系統:不是基本的作業系統,
分布式作業系統
(5)分布式作業系統的特點有:
a.計算機網路的開發都遵循協議,而對于各種分布式系統并沒有制定標準的協議,當然,計算機網路也可認為是一種分布式系統,
b.分布式系統要求一個統一的作業系統,實作系統操作的統一性,
c.分布式作業系統對用戶是透明的,但對計算機網路,若一個計算機上的用戶希望使用另一臺計算機上的資源,則必須明確指明是哪臺計算機,
d.分布式系統的基礎是網路,分布式系統已不僅是一個物理上的松散耦合系統,同時還是一個邏輯上緊密耦合的系統,
e.分布式系統還處在研究階段,而計算機網路已經在各個領域得到廣泛的應用,
比較頁式虛擬存盤器和段式虛擬存盤器的優缺點
頁式虛擬存盤器管理方法的
主要優點是頁表硬體少,查表速度快,主存零頭少;
主要缺點是分頁無邏輯意義,不利于存盤保護,
而段式虛擬存盤器管理方法的
優點是段的界限分明,支持程式的模塊化設計,易于對程式段的編譯、修改和保護;便于多道程式的共享,
主要缺點是因為段的長度不同,所以主存利用率不高,且因為段間地址不連續會產生大量的記憶體碎片,造成浪費;段表龐大查表速度慢,
簡述什么是RAID,RAID0
RAID是一種把多塊獨立的 硬碟 (物理硬碟)按不同的方式組合起來形成一個硬碟組(邏輯硬碟),從而提供比單個硬碟更高的存盤性能和提供 資料備份 技術,組成 磁盤陣列 的不同方式稱為 RAID級別 (RAID Levels),在用戶看起來,組成的磁盤組就像是一個硬碟,用戶可以對它進行磁區,格式化等等,總之,對磁盤陣列的操作與單個硬碟一模一樣,不同的是,磁盤陣列的存盤速度要比單個硬碟高很多,而且可以提供自動資料備份,資料備份的功能是在用戶資料一旦發生損壞后,利用備份資訊可以使損壞資料得以恢復,從而保障了用戶資料的安全性,
RAID 0 可以把多塊硬碟連成一個容量更大的硬碟群,可以提高磁 盤的性能和吞吐量,RAID
0沒有冗余或錯誤修復能力,成本低,要求至少兩個磁盤,一般只是在那些對數 據安全性要求不高的情況下才被使用,
RAID1 稱為磁盤鏡像:把一個磁盤的資料鏡像到另一個磁盤上,在不影響性能情況下最大限度的保證系統的可靠性和可修復性上,具有很高的資料冗余能力,但磁盤利用
率為50%,故成本最高,多用在保存關鍵性的重要資料的場合,RAID 1的操作方式是把用戶寫入硬碟的資料百分之百地自動復制到另外一個硬碟上,
RAID 2 是RAID 0的改良版,以漢明碼(Hamming
Code)的方式將資料進行編碼后分割為獨立的位元,并將資料分別寫入硬碟中,因為在資料中加入了錯誤修正碼(ECC,Error
Correction Code),所以資料整體的容量會比原始資料大一些,
RAID 3 是把資料分成多個“塊”,按照一定的容錯演算法,存放在N+1個硬碟上,實際資料占用的有效空間為N個硬碟的空間總和,而第N+1個硬碟上存盤的資料是校驗容錯資訊,當這N+1個硬碟中的其中一個硬碟出現故障時,從其它N個硬碟中的資料也可以恢復原始資料,這樣,僅使用這N個硬碟也可以帶傷繼續作業(如采集和回放素材),當更換一個新硬碟后,系統可以重新恢復完整的校驗容錯資訊,由于在一個硬碟陣列中,多于一個硬碟同時出現故障率的幾率很小,所以一般情況下,使用RAID3,安全性是可以得到保障的,
SimpleTest
A
fill blank
- 作業系統的五大管理功能: 作業管理、檔案管理、記憶體管理、設備管理、行程管理,
拓展知識:
作業系統的五大管理功能:
(1)作業管理:包括任務、界面管理、人機互動、圖形界面、語音控制和虛擬現實等;
(2)檔案管理:又稱為資訊管理;
(3)存盤管理:實質是對存盤“空間”的管理,主要指對主存的管理;
(4)設備管理:實質是對硬體設備的管理,其中包括對輸入輸出設備的分配、啟動、完成和回收;
(5)行程管理:實質上是對處理機執行“時間”的管理,即如何將CPU真正合理地分配給每個任務,
- FCB 是檔案存在的標志,它記錄了系統管理檔案所需的全部資訊,
檔案控制塊 FCB 是檔案存在的標志,它記錄了系統管理檔案所需要的全部資訊,
- 創建一個行程的主要任務是建立該行程的 PCB或程式控制塊,并把它掛到就緒佇列中,
創建行程的主要步驟:
( 1 )申請空白 PCB ,
( 2 )為新行程分配資源,
( 3 )為新行程分配其他必要資源,
( 4 )初始化行程控制塊,
( 5 )將新行程插入就緒佇列,如果行程就緒佇列能夠接納新行程, 便將新行程插入就緒佇列,
行程創建原語的主要任務是 創建行程控制塊PCB,并分配所需的各種資源
- 行程間的同步與互斥反應了行程間的 并發和共享,
同步反映了行程間的合作關系,
互斥反映了行程間的競爭關系,
- SPOOLing系統中的 輸入緩沖區 和 輸出緩沖區 對脫機輸入中的磁盤進行模擬,輸入行程和輸出行程 對脫機輸入中的外圍設備進行模擬,
Spooling系統中的用戶程式可以隨時將輸出資料送到輸出井中,待輸出設備空閑時再由 Spooling系統完成資料的輸出操作,
SPOOLing是對脫機I/O作業方式的模擬,SPOOLing系統中的輸入井是對脫機輸入中的(磁盤)進行模擬,輸出井是對脫機輸出中的(磁盤)進行模擬,輸入行程是對脫機輸入中的(外圍控制機)進行模擬,
- 在回應比高者優先的調度演算法中,各個作業等待時間相同時,運行時間短的將得到優先調度,運行時間相同時,等待時間長的將得到優先調度,
choice question
- 在分時系統中時間片一定時,(用戶數越多)回應時間越長,
在分時系統中,時間片越小不一定好,
-
多道程式環境下,作業系統分配資源的基本單位是 行程
-
設計分時作業系統時,首先要考慮的是 互動性和回應時間;
設計實時作業系統時,首先要考慮的是 實時性和可靠性 -
在分時作業系統環境下運行的作業通常稱為 終端型作業,
-
在請求頁式存盤管理中,在(記憶體中無空閑頁面)時呼叫置換演算法,
在請求頁式存盤管理中,若所需頁面不在記憶體中,則會引起 缺頁中斷 -
在批處理系統中,作業調度程式從后備作業佇列中選出若干作業,使其進入 記憶體
不屬于作業管理程式任務的是 為作業對應的行程分配處理器
作業調度程式從處于就緒狀態的佇列選取適當的作業投入運行, 錯誤
-
在沒有快表的情況下,分頁系統每訪問一次資料,要訪問( 2 )次記憶體;分段系統每訪問一次資料,要訪問( 2 )次記憶體;段頁式系統每訪問一次資料,要訪問( 3 )次記憶體,
-
PCB是行程存在的唯一標志,也是系統感知行程存在的唯一物體,多道程式的引入主要是為了提高CPU的利用率,
-
當作業進入完成狀態,作業系統 將該作業的控制塊從當前作業佇列中剔除,識訓其所占資源
-
既考慮等待時間,有考作業執行時間的調度演算法是:回應比高者優先
-
產生死鎖的主要原因:系統資源不足和行程推進順序不當 多個行程競爭資源出現了回圈等待,
-
段頁式管理的地址映象表是:每個作業或行程一張段表,每個段一張頁表,
頁式存盤管理的地址是一維的,段式存盤管理的地址是二維的, -
頁式存盤管理中,頁表的起始地址存放在(暫存器)中,
-
位示圖可用于 磁盤空間管理
-
一般來說,檔案名及屬性可以收納在( 目錄)中以便查找,
-
設基址暫存器的內容為 1000 ,當執行指令 “ LOAD A , 2000 ”時,運算元的地址是 3000
-
頁式存盤管理 每訪問一次資料 ,要訪問(2) 次記憶體
short question
- 生產者消費者問題中為什么用三個信號量,作用是什么?
設定互斥信號量 mutex,表示緩沖池是否可用,初值為1,;
設定生產者的同步信號量buffer(empty),表示緩沖區個數(空單元數),初值為n,;
設定消費者的同步信號量product(full),表示產品個數(滿單元個數),初值為0,
-
在一個請求分頁存盤管理系統中,記憶體塊大小1K,已知作業A為3K,把它分為3頁,作業分批裝入記憶體后,其頁表及存盤塊表如圖所示:當作業中指令訪問相對地址 2500 時,

1) 系統得到2500后,發現不在記憶體中,檢測發現記憶體塊5有空,將第三頁放到記憶體中,根據地址2500的相對地址和記憶體塊5的起始地址確定實際物理地址,
2500的相對地址(頁內偏移量): 2500-1024*2 = 452
物理地址:1024 * 5+452 = 5572 -
桌上有一個空盤子,可放一個水果,爸爸只可放蘋果,媽媽只放橘子,兒子只可取蘋果,女兒只可取橘子,使用PV操作實作四個人的互斥
var semaphore plant = 1, apple = 0, orange = 0
void dad():
while True:
P(plant);
place an apple;
V(apple);
void mom():
while True:
P(plant);
place an orange;
V(orange);
void son():
while True:
P(apple);
eat an apple;
V(plant);
void daughter():
while True:
P(orange);
eat an orange;
V(plant);
B
fill blank
- 在一個單處理機作業系統中, PCB 表的規模是 100 行,則任一時刻,最多有 1 個行程處于運行態,最多可能有(99)個行程處于就緒態,最多可能有 100 個行程處于等待態,
- 在回應比高者優先的調度演算法中,各個作業等待時間相同時,運行時間短的將得到優先調度,運行時間相同時,等待時間長的將得到優先調度,
- 根據服務物件不同,常用的單處理機OS可以分為如下三種型別: 允許多個用戶在其終端上同時互動地使用計算機的OS稱為 分時作業系統 ,它通常采用 時間片輪轉演算法 策略為用戶服務; 允許多個用戶在其終端上同時互動地使用計算機的 OS 稱為 多道批處理操作 系統,衡量這一系統的性能的主要指標是 吞吐量,在 實時系統 的控制下,計算機系統能及時處理由程序反饋的資料并作回應,
- SPOOLing系統中的 輸入井 和 輸出井 對脫機輸入中的磁盤進行模擬,輸入行程和輸出行程 對脫機輸入中的外圍設備進行模擬,
- 就緒佇列中有10個行程,時間片設定為200ms,CPU行程切換要花費10ms,則系統開銷所占比率是多少?

所謂系統開銷,是指CPU運行非用戶程式所需要的時間,所謂系統開銷所占的比率,是指系統用于行程間切換的時間(即系統開銷)與兩次CPU調度間隔時間(即CPU運行用戶程式時間與系統開銷時間的和)的比值,現在,就緒佇列中的行程以時間片輪轉的方法為主,
choice question
- 在作業系統中,對信號量S的P原語操作定義中,使行程進入相應等待佇列等待的條件是 S < 0;
- 分時作業系統通常采用 時間片輪轉 策略為用戶服務,
- 行程調度是從 就緒佇列 選擇一個行程投入運行,
- 一個行程被喚醒意味著 行程變為就緒狀態
- 行程從運行狀態變為等待的原因可能是 輸入/輸出事件發生
- 某行程所要求的一次列印輸出結束,其行程的狀態將從 阻塞-就緒 被喚醒,
- 通常用戶行程被建立后 隨著行程運行的正常或不正常結束而撤銷
- 在各種作業調度演算法中,若所有作業同時到達,則平均等待時間最短的演算法是 短作業優先
- 作業從進入后備佇列到被調度程式選中的時間間隔稱為 等待時間
- 行程間的基本關系為 同步與互斥
- 段式虛擬存盤器的最大容量是 由指令的地址結構和外存容量決定的,
- 磁盤是直接存盤設備 既能順序存取,又能直接存取
- 等待-掛起 就緒-等待 不存在
- 存在的是:就緒-運行 運行-就緒 等待-就緒
- CPU輸出資料的速度遠高于列印機的列印速度,可采用 緩沖技術,為了處理CPU與外設的處理速度的矛盾,往往采用緩沖技術來解決,
- 從用戶的角度看,引入檔案系統的主要目的是 實作對檔案的按名存取,
- 碎片存盤容量 可能比某作業申請容量大
- 在頁面調度中,有一種頁面調度演算法采用堆疊,它選擇的是 最近最不常用的頁(LRU)
short question
- 簡述什么是并行與并發,他們之間的區別?
并行:指兩個或多個事件在同一時刻進行,
并發:指兩個或多個事件在同一時間間隔內發生,
在多道程式環境下,并發是指宏觀上內有多道程式同時運行,微觀上這些程式是在交替運行,
- 尋址程序
當行程訪問某個邏輯地址中的指令或資料時,地址變換機構自動地將邏輯地址分為頁號和頁內地址兩部分,并將頁號和頁表暫存器中的頁表長度進行比較,若頁號不小于頁表長度,便產生越界中斷,否則使以頁號為索引去檢索頁表,從中得到該頁的物理塊號,送入物理地址暫存器與頁內地址拼接,形成對應的物理地址
分頁存盤的基本地址變換:


mooc
- 以下關于計算機系統和作業系統的敘述中錯誤的是(作業系統是獨立于計算機系統的,它不屬于計算機系統)
計算機系統是一個資源集合體,包括軟體資源換和硬體資源
作業系統是一種軟體
計算機硬體是作業系統賴以作業的物體,作業系統的運行離不開計算機的支持
- 允許多個用戶以互動方式使用計算機的作業系統稱為分時作業系統
- 允許多個用戶將多個作業提交給計算機集中處理的作業系統稱為 批處理作業系統
- 實時操作必須在(規定時間)內處理完來自外部的事件
- 計算機系統能及時處理程序控制資料并作出相應的作業系統稱為 實時作業系統
- 設計實時作業系統時,首先要考慮系統的 實時性和可靠性
- windows XP是(單用戶多任務)作業系統
- 并發性是指若干事件在同一時間間隔內發生
- 采用(微內核)結構時,將作業系統分成用于實作作業系統最基本功能的內核和提供各種服務的服務器兩個部分
- 在作業系統的層次結構中,各層之間是 外層依賴內層
- 現代作業系統的兩個重要特征是(程式的并發執行)和資源共享
- 計算機作業系統的功能是 控制、管理計算機系統的資源和程式的執行
- 在分時系統中,時間片一定時,(用戶數越多),回應時間越長,
- 分時作業系統通常采用(時間片輪轉)策略為用戶服務,
- 在(實時)作業系統控制下,計算機系統能及時處理由程序控制反饋的資料并作出回應,
- 下面6個系統中,必須是實時作業系統的有(3)個 ,計算機輔助設計系統;航空訂票系統;程序控制系統;機器翻譯系統;辦公自動化系統;計算機激光照排系統
(1)航空訂票系統;(2)程序控制系統;(3)機器口語翻譯系統
- 在作業系統中,對信號量S的P原語操作定義中,使行程進入相應等待佇列等待的條件是 S<0
- 某行程要求一次列印輸出,該行程被 阻塞
- 某行程要求一次列印輸出,其行程的狀態從 運行狀態到阻塞狀態
- 多道系統環境下,作業系統分配資源是以 行程 為基本單位
- 臨界區是指并發行程中訪問共享變數的( 程式)段
- 行程調度是從(就緒佇列)選擇一個行程投入運行,
- 一個行程被喚醒,意味著(行程狀態變為就緒),
- 行程和程式的本質區別是 動態和靜態特征
- 一行程在某一時刻具有(1)種狀態,
- 某行程要求一次輸入結束,其行程的狀態從 阻塞到就緒
- 一個行程處于等待狀態,則該行程所屬的作業存在于 記憶體
- 行程創建原語的任務是 為行程建立PCB表
- 通常,用戶行程被建立后, 隨著作業運行正常或不正常結束而撒消
- 在分時作業系統環境下運行的作業通常稱為 終端型作業
- 當作業進入完成狀態,作業系統 將該作業的控制塊從當前作業佇列中洗掉,識訓其所占資源,并輸出結果
- 在各種作業調度演算法中,若所有作業同時到達,則平均等待時間最短的演算法是 短作業優先
- 周轉時間是指從作業提交給系統到作業完成的時間間隔,
- 作業從進入就緒佇列到被調度程式選中的時間間隔稱為 等待時間
- 作業調度演算法的選擇常考慮因素之一是使系統有最高的吞吐率,為此應 能夠處理盡可能多的作業
- 在非剝奪調度方式下,運行行程執行V原語后,其狀態 不變
行程的調度方式有兩種:剝奪和非剝奪方式,在剝奪方式下,一旦有優先級高于當前執行行程優先級的行程存在時,便立即發生行程調度,轉讓處理機,而非剝奪方式是即使在就緒佇列中有優先級高于當前執行行程的行程存在,當前行程仍將繼續占有處理機,直到由于該行程自己的原因而讓出處理機,
- 在任意調度方式下,運行行程執行V原語后,其狀態 可能會變
- 系統出現死鎖的原因是 若干行程因競爭資源而無休止的等待著它方釋放已占用的資源
- 當一行程運行時,系統可基于某種原則,強行將其撤下,把處理器分配給其他行程,這種調度方式是 剝奪方式
- 為了照顧短作業用戶,行程調度采用 短執行優先調度
- 兩個行程合作完成一個任務,在并發執行中,一個行程要等待合作伙伴發來資訊,或者建立某個條件后再向前執行,這種關系是行程間的同步關系,
- 若系統中有五臺繪圖儀,有多個行程均需要使用兩臺,規定每個行程一次僅允許申請一臺,則至多允許(4)個行程參于競爭,而不會發生死鎖,
- 若系統中有15臺繪圖儀,有多個行程均需要使用3臺,規定每個行程一次僅允許申請一臺,則至多允許(7)個行程參于競爭,而不會發生死鎖,
- 產生系統死鎖的原因可能是由于 多個行程競爭資源出現了回圈等待
- 作業系統中有一組常稱為特殊系統呼叫,它不能被系統中斷,在作業系統中稱為 原語
- 在下列選項中,屬于檢測死鎖的方法是 資源分配圖簡化法
- 為了照顧緊迫型作業,應采用 優先權調度演算法
- 在頁式存盤器中,每當CPU形成一個有效地址時,則要查找頁表,這一作業是由(硬體自動)實作的,
- 虛擬頁式存盤管理中頁表有若干項,當記憶體中某一頁面被淘汰時,可能根據其中哪一項決定是否將該頁寫回外存 修改標志
- 虛擬存盤器是 可以容納和超過主存容量的多個作業同時運行的一個地址空間
- CPU對通道的請求形式是 通道命令
- 通道對CPU的請求形式是 中斷
- 環形緩沖區是一種 多緩沖區
- 系統利用SPOOLING技術實作 虛擬設備
- CPU與通道可以并行執行,并通過(I/O指令和I/O中斷)實作彼此間的通訊和同步,
- 系統中,像鍵盤、終端、列印機等以字符為單位組織和處理資訊的設備稱為(字符設備)
- 最不利于檔案大小動態變化的檔案物理結構是 連續檔案結構
- 檔案的邏輯塊到物理塊的變換方法是由檔案的(物理結構)決定的,
- 為防止可能破壞檔案的各種意外情況,檔案系統可以采用( )的方法來保護檔案,
- 關于磁盤和磁帶的存盤特性,如下描述正確的是
- 為防止可能破壞檔案的各種意外情況,檔案系統可以采(備份和定時轉儲)的方法來保護檔案,
- 關于磁盤和磁帶的存盤特性,如下描述正確的是 磁盤是隨機存取的,磁帶是順序存取的
- 采用32位字長的8個字來管理外存(塊號和字號,位號均從0開始計數),則100號物理盤塊對應的位示圖的位置為 字號3,位號4
- FAT檔案系統中,檔案的物理結構是 鏈接結構
- 在檔案系統中,索引檔案結構中的索引表是用來 指示邏輯記錄和物理塊之間對應關系的
索引檔案結構是指邏輯上連續的檔案存放在若干個不連續的物理塊中,系統為每個檔案建立一張索引表,索引表記錄了檔案資訊所在的邏輯塊號和與之對應的物理塊號,
- 采用順序結構的檔案既適合進行順序訪問,也適合進行隨機訪問,檔案的物理結構不僅與外存的分配方式相關,還與存盤介質的特性相關,通常在磁帶上只適合使用順序結構,
- 檔案的存盤方法依賴于 檔案的物理結構和存放檔案的存盤設備的特性
- 從下面描述中正確的一條描述是 順序檔案必須采用連續分配方式,而鏈接檔案和索引檔案則可采用離散分配方式,
檔案分配對應于檔案的物理結構,是指如何為檔案分配磁盤塊,常用的磁盤空間分配方 法有三種:連續分配、鏈接分配和索引分配,
順序分配:順序分配方法要求每個檔案在磁盤上占有一組連續的塊,
隱式鏈接分配:每個檔案對應一個磁盤塊的鏈表;磁盤塊分布在磁盤的任何地方,除最后一個盤塊外,每一個盤塊都有指向下一個盤塊的指標,這些指標對用戶是透明的,
顯式鏈接分配:是指把用于鏈接檔案各物理塊的指標,顯式地存放在記憶體的一張鏈接表中,
該表在整個磁盤僅設定一張,每個表項中存放鏈接指標,即下一個盤塊號, 在該表中,凡是屬于某一檔案的第一個盤塊號,或者說是每一條鏈的鏈首指標所對應的盤塊號,均作為檔案地址被填入相應檔案的FCB的“物理地址”欄位中,由于查找記錄的程序是在記憶體中進行的,因而不僅顯著地提高了檢索速度,而且大大減少了訪問磁盤的次數,由于分配給檔案的 所有盤塊號都放在該表中,故稱該表為檔案分配表(File Allocation Table, FAT),MS-DOS 采用的就是這種方式,
…
知識整理,但不代表我會了,內容是真多,救救孩子吧!o(╥﹏╥)o
考完了,老師出題挺更新于 6.9
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286299.html
標籤:其他
上一篇:狗哥帶你零基礎學C語言
下一篇:C++上機練習:歐拉回路


