国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

操作系統(tǒng)層面下——進程狀態(tài)講解

這篇具有很好參考價值的文章主要介紹了操作系統(tǒng)層面下——進程狀態(tài)講解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??????目錄

????????一.進程的狀態(tài):運行態(tài)

????????1.什么是運行狀態(tài)?

? ? ? ? 2.進程進入內(nèi)存的詳細圖解:

????????總結(jié):

????????二.進程的狀態(tài):阻塞態(tài)?

????????1.什么是阻塞狀態(tài)?

????????三.進程的狀態(tài):掛起態(tài)

????????1.什么是掛起態(tài)?

2.阻塞與掛起的區(qū)別:


????????通過上一篇博客對進程的講解,我們了解了進程就是一個個在磁盤中的二進制可執(zhí)行文件運行時被加載到內(nèi)存后就成為了進程。其實進程也是分狀態(tài)的,在很多操作系統(tǒng)的書中提到進程的狀態(tài)有新建、就緒、運行、掛起、阻塞、死亡、停止...... 進程之所以能被描述出有這么多狀態(tài),本質(zhì)都是用來滿足不同的運行場景的。下面我將介紹最重要的三種進程狀態(tài)

一.進程的狀態(tài):運行態(tài)

????????1.什么是運行狀態(tài)?

????????當一個進程被調(diào)入CPU的運行隊列時就是處于運行狀態(tài)了。

????????在生活中,我們用的電腦一般情況下都只有一個CPU,而CPU是用來執(zhí)行和處理進程的,將具體一點就是每一個CPU都會有一個運行隊列(runQueue),運行隊列的底層實現(xiàn)是一個數(shù)據(jù)結(jié)構(gòu)鏈表,它里面的各個節(jié)點元素就是各進程的屬性task_struct(PCB),所以CPU可以根據(jù)運行隊列看到各節(jié)點進程的狀態(tài)和數(shù)據(jù)信息。

? ? ? ? 2.進程進入內(nèi)存的詳細圖解:

操作系統(tǒng)層面下——進程狀態(tài)講解

????????如上就是進程運行時在被加載到內(nèi)存后的詳細步驟圖,運行隊列中存放的是該進程的PCB結(jié)構(gòu)體,根據(jù)隊列先進先出的原則,CPU會對先加載進來的進程PCB進行代碼和數(shù)據(jù)上的執(zhí)行處理?。

????????舉一個工作上的例子進行理解:當我們在找工作的過程中,向公司投遞了簡歷,這里的投簡歷并不是把自己投進了公司,而是把自己的簡歷做成文件投進去了,那么簡歷從哪里來呢?是我們自己制作了一份包含了自己的姓名、年齡、電話、性別、技術(shù)特長...... 的文檔,這就是我之前所提到的:“先描述” 即整理出自己的信息數(shù)據(jù)!

????????然后公司收到簡歷后,便開始篩選,當你通過篩選后,你的簡歷就會被放在HR的辦公桌上,公司會安排你進行下一輪的面試,這時你就相當于是進程,簡歷相當于是PCB。而運行隊列就是HR,面試的過程相當于是你進入了運行隊列,這便是后三個字:“再組織” ——HR將一個個人的簡歷鏈接起來進行面試。

? ? ? ? 若你通過了面試,公司的系統(tǒng)(相當于是CPU)則會對你的身份進行入職辦理(CPU對進程進行運算處理)。

總結(jié):

????????1.一個CPU只有一個運行隊列。

????????2.當可執(zhí)行文件.exe程序運行起來后,便會進入內(nèi)存成為進程,而操作系統(tǒng)會形成一個PCB去概括該進程的所有屬性(Linux下是形成struct task_struct結(jié)構(gòu)體),所謂的進程進入運行隊列,本質(zhì)上是該進程的PCB被操作系統(tǒng)調(diào)入了運行隊列中。

????????3.進程的PCB只要處在運行隊列中,就表明該進程是在運行狀態(tài)。

所以“只有該進程的PCB正在被CPU運行處理時才算是運行狀態(tài) 。”這種想法是錯誤的,因為CPU的運算速度相當快,是一瞬間的事情,所以只要PCB在隊列中就是運行狀態(tài)!

????????4.對于上面投簡歷這個案例,我還想說一點:當我們投簡歷給公司后,公司經(jīng)過篩選一部分的簡歷進入下一輪后,會給這些人打電話說:"恭喜x先生/女士,我們xx公司通過了你的簡歷,請在未來幾天內(nèi)等候安排面試!",在HR說這句話之前,我們正在忙著自己的事情(可以是睡覺,打游戲,吃飯),而在HR說過這話以后,我們作為進程,就達到了運行狀態(tài)。

????????5.不要只以為,進程只會占用CPU的資源,如上圖,進程也可能會占用鍵盤、網(wǎng)卡、顯示器、磁盤等硬件資源!那么進程所處的不同狀態(tài),就是進程處在CPU和非CPU的隊列中,等待著該硬件空閑處理去使用,這就是下面我要提到的進程的第二種狀態(tài)——阻塞狀態(tài)!


二.進程的狀態(tài):阻塞態(tài)?

1.什么是阻塞狀態(tài)?

????????舉個例子理解:當我們上網(wǎng)時,在網(wǎng)上下載一個游戲,找到下載路徑開始下載,此時右上方就會出現(xiàn)一個軟件下載的進度條,在下載的過程中家里停電了,電腦被迫斷網(wǎng),導致進程停下來了,那么該進程的狀態(tài)就稱為是阻塞狀態(tài)。

? ? ? ? 因為該進程是需要占用網(wǎng)卡(硬件資源的),但是CPU等不了那么長時間(網(wǎng)卡的運算傳輸很慢的),所以該進程就只能被操作系統(tǒng)調(diào)出運行隊列,放到網(wǎng)卡的隊列中等待著網(wǎng)卡處理器的運行中,這時該進程從運行狀態(tài)就轉(zhuǎn)換到了阻塞狀態(tài)。

操作系統(tǒng)層面下——進程狀態(tài)講解

? ? ? ?上圖中,橙色的框代表著各個硬件資源的老大,相當于是小型的cpu也可以。在這些硬件處理器中,都有各自的等待隊列,專門用于存放進程需要占用這些硬件資源的位置,相當于醫(yī)生給你看病的半中間,讓你先去抽血,拍CT,化驗等過程,在抽血的過程中也需要進入隊列排隊,只要進程進入這些硬件處理器的隊列,那么這個進程就是處于“阻塞狀態(tài)”!

????????上面的例子中提到,進程A由于需要網(wǎng)卡硬件資源,導致CPU停止了該進程A的運行,將其轉(zhuǎn)入了網(wǎng)卡的等待隊列,運行態(tài)變?yōu)樽枞麘B(tài)。此時若是有其他進程B,C,D也正在被網(wǎng)卡執(zhí)行時,那該進程A就需要在隊列中等待,若沒有則會立即被網(wǎng)卡執(zhí)行處理。

注:阻塞態(tài)的進程仍處于內(nèi)存中,進程的代碼數(shù)據(jù)也會移動到相應的所需要的硬件資源存放處。


三.進程的狀態(tài):掛起態(tài)

1.什么是掛起態(tài)?

? ? ? ? 掛起態(tài)和阻塞態(tài)息息相關(guān),也就是說進程在進入掛起態(tài)之前一定處于阻塞態(tài)!

操作系統(tǒng)層面下——進程狀態(tài)講解

? ? ? ?舉個例子:當有三個進程1,2,3都需要申請磁盤資源時,操作系統(tǒng)將他們都調(diào)入了磁盤的等待隊列中,這時它們處于阻塞狀態(tài),磁盤處理器開始一個個的運行處理這些調(diào)過來的PCB,假如此時磁盤處理進程的空間已經(jīng)快滿了,又有一個進程需要申請磁盤資源,系統(tǒng)需要把它調(diào)進磁盤的等待隊列,但是該隊列已經(jīng)放不下了,于是系統(tǒng)會將隊列中前面還需要等待時間較長的PCB3的代碼數(shù)據(jù)保存下來,然后進程3就可以暫時被磁盤的進程空間給釋放掉了,以便于給后面調(diào)過來的進程留有空間。

????????這就是操作系統(tǒng)對于進程的普遍處理,若是某個硬件處理器的運行空間不夠,就會將在該硬件處理器等待時間較長的進程資源數(shù)據(jù)先保存下來,然后暫時釋放掉該進程所占的空間,讓后來的想要申請該硬件資源的進程也能夠進來。

? ? ? ? 當PCB1,PCB2都被磁盤處理運算完后,輪到PCB3時,系統(tǒng)會再將PCB3的代碼資源從之前保存過的磁盤空間喚醒,調(diào)回磁盤處理器中開始處理,處理完后PCB3就會被系統(tǒng)再調(diào)回CPU的運行隊列,由CPU繼續(xù)從上一次的斷點處開始處理。

????????????????????????????????????????阻塞不一定掛起,掛起一定阻塞。

2.阻塞與掛起的區(qū)別:

????????阻塞:當進程正在被CPU運算處理時,需要申請CPU以外的資源,系統(tǒng)會將其從運行隊列調(diào)出,進而調(diào)入需要申請資源的task_strucy結(jié)構(gòu)體中(某某處理器)的等待隊列,該狀態(tài)稱為阻塞狀態(tài)。

????????當該進程被某某處理器處理完后,系統(tǒng)會將其送回CPU的運行隊列中,繼續(xù)被CPU運算處理,該進程從“阻塞狀態(tài)”----> “運行狀態(tài)”

????????掛起:當進程的PCB進入某某資源處理器的等待隊列后,由于又有新的進程需要申請進入該資源處理器的等待隊列,系統(tǒng)不得不將等待時間長的進程的數(shù)據(jù)信息保留下來,拿出去以便給后面的新進程騰出空間,這是的進程狀態(tài)被稱為“掛起狀態(tài)”

????????當資源處理器能夠處理之前被拿出去的進程時,系統(tǒng)會將其喚出,把該進程C的資源再拿回來進行處理,這時該進程從“掛起狀態(tài)”--->"阻塞狀態(tài)"????????

以上就是從宏觀層面上對進程的三種重要狀態(tài)的講解了。文章來源地址http://www.zghlxwxcb.cn/news/detail-461357.html

到了這里,關(guān)于操作系統(tǒng)層面下——進程狀態(tài)講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包