聲明:所有學習筆記小編都是根據《王道考研》此書歸納總結的,持續跟新中。。。
進程的定義組成組織方式特徵
進程的定義:
進程是進程實體的運行過程,是系統進行資源分配和調度的一個獨立單位
程序:一個指令序列,早期計算機只支持單道程序
從不同的角度,進程可以有不同的定義,比較傳統典型的定義有:
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執行單元成了程序執行流的最小單位
線程是處理機調度的單位,進程是資源分配的單位,內核線程纔是處理機分配的單位
線程的實現方式
多線程模型
多對一模型
一對一模型
多對多模型