在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

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

PCB線路板打樣 ? 來(lái)源:博客園 ? 作者:mickole ? 2021-01-15 10:36 ? 次閱讀

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

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

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

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

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

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

狀態(tài)轉(zhuǎn)換圖:

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

(1) 就緒→執(zhí)行
處于就緒狀態(tài)的進(jìn)程,當(dāng)進(jìn)程調(diào)度程序?yàn)橹峙淞颂幚頇C(jī)后,該進(jìn)程便由就緒狀態(tài)轉(zhuǎn)變成執(zhí)行狀態(tài)。

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

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

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

(5) 運(yùn)行→終止

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

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

linux

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

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

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

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

二,進(jìn)程控制塊(PCB)

進(jìn)程控制塊包括:

進(jìn)程描述信息

  • 進(jìn)程標(biāo)識(shí)符用于唯一的標(biāo)識(shí)一個(gè)進(jìn)程(pid,ppid)。

進(jìn)程控制信息:

  • 進(jìn)程當(dāng)前狀態(tài)
  • 進(jìn)程優(yōu)先級(jí)
  • 程序開(kāi)始地址
  • 各種計(jì)時(shí)信息
  • 通信信息

資源信息:

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

現(xiàn)場(chǎng)保護(hù)信息(cpu進(jìn)行進(jìn)程切換時(shí)):

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

進(jìn)程標(biāo)識(shí):PID

  • 每個(gè)進(jìn)程都會(huì)分配到一個(gè)獨(dú)一無(wú)二的數(shù)字編號(hào),我們稱之為“進(jìn)程標(biāo)識(shí)”(process identifier),或者就直接叫它PID.
  • 是一個(gè)正整數(shù),取值范圍從2到32768

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

  • 當(dāng)一個(gè)進(jìn)程被啟動(dòng)時(shí),它會(huì)順序挑選下一個(gè)未使用的編號(hào)數(shù)字做為自己的PID
  • 數(shù)字1一般為特殊進(jìn)程init保留的

init進(jìn)程實(shí)際上是用戶進(jìn)程,它是一個(gè)程序,在/sbin/init,linux啟動(dòng)的第一個(gè)進(jìn)程

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

三,進(jìn)程創(chuàng)建

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

四,進(jìn)程撤銷

進(jìn)程終止時(shí)操作系統(tǒng)做以下工作:

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

五,終止進(jìn)程的五種方法

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

    關(guān)注

    31

    文章

    5357

    瀏覽量

    120586
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11314

    瀏覽量

    209784
  • 處理機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    7892
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    203

    瀏覽量

    13964
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    淺析Windows多進(jìn)程編程概念

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

    淺析Linux進(jìn)程

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

    如何理解ARM中的進(jìn)程

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

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

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

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

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

    進(jìn)程與程序有何不同

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

    Linux進(jìn)程控制編程

    7.2 Linux進(jìn)程控制編程 1.fork() 在Linux中創(chuàng)建一個(gè)新進(jìn)程的惟一方法是使用fork()函數(shù)。fork()函數(shù)是Linux中一個(gè)非常重要的函數(shù),和讀者以往遇到的函數(shù)有一些區(qū)別,因?yàn)?/div>
    發(fā)表于 10-18 14:16 ?0次下載

    你知道僵尸進(jìn)程是個(gè)什么東西?

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

    Linux0.11-進(jìn)程控制數(shù)據(jù)結(jié)構(gòu)

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

    Linux 進(jìn)程狀態(tài)淺析

    進(jìn)程處于可執(zhí)行狀態(tài),這些進(jìn)程的task_struct結(jié)構(gòu)(進(jìn)程控制)被放入對(duì)應(yīng)CPU的可執(zhí)行隊(duì)列中(一個(gè)
    發(fā)表于 04-02 14:40 ?296次閱讀

    閑談進(jìn)程控制PCB的五大作用

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

    進(jìn)程控制,信號(hào)集是什么資料下載

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

    為什么需要進(jìn)程 特征和定義有哪些

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

    PCB進(jìn)程的創(chuàng)建和終止過(guò)程

    PCB進(jìn)程控制 獨(dú)立運(yùn)行基本單位的標(biāo)志:創(chuàng)建進(jìn)程時(shí)創(chuàng)建PCB進(jìn)程結(jié)束時(shí)回
    的頭像 發(fā)表于 10-08 15:36 ?1155次閱讀

    深入解析Linux程序與進(jìn)程

    關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。作為系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。 程序與進(jìn)程的關(guān)系 進(jìn)程狀態(tài) 基礎(chǔ)進(jìn)程狀態(tài) 創(chuàng)
    的頭像 發(fā)表于 12-18 11:01 ?101次閱讀
    深入解析Linux程序與<b class='flag-5'>進(jìn)程</b>
    主站蜘蛛池模板: 色噜噜狠狠成人网| 色天使在线观看| 在线免费观看h| 国产精品午夜高清在线观看| 欧美黑人5o厘米全进去| 免费看曰批女人爽的视频网址| 欧美夜夜操| 国产黄大片在线观看| 成人深夜视频| 欧美zo| 亚洲午夜一区二区三区| 美女视频一区二区三区| 亚洲综合色就色手机在线观看| 亚洲成人77777| 赛罗奥特曼银河帝国普通话免费版| 日本三级视频在线播放| 老色99久久九九精品尤物| 国产一区二区三区美女图片| 成人伊人青草久久综合网| 一级特黄aaa免费| 欧美一级特黄aaaaaa在线看首页| 国产精品久久久久久久牛牛| 激情五月在线| 黄网站色视频免费观看| 天堂视频在线视频观看2018| 青草青青产国视频在线| 国产精品国产三级国产普通话对白| 午夜高清在线| 91学院派女神| 老师今晚让你爽个够| 四虎影院大全| 久青草国产手机在线视频| 97影院理论片手机在线观看| 欧美hhh| 男人和女人在床做黄的网站| 韩国美女丝袜一区二区| 色偷偷男人天堂| 激情五月开心婷婷| 天天操天天操天天干| 丁香网五月网| 亚洲国产成人精品女人久久久|