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

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

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

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

麥辣雞腿堡 ? 來源:盼盼編程 ? 作者:晨夢(mèng)思雨 ? 2023-10-08 15:36 ? 次閱讀

PCB進(jìn)程控制塊

獨(dú)立運(yùn)行基本單位的標(biāo)志:創(chuàng)建進(jìn)程時(shí)創(chuàng)建PCB,進(jìn)程結(jié)束時(shí)回PCB,進(jìn)程隨之消亡。系統(tǒng)是通過PCB,感知進(jìn)程的存在。PCB已成為,進(jìn)程存在于系統(tǒng)中的唯一標(biāo)志。

實(shí)現(xiàn)間斷性運(yùn)行方式:進(jìn)程暫停運(yùn)行時(shí),必須保留,運(yùn)行時(shí)的CPU等相關(guān)信息。進(jìn)程被再次運(yùn)行時(shí),需恢復(fù)CPU等相關(guān)信息。

提供進(jìn)程管理需要的信息:當(dāng)進(jìn)程開始運(yùn)行時(shí),根據(jù)該進(jìn)程PCB中,記錄的程序和數(shù)據(jù),在內(nèi)存或外存中起始地址指針,找到相應(yīng)的程序和數(shù)據(jù)。

提供進(jìn)程調(diào)度需要的信息:只有處于就緒狀態(tài)的進(jìn)程,才能被調(diào)度。而進(jìn)程的狀態(tài)就記錄在PCB中、以及優(yōu)先級(jí)、等待時(shí)間、已執(zhí)行時(shí)間等其他信息。

實(shí)現(xiàn)與其他進(jìn)程的同步與通信:進(jìn)程同步機(jī)制,用于實(shí)現(xiàn)多進(jìn)程協(xié)調(diào)運(yùn)行。在PCB中,具有實(shí)現(xiàn)進(jìn)程通信的區(qū)域或通信隊(duì)列指針等。

PCB進(jìn)程控制塊中的信息:PCB中的信息大致上可分為4類,分別是:進(jìn)程標(biāo)識(shí)符、CPU狀態(tài)、調(diào)度信息、控制信息。

進(jìn)程標(biāo)識(shí)符:分外部標(biāo)識(shí)符和內(nèi)部標(biāo)識(shí)符,外部標(biāo)識(shí)符即進(jìn)程名稱,可由父進(jìn)程指定,通常包括字符和數(shù)字的組成。內(nèi)部標(biāo)識(shí)符,由操作系統(tǒng)提供的,具有唯一性的進(jìn)程ID。

CPU狀態(tài):主要由各種寄存器中內(nèi)容組成,如通用寄存器、指令計(jì)數(shù)器(下一條指令的地址)、程序狀態(tài)(狀態(tài)信息、條件碼、執(zhí)行方式、屏蔽中斷等標(biāo)志)和棧指針(指向用于存放過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址的系統(tǒng)棧的棧頂)構(gòu)成。

調(diào)度信息:包含進(jìn)程狀態(tài)、進(jìn)程優(yōu)先級(jí)、其他信息、事件(阻塞原因)。

進(jìn)程狀態(tài),是進(jìn)程調(diào)度和對(duì)換時(shí)的依據(jù),優(yōu)先級(jí)高的進(jìn)程,應(yīng)優(yōu)先獲得CPU執(zhí)行。

控制進(jìn)程所必須的信息,包括程序和數(shù)據(jù)的存儲(chǔ)地址,以便調(diào)度該進(jìn)程執(zhí)行時(shí),能從PCB中找到其程序和數(shù)據(jù),進(jìn)程同步和通信機(jī)制,如消息隊(duì)列、信號(hào)量等。

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

創(chuàng)建進(jìn)程過程:向操作系統(tǒng)申請(qǐng)空白PCB及進(jìn)程ID、分配運(yùn)行所需的資源、初始化PCB、等待插入進(jìn)程調(diào)度就緒隊(duì)列。

相關(guān)資源或從操作系統(tǒng)或從父進(jìn)程獲得,資源需求需提前告知,操作系統(tǒng)或父進(jìn)程好為其分配資源。

PCB至少有2種信息需要初始化

1.標(biāo)識(shí)信息,即將本進(jìn)程ID和父進(jìn)程ID填入PCB控制塊中

