91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

進程的三種基本狀態(tài)及進程控制塊(PCB)

PCB線路板打樣 ? 來源:博客園 ? 作者:mickole ? 2021-01-15 10:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一,進程狀態(tài)變遷

進程的三種基本狀態(tài)

就緒(Ready)狀態(tài)

當進程已分配到除CPU以外的所有必要的資源,只要獲得處理機便可立即執(zhí)行,這時的進程狀態(tài)稱為就緒狀態(tài)。

執(zhí)行(Running)狀態(tài)
當進程已獲得處理機,其程序正在處理機上執(zhí)行,此時的進程狀態(tài)稱為執(zhí)行狀態(tài)。

阻塞(Blocked)狀態(tài)
正在執(zhí)行的進程,由于等待某個事件發(fā)生而無法執(zhí)行時,便放棄處理機而處于阻塞狀態(tài)。引起進程阻塞的事件可有多種,例如,等待I/O完成、申請緩沖區(qū)不能滿足、等待信件(信號)等。

狀態(tài)轉換圖:

一個進程在運行期間,不斷地從一種狀態(tài)轉換到另一種狀態(tài),它可以多次處于就緒狀態(tài)和執(zhí)行狀態(tài),也可以多次處于阻塞狀態(tài)。

(1) 就緒→執(zhí)行
處于就緒狀態(tài)的進程,當進程調(diào)度程序為之分配了處理機后,該進程便由就緒狀態(tài)轉變成執(zhí)行狀態(tài)。

(2) 執(zhí)行→就緒
處于執(zhí)行狀態(tài)的進程在其執(zhí)行過程中,因分配給它的一個時間片已用完或更高優(yōu)先級的進程搶占而不得不讓出處理機,于是進程從執(zhí)行狀態(tài)轉變成就緒狀態(tài)。

(3) 執(zhí)行→阻塞
正在執(zhí)行的進程因等待某種事件發(fā)生而無法繼續(xù)執(zhí)行時,便從執(zhí)行狀態(tài)變成阻塞狀態(tài)。

(4) 阻塞→就緒
處于阻塞狀態(tài)的進程,若其等待的事件已經(jīng)發(fā)生,于是進程由阻塞狀態(tài)轉變?yōu)榫途w狀態(tài)。

(5) 運行→終止

程序執(zhí)行完畢,撤銷而終止

以上是最經(jīng)典也是最基本的三種進程狀態(tài),但現(xiàn)在的操作系統(tǒng)都根據(jù)需要重新設計了一些新的狀態(tài)。

linux

其和淺度睡眠基本類似,但有一點就是不可被其他進程信號或時鐘中斷喚醒。Linux 使用TASK_UNINTERRUPTIBLE 宏表示此狀態(tài)。

  • 運行狀態(tài)(TASK_RUNNING):是運行態(tài)和就緒態(tài)的合并,表示進程正在運行或準備運行,Linux 中使用TASK_RUNNING 宏表示此狀態(tài)
  • 可中斷睡眠狀態(tài)(淺度睡眠)(TASK_INTERRUPTIBLE):進程正在睡眠(被阻塞),等待資源到來是喚醒,也可以通過其他進程信號或時鐘中斷喚醒,進入運行隊列。Linux 使用TASK_INTERRUPTIBLE 宏表示此狀態(tài)。
  • 不可中斷睡眠狀態(tài)(深度睡眠狀態(tài))(TASK_UNINTERRUPTIBLE):
  • 暫停狀態(tài)(TASK_STOPPED):進程暫停執(zhí)行接受某種處理。如正在接受調(diào)試的進程處于這種狀態(tài),Linux 使用TASK_STOPPED 宏表示此狀態(tài)。
  • 僵死狀態(tài)(TASK_ZOMBIE):進程已經(jīng)結束但未釋放PCB,Linux 使用TASK_ZOMBIE 宏表示此狀態(tài)

狀態(tài)轉換圖如下:

就緒態(tài)在支持虛擬內(nèi)存的操作系統(tǒng)中可能分為:在內(nèi)存中就緒和在交換空間就緒,因為支持虛擬內(nèi)存的操作系統(tǒng)會將當前不太活躍的一些進程交換到交換空間,交換空間就緒進程要運行要先換人內(nèi)存出入內(nèi)存就緒態(tài),在由cpu調(diào)度執(zhí)行。

二,進程控制塊(PCB)

