1、操作系統(tǒng)的認(rèn)識(shí):
操作系統(tǒng)就是為“用戶提供操作邏輯所有軟硬件資源的工具,相當(dāng)于用戶與裸機(jī)進(jìn)行交互的界面”。再次層面上,為了節(jié)約有限資源,操作系統(tǒng)的目的提升到了“充分、合理地利用計(jì)算機(jī)系統(tǒng)的所有軟硬件資源,最大限度地讓用戶使用有限的硬件資源完成更多的事情”。
2、進(jìn)程、程序、并發(fā)、資源共享、互斥、同步、異步、阻塞和非阻塞:
進(jìn)程和程序:進(jìn)程是程序的依次動(dòng)態(tài)執(zhí)行,程序是進(jìn)程的靜態(tài)文本。進(jìn)程的生命周期是短暫的,隨著創(chuàng)建、執(zhí)行、睡眠到最后銷毀結(jié)束,而程序則可以永久的存儲(chǔ)在設(shè)備商。一個(gè)進(jìn)程可以執(zhí)行不同的程序,一個(gè)程序也可以由多個(gè)不同的進(jìn)程執(zhí)行。
并發(fā):在操作系統(tǒng)中同時(shí)存在并行處理的多個(gè)進(jìn)程。對(duì)于并發(fā),需要考慮任務(wù)的切換或調(diào)度(調(diào)度的時(shí)機(jī)或進(jìn)程下臺(tái)條件、上臺(tái)進(jìn)程選擇、調(diào)度的實(shí)際操作)、保護(hù)不同進(jìn)程不會(huì)彼此影響(進(jìn)程互斥)、不同進(jìn)程之間的相互協(xié)調(diào)(進(jìn)程同步)、不同進(jìn)程之間的消息傳遞(進(jìn)程通信)。
資源共享:由于系統(tǒng)中存在并發(fā)處理的進(jìn)程,但是系統(tǒng)的軟硬件資源(CPU、存儲(chǔ)設(shè)備等)是有限的,所以存在多個(gè)進(jìn)程同時(shí)使用一份資源。對(duì)于資源共享,需要考慮資源的分配、多個(gè)進(jìn)程同時(shí)對(duì)一份資源請(qǐng)求、資源回收和資源保護(hù)等。
互斥:多個(gè)進(jìn)程同時(shí)競(jìng)爭(zhēng)只允許給一個(gè)進(jìn)程使用的資源,就會(huì)產(chǎn)生互斥,而該資源稱為臨界資源。解決互斥的方法有鎖、開關(guān)中斷、開關(guān)中斷+鎖和信號(hào)量(P、V操作)。
同步:一個(gè)進(jìn)程的繼續(xù)執(zhí)行,依賴于另一個(gè)進(jìn)程的結(jié)果輸出或者執(zhí)行狀態(tài),就會(huì)產(chǎn)生進(jìn)程同步,這是如果該進(jìn)程需要的數(shù)據(jù)或者信號(hào)沒(méi)有出現(xiàn),處理器就會(huì)停下等待。
異步:對(duì)于一個(gè)進(jìn)程需要的資源沒(méi)有準(zhǔn)備好,處理器將該進(jìn)程暫時(shí)睡眠,然后處理其他進(jìn)程,當(dāng)該進(jìn)程需要的資源準(zhǔn)備完畢,處理器再將該進(jìn)程喚醒,這種就是進(jìn)程異步。
一般有同步阻塞、異步輪詢、一部非阻塞。
3、信號(hào)量和P、V操作
信號(hào)量是一種結(jié)構(gòu)體:
1 struct{2 int value;3 Queue task;4 } sem;
對(duì)于value:當(dāng)value>0時(shí),表示臨界區(qū)資源的剩余量;當(dāng)value<0時(shí),|value|表示隊(duì)列task中因等待該臨界資源而掛起的進(jìn)程數(shù)。
P操作:
1 PRocess P(sem s){2 s.value --;3 if(s.value < 0){4 sleep();//將該進(jìn)程放到s.task中 5 }6 }
V操作:
1 Process V(sem s){2 s.value ++;3 if(s.value <= 0){4 wakeup();//從s.task隊(duì)列中喚醒一個(gè)進(jìn)程5 }6 }
無(wú)論何種情況,在一個(gè)完整的系統(tǒng)中,P、V操作總是成對(duì)出現(xiàn)。
對(duì)于互斥:每個(gè)臨界資源對(duì)應(yīng)一個(gè)信號(hào)量s,進(jìn)程在訪問(wèn)臨界區(qū)前,對(duì)s執(zhí)行P操作,在離開臨界區(qū)時(shí),對(duì)s執(zhí)行V操作,如下:
進(jìn)程a 進(jìn)程b
…… ……
P(s) P(s)
臨界區(qū)s 臨界區(qū)s
V(s) V(s)
對(duì)于同步,假設(shè)進(jìn)程a需要進(jìn)程b的輸出結(jié)果result,該result對(duì)應(yīng)信號(hào)量r,當(dāng)進(jìn)程a需要result時(shí),對(duì)r執(zhí)行P操作,當(dāng)進(jìn)程b產(chǎn)生result時(shí),對(duì)r執(zhí)行V操作。
進(jìn)程a 進(jìn)程b
…… ……
P(r) 產(chǎn)生result
操作result V(r)
4、銀行家算法:避免死鎖
算法思想:在進(jìn)程請(qǐng)求資源之前
1、實(shí)際資源檢測(cè):
Request < Need
Request < Available
2、假分配檢測(cè):
假設(shè)進(jìn)行分配,預(yù)測(cè)是否會(huì)產(chǎn)生死鎖。
銀行家算法更詳細(xì)介紹見(jiàn)這里
新聞熱點(diǎn)
疑難解答
圖片精選