初學(xué)者必備的操作系統(tǒng)知識(shí)
作者:Cyapirear
來源:華為開發(fā)者論壇
操作系統(tǒng)是什么
操作系統(tǒng)(Operation System,OS)是管理和控制計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序,是直接運(yùn)行在“裸機(jī)”上的最基本的系統(tǒng)軟件,任何其他軟件都必須在操作系統(tǒng)的支持下才能運(yùn)行。操作系統(tǒng)也是用戶與計(jì)算機(jī)硬件系統(tǒng)之間的接口,同時(shí)也是計(jì)算機(jī)硬件和其他軟件的接口。
操作系統(tǒng)發(fā)展歷程
手工階段
單道批處理系統(tǒng)
多道批處理系統(tǒng)
分時(shí)操作系統(tǒng)
實(shí)時(shí)操作系統(tǒng)
網(wǎng)絡(luò)操作系統(tǒng)和分布式操作系統(tǒng),兩者的不同之處在于:
在分布式操作系統(tǒng)中,若干臺(tái)計(jì)算機(jī)相互協(xié)同完成同一任務(wù)。
在網(wǎng)絡(luò)操作系統(tǒng)中,每臺(tái)計(jì)算機(jī)都是相互獨(dú)立的,它們并不能相互協(xié)同完成同一任務(wù)。
操作系統(tǒng)中的基本概念
CPU(Central Processing Unit,中央處理器)
-
進(jìn)程
可以認(rèn)為是程序執(zhí)行時(shí)的一個(gè)實(shí)例。進(jìn)程是系統(tǒng)進(jìn)行資源分配的獨(dú)立實(shí)體,且每個(gè)進(jìn)程擁有獨(dú)立的地址空間。比如打開一個(gè)瀏覽器就是啟動(dòng)一個(gè)瀏覽器進(jìn)程,打開兩個(gè)記事本就啟動(dòng)了兩個(gè)記事本進(jìn)程。
-
進(jìn)程控制塊(ProcessControl Block,PCB)
保存運(yùn)行期間進(jìn)程的數(shù)據(jù),PCB是進(jìn)程存在的唯一標(biāo)志。進(jìn)程=程序+數(shù)據(jù)+PCB。
線程
可以理解為“輕量級(jí)進(jìn)程”,是CPU調(diào)度的基本單元,也是程序執(zhí)行流的最小單元,由線程ID、程序計(jì)數(shù)器、寄存器集合和堆棧組成。在一個(gè)進(jìn)程內(nèi)部,可能要同時(shí)干多件事,這時(shí)就需要同時(shí)運(yùn)行多個(gè)“子任務(wù)”,我們可以把這些“子任務(wù)”稱為線程。線程屬于進(jìn)程,是進(jìn)程的一個(gè)實(shí)體。如果把進(jìn)程比喻為工廠,線程就相當(dāng)于工廠里的各個(gè)流水線。
線程控制塊(ThreadControl Block,TCB)
保存運(yùn)行期間線程的數(shù)據(jù),TCB是線程存在的唯一標(biāo)志。
線程和進(jìn)程的區(qū)別
進(jìn)程是資源分配和調(diào)度的一個(gè)獨(dú)立單元,而線程只是CPU調(diào)度的基本單元。線程自己不擁有系統(tǒng)資源,但它可以與同屬一個(gè)進(jìn)程的其他線程共享進(jìn)程所擁有的全部資源(寄存器、堆棧、上下文)。一個(gè)進(jìn)程可以創(chuàng)建和撤銷另一個(gè)線程,同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行。一個(gè)進(jìn)程至少包括一個(gè)線程。進(jìn)程結(jié)束后它擁有的所有線程都將銷毀,而線程的結(jié)束不會(huì)影響同個(gè)進(jìn)程中的其他線程的結(jié)束。
多線程
并發(fā)
兩個(gè)或多個(gè)事件在同一時(shí)間內(nèi)發(fā)生,在單CPU系統(tǒng)中,這些事件分時(shí)交替執(zhí)行。
并行
兩個(gè)或多個(gè)事件在同一時(shí)刻發(fā)生。在多處理器中,進(jìn)程可以交替執(zhí)行,還能重疊執(zhí)行,實(shí)現(xiàn)并行處理。
臨界資源
一次僅允許一個(gè)進(jìn)程使用的資源,如 打印機(jī)。
臨界區(qū)
每個(gè)進(jìn)程中訪問臨界資源的那段代碼。
互斥
進(jìn)程之間訪問臨界資源時(shí)相互排斥的現(xiàn)象。
同步
異步
和同步相對(duì),同步是順序執(zhí)行,而異步是彼此獨(dú)立,在等待某個(gè)事件的過程中繼續(xù)做自己的事,不需要等待這一事件完成后再工作。實(shí)現(xiàn)異步可以采用多線程技術(shù)或者交給其他進(jìn)程來處理。
中斷
當(dāng)出現(xiàn)需要時(shí),CPU暫停執(zhí)行當(dāng)前程序,轉(zhuǎn)而執(zhí)行新程序的過程。即在程序運(yùn)行過程中,系統(tǒng)出現(xiàn)了一個(gè)必須由CPU立即處理的事務(wù)。此時(shí),CPU暫時(shí)中止當(dāng)前程序的執(zhí)行轉(zhuǎn)而處理這個(gè)事務(wù),這個(gè)過程就叫做中斷。
CPU的工作狀態(tài)
大多數(shù)計(jì)算機(jī)系統(tǒng)將CPU執(zhí)行狀態(tài)分為管態(tài)與目態(tài)。
管態(tài)
目態(tài)
為什么叫object mode呢?
通常CPU會(huì)執(zhí)行兩種不同性質(zhì)的程序:一種是操作系統(tǒng)內(nèi)核程序;另一種是用戶自己寫的程序或系統(tǒng)外層的應(yīng)用程序。
對(duì)操作系統(tǒng)而言,這兩種程序的作用不同,前者是后者的管理者,因此“管理程序”要執(zhí)行一些特權(quán)指令,而“被管理程序”出于安全考慮不能執(zhí)行這些指令。因?yàn)楣芾碚咝枰芾硭?,它就是管理者的管理目?biāo),所以就叫object mode。
目態(tài)(用戶態(tài))→管態(tài)(內(nèi)核態(tài))
從用戶態(tài)切換到內(nèi)核態(tài),可以通過系統(tǒng)調(diào)用、異常、外部設(shè)備的中斷這三種方式實(shí)現(xiàn)。
系統(tǒng)調(diào)用
這是用戶態(tài)進(jìn)程主動(dòng)要求切換到內(nèi)核態(tài)的一種方式,用戶態(tài)進(jìn)程通過系統(tǒng)調(diào)用申請(qǐng)使用操作系統(tǒng)提供的服務(wù)程序完成工作。系統(tǒng)調(diào)用機(jī)制的核心是使用了操作系統(tǒng)為用戶開放的中斷。
異常
當(dāng)CPU在執(zhí)行用戶態(tài)程序時(shí),發(fā)生了某些事先不可知的異常,這時(shí)就會(huì)切換到處理此異常的內(nèi)核程序中,也就轉(zhuǎn)到了內(nèi)核態(tài)。
-
外部設(shè)備的中斷
當(dāng)外部設(shè)備完成用戶請(qǐng)求操作后,會(huì)向CPU發(fā)出相應(yīng)的中斷信號(hào),這時(shí)CPU會(huì)暫停執(zhí)行下一條即將要執(zhí)行的指令,轉(zhuǎn)而去執(zhí)行與中斷信號(hào)對(duì)應(yīng)的處理程序(該程序在內(nèi)核態(tài)),如果先前執(zhí)行的指令是用戶態(tài)下的程序,那么這個(gè)轉(zhuǎn)換的過程自然也就發(fā)生了由用戶態(tài)到內(nèi)核態(tài)的切換。例如,硬盤讀寫操作完成,系統(tǒng)會(huì)切換到硬盤讀寫的中斷處理程序中,執(zhí)行后續(xù)的操作。
操作系統(tǒng)的特征
并發(fā)
兩個(gè)或者多個(gè)程序在同一時(shí)間內(nèi)發(fā)生。
-
共享 系統(tǒng)中的資源可供內(nèi)存中多個(gè)并發(fā)執(zhí)行的進(jìn)程共同使用。
-
虛擬 把一個(gè)物理上的實(shí)體變?yōu)槿舾蓚€(gè)邏輯上的對(duì)應(yīng)物。
-
異步 在多道程序環(huán)境下,允許多個(gè)進(jìn)程并發(fā)執(zhí)行,但因資源有限,進(jìn)程的執(zhí)行不是一貫到底,而是走走停停,以不可預(yù)知的速度向前推送,這就是進(jìn)程的異步性。
長(zhǎng)按前往圖中包含的公眾號(hào)關(guān)注
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!