操作系統 - 考試知識點


操作系統的目標

方便性、有效性、可擴充性 、開放性。

操作系統的最基本的四個特征

分別是並發、共享、虛擬、異步

操作系統基本功能

處理機管理、存儲器管理、設備管理、文件管理(、作業管理)

多道批處理系統、分時系統、實時系統為什么引入,以及特征?

為什么引入多道批處理系統:為了進一步提高資源的利用率和系統吞吐量。特點:(優點:)資源利用率高、系統吞吐量大、(缺點:)平均周轉時間長、無交互能力。

為什么引入分時系統:為了滿足用戶對人—機交互的需求。特點:多路性、 獨立性、及時性、交互性。

為什么引入實時系統:為了滿足實時控制和實時信息處理兩個領域的要求。特點:時間約束性、可預測性、可靠性、交互性、多路性、獨立性、及時性。

發展:整型信號量、記錄型信號量、信號量節機制。

進程同步機制四條基本准則,要明白其含義。

空閑讓進、忙則等待、有限等待、讓權等待。

  • 空閑讓進:當無進程進入臨界區時,相應的臨界資源處於空閑狀態,因而允許一個請求進入臨界區的進程立即進入自己的臨界區。
  • 忙則等待:當已有進程進入自己的臨界區時,即相應的臨界資源正被訪問,因而其它試圖進入臨界區的進程必須等待,以保證進程互斥地訪問臨界資源。
  • 有限等待:對要求訪問臨界資源的進程,應保證進程能在有限時間進入臨界區,以免陷入“飢餓”狀態。
  • 讓權等待:當進程不能進入自己的臨界區時,應立即釋放處理機,以免進程陷入忙等。

記錄型信號量PPT好好看看,理解信號量含義,PV具體操作 (重點復習)

信號量代表:可用資源實體的數量。

S是與臨界區內所使用的的公有資源有關的信號量;
wait(s) :即P操作,表示申請一個資源;
signal(s):即V操作,表示釋放一個資源;
初始化指定一個非負整數值,表示空閑資源總數;
在信號量經典定義下,信號量s的值不可能為負值;
 S≥0時 S表示可供並發使用的資源數;
 S<0時 其絕對值表示等待使用該資源的進程個數。

信號量是一種整型的特殊變量,只有初始化和P、V操作可以改變其值。通常,信號
量的初值表示可以使用資源的總數。信號量為0,表示資源已經分配完;信號量為負
值,表示有進程正在等待分配資源,且 等待的進程數 就是 信號量的絕對值 。

在信號量機制中,除了需要一個用於代表資源數目的整型變量value外,還有一個進程鏈表L,用於鏈接所有等待該信號量代表資源的進程。

 記錄型數據結構描述
     typedef struct {
            int value;
            list of process *L;
            }sem

wait操作(P操作)

申請一個資源,得到繼續,得不到阻塞,可描述為
  if(s.value>0)s.value--;
     if(s.value≤0)s.value--;block(s.L);

簡練為: s.value--;
         if(s.value<0)block(s.L);

wait原語:
void wait(static semaphore s)
{
   s.value--;
   if (s.value<0)block(s.L);
 } 

signal操作(V操作)

  釋放一個資源,有進程等待則喚醒一個(被喚醒的進程進入就緒狀態),可描述為
  if(s.value≥0)s.value++;
  if(s.value<0)s.value++;wakeup(s.L);

簡練為: s.value++;
                 if(s.value≤0)wakeup(s.L);

signal原語
 void signal(static semaphore s)
{
   s.value++;
   if (s.value≤0)wackup(s.L);
 } 

注意:P、V操作必須成對出現。缺少P操作,將導致系統混亂,無法保證互斥;缺少V操作,臨界資源得不到釋放,從而使因等待該資源而阻塞的進程不再被喚醒。一般互斥信號量初始值都設置為1。

信號量wait、signal操作,參考用記錄型信號量解決生產者-消費者問題。(注意:英文單詞統一小寫,括號用英文括號。)(重點復習)

問題:
有一群生產者進程在生產產品,並將這些產品提供給消費者進程去消費。為使生產者進程與消費者進程能並發執行,在兩者之間設置了一個具有n個緩沖區的緩沖池,生產者進程將其所生產的產品放入一個緩沖區中;消費者進程可從一個緩沖區中取走產品去消費。盡管所有的生產者進程和消費者進程都是以異步方式運行的,但它們之間必須保持同步,既不允許消費者進程到一個空緩沖區去取產品,也不允許生產者進程向一個已裝滿產品且尚未被取走的緩沖區投放產品。

