taskkill无法终止进程 拒绝访问_进程的基本概念
程序順序執(zhí)行的特征
程序并發(fā)執(zhí)行的特性
進(jìn)程的特征
進(jìn)程的狀態(tài)及轉(zhuǎn)換
進(jìn)程的三種基本狀態(tài)
創(chuàng)建和終止?fàn)顟B(tài)
進(jìn)程狀態(tài)的轉(zhuǎn)換
進(jìn)程管理中的數(shù)據(jù)結(jié)構(gòu)
進(jìn)程控制塊PCB的作用
進(jìn)程控制塊中的信息
進(jìn)程控制塊的組織方式
操作系統(tǒng)內(nèi)核
支撐功能
資源管理功能
進(jìn)程的創(chuàng)建
引起創(chuàng)建進(jìn)程的事件
進(jìn)程的創(chuàng)建
進(jìn)程的終止
引起進(jìn)程終止的事件
進(jìn)程終止過(guò)程
進(jìn)程的阻塞和喚醒
進(jìn)程的掛起和激活
進(jìn)程同步的基本概念
兩種形式的制約關(guān)系
臨界資源和臨界區(qū)
同步機(jī)制應(yīng)遵循的規(guī)則
硬件同步機(jī)制
信號(hào)量機(jī)制
整形信號(hào)量
記錄性信號(hào)量
AND型信號(hào)量
管程機(jī)制
管程的定義
條件變量
程序執(zhí)行順序
程序順序執(zhí)行的特征
- 順序性:處理機(jī)嚴(yán)格按照程序所規(guī)定的順序執(zhí)行
- 封閉性:程序在封閉的環(huán)境下運(yùn)行,即程序運(yùn)行時(shí)獨(dú)占全機(jī)的資源,結(jié)果不會(huì)受外界影響
- 可再現(xiàn)性:不論程序如何執(zhí)行,都會(huì)得到相同的結(jié)果
程序并發(fā)執(zhí)行的特性
- 間斷性:并發(fā)執(zhí)行的程序之間形成互相制約的關(guān)系,形成“執(zhí)行——暫?!獔?zhí)行”這樣的間斷性活動(dòng)
- 失去封閉性:系統(tǒng)各種的資源將被共享,導(dǎo)致程序執(zhí)行的環(huán)境受到外界因素的影響
- 不可再現(xiàn)性:由于失去了封閉性,將導(dǎo)致其失去了可再現(xiàn)性
進(jìn)程的定義和特征
進(jìn)程實(shí)體由程序段、相關(guān)的數(shù)據(jù)段和PCB三部分構(gòu)成。一般情況下,進(jìn)程實(shí)體簡(jiǎn)稱(chēng)進(jìn)程。所謂創(chuàng)建進(jìn)程就是創(chuàng)建進(jìn)程的PCB,撤銷(xiāo)進(jìn)程實(shí)質(zhì)上是撤銷(xiāo)進(jìn)程的PCB。
進(jìn)程的特征
程序和進(jìn)程是兩種截然不同的概念,出來(lái)進(jìn)程具有程序沒(méi)有的PCB結(jié)構(gòu)之外,還具有下面的特征:
進(jìn)程的狀態(tài)及轉(zhuǎn)換
進(jìn)程的三種基本狀態(tài)
- 就緒狀態(tài):進(jìn)程已經(jīng)準(zhǔn)備好運(yùn)行,只需系統(tǒng)分配CPU資源即可運(yùn)行
- 執(zhí)行狀態(tài):指進(jìn)程已經(jīng)獲得CPU,程序正在執(zhí)行
- 阻塞狀態(tài):指正在執(zhí)行的程序遇到某事件暫時(shí)無(wú)法繼續(xù)執(zhí)行執(zhí)行時(shí)的狀態(tài)
創(chuàng)建和終止?fàn)顟B(tài)
創(chuàng)建狀態(tài)
進(jìn)程創(chuàng)建是一個(gè)非常復(fù)雜的過(guò)程,一般要多個(gè)步驟才能完成:
如果進(jìn)程所需資源不能滿(mǎn)足,創(chuàng)建工作尚未完成,無(wú)法完成進(jìn)程的調(diào)度。于是把此時(shí)進(jìn)程所處的狀態(tài)稱(chēng)為創(chuàng)建狀態(tài)
終止?fàn)顟B(tài)
進(jìn)程的終止也需要兩個(gè)步驟:
進(jìn)入終止?fàn)顟B(tài)的進(jìn)程以后不再執(zhí)行,但在操作系統(tǒng)中依然保留一個(gè)記錄,其中保存狀態(tài)碼和一些計(jì)時(shí)統(tǒng)計(jì)數(shù)據(jù)供其他進(jìn)程收集。
進(jìn)程狀態(tài)的轉(zhuǎn)換
進(jìn)程狀態(tài)圖進(jìn)程管理中的數(shù)據(jù)結(jié)構(gòu)
在計(jì)算機(jī)系統(tǒng)中,對(duì)于每個(gè)系統(tǒng)和每個(gè)進(jìn)度都設(shè)置了一個(gè)數(shù)據(jù)結(jié)構(gòu),用于表征其實(shí)體。我們稱(chēng)之為資源信息表或者進(jìn)程信息表。OS管理的這些數(shù)據(jù)結(jié)構(gòu)一般分為四類(lèi):內(nèi)存表,設(shè)備表,文件表和進(jìn)程表。通常進(jìn)程表又被稱(chēng)為進(jìn)程控制塊PCB。
進(jìn)程控制塊PCB的作用
PCB的作用是使一個(gè)多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序能為一個(gè)能獨(dú)立運(yùn)行的基本單位,一個(gè)能與其他進(jìn)程并發(fā)執(zhí)行的進(jìn)程。
下面是對(duì)PCB具體作用的進(jìn)一步闡述:
進(jìn)程控制塊中的信息
在進(jìn)程控制塊中,主要包括四個(gè)方面的信息:
1 進(jìn)程標(biāo)識(shí)符:唯一地標(biāo)識(shí)一個(gè)進(jìn)程。通常具有兩種標(biāo)識(shí)符
2 處理機(jī)狀態(tài):也成為處理的上下文,主要是處理機(jī)的各種寄存器中的內(nèi)容組成
3 進(jìn)程調(diào)度信息:進(jìn)程狀態(tài)、進(jìn)程調(diào)度需要的其他信息、進(jìn)程優(yōu)先級(jí)、事件(阻塞原因)等信息
4 進(jìn)程控制信息:指用于進(jìn)程控制所必須的信息。程序和數(shù)據(jù)的地址(進(jìn)程實(shí)體中的程序和數(shù)據(jù)的內(nèi)存或外存地址)、進(jìn)程同步和通信機(jī)制、資源清單、鏈接指針(本進(jìn)程所在隊(duì)列下一個(gè)PCB的首地址)
進(jìn)程控制塊的組織方式
線(xiàn)性方式、鏈接方式、索引方式
進(jìn)程控制
進(jìn)程控制是進(jìn)程管理中最基本的功能,主要包括創(chuàng)建新進(jìn)程、終止已完成的進(jìn)程、將因發(fā)生異常情況而無(wú)法繼續(xù)進(jìn)行的進(jìn)程至于阻塞狀態(tài)、負(fù)責(zé)進(jìn)程運(yùn)行中的狀態(tài)轉(zhuǎn)換等功能。進(jìn)程控制一般是由OS內(nèi)核原語(yǔ)實(shí)現(xiàn)的。
操作系統(tǒng)內(nèi)核
現(xiàn)代操作系統(tǒng)中一般將OS劃分為若干層次,再將OS的不同功能分別設(shè)置在不同的層次中。通常將一些與硬件緊密相關(guān)的模塊、各種常用設(shè)備的驅(qū)動(dòng)程序以及運(yùn)行頻率比較高的模塊(如時(shí)鐘管理、進(jìn)程調(diào)度和許多模塊公用的一些基本操作),將它們常駐內(nèi)存,即通常稱(chēng)為OS內(nèi)核。這種安排方式的目的在于兩方面:對(duì)這些軟件進(jìn)行保護(hù),防止其他應(yīng)用程序破壞以及提高OS的運(yùn)行效率。
相應(yīng)的,處理機(jī)的執(zhí)行狀態(tài)也分為系統(tǒng)態(tài)和用戶(hù)態(tài)兩種:
- 系統(tǒng)態(tài):也稱(chēng)為內(nèi)核態(tài)、管態(tài)。具有較高的特權(quán),能執(zhí)行一切指令,訪(fǎng)問(wèn)所有寄存器和存儲(chǔ)區(qū),傳統(tǒng)的OS都在系統(tǒng)態(tài)運(yùn)行。
- 用戶(hù)態(tài):也稱(chēng)為目太。具有較低的特權(quán)。只能執(zhí)行部分指令。這樣可以防止應(yīng)用程序?qū)S的破壞。
大多數(shù)OS內(nèi)核都支持以下兩大方面的功能:支撐功能和資源管理功能
支撐功能
該功能是提供給OS其他眾多模塊的一些基本功能,以便支撐這些模塊工作。其中三種最基本的支撐功能是:中斷處理、時(shí)鐘管理和原語(yǔ)操作。
資源管理功能
進(jìn)程的創(chuàng)建
在OS中允許一個(gè)進(jìn)程創(chuàng)建另一個(gè)進(jìn)程,通常把創(chuàng)建進(jìn)程的進(jìn)程稱(chēng)為父進(jìn)程,而把被創(chuàng)建進(jìn)程的進(jìn)程稱(chēng)為子進(jìn)程。子進(jìn)程可以創(chuàng)建更多的子進(jìn)程,由此形成一個(gè)進(jìn)程的層次結(jié)構(gòu)。了解進(jìn)程之間的關(guān)系是非常重要的,因?yàn)樽舆M(jìn)程可以繼承父進(jìn)程所擁有的資源。為了標(biāo)識(shí)進(jìn)程之間的家族關(guān)系,在PCB中設(shè)置了家族關(guān)系表項(xiàng),以表明自己的父進(jìn)程和所有子進(jìn)程。進(jìn)程不能拒絕子進(jìn)程的繼承權(quán)。
“值得注意的是,在Windows中不存在任何進(jìn)程層次結(jié)構(gòu)的概念,所有的進(jìn)程都具有相同的地位。一個(gè)進(jìn)程創(chuàng)建另外一個(gè)進(jìn)程時(shí),創(chuàng)建進(jìn)程獲得一個(gè)句柄,其作用相當(dāng)于一個(gè)令牌,可以用來(lái)控制被創(chuàng)建的進(jìn)程。
”引起創(chuàng)建進(jìn)程的事件
導(dǎo)致一個(gè)進(jìn)程去創(chuàng)建另一個(gè)進(jìn)程的典型事件有四類(lèi):
進(jìn)程的創(chuàng)建
OS會(huì)調(diào)用進(jìn)程創(chuàng)建原語(yǔ)Creat按下述步驟創(chuàng)建一個(gè)新進(jìn)程:
進(jìn)程的終止
引起進(jìn)程終止的事件
進(jìn)程終止過(guò)程
進(jìn)程的阻塞和喚醒
有下述幾類(lèi)事件會(huì)引起進(jìn)程阻塞或者喚醒
進(jìn)程使用block原語(yǔ)將自己阻塞,其他相關(guān)的進(jìn)程使用wakeup原語(yǔ)將被阻塞進(jìn)程喚醒
進(jìn)程的掛起和激活
當(dāng)系統(tǒng)出現(xiàn)引起進(jìn)程掛起的事件時(shí),OS將利用掛起原語(yǔ)suspend將指定進(jìn)程或處于阻塞狀態(tài)的進(jìn)程掛起。當(dāng)系統(tǒng)發(fā)生激活事件時(shí),OS利用激活原語(yǔ)active將指定進(jìn)程激活,激活原語(yǔ)先將進(jìn)程從外存調(diào)入內(nèi)存,檢查該進(jìn)程的現(xiàn)行狀態(tài),更改為掛起之前的狀態(tài)。
進(jìn)程同步
進(jìn)程同步的基本概念
兩種形式的制約關(guān)系
在多道程序環(huán)境下,是對(duì)多個(gè)相關(guān)進(jìn)程在執(zhí)行順序上進(jìn)行協(xié)調(diào),使并發(fā)執(zhí)行的諸進(jìn)程之間能按照一定規(guī)則共享系統(tǒng)資源,由于它們共享著資源,因此存在以下兩種制約關(guān)系
間接相互制約關(guān)系
系統(tǒng)大部分資源只能由進(jìn)程互斥訪(fǎng)問(wèn),為了保證這些進(jìn)程能夠有序進(jìn)行,用戶(hù)在使用之前應(yīng)該提出申請(qǐng),而不允許用戶(hù)進(jìn)程直接訪(fǎng)問(wèn)
直接相互制約關(guān)系
例如進(jìn)程A和進(jìn)程B共享緩存區(qū),A向緩存區(qū)輸入數(shù)據(jù),B從緩存區(qū)取出數(shù)據(jù)。A和B之間就形成了直接制約關(guān)系
臨界資源和臨界區(qū)
許多系統(tǒng)資源都是互斥訪(fǎng)問(wèn)的,例如:打印機(jī)、IO設(shè)備等,這些資源就被稱(chēng)為臨界資源。諸進(jìn)程之間應(yīng)該采取互斥方式,實(shí)現(xiàn)對(duì)這些資源的共享。而訪(fǎng)問(wèn)這些臨界資源的代碼被稱(chēng)為臨界區(qū)。由于進(jìn)程需要對(duì)系統(tǒng)提出申請(qǐng)對(duì)某一資源的訪(fǎng)問(wèn),所以應(yīng)該加入一段檢查代碼,這段代碼被稱(chēng)為進(jìn)入?yún)^(qū)。在對(duì)臨界資源操作結(jié)束后,還要告訴系統(tǒng)自己已經(jīng)用完了,以不影響其他進(jìn)程,這段代碼被稱(chēng)為退出區(qū);除此之外的所有代碼都被稱(chēng)為剩余區(qū)
同步機(jī)制應(yīng)遵循的規(guī)則
硬件同步機(jī)制
現(xiàn)在OS一般都采用硬件來(lái)實(shí)現(xiàn)進(jìn)程的同步,例如實(shí)現(xiàn)一條原語(yǔ)指令——關(guān)鎖。
現(xiàn)在有關(guān)中斷、測(cè)試并建立指令TS(Test-and-Set)、Swap指令(又稱(chēng)為XCHG指令)等硬件指令有效地實(shí)現(xiàn)進(jìn)程互斥。
但當(dāng)臨界資源忙碌時(shí),其他訪(fǎng)問(wèn)進(jìn)程必須不斷地進(jìn)行測(cè)試,處于一種“忙等”的狀態(tài),造成處理機(jī)資源的浪費(fèi)
信號(hào)量機(jī)制
信號(hào)量集機(jī)制是目前最廣泛使用的,在單處理機(jī)、多處理機(jī)和計(jì)算機(jī)網(wǎng)絡(luò)之中都有一席之地。
整形信號(hào)量
整型信號(hào)量定義為一個(gè)用于表示資源數(shù)目的整形量S,它只能通過(guò)兩個(gè)標(biāo)準(zhǔn)的原子操作wait(S)和signal(S)來(lái)訪(fǎng)問(wèn)。這兩個(gè)操作有分別稱(chēng)為P、V操作
記錄性信號(hào)量
在整型信號(hào)量中并沒(méi)有遵循“讓權(quán)等待”的準(zhǔn)則。如果采取了“讓權(quán)等待”的策略后,又會(huì)出現(xiàn)多個(gè)進(jìn)程等待訪(fǎng)問(wèn)同一臨界資源的情況。為此,在信號(hào)量機(jī)制中,除了一個(gè)需要用于代表資源數(shù)目的整型變量value之外,還應(yīng)增加一個(gè)進(jìn)程鏈表指針list,用于鏈接上述所有等待進(jìn)程。在信號(hào)量集中出現(xiàn)了可用資源就通過(guò)wakeup原語(yǔ)喚醒等待進(jìn)程
AND型信號(hào)量
上述是多個(gè)進(jìn)程爭(zhēng)奪一個(gè)資源,如果爭(zhēng)奪多個(gè)資源很可能出現(xiàn)死鎖現(xiàn)象。AND同步機(jī)制的思想就是:將進(jìn)程在整個(gè)運(yùn)行過(guò)程中需要的所有資源,一次性全部分配給進(jìn)程,待繼承結(jié)束后一起釋放。只要尚有一個(gè)資源未能分配給進(jìn)程,其他所有可能為之分配的資源也不分配給它。,通過(guò)Swait和Ssignal操作
管程機(jī)制
大量分散在各個(gè)進(jìn)程之間的操作為系統(tǒng)的管理帶來(lái)的很大的麻煩,還容易因?yàn)椴僮鞑划?dāng)引起死鎖。于是產(chǎn)生了一種新的進(jìn)程同步工具——管程
管程的定義
系統(tǒng)中的各種硬件和軟件資源均可用數(shù)據(jù)結(jié)構(gòu)抽象地描述其資源特性,即用少量信息和對(duì)該資源所執(zhí)行的操作來(lái)表征該資源,而忽略它們的內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)細(xì)節(jié)。代表共享資源的數(shù)據(jù)結(jié)構(gòu)和對(duì)該共享數(shù)據(jù)結(jié)構(gòu)實(shí)施操作的一組過(guò)程所組成的資源管理程序共同構(gòu)成了一個(gè)操作系統(tǒng)的資源管理模塊,我們稱(chēng)之為管程。簡(jiǎn)單理解為對(duì)共享資源及其操作的抽象,包含了面向?qū)ο蟮乃枷?。所有進(jìn)程要訪(fǎng)問(wèn)臨界資源只能通過(guò)管程來(lái)訪(fǎng)問(wèn),管程每次只允許一個(gè)進(jìn)程進(jìn)入。
管程主要有以下特性:
管程和進(jìn)程的不同:
條件變量
在利用管程實(shí)現(xiàn)進(jìn)程同步時(shí),必須設(shè)置同步工具,如兩個(gè)同步操作原語(yǔ)wait和signal。當(dāng)某進(jìn)程通過(guò)管程請(qǐng)求獲得臨界資源而未能滿(mǎn)足時(shí),管程便調(diào)用wait原語(yǔ)使進(jìn)程等待,并將其排在等待隊(duì)列上。僅當(dāng)另一進(jìn)程訪(fǎng)問(wèn)完成并釋放該資源之后,管程才又調(diào)用signal原語(yǔ),喚醒等待隊(duì)列中的隊(duì)首進(jìn)程。
而僅僅上述的同步工具是不夠的,考慮一種情況:當(dāng)一個(gè)進(jìn)程調(diào)用了管程,在管程中時(shí)被阻塞或掛起,這樣其他進(jìn)程也無(wú)法進(jìn)入管程。為了解決這個(gè)問(wèn)題,引入條件變量condition。通常,一個(gè)進(jìn)程被阻塞或掛起的條件可有多個(gè),因此在管程中設(shè)置了多個(gè)條件變量,對(duì)這些條件變量的訪(fǎng)問(wèn)只能在管程中進(jìn)行。
總結(jié)
以上是生活随笔為你收集整理的taskkill无法终止进程 拒绝访问_进程的基本概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python函数装饰器参数 参数_【转】
- 下一篇: python获取当前年份_Python根