第二章處理機管理

程序的執行方式

順序方式(*)

內存中只能駐留一個程序,前一個程序結束,後一個程序才能進來,並且有着嚴格的先後次序

順序執行的特點

  • 順序性:程序執行有着明確的先後順序
  • 封閉性:程序運行時獨佔所有資源
  • 可再現性:初始條件相同,若程序執行順序不變,則每次得到的結果一定相同

問題

  • 無法滿足高性能

併發執行(***)

併發指一段時間內執行多個程序。多個程序同時進入內存,輪流交替執行

image-20200622092827851

併發執行的特點

  • 間斷性:交替執行就是走走停停

  • 失去了封閉性:程序不再獨佔系統資源

  • 不可再現性:程序執行有多種結果。

並行執行

同一時刻有多個程序執行,只能在多處理機上實現

進程

進程是研究併發方式下,程序的執行。

進程的概念:進程是進程實體的運行過程,是系統進行資源分配和調度的一一個獨立單位。

進程實體:由程序段、相關數據段和PCB組成

進程的特徵

  • 併發性, 多個進程在一段時 間內同存於內存中同時運行
  • 動態性,進程由創建而產生,由調度而執行,由撤消而消亡。
  • 獨立性,進程是能獨立運行、資源分配、調度的基本單位。
  • 結構性,進程映像由程序、數據、棧和進程控制塊( PCB )構成。
  • 異步性,進程按各自獨立、不可預知的速度向前推進。

進程的狀態

有三個狀態

  • 就緒狀態:指程序已經處於準備好運行的狀態。
  • 執行狀態:指程序已經獲得CPU,正在執行。
  • 阻塞狀態:指程序的執行因爲某些原因無法繼續執行。
image-20200622093952609

進程控制塊(PCB)

  • 用來描述進程的基本情況和活動過程,進而控制和管理進程。(類似於學籍、戶口等
  • 進程創建時會建立一個PCB,結束時會收回PCB

進程控制塊中的信息

  • 進程標識符:包括內部標識符和外部標識符。
  • 處理機狀態:處理機狀態包括通用寄存器、程序計數寄存器、程序狀態寄存器、棧寄存器信息。
  • 進程控制信息:程序棧和數據地址,同步和通信機制,資源清單,鏈接指針。
  • 進程調度信息

進程控制塊中的組織方式

  1. 線性方式

  2. 鏈接方式

    image-20200622095654092
  3. 索引方式

image-20200622095909769

進程控制

  • 進程控制用於創建、終止、阻塞和喚醒進程。

  • 進程控制由操作系統內核原語來實現。

    原語是由若干條指令組成,用於完成一定功能的一個過程,所有的指令要麼全做,要麼全不做。(一個函數

用戶態:具有較低特權的執行狀態,進行執行規定的指令,訪問特定的寄存器和存儲區。

系統態(內核態):具有較高特權,能執行全部的指令,訪問所有的寄存器和存儲區。

進程的四個操作

進程的創建

引起進程創建的事件

  • 用戶執行應用程序。
  • 用戶登錄。
  • 啓動服務。
  • 程序創建進程。

進程創建的過程(必須要求是原語):

  1. 申請空白PCB
  2. 爲新進程分配資源,如內存空間等
  3. 初始化PCB
  4. 將進程插入就緒隊列

進程的終止

引起進程終止的事件

  • 正常結束。
  • 異常結束。
  • 外界干預。

進程的終止過程

  • 檢查進程狀態。

  • 有無子孫需要終止。

  • 歸還進程全部資源。

  • 將PCB從進程中移除。

進程的阻塞和進程的喚醒

進程調度概念

處理機調度的層次

  • 高級調度
  • 低級調度
  • 中級調度

引起進程調度的事件

  • 進程終止。
  • 進程創建。
  • 進程阻塞。
  • 進程喚醒。
  • 外部設備中斷。

進程切換時需要保存和恢復現場。

進程調度的方式

  • 搶佔式調度:允許調度程序根據某種原則,暫停某個佔用處理機的進程,搶佔已經分配出去的處理機。搶佔的原則有優先權原則、短作業優先原則和時間片原則。

  • 非搶佔式調度:進程一旦獲得處理機,只有在該進程任務完成或因某事件而阻塞時,才讓出處理機,決不允許某進程搶佔已經分配出去的處理機。(只有時間片用完才能調度

衡量調度算法指標

面向用戶(***)

  • 平均週轉時間:所有周轉時間求平均。
  • 帶權週轉時間:一個程序的週轉時間除以服務的時間。(>=1)
  • 平均帶權週轉時間:對帶權週轉時間求平均。

週轉時間:從作業被提交給系統開始,到作業完成爲止的這段時間間隔。

面向系統

  • 吞吐量:在單位時間內系統所完成的作業數。
  • 處理機利用率:在過去一 段時間內CPU被佔用的時間總和。
  • 各類資源的平衡利用率:保證系統所有的資源被合理利用。

進程調度算法(計算***)

先來先服務調度算法(***)

先來的進程先搶到CPU,有利於長作業,不利於短作業

image-20200622111911566 image-20200622112903214

短作業優先調度算法(***)

在分配時,優先分配給服務時間最短的,降低了系統的平均週轉時間,對長作業不利。

只有在搶佔的時候,進程的創建纔會導致需要重新分配CPU,非搶佔式在進程終止的時候分配。

image-20200622113117858

非搶佔方式:

image-20200622114213680

搶佔式:

image-20200622114634375

高優先權調度算法(***)

按照優先權重分配CPU,優先數越小,優先權越大

image-20200622115711510 image-20200622120734094 image-20200622120720361

高響應比優先調度算法

按照響應比去分配CPU資源,既考慮的作業的先後順序,又優先照顧短作業,同時不會使長作業等太久

響應比 = 等待時間/服務時間

時間片輪轉調度算法(***)

按照先來先服務的將作業放入一個調度隊列中,每隔一定的時間片,發生一次調度,一般爲10ms到100ms。

假設時間片爲2。

image-20200622122330474 image-20200622122733994

多級隊列調度算法

優先調度優先級高的

image-20200622122939586

多級反饋隊列調度算法

解決了低優先級隊列長時間無法調度的問題

線程

爲什麼提出線程?

  • 進程是資源的擁有者,在併發時,對進程的切換需要有較大時空的開銷。
  • 一個進程內全部線程都是在同一個地址空間進行,在併發時可以減少系統的開銷。

線程概念:線程是進程的一個實體,是被系統獨立調度的基本單位,只擁有少量的資源(如CPU寄存器資源)。

如下圖所示,每個線程都會有個棧,一共有三個線程:

image-20200622142107384

線程的特點

  • 一個線程擁有少量的資源,記錄在線程控制塊中。輕型實體,線程基本上不擁有資源,或者是有較少的資源;
  • 一個進程的所有線程共享進程所擁有的全部資源。
  • 線程是處理機調度的基本單位,多個線程可以併發執行。

線程與進程的比較

image-20200623095239272

線程的實現方式

  • 內核級線程:所有創建、切換等都需要內核的支持,開銷較大(適合多處理器系統
  • 用戶級線程:可以不需要進入內核態創建,但是切換進程需要進入內核(開銷小
  • 組合方式:建立內核級線程與用戶級線程的關係。

題目練習

image-20200622093526050

image-20200622100444854

image-20200622100540099

image-20200622103623435

image-20200622103657071

image-20200622143148015

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章