描述os進(jìn)行進(jìn)程創(chuàng)建、終止嫉鲸、阻塞、掛起等的過(guò)程歹啼;
進(jìn)程的創(chuàng)建(很重要玄渗,不可被打斷)
(1)申請(qǐng)空白PCB
(2)為新進(jìn)程分配資源,主要是內(nèi)存資源的處理
(3)初始化進(jìn)程控制塊狸眼,標(biāo)識(shí)符(包括父進(jìn)程的)藤树、程序計(jì)數(shù)器指向程序入口地址,就緒態(tài)拓萌、優(yōu)先級(jí)等信息的填寫(xiě)岁钓。
(4)將新進(jìn)程插入就緒隊(duì)列
進(jìn)程的終止(正常結(jié)束,異常結(jié)束司志,外界干預(yù))
(1)根據(jù)進(jìn)程標(biāo)示符甜紫,檢索出該進(jìn)程PCB,讀其狀態(tài)骂远。
? *IF 執(zhí)行態(tài)囚霸,立即終止該進(jìn)程,置調(diào)度標(biāo)志為真激才,指示重新進(jìn)行調(diào)度拓型。
? *IF 有子孫進(jìn)程额嘿,亦應(yīng)予以終止,以防成為不可控進(jìn)程劣挫。
(2)歸還全部資源至其父進(jìn)程或系統(tǒng)册养。
(3)將該進(jìn)程PCB從所在隊(duì)列或鏈表中移出。
進(jìn)程的阻塞與喚醒
(1)將PCB中的狀態(tài)改為阻塞
(2)該P(yáng)CB加入到阻塞隊(duì)列中
(3)轉(zhuǎn)進(jìn)程調(diào)度压固,將處理機(jī)分配給另一進(jìn)程
(4)進(jìn)行進(jìn)程切換球拦,即根據(jù)兩切換進(jìn)程的PCB,保護(hù)與重新設(shè)置處理機(jī)狀態(tài)帐我。
喚醒
(1)把阻塞進(jìn)程從等待該事件的阻塞隊(duì)列中移出
(2)將其PCB中的現(xiàn)行狀態(tài)改為就緒
(3)將PCB插入到就緒隊(duì)列中坎炼。
進(jìn)程的掛起和激活
(1)檢查被掛起進(jìn)程的狀態(tài),活動(dòng)就緒則改為靜止就緒拦键,活動(dòng)阻塞則改為靜止阻塞
(2)將該P(yáng)CB復(fù)制到內(nèi)存(方便檢查)/外存(對(duì)換)指定區(qū)域
(3)*若掛起的進(jìn)程是執(zhí)行態(tài)谣光,則需重新進(jìn)行進(jìn)程調(diào)度。
什么是同步芬为?
使并發(fā)執(zhí)行的諸進(jìn)程之間能有效的共享資源和相互合作萄金,從而使程序的執(zhí)行具有可再現(xiàn)性
控制同步的關(guān)鍵在哪里?
不被打斷的進(jìn)行標(biāo)志值的判斷和修改媚朦。
同步原則
空閑讓進(jìn)氧敢,忙則等待,有限等待询张,讓權(quán)等待
例題:生產(chǎn)者消費(fèi)者問(wèn)題
福稳、