操作系統面試題總結


CS-LogN思維導圖:記錄專業基礎 面試題
開源地址:https://github.com/FISHers6/CS-LogN

本章節 操作系統面試題導圖如下:

操作系統面試題

操作系統引論

面試題1:什么是操作系統

  • 控制和管理整個計算機系統的硬件和軟件資源
  • 為用戶和上層軟件,提供易用接口和環境的程序
  • 是最基礎的系統軟件

面試題2:什么是系統調⽤

  • 系統調用是:操作系統對應用程序提供的服務調用請求接口

  • 引用目的

    • 應用程序通過系統調用請求獲得操作系統內核的服務,保證系統穩定性和安全性(用戶非法操作)

進程管理

面試題1:進程和線程的區別

  • 調度單位

    • 線程是獨立調度單位,進程擁有資源的基本單位
  • 資源

    • 進程都是擁有資源的基本單位,線程不擁有系統資源(少) 但可以訪問共享其隸屬進程的系統資源
  • 並發粒度

    • 引入線程后並發度提升,吞吐量提升
  • 系統開銷

    • 1.進程創建開銷 2.進程切換開銷 3.進程間通信開銷
  • 地址空間

    • 進程地址空間獨立、線程共享同一進程資源的地址空間
  • 通信方面

    • 進程間通信:需要同步和互斥手段保證數據一致
    • 線程間通信:可直接讀寫同一進程數據段(全局變量)

面試題2:進程有哪⼏種狀態,狀態如何轉換

  • 5/3種狀態

    • 運行態

      • 進程在CPU上運行;單處理機最多1個運行態
    • 就緒態

      • 進程獲得了除CPU外的一切資源,存入就緒隊列
    • 阻塞態

      • 進程等待某一事件(等待資源)而暫停運行 如等IO
    • *創建態

      • 進程正被創建,尚未轉到就緒態(詳見進程控制)
    • *結束態

      • 進程正常結束或其他原因中斷運行,先置結束態
  • 狀態轉換

    • 就緒態->運行態

      • 處於就緒態被調度,獲得處理機資源(時間片)
    • 運行態->就緒態

      • 1.時間片用完,調度程序讓進程換態(非主動)
        2.或者被可剝奪系統中被優先級高的進程搶占
    • 運行態->阻塞態

      • 1.進程請求某一資源(如外設)的使用和分配
        2.或者等待某一事件(如等待I/O執行中(阻塞))
    • 阻塞態->就緒態

      • 1.進程等待事件的發生(得到資源),如另一個進程的I/O操作結束,釋放IO資源,這個進程得到IO資源 2.或中斷結束 中斷處理程序來改變相應進程狀態

面試題3:進程間有哪些通信⽅式

  • 進程通信的概念

    • 目的和概念

      • 進程之間信息交換
    • 引入原因

      • 各進程擁有獨立的內存地址空間,為了保證安全,一個進程不能直接訪問其它進程的地址空間
  • 通信方式

    • 1.共享存儲

      • 設置一塊可直接訪問的內存共享空間,讀寫交換信息互斥訪問共享空間,讀/寫操作使用p/v
    • 2.消息傳遞

      • 進程間數據交換以格式化的消息為單位,系統提供“發送/接受原語”,如:消息隊列、信箱
    • 3.管道通信

      • 設置一個特殊的共享文件(管道),緩沖區,半雙工

面試題4:線程間有哪些同步的⽅式

  • 同步的概念

    • 由並發性帶來異步性問題,進/線程間需協調工作先后次序、傳遞信息(合作)所產生的直接制約關系,避免資源訪問沖突
  • 同步的方式

    • 互斥量(Mutex)

      • synchronized 關鍵詞 和 各種 Lock
    • 信號量(Semphares)

      • 設置資源允許的數量,同⼀時刻多個線程可以訪問同⼀資源
    • 管程/事件(Event) :Wait/Notify

      • 通過通知操作的⽅式來保持多線程同步

面試題5:進程的調度算法有哪些

  • 先來先服務FCFS

    • 按照作業/進程的先后順序服務,但短作業需要等待前面的長作業執行完,對短作業不利
  • 短作業優先SJF

    • 改進FCFS,讓最短的作業/進程先得到服務,追求最少的平均等待時間(平均化整體考慮)
  • 高響應比優先

    • 響應比綜合考慮進程的“等待時間” 和 “要求服務的時間”
  • 時間片輪轉調度算法(RR)

    • 按時間片輪流服務進程,使用時鍾中斷來通知CPU,時間片已用完了可以去調度下一個進程
  • 優先級調度算法

    • 靜態優先級、動態優先級(動態調整)調度
  • 多級反饋隊列調度算法

    • 多種調度算法的折中權衡,最優

面試題6:說說進程/線程安全

  • 多線程執行時不會出現數據不一致或者數據污染
  • 線程安全問題都是由多個線程訪問臨界資源(全局變量及靜態變量)引起的,可以使用同步、互斥的方法保證線程安全

面試題7:什么是死鎖,死鎖的條件,如何解決死鎖

  • 什么是死鎖

    • 多個進程因競爭資源而等待對方手里的資源,互相等待,都無法向前推進
  • 死鎖的條件

    • 1.互斥
    • 2.不可剝奪
    • 3.請求和保持
    • 4.循環等待鏈
  • 如何解決死鎖

    • 預防死鎖

      • 破壞死鎖的四大條件之一
    • 避免死鎖

      • 安全序列來檢測死鎖、銀行家算法
    • 死鎖的檢測及解除

      • 資源請求分配圖、死鎖定理;(資源剝奪、進程回滾等)

內存管理

