操作系統(tǒng)導(dǎo)論(1)——操作系統(tǒng)碎碎念

操作系統(tǒng)作用

操作系統(tǒng)是負(fù)責(zé)讓電腦上安裝的各類程序運(yùn)行變得容易:

1.允許同時(shí)運(yùn)行多個(gè)程序,比如可以一邊打開網(wǎng)易云音樂(lè)聽歌,一邊打開Safari瀏覽器瀏覽網(wǎng)頁(yè)

2.允許程序共享內(nèi)存

3.讓程序與設(shè)備交互,比如微信聊天可把鍵盤敲的字顯示在對(duì)話框里面

即確保系統(tǒng)易于使用又正確高效地運(yùn)行。

操作系統(tǒng)虛擬化

注:進(jìn)程就是運(yùn)行中的程序

虛擬化CPU

通過(guò)讓一個(gè)進(jìn)程只運(yùn)行一個(gè)時(shí)間片,然后切換到其他進(jìn)程,可以使操作系統(tǒng)達(dá)到提供多個(gè)虛擬CPU的假象,稱之為時(shí)分共享CPU技術(shù),允許多個(gè)進(jìn)程并發(fā)運(yùn)行。缺點(diǎn)是性能損失。

上下文切換技術(shù):操作系統(tǒng)能夠停止運(yùn)行一個(gè)程序,并開始在給定的CPU上運(yùn)行另一個(gè)程序

進(jìn)程的機(jī)器狀態(tài):內(nèi)存和寄存器

進(jìn)程狀態(tài):運(yùn)行/就緒/阻塞

上下文切換:用于切換進(jìn)程

創(chuàng)建新進(jìn)程:

1.創(chuàng)建進(jìn)程 fork()系統(tǒng)調(diào)用,從父程序中新建子程序

2.wait()系統(tǒng)調(diào)用,等待子進(jìn)程/父程序完成相應(yīng)的操作

3.exec()系統(tǒng)調(diào)用,可以讓子進(jìn)程執(zhí)行與父程序不同的程序

調(diào)用fork()創(chuàng)建新進(jìn)程,調(diào)用exec()的某個(gè)變體來(lái)執(zhí)行這個(gè)可執(zhí)行程序,調(diào)用wait()等待該命令完成。子進(jìn)程執(zhí)行結(jié)束后,shell從wait()返回并再次輸出一個(gè)提示符,等待用戶輸入下一條命令。

高效/可控地虛擬化CPU:

受限的直接執(zhí)行:直接在CPU上運(yùn)行程序,有兩個(gè)問(wèn)題需要解決:

1.需要訪問(wèn)一些敏感信息時(shí)怎么操作 ?用戶模式/內(nèi)核模式

2.怎么做進(jìn)程切換 ?時(shí)鐘中斷

在特定時(shí)間內(nèi),操作系統(tǒng)應(yīng)該運(yùn)行哪個(gè)進(jìn)程??

優(yōu)化周轉(zhuǎn)時(shí)間:先進(jìn)先出 最短任務(wù)優(yōu)先 搶占式最短作業(yè)優(yōu)先

優(yōu)化響應(yīng)時(shí)間:輪轉(zhuǎn)調(diào)度

重疊操作

注:進(jìn)程在向I/O發(fā)起請(qǐng)求的時(shí)候,是不會(huì)使用CPU的

多級(jí)反饋隊(duì)列:操作系統(tǒng)通常不知道工作要運(yùn)行多久,而這又是SJF(或STCF)等算法所必需的。其次,MLFQ希望給交互用戶(如用戶坐在屏幕前,等著進(jìn)程結(jié)束)很好的交互體驗(yàn),因此需要降低響應(yīng)時(shí)間。

MLFQ中有許多獨(dú)立的隊(duì)列(queue),每個(gè)隊(duì)列有不同的優(yōu)先級(jí)(priority level)。任何時(shí)刻,一個(gè)工作只能存在于一個(gè)隊(duì)列中。MLFQ總是優(yōu)先執(zhí)行較高優(yōu)先級(jí)的工作。

規(guī)則1:如果A的優(yōu)先級(jí) > B的優(yōu)先級(jí),運(yùn)行A(不運(yùn)行B)。

規(guī)則2:如果A的優(yōu)先級(jí) = B的優(yōu)先級(jí),輪轉(zhuǎn)運(yùn)行A和B。

饑餓問(wèn)題

比例份額調(diào)度程序










在硬件的一些幫助下,操作系統(tǒng)可將單個(gè)CPU轉(zhuǎn)換成虛擬的無(wú)限數(shù)量的CPU,從而讓許多程序看似同時(shí)運(yùn)行。同時(shí)運(yùn)行多個(gè)程序會(huì)引發(fā)各種新問(wèn)題,如兩個(gè)程序想要在特定時(shí)間運(yùn)行,應(yīng)該運(yùn)行哪個(gè)?

虛擬化內(nèi)存

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容