作業系統之面試常考

蔡姬小媛發表於2024-08-22

【轉載】:https://www.cnblogs.com/zyf-zhaoyafei/p/4714598.html

最近這段時間正在積極準備面試,複習到作業系統部分,本篇文章就介紹作業系統基礎內容,參考第四版《計算機作業系統》這本文章總結了面試中常考、常用到的基本知識點,希望對準備面試的同學和想回顧作業系統知識點的程式設計師們有所幫助,不對的地方歡迎指正!

一、作業系統引論

作業系統目標

1:方面性,2:有效性,3:可擴充套件性,4:開放性

作業系統基本特性

1:併發、2:共享、3:虛擬、4:非同步

描述多道批處理、分時、實時作業系統的特點各是什麼?

批處理作業系統:多道性、無序性、排程性,系統利用率高、吞吐量大、平均週轉時間長、但無互動能力。

分時作業系統:有多路性、獨立性、及時性和互動性。 有較好的人機互動的特性,並且可以實現共享主機

實時系統:有多路性、獨立性、及時性、互動性和可靠性。實際上是指作業系統工作時,其各種資源可以根據需要隨時進行動態分配。由於各種資源可以進行動態分配,因此,其處理事務的能力較強、速度較快。

  總結:從可靠性:實時系統更強,從互動性:分時系統更強

二、程序的描述與控制

程式併發執行的特徵

1:間斷性:程式在併發執行的時候,因為是共享資源,以及完成同一項任務而相互合作,致使在這些併發執行的程式之間形成了相互制約的關係,導致程式執行呈現:執行--暫停--執行

2:失去封閉性:當系統中有多個併發執行的程式時,各個資源是他們所共享的,這些資源的狀態也由這些程式所改變,所以摸一個程式的執行環境會受到其他程式的影響。

3:不可再生性

程序的特徵與三種基本狀態

1、特徵:

1:動態性,2:併發性,3:獨立性,4:非同步性。
2、狀態:
1:就緒狀態,2:執行狀態,3:阻塞狀態
3、三種基本狀態轉換:
處於就緒狀態的程序,在排程程式為之分配了處理機之後便開始執行, 就緒 -> 執行
正在執行的程序如果因為分配他的時間片已經用完,而被剝奪處理劑, 執行 -> 就緒
如果因為某種原因致使當前的程序執行受阻,使之不能執行。 執行 -> 阻塞
4、建立狀態和終止狀態圖
程序控制塊PCB的作用
  1:作為獨立執行基本單位的標誌
  2:能實現間斷性執行方式
  3:提供程序通訊管理所需要的資訊
  4:提供程序排程所需要的資訊

執行緒與程序的區別聯絡

  1、定義:

    程序:程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,是系統進行資源分配和排程的一個獨立單位。(包括程式段,相關資料段,和程序控制塊PCB)

  執行緒:執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位。執行緒自己基本上不有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源.

  2、關係:一個執行緒可以建立和撤銷另一個執行緒;同一個程序中的多個執行緒之間可以併發執行.相對程序而言,執行緒是一個更加接近於執行體的概念,它可以與同程序中的其他執行緒共享資料,但擁有自己的棧空間,擁有獨立的執行序列。

  3、區別:主要差別在於它們是不同的作業系統資源管理方式。程序有獨立的地址空間,一個程序崩潰後,在保護模式下不會對其它程序產生影響,而執行緒只是一個程序中的不同執行路徑。執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的地址空間,一個執行緒死掉就等於整個程序死掉,所以多程序的程式要比多執行緒的程式健壯,但在程序切換時,耗費資源較大,效率要差一些。但對於一些要求同時進行並且又要共享某些變數的併發操作,只能用執行緒,不能用程序。

  4.優缺點
:執行緒和程序在使用上各有優缺點:執行緒執行開銷小,但不利於資源的管理和保護;而程序正相反。同時,執行緒適合於在SMP機器上執行,而程序則可以跨機器遷移。

