作業系統基礎知識整理

1、作業系統分類

批處理作業系統、分時作業系統(Unix)、實時作業系統、網路作業系統、分散式作業系統、微機作業系統(Linux、Windows、IOS等)、嵌入式作業系統。

2、作業系統的4個特徵:併發性、共享性、虛擬性、不確定性。

3、作業系統的功能有:處理機管理、檔案管理、儲存管理、裝置管理、作業管理。

  • 處理機管理:也稱程序管理。實質上是對處理機執行時間進行管理,採用多道程式等技術將CPU的時間真正合理地分配給每個任務。主要包括程序管理、程序同步、程序通訊和程序排程。
  • 檔案管理:又稱資訊管理。主要包括檔案儲存空間管理、目錄管理、檔案的讀寫管理和存取管理。
  • 儲存管理:是對主儲存器空間的管理。主要包括儲存分配與回收、儲存保護、地址對映(變換)和主存擴充。(即記憶體管理)
  • 裝置管理:實質上是對硬體裝置進行管理,其中包括輸入輸出裝置的分配、啟動、完成和回收。
  • 作業管理:包括人物、人機互動和使用者介面管理等。

4、處理機管理

  • 1、程式順序執行的特徵:

    • 順序性:每一操作必須在下一操作開始之前結束
    • 封閉性:程式執行時獨佔全機資源,資源的狀態(除初始狀態外)只有本程式才能改變,程式一旦執行,其結果不受外界影響
    • 可再現性:程式執行環境和初始條件相同,重複執行時,結果相同
  • 2、程式併發執行的特徵:

    • 間斷性:程式併發執行時,共享系統資源,為完成同一任務相互合作,會形成相互制約關係,導致併發程式具有“執行-暫停-執行”這種間斷性的活動規律
    • 失去封閉性:程式併發執行時,資源狀態由多個程式改變,某程式執行時,會受到其他程式影響,失去封閉性
    • 不可再現性:失去封閉性,導致失去可再現性
  •  

    3、程序的特徵

    • 結構特徵:程式段、相關資料段和PCB三部分構成程序實體
    • 動態性:程序實體的一次執行過程,具有生命期,而程式是有序指令集合,是靜態的
    • 併發性:多個程序同時存於記憶體,在一段時間內同時執行
    • 獨立性:程序實體是一個能獨立執行、獨立分配資源和獨立接受排程的基本單位
    • 非同步性:程序按各自獨立的、不可預知的速度向前推進
  • 4.程序的狀態:三態模型(左圖)、五態模型(右圖)

 

 

  • 5、程序間的通訊(同步與互斥):由於多個程序可以併發執行,所以程序間必然存在資源共享和相互合作的問題。程序通訊是指各個程序交換資訊的過程。

    同步是合作程序間直接制約問題,互斥是申請臨界資源程序間的間接制約問題。(臨界資源(Critical Resource, CR):在同一時間只能供一個程序使用的資源)臨界區管理4條原則:

    • 有空即進:
    • 無空則等:
    • 有限等待:要求訪問臨界區的程序,保證有限時間內進入臨界區,避免死等
    • 讓權等待:程序不能進入臨界區時,應立即釋放處理機,避免忙等
  • 6、訊號量機制:即利用PV操作來對訊號量進行處理。

  訊號量(semaphore)的資料結構為一個值和一個指標,指標指向等待該訊號量的下一個程序。訊號量的值與相應資源的使用情況有關。

    • 當它的值大於0時,表示當前可用資源的數量;
    • 當它的值小於0時,其絕對值表示等待使用該資源的程序個數。
    • 注意,訊號量的值僅能由PV操作來改變。

  一般來說,訊號量S >= 0時,S表示可用資源的數量。執行一次P操作意味著請求分配一個單位資源,因此S的值減1;當S < 0時,表示已經沒有可用資源,請求者必須等待別的程序釋放該類資源,它才能執行下去。而執行一個V操作意味著釋放一個單位資源,因此S的值加1;若S <= 0,表示有某些程序正在等待該資源,因此要喚醒一個等待狀態的程序,使之執行下去。

  • 7、程序排程:如何分配CPU。

排程方法分為可剝奪和不可剝奪兩種。即當有更高優先順序的程序到來時,是否可以將正在執行程序的CPU分配給高優先順序的程序,可以則為可剝奪,否則為不可剝奪的。

       在某些作業系統中,一個作業從提交到完成需要經歷高、中、低三級排程。

    • 高階排程:又稱長排程或作業排程。它決定處於輸入池中的哪個後備作業可以調入主系統做好執行的準備,成為一個或一組就緒程序。系統中一個作業只需經過一次高階排程。
    • 中級排程:又稱短程排程或對換排程。它決定處於交換區中的就緒程序哪個可以調入記憶體,以便直接參與對CPU的競爭。在記憶體資源緊張時,為了將程序調入記憶體,必須將記憶體中處於阻塞狀態的程序調出交換區,以便為調入程序騰出空間。
    • 低階排程:又稱短程排程或程序排程。它決定處於記憶體中的就緒程序中的哪個可以佔用CPU。最活躍、最重要的排程程式,對系統影響也是最大的。

