1. 程式人生 > >作業系統(6)程序---程序概念:程序控制、程序狀態、三狀態模型、掛起模型;執行緒概念:使用者執行緒、核心執行緒、輕權執行緒

作業系統(6)程序---程序概念:程序控制、程序狀態、三狀態模型、掛起模型;執行緒概念:使用者執行緒、核心執行緒、輕權執行緒

文章目錄

1:程序相關概念

1. 程序的概念

程序是指一個具有一定獨立功能的程式在一個資料集合上的一次動態執行過程。也就是說程式在對資料進行處理的時候,作業系統是如何維護的。

  1. 程序的組成
    ==1==
  2. 程序的特點
    1. 動態性:作業系統可動態的建立、結束程序。
    2. 併發性:程序可以獨立排程並佔用處理機執行。我們通常所說的程式執行只是一個指令指標在執行,在作業系統中,可以交替執行多個程式,這些程式可以在作業系統的排程下佔用CPU來執行。
    3. 獨立性:不同程序的工作不相互影響。
    4. 制約性:多個程序因訪問共享資料/資源或程序間同步而產生制約。
  3. 程序與程式的聯絡
    ==2==
  4. 程序與程式的區別
    ==3==

2. 程序控制塊

作業系統管理控制程序執行所用的集合,是作業系統中最重要的資料結構
==4==

  1. 程序控制塊的使用
    ==5==

  2. 程序控制塊包含的內容

    1. 程序標識資訊
    2. 處理機現場儲存:用於程序交替執行的時候,儲存當前程序的資訊
    3. 程序控制資訊

    ==6==

  3. 程序控制資訊內容
    ==7==

  4. 程序控制塊的元件結構
    ==8==


3. 程序狀態

作業系統為了維護程序執行過程當中的所有資訊的變化,那麼它有必要知道繼承在什麼情況下是什麼狀態,會發生什麼變化。

  1. 生命週期的劃分
    建立、執行、等待、搶佔、喚醒、結束。但是這種劃分在每種作業系統中是不同的
  2. 程序建立
    建立一個程序的過程就相當於程序控制塊的一個資源準備過程,比如說把程式碼,資料拷進去。
    ==9==
  3. 程序執行
    程序建立好後,就會將程序對應的程序控制塊放到核心的就緒佇列裡,等待cpu的排程執行。至於cpu如何選擇排程,則對應後面將會學習的處理機的排程演算法。
    ==10==
    4.程序等待
    注意,程序等待肯定是由於程序內部的原因,而不是來源於外部。
    ==11==

  1. 程序搶佔
    出現這種情況一般有兩種,意識高優先順序程序進入了就緒狀態,這時候就需要馬上執行高優先順序程序。二是當前程序已經執行的最長可用時間用完(由排程演算法決定),作業系統會強制搶先讓下一個程序投入執行。被搶佔後,程序進入了就緒狀態
    ==12==
  2. 程序喚醒
    當程序被喚醒後,程序等待–〉就緒狀態
    ==13==
  3. 程序結束
    ==14==

4. 三狀態程序模型(就緒、執行、阻塞/等待)

在程序的整個生命週期過程中,可以看出三個核心狀態就是就緒、執行、等待。
==15==

  1. 執行:表示程序正在處理機上執行
  2. 就緒:程序獲得了除處理機外的所需資源,得到處理機即可執行
  3. 等待:程序正在等待某一個時間的出現而暫停執行
  4. 建立:程序正在被建立,還沒有被轉到就緒之前的狀態
  5. 退出:程序正在從系統消失的狀態,這時因為程序結束或者其他原因導致

5. 掛起程序模型

在前面討論的狀態模型,主要討論的是和CPU相關的這些狀態。但實際上,在程序的狀態裡面,還有一些是跟儲存相關的,也就是說程序的一部分儲存是在外存裡面,和虛擬儲存關聯起來了。 相比三狀態程序,多了就緒掛起和等待掛起兩個狀態(這兩種狀態實際上描述了在外存當中的程序的狀態)。
==16==

  1. 掛起狀態

    1. 等待掛起:程序在外存並等待某事件的發生,也就是在等待狀態的基礎上加了一個程序位置的資訊(記憶體/外存)
    2. 就緒掛起:程序在外存,但只要進入記憶體即可執行。
  2. 與掛起相關的狀態轉換
    掛起:把一個程序從記憶體轉到外存

    1. 等待到等待掛起:沒有程序處於就緒狀態或者就緒程序要求更多的記憶體資源
    2. 就緒到就緒掛起:當有高優先順序等待(系統認為很快有緒的)的程序時,低優先順序的當前就緒程序就會掛起
    3. 執行到就緒掛起:對搶先式分時系統,當有高優先順序等待掛起程序因事件出現時,當前程序進入就緒掛起。

    在外存時的狀態轉換有

    1.等待掛起到就緒掛起:當有等待掛起因相關事件出現

    啟用:把一個程序從外存轉到記憶體

    1.就緒掛起到就緒:沒有就緒程序,或者當前的掛起就緒程序優先順序高於就緒程序
    2. 等待掛起到等待:當一個程序釋放了足夠記憶體並且,當前程序是高優先順序等待掛起程序

  3. 狀態佇列
    ==17==


2:程序控制

1. 程序切換

  1. 程序切換概念以及要求
    ==1==
  2. 完整的切換步驟
    ==2==
  3. 程序控制塊PCB
    ==3==

2. 程序建立

==4==

3. 程序載入

==5==

4. 程序的等待與退出

在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述


3:執行緒相關概念

1. 執行緒的概念

  1. 為什麼引入執行緒
    在程序的執行過程中,它的指令執行是由一個叫指令指標的暫存器來描述,該暫存器描述當前的程序執行到什麼地方。在實際使用過程中,在程序內部也希望程序有更好的併發性,這就是引入執行緒的原因。

  2. 執行緒的特性
    執行緒之間可以併發執行,同時,也共享相同的地址空間。

  3. 執行緒的概念
    執行緒是程序的一部分,描述指令流執行狀態。它是程序中的指令執行流的最小單位,是CPU排程的基本單位.
    ==18==

  4. 程序和執行緒的關係
    ==20==
    ==21==


2. 使用者執行緒

  1. 執行緒的三種實現方式

    使用者執行緒:在使用者空間裡,通過函式庫的形式來支援執行緒的建立刪除和切換。

    ==22==

  2. 使用者執行緒概念以及特徵
    在下圖中,核心中只有程序控制塊來描述處理機的排程情況
    ==23==
    ==24==

  3. 使用者執行緒的不足
    因為作業系統不管理執行緒,所以存在下圖中的問題
    ==25==


3. 核心執行緒

由核心通過系統呼叫的方式來實現的執行緒機制,由核心完成執行緒的建立、終止和管理。

  1. 原理圖
    程序控制塊裡有指標指向自己相應的執行緒控制塊,執行緒控制塊在核心裡。
    ==26==
  2. 核心執行緒的特徵
    ==27==

4. 輕權執行緒

一個程序可有一個或多個輕量級程序,每個輕量級程序由一個單獨的核心執行緒來支援。
==28==