注意:
生產者與消費者進程對資源信號量的申請與釋放情況剛好相反(生產者是申請空,釋放滿;消費者是申請滿,釋放空)。
應先執行對資源信號量的申請,然后再對互斥信號量進行申請操作,否則會因起死鎖(如果先申請互斥信號量再申請資源信號量,則可能發生一個進程申請互斥信號量成功,得到臨界資源,再申請資源信號量失敗,導致該進程帶着臨界資源進入阻塞狀態,造成死鎖)。

解答代碼:

int in = 0, out = 0;//in: 輸入指針, out: 輸出指針;
item buffer[n];//n個緩沖區組成的數組;
semaphore mutex = 1, full = 0, empty = n;
//mutex: 互斥信號量, 生產者進程和消費者進程都只能互斥訪問緩沖區;
//full: 資源信號量, 滿緩沖區的數量;
//empty: 資源信號量, 空緩沖區的數量;//信號量不允許直接參與運算, 故都要定義;

//生產者程序;
void Producer() {
  do {
      生產者生產一個產品nextp;
      wait(empty);//申請一個空緩沖區;
      wait(mutex);//申請臨界資源;
      buffer[in] = nextp;//將產品添加到緩沖區;
      in = (in + 1) % n;//類似於循環隊列;
      signal(mutex);//釋放臨界資源;
      signal(full);//釋放一個滿緩沖區;
  } while (TRUE);
}

//消費者程序;
void Producer() {
  do {
      wait(full);//申請一個滿緩沖區;
      wait(mutex);//申請臨界資源;
      nextc = buffer[out];//將產品從緩沖區取出;
      out = (out + 1) % n;//類似於循環隊列;
      signal(mutex);//釋放臨界資源;
      signal(empty);//釋放一個空緩沖區;
      消費者將一個產品nextc消費; 
 } while (TRUE);
}

死鎖的概念,產生死鎖的四個必要條件(充分理解),處理死鎖的四種方法。

概念:死鎖是指多個進程在運行過程中因爭奪資源而造成的一種僵局,當進程處於這種僵持狀態時,若無外力作用,它們都將無法再向前推進。 也就是說,一組等待的進程,其中每一個進程都持有資源,並且等待着由這個組中其他進程所持有的資源。這時這組進程就處於死鎖狀態。
定義:所謂死鎖是指在多道程序系統中,一組進程中的每一個進程均無限期地等待被該組進程中的另一個進程所占有且永遠不會釋放的資源;這種現象稱系統處於死鎖狀態,簡稱死鎖。處於死鎖狀態的進程稱為死鎖進程。 死鎖發生后,死鎖進程將一直等待下去,發生死鎖時死鎖進程至少有兩個;所有死鎖進程都在等待資源,並且其中至少有兩個進程已占有資源。死鎖不僅會浪費大量系統資源,甚至會導致整個系統崩潰,帶來災難性后果。

產生死鎖的四個必要條件:互斥、請求和保持、不可搶占、循環等待

具體理解:

  • 互斥:存在這樣一種資源,它在某個時刻只能被分配給一個執行緒(也稱為線程)使用。
  • 持有:當請求的資源已被占用從而導致執行緒阻塞時,資源占用者不但無需釋放該資源,而且還可以繼續請求更多資源。
  • 不可剝奪:執行緒獲得到的互斥資源不可被強行剝奪,換句話說,只有資源占用者自己才能釋放資源。
  • 環形等待:若干執行緒以不同的次序獲取互斥資源,從而形成環形等待的局面,想象在由多個執行緒組成的環形鏈中,每個執行緒都在等待下一個執行緒釋放它持有的資源。

處理死鎖的四種方法:目前處理死鎖的方法可歸結為五種:鴕鳥策略、預防死鎖、避免死鎖、檢測死鎖、 解除死鎖。

響應比公式

響應比 =(等待時間+要求服務時間) / 要求服務時間
Q:一個作業8:00到達系統,估計運行時間為1小時,若10:00開始執行該作業,其響應比為( 3 )。
(2+1)/1=3

內碎片和外碎片

為了有效的利用內存,使內存產生更少的碎片,要對內存分頁,內存以頁為單位來使用,最后一頁往往裝不滿,於是形成了內部碎片。為了共享要分段,在段的換入換出時形成外部碎片,比如5K的段換出后,有一個4k的段進來放到原來5k的地方,於是形成1k的外部碎片。
可以看一下這個博主寫的:https://blog.csdn.net/gaojing303504/article/details/81532543

動態分區分配算法思想