常見的程序排程演算法:先來先服務(FCFS)、短作業優先、時間片輪轉(固定時間片、可變時間片)、優先順序排程(靜態優先順序、動態優先順序)、多級反饋排程(時間片輪轉+優先順序排程)。

  • 8、死鎖:兩個以上的程序互相要求對方已經佔有的資源導致無法繼續執行下去的現象

    • 產生死鎖的原因主要是:

         (1) 因為系統資源不足。

         (2) 程序執行推進的順序不合適。

         (3) 資源分配不當等。

  如果系統資源充足,程序的資源請求都能夠得到滿足,死鎖出現的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖。其次,程序執行推進順序與速度不同,也可能產生死鎖。

    • 產生死鎖的四個必要條件:互斥條件、請求與保持條件、不剝奪條件、迴圈等待條件。

  (1) 互斥條件:一個資源每次只能被一個程序使用。

  (2) 請求與保持條件:一個程序因請求資源而阻塞時,對已獲得的資源保持不放。

  (3) 不剝奪條件:程序已獲得的資源,在末使用完之前,不能強行剝奪。

  (4) 迴圈等待條件:若干程序之間形成一種頭尾相接的迴圈等待資源關係。

  這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發生死鎖。

    • 解決死鎖的4種處理策略:鴕鳥策略(即不理睬策略)、預防策略、避免策略、檢測與解除策略。

死鎖預防:預先靜態分配法(破壞不可剝奪條件)、資源有序分配法(將資源分類按順序排列,保證不形成環路)。

死鎖避免:銀行家演算法(對每個資源請求進行檢測,確保安全。需要很大的系統開銷)。

死鎖解除:資源剝奪法、撤銷程序法。

      

  • 9、執行緒與程序

    • 定義

      • 程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,是系統進行資源分配和排程的一個獨立單位。
      • 執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位。執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源。也有就緒、執行、阻塞三態。
    • 關係
      • 一個執行緒可以建立和撤銷另一個執行緒;同一個程序中的多個執行緒之間可以併發執行.
      • 相對程序而言,執行緒是一個更加接近於執行體的概念,它可以與同進程中的其他執行緒共享資料,但擁有自己的棧空間,擁有獨立的執行序列。
    • 區別:

1) 簡而言之,一個程式至少有一個程序,一個程序至少有一個執行緒.

2) 執行緒的劃分尺度小於程序,使得多執行緒程式的併發性高。

3) 另外,程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。

4) 執行緒在執行過程中與程序還是有區別的。每個獨立的執行緒有一個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。

5) 從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現程序的排程和管理以及資源分配。這就是程序和執行緒的重要區別。

    • 優缺點

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

5、儲存管理

  1. 地址重定位:指將邏輯地址變換成實體地址的過程。分為靜態重定位和動態重定位。
  2. 儲存管理方案:分割槽儲存管理(固定分割槽、可變分割槽、可重定位分割槽)、分頁儲存管理(將一個程序的地址空間劃分為若干個大小相等的區域,成為頁,相應地,將主存空間劃分成與頁相同大小的若干個物理塊,稱為塊。至少需要兩次訪問主存)、分段儲存管理段頁式儲存管理(地址結構:段號+段內頁號+頁內地址)、虛擬儲存管理

       可變分割槽的請求和釋放主要演算法:最佳適應演算法、最差適應演算法、首次適應演算法、迴圈首次適應演算法。

       快表:在頁式儲存管理中將當前最活躍的少數幾頁的物理塊號儲存在高速儲存器中,用以提高頁式儲存管理的效能。(不用兩次訪問主存)

       頁面置換演算法:最佳置換演算法(最長時間內不再被訪問的頁面置換出去)、先進先出置換演算法、最近最少未使用置換演算法、最近未用置換演算法。

6、裝置管理

  1. 裝置管理的目標是如何提高裝置的利用率,為使用者提供方便統一的介面。
  2. 裝置管理採用的緩衝技術:通道技術、DMA技術、緩衝技術、Spooling技術。
  3. 磁碟排程演算法:先來先服務(FCFS)、最短尋道時間(SSTF)、掃描演算法(SCAN)(先由裡向外,到達最外後由外向裡)、單向掃描排程演算法(CSCAN)(無法換向,只能由裡向外)。

7、檔案管理

  1. 檔案的邏輯結構:有結構的記錄式檔案(由一個以上的記錄構成。記錄分為定長記錄、不定長記錄)、無結構的流式檔案(由一串順序的字元流構成的檔案,不劃分記錄)。
  2. 檔案的物理結構:順序結構、連結結構、索引結構、多個物理塊的索引表。
  3. Unix的三級索引結構:
  4. 檔案的存取方法:順序存取法、隨機存取法。
  5. 檔案的儲存空間管理:外存空閒空間管理的資料結構通常稱為磁碟分配表。常用的空閒空間的管理方法:位示圖(用一個bit為的0、1表示一個物理塊的空閒情況)、空閒區表、空閒塊鏈、成組連結法(每100塊為一組進行記錄空閒的塊號和大小)。
  6. 檔案連結:硬連結(兩個檔案目錄表目指向同一個索引節點,即指不同的檔名與同一個檔案實體的連結)、符號連結(在建立的新檔案或目錄並與原來的檔案或目錄的路徑名進行對映)。
    • 硬連線:原檔名和連線檔名都指向相同的實體地址。目錄不能有硬連線;硬連線不能跨越檔案系統(不能跨越不同的分割槽)檔案在磁碟中只有一個拷貝,節省硬碟空間;由於刪除檔案要在同一個索引節點屬於唯一的連線時才能成功,因此可以防止不必要的誤刪除。
    • 符號連線:用ln -s命令建立檔案的符號連線符號連線是linux特殊檔案的一種,作為一個檔案,它的資料是它所連線的檔案的路徑名。類似windows下的快捷方式。可以刪除原有的檔案而儲存連線檔案,沒有防止誤刪除功能。

8、作業管理

  1. 作業狀態分為4種:提交(通過輸入裝置送入計算機)、後備(通過Spooling系統將作業輸入到計算機系統的後備儲存器中,等待作業排程程式排程)、執行和完成。
  2. 常用的作業排程演算法:先來先服務、短作業優先、響應比高優先、優先順序排程演算法、均衡排程演算法。