1. 程式人生 > 其它 >作業系統複習(updating)

作業系統複習(updating)

作業系統複習(updating)

1、程序和執行緒的區別是什麼?

根本區別:程序是作業系統資源分配的基本單位,而執行緒是處理器任務排程和執行的基本單位

2、什麼是分段和分頁記憶體管理?它們之間的區別和優缺點是什麼?

3、實體記憶體和虛擬記憶體的區別是什麼?

實體記憶體:當開啟程式的時候,系統會將這些程式載入到記憶體上。

虛擬記憶體:虛擬的不是實體記憶體,而是代表實體記憶體形式儲存的功能,實體記憶體的執行程式的功能是無法用虛擬記憶體來完成的。

實體記憶體和虛擬記憶體的關係:當執行程式過多的時候,實體記憶體不夠用的時候,系統會將一部分硬碟空間當記憶體使用,這部分空間就是虛擬記憶體。

每個執行緒會獲得4GB的空間(32位系統)

4、什麼是協程?

5、程序間通訊的方式有哪些?

6、死鎖產生的原因?如何解決死鎖?有哪些死鎖演算法?

死鎖的概念:所謂死鎖,是指多個程序因競爭自願而造成的一種僵局(互相等待),若無外力作用,這些程序都將無法向前推進。

在作業系統中,死鎖出現是指:若干程序因競爭資源而無限等待其他程序釋放已佔有的資源

6.1、死鎖產生的原因:

  • 系統資源的競爭:注意,只有不可剝奪資源的競爭才可能產生死鎖,對可剝奪資源的競爭是不會引起死鎖的。
  • 程序推進順序非法:程序在執行過程中,請求和釋放資源的順序不當,也同樣會導致死鎖
  • 死鎖產生的必要條件:
    • 互斥條件
    • 不剝奪條件
    • 請求並保持條件
    • 迴圈等待條件

6.2、 如何解決死鎖?

為使系統不發生死鎖,必須設法破壞產生死鎖的4個必要條件之一,或允許死鎖產生,但是當死鎖發生時能檢測出死鎖,並有能力實現恢復。

  • 破壞互斥條件
  • 破壞不剝奪條件
  • 破壞請求並保持條件:採用預先靜態分配法
  • 破壞迴圈等待條件:順序資源分配法,給系統中的資源編號,規定每個程序必須按照編號遞增的順序請求資源,同類資源一次申請完。

1)資源剝奪法:掛起某些死鎖執行緒,並搶佔它的資源,將這些資源分配給其他的死鎖程序。但因防止被掛起的程序長時間得不到資源而處於資源匱乏的狀態。

2)撤銷程序法:強制撤銷部分甚至全部死鎖程序並剝奪這些程序的資源。撤銷的原則可以按程序優先順序和撤銷程序代價的高低進行。

3)程序回退法:讓一個或多個程序回退到足以迴避死鎖的地步,程序回退時資源釋放資源而非被剝奪。

6.3、銀行家演算法、系統有序分配演算法、死鎖檢測演算法、資源分配圖化簡法。

銀行家演算法是著名的死鎖避免演算法:

程序執行之前先宣告對各種資源的最大需求量,當程序在執行中繼續申請資源的時候,先測試該程序已佔用的資源數與本次申請的資源數之和是否超過該程序宣告的最大需求量。若超過則拒絕分配資源,若未超過則再次測試系統現存的資源能否滿足該程序尚需的最大資源量,若能滿足則按照當前的申請量分配資源,否則也要推遲分配。

7、使用者態和核心態(區別、切換方式)

8、作業系統分配的程序空間是怎樣的?執行緒能共享哪些?