由於動態分區分配不是事先划分好區域,而是“按需分配”,所以不會出現區域划分出去后無法完全得到利用的情況,也即不會產生內部碎片;但是可能出現內存空間太小而無法被分配出去的情況,也即可能產生外部碎片。(不一定對,我自己找的)

磁盤的3種文件物理結構,好好看看第八章PPT

文件的物理結構:文件在物理存儲空間中的存放方法和組織關系。文件的物理結構與存儲設備的特性有很大關系。文件的存儲設備通常划分為大小相等的物理塊,物理塊是分配及傳輸信息的基本單位。一個物理塊中可以存放若干個邏輯記錄,一個邏輯記錄也可以存放在若干個物理塊中。

順序/連續文件:將一個文件中邏輯上連續的信息存放到磁盤上的依次相鄰的塊上便形成順序結構。文件控制塊需要記錄該文件第一個盤塊的盤塊號和文件長度。最簡單的物理文件結構,它將邏輯上連續的文件信息依次存放在外存連續的物理塊中。
優點:簡單 支持隨機存取和順序存取、順序存取速度快、所需的磁道尋道次數和尋道時間最少。
缺點:要求有連續的存儲空間,出現許多外部碎片、必須事先知道文件的長度、不能靈活地刪除和插入記錄、不支持動態擴充。

鏈接/串聯文件:順序的邏輯記錄被存放在不連續的磁盤塊上,用指針把這些磁盤塊按邏輯記錄的順序鏈接起來,則形成了文件的鏈接結構,鏈接結構的文件稱為鏈接/串聯文件。
優點:消除了外部碎片、顯著地提高外存,空間的利用率、無需事先知道文件長度 、對文件的增、刪、改很容易。
最大的缺點是不支持隨機存取。

索引文件
順序結構支持隨機存取,但有外碎片;鏈接結構沒有外碎片,但不能直接存取; FAT可以隨機存取,但需要占用較大的內存空間;事實上,打開某個文件時,只需知道該文件所在的盤塊號;一個文件的信息存放在若干不連續物理塊中,系統為每個文件建立一個索引表,並將這些塊的塊號存放在索引表中; 一個索引表就是磁盤塊地址數組,其中第i個條目指向文件的第i塊 。
定義:為每個文件分配一個索引塊(用來存放索引的盤塊),把分配給該文件的所有盤塊號都記錄在該索引塊中,按照這種分配方式存儲的文件就是索引文件 。索引分配支持隨機存取而沒有外碎片,但需要索引表(索引表需要占內存空間)。
保持鏈接結構的優點,又克服了其缺點。
優點:既能順序存取又能隨機存取、滿足了文件動態增長/插入刪除要求、能充分利用外存空間。
缺點:較多的尋道次數和尋道時間、索引表本身帶來了系統開銷,如:內外存空間,存取時間 。

文件存儲空間的管理概念,四種方法。

空閑表法:屬於連續分配方式,它與內存的動態分配方式雷同,它為每個文件分配一塊連續的存儲空間。
空閑鏈表法:空閑盤塊鏈:這是將磁盤上的所有空閑空間以盤塊為單位拉成一條鏈,其中的每一個盤塊都有指向后繼盤塊的指針; 空閑盤區鏈:這是將磁盤上的所有空閑盤區(每個盤區可包含若干個盤塊)拉成一條鏈。
位示圖法:位示圖是利用二進制的一位來表示磁盤中一個盤塊的使用情況。
成組鏈接法

程序的裝入方式,好好看第四章PPT。

用戶程序要在系統中運行,必須先將它裝入內存,然后再將其轉變為一個可以執行的程序,通常都要經過以下幾個步驟:
(1) 編譯,由編譯程序對用戶源程序進行編譯,形成若干個目標模塊;
(2) 鏈接,由鏈接程序將編譯后形成的一組目標模塊以及它們所需要的庫函數鏈接在一起,形成一個完整的裝入模塊;
(3) 裝入,由裝入程序將裝入模塊裝入內存。

在將一個裝入模塊裝入內存時,可以有如下三種裝入方式:
絕對裝入方式(單道程序環境)
靜態可重定位裝入方式(多道程序環境)
動態運行時裝入方式(運動中移動位置)

幾種頁面置換算法理解

最佳置換算法
方法:淘汰那些以后永不使用,或者是在最長時間內不再被訪問的頁。可以保證獲得最低的缺頁率。
實現:確定要替換的時刻t;找出主存中每個頁將來要用到的時刻ti;ti -t最大的頁將被替換。
特點:命中率高,但難於實現(必須運行一遍,才能知道未來的時刻ti),是理想算法,只能作為其它置換算法的衡量標准 。

