跟着小白學OS(二)

聲明:所有學習筆記小編都是根據《王道考研》此書歸納總結的,持續跟新中。。。

進程的定義組成組織方式特徵

進程的定義
進程是進程實體的運行過程,是系統進行資源分配和調度的一個獨立單位
程序:一個指令序列,早期計算機只支持單道程序
從不同的角度,進程可以有不同的定義,比較傳統典型的定義有:
  1.進程是程序的一次執行過程。
  2.進程是一個程序及其數據在處理機上順序執行時所發生的酒動。
  3.進程是具有獨立功能的程序在數據集合上運行的過程,它是系統進行資源分配和調度的一個獨立單位 
進程的組成
PCB、程序段、數據段三部分構成了進程實體(進程映像)一般情況下, 我們把進程實體就簡稱爲進程,
系統爲每個運行的程序配置一個數據結構,稱爲進程控制塊(PCB) , 用來描述進程的各種信息(如程序代碼存放位置)
例如, 所謂創建進程, 實質上是創建進程實體中的PCB; 而撤銷進程, 實質上是撤銷進程實體中的PCB.
注意:PCB是進程存在的唯一標誌!
 程序段:程序代碼存放在此如程序運行是使用的
 PCB
      進程描述信息
      進程控制和管理
      資源分配清單
      處理機相關信息
 數據段:存放程序運行過程中處理的各種數據

注:嚴格來說,進程實體和進程並不一樣,進程實體是靜態的,進程則是動態的.不過,除非題目專門考察二者區別, 否則可以認爲進程實體就是進程。因此我們也可以說“進程由程序段、數據段、PCB三部分組成”
進程組織:
  1)鏈接方式:按照進程狀態將PCB分爲多個隊列操作系統持有指向各個隊列的指針
  2)索引方式:根據進程狀態的不同,建立幾張索引表
操作系統持有指向各個索引表的指針
進程的特徵
進程和程序是兩個截然不同的概念,相比於程序,進程擁有以下特徵:
  1)動態性是進程最本的特徵動態性進程是程序的一次執行過程,是動態地產生、變化和消亡的
  2)併發性內存中有多個進程實體,各進程可併發執行
  3)獨立性進程是能獨立運行、獨立獲得資源、獨立接受調度的基本單位
  4)異步性各進程按各自獨立的、不可預知的速度向前推進,操作系統要提供”進程同步機制”來解決異步問題
  5)結構性每個進程都會配置一個PCB.結構上看, 進程由程序段、數據段、PCB組成

進程的狀態與轉換

進程的狀態
進程是程序的一次執行。在這個執行過程中, 有時進程正在被CPU處理, 有時又需要等待CPU服務, 可見,進程的狀態是會有各種變化.爲了方便對各個進程的管理,操作系統需要將進程合理地劃分爲幾種狀態。
  1)運行態(Running) :佔有CPU, 並在CPU上運行
  2)就緒態(Ready) :已經具備運行條件, 但由於沒有空閒CPU, 而暫時不能運行三種基本狀態
  3)阻塞態(Waiting/Blocked,又稱:等待態) 因等待某一事件而暫時不能運行
進程狀態的轉換
如下圖所示在這裏插入圖片描述

進程控制

主要功能:實現進程狀態的轉換
原語:實現進程控制,原語的特點是執行期間不允許中斷,只能一氣呵成
原語做的事情:
1.更新PCB中的信息(如修改進程狀態標誌、將運行環境保存到PCB、從PCB恢復運行環境)
  a.所有的選程控制原語一定都會修改進程狀態標誌
  b.剝奪當前運行進程的CPU使用權必然需要保存其運行環境
  c.某進程開始運行前必然要恢復期運行環境
2.將PCB插入合適的隊列
3.分配/回收資源
進程控制的相關原語
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述

進程通信

值進程之間進行信息交換
共享存儲:
兩個進程對共享空間的訪問是互斥的
    1)基於數據結構的共享:比如共享空間裏只能存放一個長度爲10的數組,這種共享方式熟讀慢、限制多是一種低級通信方式
    2)基於存儲區的共享:在內存中畫出一塊共享存儲區,數據的形式、存放位置都由進程控制,而不是操作系統。相比之下,這種共享方式速度更快是一種高級通信方式
管道通信
管道:連接讀寫進程的一個共享文件
 1.管道只能採用半雙工通信,某一時間段內只能實現單向的傳輸。如果要實現雙向同時通信,則需要設置兩個管道。
 2.各進程要互斥地訪問管道。
 3.數據以字符流的形式寫入管道, 當管道寫滿時, 寫進程的write() 系統調用將被阻塞, 等待讀進程將數據取走。當讀進程將數據全部取走後, 管道變空, 此時讀進程的read() 系統調用將被阻塞。
 4.如果沒寫滿,就不允許讀。如果沒讀空,就不允許寫。
 5.數據一旦被讀出,就從管道中被拋棄,這就意味着讀進程最多隻能有一個,否則可能會有讀錯數據的情況。
消息傳遞
進程間的數據交換以格式化的消息爲單位進程通過操作系統提供的“發送消息/接受消息”兩個原語今夕數據交換
理解消息傳遞

線程概念多線程模型

每一個進程可能包含多個線程,線程是一個基本的CPU執行單元成了程序執行流的最小單位
線程是處理機調度的單位,進程是資源分配的單位,內核線程纔是處理機分配的單位
在這裏插入圖片描述
在這裏插入圖片描述
線程的實現方式
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
多線程模型
多對一模型
在這裏插入圖片描述
一對一模型
在這裏插入圖片描述
多對多模型
在這裏插入圖片描述

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