程序間的通訊是如何實現的?

  早期的屬於低階通訊:原因:1:效率低,生產者每次只能向緩衝池投放一個資訊 2:通訊對使用者不透明,隱藏了通訊的具體細節。現在發展為高階通訊:使用者可以利用作業系統所提供的一組通訊命令傳送大量資料。作業系統隱藏了程序通訊的實現細節。或者說,通訊過程對使用者是透明的。

高階通訊機制:

1:共享儲存器系統(儲存器中劃分的共享儲存區)

  實際操作中對應的是“剪貼簿”(剪貼簿實際上是系統維護管理的一塊記憶體區域)的通訊方式。

2:訊息傳遞系統(程序間的資料交換以訊息(message)為單位)

  當今最流行的微核心作業系統中,微核心與伺服器之間的通訊,都採用 了訊息傳遞機制

3:管道通訊系統(連線讀寫程序實現他們之間通訊的共享檔案(pipe檔案,類似先進先出的佇列,由一個程序寫,另一程序讀))

  管道分為匿名管道、命名管道。匿名管道是未命名的、單向管道,透過父程序和一個子程序之間傳輸資料。匿名管道只能實現本地機器上兩個程序之間的通訊,不能實現跨網路的通訊。命名管道不僅可以在本機上實現兩個程序間的通訊,還可以跨網路實現程序間的通訊。

4:客戶機-伺服器系統

包括:套接字(socket),遠端過程呼叫和遠端方法呼叫

什麼是臨界區?如何解決衝突?

  每個程序中訪問臨界資源的那段程式稱為臨界區,每次只准許一個程序進入臨界區,進入後不允許其他程序進入。

  1:如果有若干程序要求進入空閒的臨界區,一次僅允許一個程序進入;

  2:任何時候,處於臨界區內的程序不可多於一個。如已有程序進入自己的臨界區,則其它所有試圖進入臨界區的程序必須等待;

  3:進入臨界區的程序要在有限時間內退出,以便其它程序能及時進入自己的臨界區;

  4:如果程序不能進入自己的臨界區,則應讓出CPU,避免程序出現“忙等”現象。

程序同步原則

  程序同步的主要任務:是對多個相關程序在執行次序上進行協調,以使併發執行的諸程序之間能有效地共享資源和相互合作,從而使程式的執行具有可再現性。同步機制遵循的原則:

  1:空閒讓進;

  2:忙則等待(保證對臨界區的互斥訪問);

  3:有限等待(有限代表有限的時間,避免死等);

  4:讓權等待,(當程序不能進入自己的臨界區時,應該釋放處理機,以免陷入忙等狀態)。

程序同步

  由於程序同步產生了一系列經典的同步問題“生產者-消費者”問題,“哲學家進餐”問題,“讀者-寫者”問題。

程式和程序的區別

  程式計算機指令的集合,它以檔案的形式儲存在磁碟上。程式是靜態實體(passive Entity),在多道程式系統中,它是不能獨立執行的,更不能與其他程式併發執行。

使用系統資源情況:不使用(程式不能申請系統資源,不能被系統排程,也不能作為獨立執行的單位,它不佔用系統的執行資源)。

  程序:程序是程序實體(包括:程式段、相關的資料段、程序控制塊PCB)的執行過程,是一個程式在其自身的地址空間中的一次執行活動。是系統進行資源分配和排程的一個獨立單位。

使用系統資源情況:使用(程序是資源申請、排程和獨立執行的單位,因此,它使用系統中的執行資源)

三、處理機排程與死鎖

處理機排程的層次:

  1:高階排程

主要用於多道批處理系統中,又稱長作業排程,排程隊像是作業,根據某種演算法決定將後備佇列中的哪幾個作業調入記憶體。

  2:低階排程

作業系統中最基本的一種排程方式(頻率最高),在多道批處理、分時和時實三中型別的OS中都存在,又稱為短作業排程。

  3:中級排程

又稱為記憶體排程,目的是為了提高記憶體的利用率和系統的吞吐率,

作業排程的演算法:

  1:先來先服務演算法(FSFS)
  最簡單的排程演算法,既可用於作業排程也可用於程序排程,系統按照作業到達的先後順序進行排程,或者是優先考慮在系統中等待時間最長的作業
  2:短作業優先排程演算法(SJF)
  實際情況短作業佔有比例很大,為了使他們比長作業優先執行,而產生了短作業優先的排程演算法 ,作業越短優先順序越高,
  缺點:是必須知道作業的執行時間,對長作業不利,人機無法實現互動,未完全考慮作業的緊迫程度

  3:優先順序排程演算法(PSA)

    優先順序:對於先來先服務演算法,作業的等待時間就是他的優先順序,等待時間越長優先順序越高,對於短作業優先順序作業的長短就是他的優先順序。在優先順序演算法中,基於作業的緊迫程度。

  4:高響應比優先排程演算法(HRRN)

    在FSFS中只是考慮作業的等待時間而忽略作業的執行時間,SJF演算法正好相反,高響應比演算法既考慮作業的等待時間有考慮作業的執行時間,

    優先權 = (等待時間+要求服務時間)/要求服務時間

    由於等待時間與服務時間之和就是作業的相應時間,顧優先順序相當於響應比:Rp

    Rp = (等待時間+要求服務時間)/要求服務時間 = 響應時間/要求服務時間

什麼是死鎖,死鎖產生的4個條件

  死鎖定義:

    在兩個或多個併發程序中,如果每個程序持有某種資源而又都等待別的程序釋放它或它們現在保持著的資源,在未改變這種狀態之前都不能向前推進,稱這一組程序產生了死鎖。通俗地講,就是兩個或多個程序被無限期地阻塞、相互等待的一種狀態。

  產生條件:

    1:互斥條件 -- 一個資源一次只能被一個程序使用

    2:請求保持條件 -- 一個程序因請求資源而阻塞時,對已經獲得資源保持不放
    3:不可搶佔條件 -- 程序已獲得的資源在未使用完之前不能強行剝奪
    4:迴圈等待條件 -- 若干程序之間形成一種頭尾相接的迴圈等待資源的關係
預防避免死鎖的方法

  1:破壞“請求和保持”條件:規定所有程序在開始執行之前,都必須一次性的申請其在整個執行過程所需要的全部資源。

  優點:簡單,安全。 缺點:資源嚴重浪費,惡化了系統的利用率;

  2:破壞“不剝奪”條件:程序逐個的提出資源請求,當一個已經保持了某些資源的程序,再提出新的資源請求而不能立即得到滿足時,必須釋放它已經保持了的所有資源,待以後需要時再重新申請。

    缺點:實現複雜,代價大,反覆地申請和釋放資源,而使程序的執行無限的推遲、延長了程序的週轉時間增加系統開銷、降低系統吞吐量。

  3:破壞“環路等待”條件:將所有的資源按型別進行線性排隊,並賦予不同的序號。所有程序請求資源必須按照資源遞增的次序提出,防止出現環路。

    缺點:1、序號必須相對穩定,限制了新裝置型別的增加2、作業(程序)使用資源順序和系統規定的順序不同而造成資源的浪費3、限制了使用者程式設計

  注意:由於互斥條件是非共享裝置所必需的,不能改變

四、儲存器管理

連續分配儲存管理方式

  1:單一連續分配

  2:固定分割槽分配
  3:動態分割槽分配
  其中動態分割槽分配將涉及到分割槽分配中實際需要的資料結構,分割槽分配演算法和分割槽的分配與回收操作
  記憶體分配的流程:
動態分割槽分配演算法
  1:首次適應演算法(FF):
要求地址空間遞增的順序連結,再分配記憶體時從鏈首開始查詢,知道有一個滿足的空間為止。該演算法優先利用記憶體中低址空間,保留了高址空間,缺點是低址部分不斷被劃分,留下許多記憶體碎片
  2:迴圈首次適應演算法(NF):
為了防止留下碎片,減少低址空間開銷,NF演算法每次從上一次分配的地方繼續分配,該演算法需要一個起始查詢的指標用於指示下一次查詢的空間地址。缺點是:缺乏大的空間分割槽
  3:最加適應演算法(BF):