先進先出(FIFO)頁面置換算法
方法:最早裝入主存的頁作為被替換的頁,即選擇在內存中駐留時間最久的頁面予以淘汰。
實現:只需把一個進程已調入內存的頁面,按先后次序鏈接成一個隊列,並設置一個指針,稱為替換指針,使它總可以指向最老的頁面。
特點:利用歷史信息,但不反映程序的局部性(最先進入的頁可能是現在經常使用的頁)。

LRU(Least Recently Used)置換算法
方法:近期最久未訪問過的頁作為被替換的頁。
實現:賦予每個頁面一個訪問字段,用來記錄一個頁面自上次被訪問以來所經歷的時間t,當須淘汰一個頁面時,選擇現有頁面中其t值最大的頁面予以淘汰。
特點:根據“歷史”預測“未來”。 LRU算法是較好的一個算法,但是開銷太大,要求系統有較多的支持硬件(移位寄存器或棧)。

最少使用(Least Frequently Used,LFU)置換算法
在采用LFU算法時,應為在內存中的每個頁面設置一個移位寄存器,用來記錄該頁面被訪問的頻率。該置換算法選擇在最近時期使用最少的頁面作為淘汰頁。

簡單的Clock置換算法
當利用簡單Clock算法時,只需為每頁設置一位訪問位,再將內存中的所有頁面都通過鏈接指針鏈接成一個循環隊列。
在將一個頁面換出時,如果該頁已被修改過,便須將該頁重新寫回到磁盤上;但如果該頁未被修改過,則不必將它拷回磁盤。換而言之,對於修改過的頁面,在換出時所付出
的開銷比未修改過的頁面大,或者說,置換代價大。在改進型Clock算法中,除須考慮頁面的使用情況外,還須再增加一個因素——置換代價。

改進型Clock置換算法
算法:對於修改過的頁面,在換出時所付出的開銷比未修改過的頁面大,或者說,置換代價大。因此,對簡單Clock置換算法進行了改進:增加了置換代價。選擇換出頁面時,既要是未使用過的頁面,又要是未被修改過的頁面,把同時滿足兩條件的頁面作為首選被淘汰的頁。
特點:該算法與簡單Clock算法比較,可減少磁盤的I/O操作次數 ,但實現該算法本身的開銷將有所增加。

頁面緩沖算法
影響頁面換進換出效率的若干因素:頁面置換算法、寫回磁盤的頻率、讀入內存的頻率。

頁面緩沖算法PBA
PBA算法的主要特點是:① 顯著地降低了頁面換進、換出的頻率,使磁盤I/O的操作次數大為減少,因而減少了頁面換進、換出的開銷;② 正是由於換入換出的開銷大幅度減
小,才能使其采用一種較簡單的置換策略,如先進先出(FIFO)算法,它不需要特殊硬件的支持,實現起來非常簡單。
  1) 空閑頁面鏈表
  2) 修改頁面鏈表

四種磁盤調度算法

例:若干個等待訪問磁盤者依次要訪問的磁道為20,44,40,4,80,12,76,假設每移動一個磁道需要3ms時間,移動臂當前位於40號磁道,請按下列算法分別計算為完成上述各次訪問總共花費的尋道時間以及尋道次序。
(1)先來先服務算法;
(2)最短尋道時間優先算法。
(3)電梯SCAN調度
(4)CSCAN

請求分頁系統,頁面置換算法缺頁率。

例:在一個請求分頁存儲系統中,一個進程的頁面走向為4,3,2,1,4,3,5,3,2,1,設分配給該進程的內存塊數M=4,采用FIFO和LRU頁面置換算法(每調進一個新頁認為發生一次缺頁中斷)。計算缺頁次數和缺頁率(寫出計算過程)。

進程間各種狀態轉換流程圖

引入掛起原語操作后三個進程狀態的轉換

在引入掛起原語Suspend和激活原語Active后,在它們的作用下,進程將可能發生以下幾種狀態的轉換:   
(1) 活動就緒→靜止就緒。   
(2) 活動阻塞→靜止阻塞。   
(3) 靜止就緒→活動就緒。   
(4) 靜止阻塞→活動阻塞。

磁盤索引組織方式中混合式索引(直接、一級、二級索引)

例:某文件系統采用索引文件結構,設文件索引表的每個表目占3個字節,存放一個盤塊的塊號,磁盤塊大小為512B。試問該文件系統采用直接、二級和三級索引能管理的最大磁盤空間為多少字節?

