考研党進程管理還不熟悉嗎?不會你就out了!!!(一)

嘿嘿嘿

考研黨們。。。。進程會不會?會不會????不會那就學,這麼好的資料你還不看,,小心我把你頭打歪!!
在這裏插入圖片描述

一、進程與線程

  1. 進程的概念與特徵
  2. 進程的狀態與轉換
  3. 進程控制
  4. 進程的組織
  5. 進程的通信
  6. 線程概念和多線程模型

1.進程的概念與特徵

進程目的:更好地描述和控制程序併發執行

進程(process):是程序及其數據在計算機上的一次運行活動,是系統進行資源分配和調度的一個獨立單位。是動態的。進程映像(進程實體)由程序、數據、進程控制塊(PCB)組成。由生命週期,暫時存在。一個進程可以執行多個程序

程序:進程運行實體,離開程序的進程是沒有意義的,程序是有序的指令集合,是靜態的。是一組代碼,永久存在。一個程序可以構成多個進程
進程可以創建程序,而程序不能形成新的程序。

特徵:
1)動態性:最基本特徵,進程是程序的一次執行
2)併發性:引入進程爲了能夠使程序能與其他進程的程序併發執行,以提高資源利用率
3)獨立性:未建立PCB的程序,都不能獨立作爲一個單位參與運行
4)異步性:進程按照自己獨立的、不可預知的速度向前推進,導致回字形結果不可再現
5)結構性:進程實體的組成


2.進程的狀態與轉換

五種狀態:
1)運行態:進程正在處理機上運行
2)就緒態:進程已獲得了除處理機之外的一切所需資源態
3)阻塞態:進程正在等待某一事件而暫停運行
4)創建態:進程正在被創建,尚未轉到就緒狀態
5)結束態:進程正從系統中消失,分爲正常結束和異常退出
在這裏插入圖片描述
進程就緒數目越多,爭奪CPU的進程就越多,但只要就緒隊列不爲空,cpu就總是可以調度進程運行,保持繁忙,與就緒進程的數目沒有關係,除非就緒隊列爲空,此時CPU進入等待狀態,導致CPU效率下降

狀態變化:
就緒狀態→運行狀態:經過處理機調度,就緒進程得到處理機資源
運行狀態一就緒狀態:時間片用完或在可剝奪系統中有更高優先級進程進入態變化
運行狀態→阻塞狀態:進程需要的某一資源還沒準備好(自身決定
阻塞狀態→就緒狀態:進程需要的資源已準備好(系統所請求的一次I/O操作完成)

注意:一個進程從程序運行態變成阻塞態是主動的行爲,而從變成就緒態是被動的行爲,需要其他相關進程的協助


3.進程控制
功能:
對系統所有進程實施有效管理,具有創建新進程、實施進程狀態轉換、撤銷已有進程等功能
進程控制用的程序叫原語,原語特點執行期間不予中斷,他是一個不可分割的基本單位
1)創建:終端用戶登錄系統、作業調度、系統提供服務、用戶程序的應用請求等
2)終止:正常結束、發生異常、外界干預
3)阻塞:等待資源
4) 喚醒:資源到達
5)切換:時間片用完、主動放棄處理機、被更高優選級的進程剝奪處理機
調度是指決定資源分配給那個進程的行爲,是一種決策行爲,切換指實際分配的行爲,是執行行爲,先有資源調度,後有進程切換


4 .進程的組織

最核心部分是PBC,進程是獨立運行的單位,也是啊哦做系統進行資源分配和調度的基本單位
組成:
進程控制塊(PBC):保存進程運行期間相關的數據,是進程存在的唯一標誌。進程創建,操作系統就創建一個PBC,進程結束就PBC刪除。操作系統根據進程控制塊來對併發執行的進程進行控制和管理
程序段:能被進程調度程序調度到CPU運行的程序的代碼段
數據段:存儲程序運行期間的相關數據,可以是原始數據也可以是相關結果


5.進程的通信

進程之間不能直接交換數據,每個進程包含獨立的地址空間,進程各自的空間是私有的,只能執行自己的地址空間中的程序,且訪問自己地址空間中的數據,相互訪問會導致指針的越界
指進程之間的信息交換,進程通信方式分爲三類:

1)共享存儲:
低級方式:基於數據結構的共享。
高級方式:基於存儲區的共享

在這裏插入圖片描述

2)消息傳遞:
直接通信方式:直接把消息掛在接收進程的消息隊列
間接通信方式:掛到某個中間實體,接收進程找實體接收消息類似於電子郵件

在這裏插入圖片描述
3)管道通信:
利用一種特殊的pipe文件連接兩個進程

在這裏插入圖片描述


6.線程概念和多線程模型

進程作用:
爲了更好地使多道程序併發執行,以提高資源利用率和系統吞吐量,

線程作用:
減少程序在併發執行時所付出的時空開銷,增加程序的併發性,線程可以併發執行

屬性:
1)線程是一個輕型實體,它不擁有系統資源,每個線程都應有一個唯一的標識符和一個線程控制塊,線程控制塊記錄了線程執行的寄存器和棧等現場狀態。
2)不同的線程可以執行相同的程序
3)同一進程中的各個線程共享該進程所擁有的資源。
4) 線程是處理機的獨立調度單位, 多個線程是可以併發執行的。
5)一個線程被創建後,便開始了它的生命週期,直至終止。

線程的實現:
1)用戶級線程(ULT):線程管理所有工作由應用程序完成,內核意識不到線程的存在
2)內核級線程(KLT):線程管理所有工作由內核完成,應用程序沒有進行線程管理的代碼
在這裏插入圖片描述
注意:在同一進程中,線程的切換不會引起進程的切換,當從一個進程中線程切換到另一個進程中的線程時,纔會引起進程的切換

多線程模型:
1)一對一
2)多對一
3)多對多

補充

  1. 併發進程封閉性失去指併發進程共享變量,期執行結果與速度有關
  2. 線程是進程內一個相對獨立的執行單元,但不能脫離進程單獨進行,只能在進程中運行

喜歡就點贊+關注

liuliu去喫飯

在這裏插入圖片描述

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