面試題1:操作系統的內存管理主要是做什么

  • 1.內存空間的分配與回收

    • 操作系統完成主存儲器空間的分配,無需程序員操作,提高編程效率
  • 2.內存空間的擴充

    • 利用虛擬存儲技術或自動覆蓋技術,從邏輯上擴充內存
  • 3.地址轉換

    • 程序的完整周期:編譯、鏈接、裝入,裝入時將邏輯地址轉換為物理地址
  • 4.存儲保護

    • 內存分配前,1.需要保護操作系統不受用戶進程的影響 2.保護用戶進程不受其它用戶進程的影響 3.防止地址越界

面試題2:操作系統的內存管理機制了解嗎?內存管理有哪⼏種⽅式?

  • 連續分配方式

    • 1.單一連續分配

      • 內存分為系統區(供操作系統)和用戶區(供用戶)
    • 2.固定分區分配

      • 將用戶內存空間划分為若干固定大小的區域,每個分區只裝入一道作業
    • 3.動態分區分配

      • 在進程裝入內存時,根據進程的大小動態地建立分區
  • 離散分配方式

    • 1.基本分頁存儲管理
    • 2.基本分段存儲管理
    • 3.段頁式存儲管理
  • 內部碎片與外部碎片

    • 內部碎片

      • 固定分區分配中,一塊分區只放一個進程,當這塊分區有剩余容量時存在空間浪費
      • 如:分頁、段頁式存儲、固定分區
    • 外部碎片

      • 動態分區分配中,隨着進程的換入/換出分區外的存儲空間會變成越來越多的碎片
      • 如:分段

面試題5:分⻚機制和分段機制的共同點和區別,段頁式各需要幾次訪存

  • 相同點

    • 都屬於內存離散存儲分配方式,都是為了改進連續內存分配而提⾼內存利⽤率
  • 區別

    • ⻚的⼤⼩是固定的,由操作系統決定;⽽段的⼤⼩不固定,取決於我們當前運⾏的程序
    • 分⻚僅僅是為了滿⾜操作系統內存管理的需求,⽽段是邏輯信息的單位,在程序中可以體現為代碼段,數據段,能夠更好滿⾜⽤戶的需要。
    • 分頁2次、分段2次、段頁式3次訪存

面試題3:快表是什么

  • 引入目的和概念

    • 快表,又稱聯想寄存器(TLB, translation lookaside buffer )是一種訪問速度比內存快很多的高速緩存,用來存放最近訪問的頁表項的副本,可以加速地址變換的速度(基本地址變換機構要訪存2次)

面試題6:什么是局部性原理

  • 局部性原理

    • 時間局部性

      • 指令近期多次執行,數據近期多次訪問;如循環語句
    • 空間局部性

      • 存儲單元附近的也可能訪問,如連續的存儲單元數組
    • 每訪問一個邏輯地址,都要查詢內存中的頁表,可能連續多次查同一表項

  • 應用

    • 快表、cache、虛擬存儲器

面試題4:為什么要用多級頁表

  • 引入目的

    • 單級頁表存在的問題:

      • 頁表必須連續存放,因此當頁表很大時,需要占用很多個連續的頁框。
      • 沒有必要讓整個頁表常駐內存,因為進程在一段時間內可能只需要訪問某幾個特定的頁面
    • 建立多級頁表的目的在於建立索引,以便不用浪費主存空間去存儲無用的頁表項,也不用盲目順序式查找頁表項

  • 兩級頁表方案邏輯地址結構

    • 一級頁號、二級頁號、頁內偏移量

面試題7:虛擬內存管理如何實現,為什么引入虛擬內存

  • 傳統存儲管理方式的缺點特征

    • 一次性

      • 作業必須一次性全部裝入內存后,才能開始運行

        • 1.作業很大而不能全部裝入內存,無法運行
        • 2.大量作業要求運行時,內存不足以容納所有作業,只能使少量作業線運行,導致多道程序度的並發度下降
    • 駐留性

      • 一旦作業被裝入內存,就會一直駐留在內存中,直至作業運行結束;而程序運行只需要一部分數據,浪費了寶貴的內存資源
  • 虛擬內存的定義

    • 基於局部性原理,在程序裝入時,可以將程序中很快會用到的部分裝入內存,暫時用不到的部分留在外存,就可以讓程序開始執行
  • 虛擬內存的特征

    • 多次性

      • 無需在作業運行時一次性全部裝入內存,而是允許被分成多次調入內存
    • 對換性

      • 在作業運行時無需一直常駐內存,而是允許在作業運行過程中,將作業換入、換出
    • 虛擬性

      • 從邏輯上擴充了內存的容量,使用戶看到的內存容量,遠大於實際的容量
  • 虛擬內存技術的實現
    (離散分配的內存管理)

    • 請求分頁存儲管理
    • 請求分段存儲管理
    • 請求段頁式存儲管理

面試題8:虛擬內存管理的⻚⾯置換算法有哪些

  • 最佳置換算法OPT
  • 先進先出置換算法FIFO
  • 最近最久未使用置換算法LRU
  • 時鍾置換算法CLOCK(最近未用NRU)

面試題9:32位系統運行大於4G的程序,如何尋址(考察虛擬內存,虛擬地址空間)

  • 使用虛擬內存,基於局部性原理,在程序裝入時,可以將程序中很快會用到的部分裝入內存,暫時用不到的部分留在外存,就可以讓程序開始執行

  • 邏輯地址將經過MMU內存管理單元轉換為物理地址

    • 轉換過程:查詢頁表,命中就計算出物理地址
      不命中就出發缺頁中斷,讓os分配地址空間

面試題10:內存中進程駐留集如何選定

  • 駐留集指請求分頁存儲管理中給進程分配的內存塊集合
  • 可以根據工作集(在某段時間間隔里,進程實際訪問頁面的集合)來設置駐留集大小


免責聲明!

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



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