進程控制塊包括:

進程描述信息:

  • 進程標識符用于唯一的標識一個進程(pid,ppid)。

進程控制信息:

  • 進程當前狀態(tài)
  • 進程優(yōu)先級
  • 程序開始地址
  • 各種計時信息
  • 通信信息

資源信息:

  • 占用內(nèi)存大小及管理用數(shù)據(jù)結構指針
  • 交換區(qū)相關信息
  • I/O設備號、緩沖、設備相關的數(shù)結構
  • 文件系統(tǒng)相關指針

現(xiàn)場保護信息(cpu進行進程切換時):

  • 寄存器
  • PC
  • 程序狀態(tài)字PSW
  • 棧指針

進程標識:PID

  • 每個進程都會分配到一個獨一無二的數(shù)字編號,我們稱之為“進程標識”(process identifier),或者就直接叫它PID.
  • 是一個正整數(shù),取值范圍從2到32768

可以通過:cat /proc/sys/kernel/pid_max 查看系統(tǒng)支持多少進程

  • 當一個進程被啟動時,它會順序挑選下一個未使用的編號數(shù)字做為自己的PID
  • 數(shù)字1一般為特殊進程init保留的

init進程實際上是用戶進程,它是一個程序,在/sbin/init,linux啟動的第一個進程

實際上linux中還存在0號進程(內(nèi)核進程),它是一個空閑進程,它進行空閑資源的統(tǒng)計及交換空間的換入換出,1(init)進程是由0號進程創(chuàng)建的。

三,進程創(chuàng)建

  • 不同的操作系統(tǒng)所提供的進程創(chuàng)建原語的名稱和格式不盡相同,但執(zhí)行創(chuàng)建進程原語后,操作系統(tǒng)所做的工作卻大致相同,都包括以下幾點:
  • 給新創(chuàng)建的進程分配一個內(nèi)部標識(pcb),在內(nèi)核中建立進程結構。
  • 復制父進程的環(huán)境
  • 為進程分配資源, 包括進程映像所需要的所有元素(程序、數(shù)據(jù)、用戶棧等),
  • 復制父進程地址空間的內(nèi)容到該進程地址空間中。
  • 置該進程的狀態(tài)為就緒,插入就緒隊列。

四,進程撤銷

進程終止時操作系統(tǒng)做以下工作:

  • 關閉軟中斷:因為進程即將終止而不再處理任何軟中斷信號;
  • 回收資源:釋放進程分配的所有資源,如關閉所有已打開文件,釋放進程相應的數(shù)據(jù)結構等;
  • 寫記帳信息:將進程在運行過程中所產(chǎn)生的記帳數(shù)據(jù)(其中包括進程運行時的各種統(tǒng)計信息)記錄到一個全局記帳文件中;
  • 置該進程為僵死狀態(tài):向父進程發(fā)送子進程死的軟中斷信號,將終止信息status送到指定的存儲單元中;
  • 轉進程調(diào)度:因為此時CPU已經(jīng)被釋放,需要由進程調(diào)度進行CPU再分配。

