進(jìn)程:資源分配的基本單位,也是獨立運(yùn)行的基本單位。
1蔽莱、程序的順序執(zhí)行:一個程序通常由若干字段組成弟疆,他們必須按照某種先后次序執(zhí)行,僅當(dāng)前一個操作執(zhí)行后才能進(jìn)行下一個操作盗冷,這類計算過程就是程序的順序執(zhí)行過程怠苔。
特征:
? ? ? ? 順序性:嚴(yán)格按照順序執(zhí)行
? ? ? ? 封閉性:程序一旦開始運(yùn)行,便不受外界條件的改變而改變
? ? ? ? 可再現(xiàn)性:只要程序的初始條件和執(zhí)行環(huán)境相同仪糖,當(dāng)程序重復(fù)執(zhí)行時柑司,一定會得到相同的結(jié)果
2、程序的并發(fā)執(zhí)行:指若干個程序同時在系統(tǒng)中運(yùn)行锅劝,這些程序(或程序段)在執(zhí)行時間上時重疊的攒驰,即一個程序尚未結(jié)束而另一個程序已經(jīng)開始。
特征:
? ? ? ? 間斷性:程序在并發(fā)執(zhí)行時鸠天,由于他們共享資源或為完成同一任務(wù)而相互合作讼育,致使并發(fā)程序之間形成了相互制約的關(guān)系
? ? ? ? 失去封閉性:程序在并發(fā)執(zhí)行過程中,多個程序共享系統(tǒng)中的資源稠集,因而這些資源的狀態(tài)將由多個程序改變奶段,致使程序失去了封閉性。例如:當(dāng)處理器被某程序占用時剥纷,其他程序必須等待
? ? ? ? 不可再現(xiàn)性:由于并發(fā)執(zhí)行導(dǎo)致失去了封閉性痹籍,因此也將導(dǎo)致程序的不可再現(xiàn)型
3、進(jìn)程
3.1 定義
是程序在處理器上的一次執(zhí)行過程
是可以和別的進(jìn)程并行執(zhí)行的計算
是程序在一個數(shù)據(jù)集合上面的執(zhí)行過程晦鞋,是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨立單位
可定義為一個數(shù)據(jù)結(jié)構(gòu)及能在其上進(jìn)行操作的一個程序
是一個程序關(guān)于某個數(shù)據(jù)集合在處理器上順序發(fā)生的活動
3.2 特征
動態(tài)性:進(jìn)程是程序在處理器上的一次執(zhí)行過程蹲缠,因此不是一成不變的,是一個動態(tài)概念:他因創(chuàng)建而產(chǎn)生悠垛,因調(diào)度而執(zhí)行线定,因得不到資源而暫停,因撤銷而消亡确买。
并發(fā)性:多個進(jìn)程可以在同一時間內(nèi)同時存在在進(jìn)程當(dāng)中斤讥,能在一段時間內(nèi)同時運(yùn)行。
獨立性:進(jìn)程是一個能夠獨立運(yùn)行的基本單位湾趾,也是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨立單位芭商。
異步性:進(jìn)程以各自的不可預(yù)知的速度向前推進(jìn)。
結(jié)構(gòu)特征:每個進(jìn)程由程序段搀缠、數(shù)據(jù)段和一個進(jìn)程控制塊(Process Control Block)組成铛楣。
3.3 進(jìn)程與程序
進(jìn)程是動態(tài)的,程序是靜態(tài)的艺普。進(jìn)程是程序的執(zhí)行過程簸州,每個進(jìn)程包含了程序段鉴竭、數(shù)據(jù)段以及PCB,而程序是一組有序代碼的集合勿侯,無執(zhí)行意義拓瞪。
進(jìn)程是暫時的缴罗,會暫停也會消亡助琐,程序是永久的。
通過多次執(zhí)行面氓,一個程序可能產(chǎn)生不同的進(jìn)程兵钮;通過調(diào)用關(guān)系,一個進(jìn)程可以執(zhí)行多個程序舌界,進(jìn)程可以創(chuàng)建其他進(jìn)程掘譬,程序不能創(chuàng)建其他程序。
3.4 進(jìn)程與作業(yè)
作業(yè)是用戶需要計算機(jī)完成某項任務(wù)而要求計算機(jī)所做的工作的集合呻拌,一個作業(yè)的完成需要經(jīng)歷作業(yè)提交葱轩、作業(yè)收容、作業(yè)執(zhí)行和作業(yè)完成四個階段藐握。而進(jìn)程是已提交的作業(yè)的執(zhí)行過程靴拱,是資源分配的基本單位。
作業(yè)是用戶向計算機(jī)提交的任務(wù)實體猾普。在用戶向計算機(jī)提交作業(yè)之后袜炕,系統(tǒng)將他放入外存中的作業(yè)等待隊列中等待執(zhí)行,而進(jìn)程則是完成用戶任務(wù)的執(zhí)行實體初家,是向系統(tǒng)分配資源的基本單位偎窘。任一進(jìn)程,只要被創(chuàng)建溜在,就會有一部分存在在內(nèi)存當(dāng)中陌知。
一個作業(yè)可由一個以上的進(jìn)程構(gòu)成,而一個進(jìn)程卻不能構(gòu)成多個作業(yè)掖肋。
3.5 PCB是進(jìn)程存在的唯一標(biāo)志
PCB是系統(tǒng)為每一個進(jìn)程定義的一個數(shù)據(jù)結(jié)構(gòu)仆葡,其作用是能夠使程序能夠獨立運(yùn)行,PCB使一個在多道程序環(huán)境下不能獨立運(yùn)行的程序成為一個能獨立運(yùn)行的基本單位培遵,一個能與其他進(jìn)程并發(fā)的進(jìn)程浙芙,因此PCB是為了保證程序的并發(fā)執(zhí)行。創(chuàng)建進(jìn)程籽腕,實際上就是創(chuàng)建了PCB嗡呼,撤銷進(jìn)程實際上就是撤銷PCB。
在系統(tǒng)調(diào)用了某個進(jìn)程之后皇耗,要根據(jù)其PCB中保存的處理機(jī)狀態(tài)信息南窗,設(shè)置該進(jìn)程恢復(fù)運(yùn)行的現(xiàn)場,并根據(jù)其PCB中的程序和數(shù)據(jù)的內(nèi)存地址,找到其程序和數(shù)據(jù)万伤;進(jìn)程在執(zhí)行過程中窒悔,當(dāng)需要和與之合作的進(jìn)程實現(xiàn)同步、通信或者訪問文件時敌买,也需要訪問PCB简珠;當(dāng)進(jìn)程由某種原因暫停執(zhí)行時,也會將其斷點的處理機(jī)狀態(tài)保存在PCB中虹钮。
可見聋庵,在整個生命周期當(dāng)中,系統(tǒng)總是通過PCB對進(jìn)程進(jìn)行控制芙粱,即系統(tǒng)根據(jù)PCB感知進(jìn)程的存在祭玉,所以PCB是進(jìn)程存在的唯一標(biāo)志。
3.6 進(jìn)程和線程
線程的引入:為了使進(jìn)程并發(fā)執(zhí)行春畔,操作系統(tǒng)還必須進(jìn)行一系列的操作脱货,如創(chuàng)建進(jìn)程、撤銷進(jìn)程和進(jìn)程切換等律姨。在進(jìn)行這些操作時振峻,操作系統(tǒng)要為進(jìn)程分配及回收資源,為運(yùn)行進(jìn)程保留現(xiàn)場信息线召,這些工作都需要一定的時空開銷铺韧。線程的引入,是為了減少程序并發(fā)執(zhí)行時所付出的時空開銷缓淹,使操作系統(tǒng)具有更好的并發(fā)性哈打。
線程的定義:線程是一個相對獨立的、可調(diào)度的執(zhí)行單元讯壶。線程上自己本身不占用資源料仗,或者說只占用一點必不可少的資源(如程序計數(shù)器等),它可以與同屬一個進(jìn)程的其他線程共享該進(jìn)程擁有的全部資源伏蚊。
線程與進(jìn)程的區(qū)別及聯(lián)系:
調(diào)度:在傳統(tǒng)的OS中立轧,擁有資源和調(diào)度的基本單位都是進(jìn)程。在引入線程的OS中躏吊,線程使獨立調(diào)度的基本單位氛改,進(jìn)程使擁有資源的基本單位。在同一進(jìn)程中比伏,不同線程之間的切換不會引起線程的切換胜卤。
擁有資源:進(jìn)程使擁有資源的基本單位,線程不擁有資源(或者說只用于一些支持線程存在的資源)赁项,線程可以訪問其隸屬進(jìn)程的資源葛躏。
并發(fā)性:引入線程的OS澈段,不僅進(jìn)程之間可以并發(fā)執(zhí)行,而且同一進(jìn)程內(nèi)的多個線程也可以并發(fā)執(zhí)行舰攒,這使得操作系統(tǒng)具有更好的并發(fā)性败富,大大提升了系統(tǒng)的吞吐量。
系統(tǒng)開銷:創(chuàng)建或者撤銷進(jìn)程時摩窃,系統(tǒng)需要為之分配或回收資源兽叮;在進(jìn)程切換時,系統(tǒng)需要保存當(dāng)前進(jìn)程的CPU環(huán)境保存和新調(diào)度到CPU進(jìn)程的和環(huán)境設(shè)置偶芍。而線程切換時充择,只需要少量地保存和設(shè)置寄存器內(nèi)容德玫,因此開銷很小匪蟀。另外,同一個進(jìn)程內(nèi)多個線程共享進(jìn)程的地址空間宰僧,因此材彪,多線程之間的同步與通信非常容易實現(xiàn),甚至無需操作系統(tǒng)的干預(yù)琴儿。
#End