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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

taskkill无法终止进程 拒绝访问_进程的基本概念

發(fā)布時(shí)間:2025/3/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 taskkill无法终止进程 拒绝访问_进程的基本概念 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 程序順序執(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)稱進(jìn)程。所謂創(chuàng)建進(jìn)程就是創(chuàng)建進(jìn)程的PCB,撤銷進(jìn)程實(shí)質(zhì)上是撤銷進(jìn)程的PCB。

進(jìn)程的特征

程序和進(jìn)程是兩種截然不同的概念,出來(lái)進(jìn)程具有程序沒有的PCB結(jié)構(gòu)之外,還具有下面的特征:

  • 動(dòng)態(tài)性:進(jìn)程的實(shí)質(zhì)是進(jìn)程實(shí)體的執(zhí)行過(guò)程。它由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤銷而消亡。
  • 并發(fā)性:多個(gè)進(jìn)程共存于內(nèi)存中,且能在一段時(shí)間內(nèi)同時(shí)執(zhí)行。進(jìn)程存在的目的就是為了能讓進(jìn)程實(shí)體能夠并發(fā)執(zhí)行,這也是OS的一個(gè)重要特征
  • 獨(dú)立性:在傳統(tǒng)的OS中,獨(dú)立性是指進(jìn)程實(shí)體是一個(gè)能夠獨(dú)立運(yùn)行、獨(dú)立獲得資源和獨(dú)立接受調(diào)度的基本單位
  • 異步性:是指進(jìn)程按異步方式運(yùn)行的,即各自獨(dú)立。
  • 進(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)程申請(qǐng)一個(gè)PCB,并向PCB中填寫用于控制和管理進(jìn)程的信息
  • 為進(jìn)程分配資源
  • 把該進(jìn)程轉(zhuǎn)入就緒狀態(tài)并插入就緒隊(duì)列中
  • 如果進(jìn)程所需資源不能滿足,創(chuàng)建工作尚未完成,無(wú)法完成進(jìn)程的調(diào)度。于是把此時(shí)進(jìn)程所處的狀態(tài)稱為創(chuàng)建狀態(tài)

    終止?fàn)顟B(tài)

    進(jìn)程的終止也需要兩個(gè)步驟:

  • 等待操作系統(tǒng)完成善后處理
  • 將PCB清零,并將PCB空間返還系統(tǒng)
  • 進(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í)體。我們稱之為資源信息表或者進(jìn)程信息表。OS管理的這些數(shù)據(jù)結(jié)構(gòu)一般分為四類:內(nèi)存表,設(shè)備表,文件表和進(jìn)程表。通常進(jìn)程表又被稱為進(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)一步闡述:

  • 作為獨(dú)立運(yùn)行基本單位的標(biāo)志:PCB使進(jìn)程存在在系統(tǒng)中的唯一標(biāo)志。獲得了PCB才有取得OS服務(wù)的權(quán)力
  • 能實(shí)現(xiàn)間斷式運(yùn)行方式:在進(jìn)程因?yàn)樽枞鴷和5臅r(shí)候,運(yùn)行時(shí)的CPU現(xiàn)場(chǎng)信息保存在PCB中,待下次調(diào)度執(zhí)行的時(shí)候恢復(fù)CPU現(xiàn)場(chǎng)使用
  • 提供進(jìn)程管理所需要的信息:根據(jù)進(jìn)程PCB中記錄的程序和數(shù)據(jù)在內(nèi)存或外存中的始址指針,找到相應(yīng)的程序和數(shù)據(jù)。
  • 提供進(jìn)程所需要的信息:只有處于就緒狀態(tài)的進(jìn)程才能被調(diào)度執(zhí)行,而在PCB中就提供了進(jìn)程處于何種狀態(tài)的信息。進(jìn)行調(diào)度還需要了解進(jìn)程的其他信息。如優(yōu)先級(jí)、進(jìn)程的等待時(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ì)列指針等。
  • 進(jìn)程控制塊中的信息

    在進(jìn)程控制塊中,主要包括四個(gè)方面的信息:

    1 進(jìn)程標(biāo)識(shí)符:唯一地標(biāo)識(shí)一個(gè)進(jìn)程。通常具有兩種標(biāo)識(shí)符

  • 外部標(biāo)識(shí)符:方便用戶對(duì)進(jìn)程的訪問(wèn)
  • 內(nèi)存標(biāo)識(shí)符:方便系統(tǒng)對(duì)進(jìn)程的使用,通常是一個(gè)進(jìn)程的序號(hào)
  • 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)程控制塊的組織方式

    線性方式、鏈接方式、索引方式

    進(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)存,即通常稱為OS內(nèi)核。這種安排方式的目的在于兩方面:對(duì)這些軟件進(jìn)行保護(hù),防止其他應(yīng)用程序破壞以及提高OS的運(yùn)行效率。

    相應(yīng)的,處理機(jī)的執(zhí)行狀態(tài)也分為系統(tǒng)態(tài)和用戶態(tài)兩種:

    • 系統(tǒng)態(tài):也稱為內(nèi)核態(tài)、管態(tài)。具有較高的特權(quán),能執(zhí)行一切指令,訪問(wèn)所有寄存器和存儲(chǔ)區(qū),傳統(tǒng)的OS都在系統(tǒng)態(tài)運(yùn)行。
    • 用戶態(tài):也稱為目太。具有較低的特權(quán)。只能執(zhí)行部分指令。這樣可以防止應(yīng)用程序?qū)S的破壞。

    大多數(shù)OS內(nèi)核都支持以下兩大方面的功能:支撐功能和資源管理功能

    支撐功能

    該功能是提供給OS其他眾多模塊的一些基本功能,以便支撐這些模塊工作。其中三種最基本的支撐功能是:中斷處理、時(shí)鐘管理和原語(yǔ)操作。

    資源管理功能

  • 進(jìn)程管理。在進(jìn)程管理中,或者由于各個(gè)功能模塊中的運(yùn)行頻率較高,如進(jìn)程的調(diào)度和分派、進(jìn)程的創(chuàng)建與撤銷等;由于經(jīng)常使用,故通常將他們放在內(nèi)核中
  • 存儲(chǔ)器管理。
  • 設(shè)備管理。由于設(shè)備管理和硬件緊密相關(guān),因此其中很大部分也都設(shè)置在內(nèi)核中。
  • 進(jìn)程的創(chuàng)建

    在OS中允許一個(gè)進(jìn)程創(chuàng)建另一個(gè)進(jìn)程,通常把創(chuàng)建進(jìn)程的進(jìn)程稱為父進(jìn)程,而把被創(chuàng)建進(jìn)程的進(jìn)程稱為子進(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)程的典型事件有四類:

  • 用戶登錄。在分時(shí)系統(tǒng)中,用戶在終端鍵入登錄命令之后,若登錄成功,系統(tǒng)將為該用戶創(chuàng)建一個(gè)進(jìn)程,并把它插入到就緒隊(duì)列當(dāng)中
  • 作業(yè)調(diào)度。在多道批處理系統(tǒng)中,當(dāng)作業(yè)調(diào)度程序按一定的算法調(diào)度到某個(gè)作業(yè)時(shí),便將它們裝入內(nèi)存,創(chuàng)建進(jìn)程,插入隊(duì)列
  • 提供服務(wù)。用戶程序提出某種請(qǐng)求之后,系統(tǒng)專門創(chuàng)建一個(gè)進(jìn)程來(lái)提供用戶所需要的服務(wù)。
  • 應(yīng)用請(qǐng)求。上述三種情況下,都是系統(tǒng)內(nèi)核為用戶創(chuàng)建進(jìn)程;這類則是應(yīng)用程序自己創(chuàng)建進(jìn)程,以便進(jìn)程能夠同創(chuàng)建者進(jìn)程并發(fā)運(yùn)行的方式完成特定任務(wù)。
  • 進(jìn)程的創(chuàng)建

    OS會(huì)調(diào)用進(jìn)程創(chuàng)建原語(yǔ)Creat按下述步驟創(chuàng)建一個(gè)新進(jìn)程:

  • 申請(qǐng)一個(gè)空白PCB,為新進(jìn)程申請(qǐng)獲得唯一的數(shù)字標(biāo)識(shí)符,并從PCB集合中索取一個(gè)空白PCB
  • 為新進(jìn)程分配其運(yùn)行時(shí)所需的資源,包括各種物理和邏輯資源,如內(nèi)存、IO設(shè)備和CPU時(shí)間
  • 初始化進(jìn)程控制塊。初始化各種標(biāo)識(shí)信息,處理機(jī)信息等
  • 將進(jìn)程插入就緒隊(duì)列
  • 進(jìn)程的終止

    引起進(jìn)程終止的事件

  • 正常結(jié)束,表示進(jìn)程的任務(wù)已經(jīng)完成,準(zhǔn)備退出運(yùn)行;
  • 異常結(jié)束:指進(jìn)程在運(yùn)行過(guò)程中遇到了某種異常事件,使程序無(wú)法繼續(xù)運(yùn)行。如越界錯(cuò)誤、保護(hù)錯(cuò)誤、非法指令、特權(quán)指令錯(cuò)誤、運(yùn)行超時(shí)、等待超時(shí)、算術(shù)錯(cuò)誤、IO故障
  • 外界干預(yù):指進(jìn)程應(yīng)外界的請(qǐng)求而終止運(yùn)行。如操作員或者父進(jìn)程的某些請(qǐng)求。
  • 進(jìn)程終止過(guò)程

  • 根據(jù)被終止進(jìn)程的標(biāo)識(shí)符,從PCB集合中找到該進(jìn)程的PCB。
  • 若進(jìn)程還在執(zhí)行,則終止進(jìn)程的執(zhí)行
  • 若進(jìn)程還有子進(jìn)程,那么子進(jìn)程應(yīng)該也終止
  • 將被終止進(jìn)程所擁有的資源全部還給其父進(jìn)程或者系統(tǒng)
  • 將被終止進(jìn)程(PCB)從所在隊(duì)列(鏈表)中移出,等待其他程序來(lái)收集信息
  • 進(jìn)程的阻塞和喚醒

    有下述幾類事件會(huì)引起進(jìn)程阻塞或者喚醒

  • 向系統(tǒng)請(qǐng)求共享資源失敗。此時(shí)進(jìn)程不能繼續(xù)執(zhí)行而轉(zhuǎn)變?yōu)樽枞麪顟B(tài)
  • 等待某種操作完成。例如IO操作
  • 新數(shù)據(jù)尚未到達(dá)。如生產(chǎn)者——消費(fèi)者模式
  • 等待新任務(wù)的到達(dá)。在一些OS中,往往設(shè)置一系列特定的系統(tǒng),在完成任務(wù)之后就把自己阻塞起來(lái),等待新任務(wù)到達(dá)。
  • 進(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)程互斥訪問(wèn),為了保證這些進(jìn)程能夠有序進(jìn)行,用戶在使用之前應(yīng)該提出申請(qǐng),而不允許用戶進(jìn)程直接訪問(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)資源都是互斥訪問(wèn)的,例如:打印機(jī)、IO設(shè)備等,這些資源就被稱為臨界資源。諸進(jìn)程之間應(yīng)該采取互斥方式,實(shí)現(xiàn)對(duì)這些資源的共享。而訪問(wèn)這些臨界資源的代碼被稱為臨界區(qū)。由于進(jìn)程需要對(duì)系統(tǒng)提出申請(qǐng)對(duì)某一資源的訪問(wèn),所以應(yīng)該加入一段檢查代碼,這段代碼被稱為進(jìn)入?yún)^(qū)。在對(duì)臨界資源操作結(jié)束后,還要告訴系統(tǒng)自己已經(jīng)用完了,以不影響其他進(jìn)程,這段代碼被稱為退出區(qū);除此之外的所有代碼都被稱為剩余區(qū)

    同步機(jī)制應(yīng)遵循的規(guī)則

  • 空閑讓進(jìn)。當(dāng)無(wú)進(jìn)程處于臨界區(qū)時(shí),允許一個(gè)請(qǐng)求進(jìn)入臨界區(qū)
  • 忙則等待。當(dāng)已有進(jìn)程進(jìn)入臨界區(qū)內(nèi)時(shí),其他試圖進(jìn)入臨界區(qū)內(nèi)的進(jìn)程必須等待
  • 有限等待。對(duì)要求訪問(wèn)臨界資源的進(jìn)程,應(yīng)保證有限時(shí)間內(nèi)能進(jìn)入自己的臨界區(qū),以免陷入“死等狀態(tài)”。
  • 讓權(quán)等待。當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),以免陷入“忙等”狀態(tài)
  • 硬件同步機(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指令(又稱為XCHG指令)等硬件指令有效地實(shí)現(xiàn)進(jìn)程互斥。

    但當(dāng)臨界資源忙碌時(shí),其他訪問(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)訪問(wèn)。這兩個(gè)操作有分別稱為P、V操作

    記錄性信號(hào)量

    在整型信號(hào)量中并沒有遵循“讓權(quán)等待”的準(zhǔn)則。如果采取了“讓權(quán)等待”的策略后,又會(huì)出現(xiàn)多個(gè)進(jìn)程等待訪問(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)的資源管理模塊,我們稱之為管程。簡(jiǎn)單理解為對(duì)共享資源及其操作的抽象,包含了面向?qū)ο蟮乃枷搿K羞M(jìn)程要訪問(wèn)臨界資源只能通過(guò)管程來(lái)訪問(wèn),管程每次只允許一個(gè)進(jìn)程進(jìn)入。

    管程主要有以下特性:

  • 模塊化。即管程是一個(gè)基本程序單位,可以單獨(dú)編譯
  • 抽象數(shù)據(jù)類型。管程中不僅有數(shù)據(jù)而且有對(duì)數(shù)據(jù)的操作
  • 信息遮蔽。指管程中的數(shù)據(jù)結(jié)構(gòu)只能被管程中的過(guò)程訪問(wèn)。
  • 管程和進(jìn)程的不同:

  • 雖然二者都定義了數(shù)據(jù)結(jié)構(gòu),但進(jìn)程定義的是私有數(shù)據(jù)結(jié)構(gòu)PCB,而管程定義的是公共數(shù)據(jù)結(jié)構(gòu),如消息隊(duì)列等;
  • 二者都存在對(duì)各自數(shù)據(jù)結(jié)構(gòu)的操作,但是進(jìn)程是由順序程序執(zhí)行有關(guān)操作,而管程主要是進(jìn)行同步操作和初始化操作;
  • 設(shè)置進(jìn)程的目的在于實(shí)現(xiàn)系統(tǒng)的并發(fā)性,而管程則是解決共享資源的互斥使用問(wèn)題;
  • 進(jìn)程通過(guò)調(diào)用管程中的過(guò)程對(duì)共享數(shù)據(jù)結(jié)構(gòu)實(shí)行操作,管程是被動(dòng)工作方式,而進(jìn)程是主動(dòng)工作方式
  • 進(jìn)程之間能并發(fā)執(zhí)行,而管程不能與其調(diào)用者并發(fā)
  • 進(jìn)程具有動(dòng)態(tài)性,而管程是一個(gè)資源管理模塊
  • 條件變量

    在利用管程實(shí)現(xiàn)進(jìn)程同步時(shí),必須設(shè)置同步工具,如兩個(gè)同步操作原語(yǔ)wait和signal。當(dāng)某進(jìn)程通過(guò)管程請(qǐng)求獲得臨界資源而未能滿足時(shí),管程便調(diào)用wait原語(yǔ)使進(jìn)程等待,并將其排在等待隊(duì)列上。僅當(dāng)另一進(jìn)程訪問(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ì)這些條件變量的訪問(wèn)只能在管程中進(jìn)行。

    總結(jié)

    以上是生活随笔為你收集整理的taskkill无法终止进程 拒绝访问_进程的基本概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。