五,終止進程的五種方法

  • 從main函數(shù)返回:從return返回,執(zhí)行完畢退出
  • 調(diào)用exit:C函數(shù)庫,實際上也是調(diào)用系統(tǒng)調(diào)用_exit完成的,在任何一個函數(shù)調(diào)用exit函數(shù)都可使得進程撤銷
  • 調(diào)用_exit:系統(tǒng)調(diào)用
  • 調(diào)用abort:調(diào)用abort()函數(shù)使得進程終止,實際上該函數(shù)是產(chǎn)生一個SIGABRT信號,
  • 由信號終止:發(fā)送一些信號如SINGINT等信號
    編輯:hfy
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5608

    瀏覽量

    129943
  • Linux
    +關注

    關注

    88

    文章

    11756

    瀏覽量

    218995
  • 處理機
    +關注

    關注

    0

    文章

    12

    瀏覽量

    8077
  • 進程
    +關注

    關注

    0

    文章

    211

    瀏覽量

    14532
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    進程控制

    進程控制的主要功能是對系統(tǒng)中的所有進程實施有效的管理,它具有創(chuàng)建新進程、撤銷已有進程、實現(xiàn)進程狀態(tài)
    發(fā)表于 01-15 06:05

    進程概念和特征

    的并發(fā)性和共享性。   為了使參與并發(fā)執(zhí)行的程序(含數(shù)據(jù))能獨立地運行,必須為之配置一個專門的數(shù)據(jù)結構,稱為進程控制(Process Control Block, PCB)。系統(tǒng)利用PCB
    發(fā)表于 01-15 06:39

    淺析Windows多進程編程概念

    進程的內(nèi)核對象:即我們通常所講的PCB進程控制),該結構只能由該內(nèi)核訪問,他是操作系統(tǒng)用來管理進程的一個數(shù)據(jù)結構,操作系統(tǒng)通過該數(shù)據(jù)結構
    發(fā)表于 08-05 07:17

    淺析Linux進程

    進程是程序的一次執(zhí)行,是運行在自己的虛擬地址空間的一個具有獨立功能的程序.進程是分配和釋放資源的基本單位,當程序執(zhí)行時,系統(tǒng)創(chuàng)建進程,分配內(nèi)存和 CPU 等資源;進程結束時,系統(tǒng)回收這
    發(fā)表于 08-07 06:53

    如何理解ARM中的進程?

    進程控制都存儲在task[]數(shù)組中。進程三種基本狀態(tài)????a> 就緒狀態(tài)
    發(fā)表于 10-23 16:02

    進程類型及三種狀態(tài)

    進程類型進程三種狀態(tài)
    發(fā)表于 04-02 07:06

    操作系統(tǒng) : 進程與線程

    本文為《現(xiàn)代操作系統(tǒng)》的讀書筆記目錄程序順序執(zhí)行與并發(fā)執(zhí)行進程的定義進程狀態(tài)轉換進程控制進程控制
    發(fā)表于 07-01 10:49

    進程與程序有何不同

    著文件、靜態(tài)和可以復制。進程是暫時的,程序使長久的:進程是個狀態(tài)變化的過程,程序可長久保存。進程與程序組成不同:進程的組成包括程序、數(shù)據(jù)和
    發(fā)表于 11-08 08:27

    你知道僵尸進程是個什么東西?

    在UNIX系統(tǒng)中,僵尸進程是指完成執(zhí)行(通過exit系統(tǒng)調(diào)用,或運行時發(fā)生致命錯誤或收到終止信號所致)但在操作系統(tǒng)的進程表中仍然有一個表項(進程控制
    發(fā)表于 04-22 17:50 ?1483次閱讀

    Linux0.11-進程控制數(shù)據(jù)結構

    嵌入式Linux中文站收集整理Linux0.11版本內(nèi)核學習筆記,本文分析了Linux進程控制模塊的數(shù)據(jù)結構。
    發(fā)表于 05-15 15:22 ?1244次閱讀

    閑談進程控制PCB的五大作用

    為了使參與并發(fā)執(zhí)行的每個程序,包含數(shù)據(jù)都能獨立地運行,在操作系統(tǒng)中必須為之配置一個專門的數(shù)據(jù)結構,稱為進程控制PCB,Process Control Block)。進程
    的頭像 發(fā)表于 08-21 16:58 ?8803次閱讀

    進程控制,信號集是什么資料下載

    電子發(fā)燒友網(wǎng)為你提供進程控制,信號集是什么資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-05 08:50 ?11次下載
    <b class='flag-5'>進程控制</b><b class='flag-5'>塊</b>,信號集是什么資料下載

    為什么需要進程 特征和定義有哪些

    資源分配調(diào)度的獨立單位。 結構特征:為了使程序能夠獨立運行,應配置一個進程控制PCB進程是由程序段,相關的數(shù)據(jù)段和PCB
    的頭像 發(fā)表于 10-08 15:29 ?1169次閱讀
    為什么需要<b class='flag-5'>進程</b> 特征和定義有哪些

    PCB進程的創(chuàng)建和終止過程

    PCB進程控制 獨立運行基本單位的標志:創(chuàng)建進程時創(chuàng)建PCB,進程結束時回
    的頭像 發(fā)表于 10-08 15:36 ?2009次閱讀

    深入解析Linux程序與進程

    關于某個數(shù)據(jù)集合的一次運行活動。作為系統(tǒng)進行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結構的基礎。 程序與進程的關系 進程狀態(tài) 基礎進程狀態(tài) 創(chuàng)
    的頭像 發(fā)表于 12-18 11:01 ?983次閱讀
    深入解析Linux程序與<b class='flag-5'>進程</b>