2.狀態(tài)信息,指令計(jì)數(shù)器指向程序的入口地址、棧指針指向棧頂控制信息。

進(jìn)程的終止分為:讀取進(jìn)程狀態(tài)、終止進(jìn)程、終止子孫進(jìn)程、釋放資源、移出PCB隊(duì)列。

操作系統(tǒng)通過進(jìn)程ID從PCB集合中檢索出該進(jìn)程的PCB,從中讀出該進(jìn)程的狀態(tài)。

如果該進(jìn)程狀態(tài)為執(zhí)行態(tài),則終止進(jìn)程的執(zhí)行,并重置調(diào)度標(biāo)志位真。

如果該進(jìn)程擁有子孫進(jìn)程,則一并將所有子孫進(jìn)程終止,防止子孫進(jìn)程成為僵尸進(jìn)程等不可控的進(jìn)程。

接著釋放資源,將資源歸還給操作系統(tǒng)或父進(jìn)程。最后就是移出PCB隊(duì)列了,等待其他進(jìn)程搜集信息。

進(jìn)程阻塞和喚醒的事件

1.請(qǐng)求系統(tǒng)服務(wù)而得不到滿足時(shí),如問系統(tǒng)請(qǐng)求打印。

2.啟動(dòng)的操作需同步時(shí):如該操作和請(qǐng)求該操作的進(jìn)程需同步運(yùn)行。

3.新數(shù)據(jù)尚未到達(dá):如進(jìn)程A寫,進(jìn)程B讀,則A未寫,完B不能讀。

4.無新工作可做。

進(jìn)程的掛起和激活

1.進(jìn)程的掛起過程,由進(jìn)程自己,或其父進(jìn)程suspend原語完成。將該進(jìn)程PCB移到指定區(qū)域,注意狀態(tài)的改變,有可能要重新調(diào)度。

