进程的切换过程
切換方式
進(jìn)程的切換,實(shí)質(zhì)上就是被中斷運(yùn)行進(jìn)程與待運(yùn)行進(jìn)程的上下文切換。從主觀上來(lái)理解。只分為兩步:
1.切換新的頁(yè)表,然后使用新的虛擬地址空間
2.切換內(nèi)核棧,加入新的內(nèi)容(PCB控制塊,資源相關(guān)),硬件上下文切換
現(xiàn)在從這兩句話理解,來(lái)看看這些東西到底是什么。
1,虛擬地址空間
虛擬地址空間,顧名思義:就是虛擬的,不是真的地址空間
在早期的計(jì)算機(jī)中,我們的計(jì)算機(jī)內(nèi)存都非常的小。如果計(jì)算機(jī)內(nèi)存是100M.已經(jīng)運(yùn)行了兩個(gè)40M的任務(wù)。如果還想運(yùn)行一個(gè)40M的。那么空間肯定就不夠了。
所以后來(lái) 它在磁盤上劃分出一塊空間由操作系統(tǒng)管理,當(dāng)物理內(nèi)存耗盡是充當(dāng)物理內(nèi)存來(lái)使用。它將多個(gè)物理內(nèi)存碎片和部分磁盤空間重定義為連續(xù)的地址空間,以此讓程序認(rèn)為自己擁有連續(xù)可用的內(nèi)存
但是具體要講清楚這個(gè),我們還要看頁(yè)表
2,頁(yè)表
剛剛講到了虛擬地址空間,說(shuō)了他只是虛擬的一段空間,但是。程序可不管你那么多。人家只要在物理內(nèi)存上運(yùn)行。你給人家畫(huà)空餅可沒(méi)意思。
所以出現(xiàn)了頁(yè)表。把虛擬地址空間對(duì)應(yīng)的部分,映射到物理地址上
現(xiàn)在計(jì)算機(jī)一般是采用分頁(yè)管理居多,這里分段管理我個(gè)人也理解了就不多敘述。
我們來(lái)看下分頁(yè)管理:
很多初學(xué)者在這里會(huì)有一個(gè)疑問(wèn),既然給程序造成連續(xù)的空間假象,那要是內(nèi)存中確實(shí)沒(méi)內(nèi)存可用了,會(huì)怎么辦呢?那么對(duì)于*新的頁(yè)數(shù),他就會(huì)發(fā)生缺頁(yè)中斷,然后會(huì)覆蓋起其他的頁(yè)
缺頁(yè)中斷大概有三種算法:
1.(OPT)最晚不使用的算法:表示新的頁(yè)如果進(jìn)來(lái)沒(méi)內(nèi)存框可放了,會(huì)替換之后 幾乎或者根本不會(huì)用到的頁(yè)。但這種算法只是一種理想算法,因?yàn)闆](méi)人能預(yù)估之后的事,包括計(jì)算機(jī)
2.(FIFO)先進(jìn)先出算法:表示沒(méi)來(lái)一個(gè)新的頁(yè),他都會(huì)替換最早進(jìn)來(lái)的那個(gè)頁(yè)。這種辦法有個(gè)缺點(diǎn):如果最早進(jìn)來(lái)的那個(gè)頁(yè)是經(jīng)常被訪問(wèn)的,那么一定情況下效率會(huì)比較低。所以FIFO算法在按 線性順序訪問(wèn)地址空間時(shí)使用
3.(LRU)最近最久未使用:這種辦法,會(huì)找出當(dāng)前內(nèi)存中,最近被使用最少的頁(yè)。然后替換他。這種辦法是前兩個(gè)算法的折中選擇,基本現(xiàn)在都用這種。還有一種是LFU 最常不使用算法,這種是找系統(tǒng)內(nèi)使用頻率最少的頁(yè)(LRU是最近一段時(shí)間),然后替換他。但是,這種算法實(shí)現(xiàn)要長(zhǎng)期的為每個(gè)頁(yè)維護(hù)一個(gè)計(jì)數(shù)代價(jià)較大不常使用。
具體三個(gè)的算法的圖解:https://blog.csdn.net/qq_34777600/article/details/79508613
第二步的切換內(nèi)核棧,就是使用新的棧來(lái)存放進(jìn)程運(yùn)行時(shí)資源了。然后新進(jìn)程有新的PCB控制塊。第二步也是線程切換的步驟,因?yàn)榫€程共享進(jìn)程的虛擬地址空間,所以切換的時(shí)候沒(méi)有第一步的過(guò)程
進(jìn)程一共有五個(gè)狀態(tài):
像剛剛的切換:
1.會(huì)把原來(lái)的進(jìn)程保存狀態(tài),然后進(jìn)入阻塞狀態(tài)。這種情況一般是IO請(qǐng)求或者內(nèi)存申請(qǐng)失敗了。
2.可能是原來(lái)的進(jìn)程正常終止了,或者CPU的時(shí)間片沒(méi)了,終止是進(jìn)入終止態(tài),CPU時(shí)間片沒(méi)了是進(jìn)入就緒態(tài),加入就緒隊(duì)列等待下一次獲得CPU
總結(jié)
- 上一篇: 7-6 中国生肖年 (5分) java
- 下一篇: ps填充前景色