每次作業分配時,總是把滿足要求,又是最小的空間分配給作業,該演算法把空間分割槽按其容量大小從小到大排列成空閒區鏈,缺點是:留下許多記憶體碎片
  4:最壞適應演算法(WF):
總是挑選最大的空閒區域分配給作業使用,優點是不至於使空閒區間太小,產生碎片的可能性小,缺點是:缺乏大的空間分割槽

分頁儲存管理方式

分頁儲存的基本方法:

1:頁面和物理快 頁面:分頁儲存管理將程序的邏輯地址空間分成若干頁,並從0開始編號,把記憶體的實體地址分成若干塊(物理快)
2:地址結構: 頁號P ----- 偏移量W(包括頁號P和偏移量W),對於特定的機器其地址結構一定,給定邏輯地址A,頁面的大小為
L,則頁號P和頁內地址D有一下關係:P = int[A/L]; d=[A] MOD L 例如:頁面大小1kb A=2170B 得:p=2 d=122
3:頁表:記錄相應頁在記憶體中對應的物理塊號
4:地址轉換機構:將使用者邏輯空間的地址,轉變為空間中的實體地址

分段儲存管理方式

分段是管理不會產生記憶體碎片(短號 , 段內地址)

分段管理方式的引入原因:
1:一般程式分為若干段,如:主程式段、資料段、棧段等,每個段大多是一個相對獨立的單位
2:實現滿足資訊共享、資訊保護、動態連結、以及資訊動態增長等需要
分頁和分段的區別:
  共同點:兩者都採用離散分配方式,且都地址對映機構來實現地址的轉換
  不同點:
1:頁是資訊的物理單位採用分頁儲存管理方式是為了實現離散分配方法。提高記憶體的利用率,採用分段目的主要在於能更好的滿足使用者的需求
2:頁的大小固定且有系統決定,在採用分頁儲存管理方式中直接由硬體實現。而段的大小不固定,決定於使用者所編寫的程式
3:分頁的地址空間是一維的,分頁完全是系統完全是行為,分段系統中是二維的。

段頁式儲存管理方式

  基本原理是分段和分頁相結合,其地址結構由:段號、段內頁號、頁內地址三部分組成。在段頁式系統中獲得一條指令需要三次訪問記憶體,第一次訪問記憶體中的段表,第二次訪問記憶體中的頁表,第三次訪問記憶體中的資料。

Windows下的記憶體是如何管理的?

 Windows提供了3種方法來進行記憶體管理:

1:虛擬記憶體,最適合用來管理大型物件或者結構陣列;

2:記憶體對映檔案,最適合用來管理大型資料流(通常來自檔案)以及在單個計算機上執行多個程序之間共享資料;

3:記憶體堆疊,最適合用來管理大量的小物件。

 Windows操縱記憶體可以分兩個層面:實體記憶體和虛擬記憶體。

 其中實體記憶體由系統管理,不允許應用程式直接訪問


五、虛擬儲存器

作業系統的內容分為幾塊?什麼叫做虛擬記憶體?他和主存的關係如何?記憶體管理屬於作業系統的內容嗎?

作業系統的主要組成部分:程序和執行緒的管理,儲存管理,裝置管理,檔案管理。虛擬記憶體是一些系統頁檔案,存放在磁碟上,每個系統頁檔案大小為4K,物 理記憶體也被分頁,每個頁大小也為4K,這樣虛擬頁檔案和實體記憶體頁就可以對應,實際上虛擬記憶體就是用於實體記憶體的臨時存放的磁碟空間。頁檔案就是記憶體頁, 實體記憶體中每頁叫物理頁,磁碟上的頁檔案叫虛擬頁,物理頁+虛擬頁就是系統所有使用的頁檔案的總和。

請求分頁儲存管理方式

請求頁表機制:作用是吧使用者的邏輯地址對映為記憶體空間中的實體地址。