計算索引表項的大小,索引表項=512/3≈170個 。
直接索引,每項對應一個物理塊,能管理的最大磁盤空間=170*512B=87040B=85KB 。
二級索引,能管理的最大磁盤空間=170*170*512B=28900*512B=7255KB 。
三級索引,能管理的最大磁盤空間=170*170*170*512B=4913000*512B=2456500KB 。

請求分頁系統,頁面置換算法缺頁率 第五章

Q:在一個請求分頁存儲系統中,一個進程的頁面走向為4,3,2,1,4,3,5,3,2,1,設分配給該進程的內存塊數M=4,采用FIFO和LRU頁面置換算法(每調進一個新頁認為發生一次缺頁中斷)。計算缺頁次數和缺頁率(寫出計算過程)。

答案:

詳解:(是該題的變形,思路都一樣的)
假設一個進程的邏輯空間為n頁,系統為其分配的內存物理塊數為m(m<n)。
S:進程運行的過程中,訪問頁面的次數。
F:訪問頁面失敗的次數為F。
A:該進程總的頁面訪問次數A=S+F。
那么該進程在其運行過程中的缺頁率:f=F/A=F/(S+F) (失敗/總訪問)

最佳頁面置換算法:(不考)

FIFO先進先出頁面置換算法:
最早裝入主存的頁被作為替換的頁。(往回看,誰先進來把誰先換下來,從前往后看當碰到i的時候,往i的前面看而不是后面看)

頁面置換看紅色的數字個數。

LRU置換算法(最近最久未使用置換算法):
當需要淘汰一個頁面時,選擇現有頁面中其t值最大的頁面淘汰。

響應比 = (等待時間+要求服務時間) / 要求服務時間 = 響應時間 / 執行時間

四種磁盤調度算法 第六章

Q:若干個等待訪問磁盤者依次要訪問的磁道為20,44,40,4,80,12,76,假設每移動一個磁道需要3ms時間,移動臂當前位於40號磁道,請按下列算法分別計算為完成上述各次訪問總共花費的尋道時間以及尋道次序(4個)。

詳解:

  • FIFO先來先服務算法;
    按照順序
    磁道訪問順序:20、44、40、4、80、12、76
    尋道時間=(20+24+36+76+68+64+4)*3=876

  • SSTF最短尋道時間優先算法。
    選擇從當前磁頭位置所需尋到時間最短的請求
    (簡單來說:每次選擇與上一次距離最近的點,畫圖,最后相加)
    磁道訪問順序:40、44、20、12、4、76、80
    尋道時間=(4+24+8+8+72+4)*3 = 360

  • 電梯SCAN調度
    ==掃描算法/電梯算法
    與磁頭當前移動方向一致,而且是離當前磁頭最近的那個點。
    指定了磁頭朝磁道號減小的方向(0的方向)
    磁道訪問順序:40、20、16、12、4、44、80
    尋道時間=(20+4+4+8+40+36)*3 = 336

  • CSCAN 循環掃描算法
    提供更均衡的等待時間。
    和SCAN不同的是:當它到了另一端,就立刻回到磁盤開始處。
    規定磁頭朝着磁道號增加的方向移動。
    磁道訪問順序:40、44、76、80、4、12、20
    尋道時間=(4+32+4+76+8+8)*3=396

臨界資源

一次僅允許一個進程使用的資源稱為臨界資源。輸入機、打印機、磁帶機等。
各進程采取互斥的方式,實現共享的資源稱作臨界資源
在每個進程中訪問臨界資源的那段代碼稱為臨界區

動態分區分配算法

首次適應算法、循環首次適應算法、最佳適應算法:從最小的分區開始分配、最壞適應算法:從最大的分區開始分配、快速適應算法/分類搜索法:將空閑分區根據其容量的大小進行分類。

磁盤文件的物理結構

連續文件、順序文件、鏈接文件(隱式鏈接、顯式鏈接)、索引文件。

進程和程序

進程是程序的一次執行。
進程是一個程序及其數據在處理機上順序執行時所發生的活動。
進程是具有獨立功能的程序在一個數據集合上運行的過程,它是系統進行資源分配和調度的一個獨立單位。
進程特點:具有程序沒有的PCB結構、動態性、並發性、獨立性、異步性。

進程之間存在的兩種形式制約關系

間接相互制約關系:間接相互制約源於資源共享。(資源:臨界資源。)
直接相互制約關系:主要源於進程間的合作。

同步、互斥

同步:因合作進程之間協調彼此的工作而控制自己的執行速度,即因相互合作,相互等待而產生的制約關系。
互斥:進程之間競爭臨界資源而禁止兩個以上的進程同時進入臨界區所發生的制約關系。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM