日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统(九)进程控制

發(fā)布時間:2025/3/15 windows 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统(九)进程控制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2.1.3 進程控制

目錄

2.1.3 進程控制

2.1.3.1 基本概念

2.1.3.2 進程創(chuàng)建原語

2.1.3.3 進程終止原語

2.1.3.4 進程的阻塞與喚醒

2.1.3.5 進程的切換

2.1.3.6 小結?

?

2.1.3.1 基本概念

? 在書中,進程控制的定義是這樣的:進程控制是進程管理中最基本的功能。它用于創(chuàng)建一個新進程,終止一個已完成的進程,或終止一個因出現(xiàn)某事件而使其無法運行下去的進程,還可負責進程運行中的狀態(tài)轉換。其實簡單來說,進程控制就是為了實現(xiàn)進程狀態(tài)之間的轉換。

??那么進程控制是怎么實現(xiàn)的呢?進程控制一般來說是通過OS內核中的原語來實現(xiàn)的。原語(Primitive)是由若干條指令組成的,用于完成一定功能的一個過程,它是一個不可分割的基本單位,因此,在執(zhí)行過程中不允許被中斷。原子操作在管態(tài)下執(zhí)行,常駐內存。

? 為什么要使用原子操作(一氣呵成)呢?如果系統(tǒng)對進程的控制如不使用原語,就會造成其狀態(tài)的不確定性,從而達不到進程控制的目的。比如說將執(zhí)行態(tài)變?yōu)樽枞麘B(tài)需要兩步,首先將state的值改變之后再將此PCB放在阻塞隊列,如果非原子操作,在改變state值之后發(fā)生中斷,那么在執(zhí)行隊列就出現(xiàn)了阻塞態(tài)的PCB,這是不正確的。

? 如何保證操作的原子性呢?這里我們需要引出兩個特權指令:開中斷指令和關中斷指令。顧名思義,開中斷就是將中斷打開,關中斷就是將中斷關閉。我們將要執(zhí)行的操作放在開中斷與關中斷指令的中間,CPU執(zhí)行了關中斷指令之后,就不再例行檢查中斷信號,直到執(zhí)行開中斷指令之后才會恢復檢查。這樣,關中斷、開中斷 之間的這些指令序列就是不可被中斷的,這就實現(xiàn)了“原子性”。

? ? ? ? ? ?

? 2.1.3.2 進程創(chuàng)建原語

? ?引起進程創(chuàng)建的事件:(1) 用戶登錄。在分時系統(tǒng)中,用戶在終端鍵入登錄命令后,如果是合法用戶,系統(tǒng)將為該終端建立一個進程,并把它插入就緒隊列中。(2) 作業(yè)調度。在批處理系統(tǒng)中,當作業(yè)調度程序按一定的算法調度到某作業(yè)時,便將該作業(yè)裝入內存,為它分配必要的資源,并立即為它創(chuàng)建進程,再插入就緒隊列中。(3) 提供服務。當運行中的用戶程序提出某種請求后,系統(tǒng)將專門創(chuàng)建一個進程來提供用戶所需要的服務。(4) 應用請求。在上述三種情況下,都是由系統(tǒng)內核為它創(chuàng)建一個新進程;而第 4 類事件則是基于應用進程的需求,由它自己創(chuàng)建一個新進程,以便使新進程以并發(fā)運行方式完成特定任務。

? 進程創(chuàng)建原語Create( )所執(zhí)行的步驟:?申請空白 PCB-->為新進程分配資源-->初始化進程控制塊-->將新進程插入就緒隊列(創(chuàng)建態(tài)轉變?yōu)榫途w態(tài))

2.1.3.3 進程終止原語

? 引起進程終止的事件:1) 正常結束??2) 異常結束??3) 外界干預

? 進程終止原語所執(zhí)行的步驟:(1) 根據(jù)被終止進程的標識符,從 PCB 集合中檢索出該進程的 PCB,從中讀出該進程的狀態(tài)。(2) 若被終止進程正處于執(zhí)行狀態(tài),應立即終止該進程的執(zhí)行,并置調度標志為真,用于指示該進程被終止后應重新進行調度。(3) 若該進程還有子孫進程,還應將其所有子孫進程予以終止,以防它們成為不可控的進程。(4) 將被終止進程所擁有的全部資源,或者歸還給其父進程,或者歸還給系統(tǒng)。(5) 將被終止進程(PCB)從所在隊列(或鏈表)中移出,等待其他程序來搜集信息。(這樣就由其他狀態(tài)轉為終止態(tài)

2.1.3.4 進程的阻塞與喚醒

? 引起進程阻塞(block)的事件:需要等待系統(tǒng)分配資源、需要等待相互合作的進程完成工作

? 進程阻塞原語所執(zhí)行的步驟:找到相應的PCB-->保護現(xiàn)場并將PCB設置為阻塞態(tài),暫停進程的運行-->將PCB插入到相應的隊列中(運行態(tài)變?yōu)樽枞麘B(tài))

? 引起進程喚醒(wakeup)的事件:引起阻塞的事件已經解決(何事引起的阻塞就要由何事進行喚醒,所以阻塞原語與喚醒原語往往是成對出現(xiàn)的)。

? 進程喚醒原語所執(zhí)行的步驟:把被阻塞的進程從等待該事件的阻塞隊列中移出-->將其PCB 中的現(xiàn)行狀態(tài)由阻塞改為就緒-->然后再將該 PCB 插入到就緒隊列中。(阻塞態(tài)變?yōu)榫途w態(tài)

2.1.3.5 進程的切換

? 進程的切換我們可以理解為進程的執(zhí)行態(tài)與就緒態(tài)之間的相互轉換,或者說不同進程之間的切換。

? 引起切換的事件:當前進程時間片到、有更高優(yōu)先級的進程到達、當前進程主動阻塞、當前進程終止。

? 切換原語執(zhí)行的步驟:將運行環(huán)境存儲到PCB-->將PCB更換存儲隊列選擇其他PCB執(zhí)行并更新其狀態(tài)-->根據(jù)PCB存儲的運行環(huán)境恢復其運行環(huán)境。

2.1.3.6 小結

? 本節(jié)各個狀態(tài)之間的轉換是比較多的,進程控制會導致進程狀態(tài)的轉換。無論哪個進程控制原語,要做的無非三類事情:

1. 更新PCB中的信息(a. 所有的進程控制原語一定都會修改進程狀態(tài)標志?b. 剝奪當前運行進程的CPU使用權必然需要保存其運行環(huán)境 c.某進程開始運行前必然要恢復期運行環(huán)境)

2. 將PCB插入合適的隊列

3. 分配/回收資源 如下圖:

?

總結

以上是生活随笔為你收集整理的操作系统(九)进程控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。