結構
頁號 物理塊號 狀態位P 訪問欄位A 修改位M 外存地址
1:狀態位P:指示頁面是否調入記憶體,供程式訪問時參考
2:訪問欄位A:用於記錄本也在一段時間內被訪問的次數,供換出頁面時參考
3:修改位M:標識頁面調入記憶體是否被修改過,供置換頁面時參考
4:外存地址:用於指示該頁在外存上指示地址
記憶體分配:
最小物理塊數:若採用單地址指令,且採用直接定址,需要物理塊數是2,一塊用於存放指令頁面,另一塊用於存放資料頁面
若採用間接定址至少需要3塊

虛擬儲存器頁面置換演算法

1:最佳置換演算法(Optimal):一種理論的演算法,選著淘汰的頁面是以後一定不再使用的頁面(理想化的),該演算法無法實現,只能作為其他演算法好壞的一個評價對比。
2:先進先出(FIFO)演算法:總是最先淘汰最先進去的頁面,該演算法容易實現。缺點:通常程式調入記憶體的先後順序和程式執行的先後順序不一致,導致缺頁率高。
3:最近最久未使用(LEU):FIFO演算法效能差,LRU演算法根據頁面調入記憶體的先後孫旭決定,因為違法預測未來的使用情況,就是用過去的使用情況作為將來的使用情況的近似。
4:最少使用演算法(LFU):在每個頁面設定一個移位暫存器記錄該頁面的訪問頻率,最近時期最少使用的頁面被淘汰

六、輸入輸出系統

 IO軟件的層次結構
  1:使用者層IO軟體,2:裝置獨立性軟體,3:裝置驅動程式,4:中斷處理程式
 
 對IO裝置的控制方式
  1:使用輪詢的可程式設計方式
    cpu不停地檢查裝置的狀態,以位元組為單位,非中斷方式,利用率低
  2:使用中斷可程式設計的Io方式
    新增CPU中斷,提高了CPU的利用率
  3:直接儲存方式
    以資料塊為單位,放寬響應時間
  4:IO通道的方式
    以資料塊組成的一組資料塊為單位,大幅度提高CPU的利用率
裝置分配1
  1:裝置分配中的資料結構
    1:裝置分配表DCT,2:控制器控制表,通道控制表,系統裝置裝置表
  2:裝置分配需要考慮的因素
    1:裝置的固有屬性,2:獨佔裝置得分配策略,3:裝置的分配演算法,4:裝置分配中的安全性
  3:獨佔裝置的分配程式
 SpooLing系統的構成
  1:輸入井和輸出井
  2:輸入緩衝區和輸出緩衝區
  3:輸入程序和輸出程序
  4:井管理程式
  
緩衝區
  1:單緩衝區,處理時間是:max(c,T)+M
   2:雙緩衝區,處理時間是:max(C+T);

七、檔案管理

檔案邏輯結構分類

  按檔案的有無結構分:

    1:有結構檔案(記錄式檔案) 2:無結構檔案(流式檔案)

  按檔案組織方式分:

    1:順序檔案,2:索引檔案,3:索引順序檔案

八、磁碟儲存器管理

外存的組織方式
1:連續組織方式,
又稱為連續分配方式,要求每一個檔案分配一個相鄰的盤快
優點:順序訪問容易:訪問連續檔案非常容易,訪問速度非常快
缺點:要求為檔案分配連續的空間,必須事先知道檔案的長度,不能靈活的刪除插入記錄動態增長的檔案難分配空間
2:連結組織方式(分為隱式連結和顯示連結)
採用連結組織的方式可以為檔案分配多個不連續的盤快
    優點:1:消除磁碟的外部碎片,提高記憶體的利用率 。2:對插入刪除修改非常容易。3:可以適應檔案的動態增長
3:索引組織方式
   分為單索引和多索引組織方式。
檔案儲存的組織方式
  1:空閒表法,2:空閒連結串列法(空閒盤快連,空閒盤區鏈),3:位示圖法, 4:成組連結法(重要)
不對的地方歡迎指正,轉載請註明出處!謝謝!

相關文章