2.進(jìn)程的激活過程,激活active原語激活進(jìn)程。激活原語將進(jìn)程從外存調(diào)入內(nèi)存,檢查該進(jìn)程的現(xiàn)行狀態(tài)并進(jìn)行相應(yīng)操作。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6606

    瀏覽量

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

    關(guān)注

    0

    文章

    199

    瀏覽量

    13933
  • 系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    1005

    瀏覽量

    21273
  • PCB
    PCB
    +關(guān)注

    關(guān)注

    1

    文章

    1756

    瀏覽量

    13204
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【Linux學(xué)習(xí)雜談】之創(chuàng)建單例進(jìn)程

    本帖最后由 michael_llh 于 2016-9-30 17:53 編輯 之前我們創(chuàng)建的守護(hù)進(jìn)程當(dāng)中成功實(shí)現(xiàn)了進(jìn)程在系統(tǒng)后臺(tái)運(yùn)行,沒有收到控制臺(tái)的約束,但是也同時(shí)引發(fā)一個(gè)問題就是當(dāng)我
    發(fā)表于 09-30 17:51

    在Linux系統(tǒng)中PCB如何創(chuàng)建進(jìn)程

    PCB包含了一個(gè)進(jìn)程的重要運(yùn)行信息,所以我們將圍繞在創(chuàng)建一個(gè)新進(jìn)程時(shí),如何來建立一個(gè)新的PCB的這一個(gè)
    發(fā)表于 08-05 07:58

    Linux內(nèi)核創(chuàng)建進(jìn)程過程分析

    PCB包含了一個(gè)進(jìn)程的重要運(yùn)行信息,所以我們將圍繞在創(chuàng)建一個(gè)新進(jìn)程時(shí),如何來建立一個(gè)新的PCB的這一個(gè)
    發(fā)表于 08-08 08:42

    進(jìn)行創(chuàng)建和添加PCB Layout文件及同步的操作過程

    (1)OrCAD Capture 17.4開始可以支持在原理圖中創(chuàng)建和添加PCB Layout文件,并進(jìn)行雙向的同步和布局調(diào)整。接下來我們一起來學(xué)習(xí)使用新功能為原理圖創(chuàng)建新的PCB L
    發(fā)表于 07-06 15:04

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

    標(biāo)識(shí),系統(tǒng)通過PCB的存在而感知進(jìn)程的存在。????系統(tǒng)通過PCB對(duì)進(jìn)程進(jìn)行管理和調(diào)度。PCB包括創(chuàng)建
    發(fā)表于 10-23 16:02

    進(jìn)程是何時(shí)被創(chuàng)建的?如何去使用線程?

    進(jìn)程是何時(shí)被創(chuàng)建的?進(jìn)程何時(shí)終止進(jìn)程的狀態(tài)分為哪幾種?如何去使用線程?線程是如何是如何實(shí)現(xiàn)的?
    發(fā)表于 07-23 08:57

    使用DigiPCBA創(chuàng)建和復(fù)用PCB封裝

    知道,是可以與 Altium Designer 電子設(shè)計(jì)工具和流行的機(jī)械設(shè)計(jì)工具集成的電子數(shù)據(jù)管理和元器件管理平臺(tái)。在 DigiPCBA 中,PCB 封裝的創(chuàng)建和復(fù)用非常容易。大多數(shù)設(shè)計(jì)工具都沒辦法使
    發(fā)表于 06-17 15:48

    altium-designer使用PCB向?qū)?b class='flag-5'>創(chuàng)建PCB詳細(xì)過程

    altium-designer使用PCB向?qū)?b class='flag-5'>創(chuàng)建PCB詳細(xì)過程,感興趣的可以看看。
    發(fā)表于 07-22 16:08 ?0次下載

    如何為密集的高約束PCB設(shè)計(jì)創(chuàng)建和管理約束

    本視頻將會(huì)概述基本的約束管理概念,并演示如何為密集的高約束 PCB 設(shè)計(jì)創(chuàng)建和管理約束。
    的頭像 發(fā)表于 05-17 06:01 ?2012次閱讀
    如何為密集的高約束<b class='flag-5'>PCB</b>設(shè)計(jì)<b class='flag-5'>創(chuàng)建和</b>管理約束

    如何創(chuàng)建和管理約束密集型、高度約束的PCB設(shè)計(jì)

    這個(gè)視頻概述基本約束管理的概念和演示了如何創(chuàng)建和管理約束密集、高度受限的PCB設(shè)計(jì)。
    的頭像 發(fā)表于 11-07 07:08 ?2669次閱讀

    助于創(chuàng)建和管理符號(hào)的PartQuest

    PartQuest促進(jìn)的過程創(chuàng)建和管理部分的符號(hào)和貼花紙庫和填充數(shù)據(jù)手冊(cè)數(shù)據(jù)庫部分的信息。該實(shí)用程序下載符號(hào),貼花和部分信息從供應(yīng)商網(wǎng)站基于部分描述。
    的頭像 發(fā)表于 11-06 07:05 ?3309次閱讀

    Linux下進(jìn)程創(chuàng)建、執(zhí)行和終止

     許多操作系統(tǒng)提供的都是產(chǎn)生進(jìn)程的機(jī)制,也就是說,首先在新的地址空間里創(chuàng)建進(jìn)程、讀入可執(zhí)行文件,后再開始執(zhí)行。Linux中進(jìn)程創(chuàng)建很特別,
    發(fā)表于 06-11 09:21 ?593次閱讀

    FreeRTOS任務(wù)如何創(chuàng)建和刪除?

    在FreeRTOS移植到Cortex-M3硬件平臺(tái)的文章中,我們已經(jīng)見過任務(wù)創(chuàng)建API,但那篇文章的重點(diǎn)在于如何移植FreeRTOS,本文將重點(diǎn)放在任務(wù)的創(chuàng)建和刪除API函數(shù)上面。 任務(wù)創(chuàng)建和刪除
    的頭像 發(fā)表于 03-11 18:08 ?2853次閱讀

    如何創(chuàng)建和使用LabVIEW中的LLB文件

    如何創(chuàng)建和使用LabVIEW中的LLB文件
    發(fā)表于 11-22 16:12 ?0次下載

    探討一下進(jìn)程創(chuàng)建終止

    在啟動(dòng)進(jìn)程時(shí)(好像會(huì)創(chuàng)建一個(gè)空轉(zhuǎn)進(jìn)程),通常會(huì)創(chuàng)建若干進(jìn)程,其中包括前臺(tái)進(jìn)程(負(fù)責(zé)與用戶交互)和
    的頭像 發(fā)表于 08-17 17:59 ?2320次閱讀
    探討一下<b class='flag-5'>進(jìn)程</b>的<b class='flag-5'>創(chuàng)建</b>與<b class='flag-5'>終止</b>