【面試題】操做系統

 面試題

一、linux爲何要份內核態和用戶態?

操做系統的核心是內核,獨立於普通的應用程序,提供操做系統的最基本的功能(進程管理、內存管理、設備驅動程序、文件管理、和網絡系統),能夠訪問受保護的內存空間,也有訪問底層硬件設備的全部權限。linux

區分用戶態和內核態的緣由:運行在用戶態的程序不能訪問操做系統內核,保證了內核的安全。給應用程序提供單一簡單的接口,使得上層的應用程序不用去關注底層的實現面試

內核態下CPU能夠執行任何指令,用戶態下CPU只能執行非特權指令。算法

CPU處於內核態,能夠隨意進入用戶態;數組

CPU處於用戶態,只能經過軟中斷方式進入內核態。安全

通常程序開始時都處於用戶態,當程序須要系統資源時,經過軟中斷進入內核態服務器

## 參考:http://www.imooc.com/wenda/detail/542116網絡

 

操心繫統將虛擬空間劃分爲兩部分,一部分爲內核空間,一部分爲用戶空間。併發

linux操做系統而言,高位的1G字節爲內核空間;低位的3G字節爲用戶空間。異步

 

 

 

二、進程與線程的區別操作系統

(1)進程:進程是系統進行資源分配和調度的一個獨立單位(程序段、相關數據段、PCB)

(2)線程:線程是進程的一個實體,是CPU調度和分配的基本單位。線程不擁有本身的資源,只擁有程序計數器、一組寄存器和棧區),它能夠與同屬一個進程的其餘線程共享進程所擁有的所有資源

(3)關係:一個線程能夠建立和銷燬另外一個線程,同屬進程的多個線程能夠併發執行。

     同屬進程的其餘線程共享數據,但擁有本身的棧空間,擁有獨立的執行序列

(4)區別:進程和線程是不一樣的操做系統資源管理方式。

    1)進程獨立地址空間,更健壯(一個進程崩潰後不會影響其餘進程);線程沒有獨立的地址空間,一個線程dang掉了整個進程就dang了

    2)切換:因此進程切換時消耗資源更大,效率低

          對於一些要求同時進行而且又要共享變量的併發操做,只能用線程,不能用進程。

 

 

 

二、

 

 

 

 

 

 


 

基礎知識

一、操做系統的特性

  • 併發
  • 共享
  • 虛擬
  • 異步

 

二、操做系統的主要功能

  • 進程控制
  • 進程同步
  • 進程通訊
  • 進程調度

 

三、程序併發的特徵

  • 間斷性
  • 失去封閉性
  • 不可再現性

 

四、程序的特徵

  • 動態
  • 併發
  • 獨立
  • 異步

 

五、程序的三態模型,五態模型

 

六、爲何要引入掛起狀態

  終端用戶須要、父進程須要、負荷調節需求、操做系統需求

 

七、引入掛起後的狀態轉換

 

八、進程控制塊PCB的做用

  做爲進程獨立運行基本單位的標誌,可以實現間接運行方式,提供常常管理所須要的信息,提供進程調度所須要的信息,實現與其餘進程的同步與通訊

 

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

  每一個進程中訪問臨界資源的那段程序稱爲臨界區,每次只容許一個進程進入臨界區,進入後不容許其餘進程進入。

  1. 若是有若干進程要求進入空閒的臨界區,一次僅容許一個進程進入
  2. 若是已有進程進入臨界區,則其餘全部試圖進入臨界區的進程必須等待
  3. 進入臨界區的進程要在有限時間內退出,以便其餘進程能及時進入臨界區
  4. 若是進程不能進入臨界區,應該讓出CPU,避免進程出現「忙等」現象

 

十、進程同步機制應該遵循的規則

  空閒讓進,忙則等待,有限時間,讓權等待

 

十一、進程同步經典問題

  • 生產者——消費者
  • 哲學家進餐問題
  • 讀者——寫者問題

 

十二、進程間的通訊如何實現?

  低級通訊:效率低,生產者每次只能向一個緩衝池投放一個信息;通訊對用戶不透明,隱藏了通訊的具體細節

  高級通訊:用戶能夠利用操做系統所提供的一組通訊命令傳送大量數據。通訊過程對用戶是透明的。

       共享存儲器系統、消息傳遞系統、管道通訊系統、客戶機——服務器系統

 

1三、處理機調度的層次

  • 高級調度
  • 低級調度
  • 終極調度

 

1四、做業調度算法

  • 時間片輪轉法
  • 先來先服務算法 FSFS
  • 短做業優先調度算法 SJF
  • 優先級調度算法 PSA
  • 高響應比優先調度算法 HRRN

 

1五、死鎖:兩個或多個進程被無限阻塞,互相等待的一種狀態

  兩個或多個併發進程中,若是每一個進程持有某種資源,卻又在等待別的進程釋放資源,並且再未改變狀態前沒法向前推動,那麼這一組進程產生了死鎖。

 

1六、死鎖產生的四個條件

  1. 互斥:一個資源一次只能被一個進程使用
  2. 請求保持:一個進程因請求資源而阻塞時,對已持有的資源保持不放
  3. 不可搶佔:進程已得到的資源在未使用完以前不能進行搶佔
  4. 循環等待:若干進程之間造成一種頭尾相接的循環等待資源的關係  

 

 1七、預防死鎖的方法

  • 破壞「請求保持」
  • 破壞「不可搶佔式」
  • 破壞「循環等待」

 

1八、避免死鎖的方法

  • 系統安全狀態
  • 銀行家算法

 

1九、連續分配存儲管理方式

  • 單一連續分配
  • 固定分區分配
  • 動態分區分配

 

20、動態分區分配算法

  • 首次適應算法 FF
  • 循環首次適應算法 NF
  • 最佳適應算法 BF
  • 最壞適應算法 WF

 

2一、Windows下的內存是如何管理的?

  Windows提供了3種方式管理內存

  1. 虛擬內存:管理大型對象、結構數組
  2. 內存映射文件:管理大型數據流和在單個計算機上運行多個進程之間的共享數據
  3. 內存堆棧:管理大量的小對象

 

2二、爲何須要虛擬存儲器

  有的做業很大,需求空間超過了內存總容量,致使做業不能運行

  大量做業要求運行,但內存容量不足,大量的做業停留在外存等待

 

2三、如何實現虛擬存儲器?:分頁存儲器管理 

  請求分頁存儲管理除了要求必定容量的內存和外存,還須要:

  • 請求頁表機制
  • 缺頁中斷機制
  • 地址變化機制

 

2四、虛擬存儲器的頁面置換算法

  在進程運行的過程當中,若所要訪問的頁面不在內存,就須要將它調入內存,而在哪一個頁面調入,須要根據算法而定

  • 最佳置換算法 OPT
  • 先進先出算法 FIFO
  • 最近最久未用算法 LRU
  • 最少使用算法 LFU

使用算法進行置換

計算缺頁

 

2五、文件管理

2六、磁盤管理

相關文章
相關標籤/搜索