本系列文章力求用最簡潔的語言整理出操作系統(tǒng)的知識(shí)框架愧膀,幫助求職的同學(xué)對(duì)操作系統(tǒng)的知識(shí)做一個(gè)梳理鸣哀。
1. 操作系統(tǒng)的基本概念
操作系統(tǒng)(Operating System蝙眶,簡稱OS)是管理和控制計(jì)算機(jī)硬件與軟件資源失晴,合理組織調(diào)度計(jì)算機(jī)工作與資源分配靡狞,為用戶及其他軟件提供方便的接口和環(huán)境的程序集合耻警。
操作系統(tǒng)是運(yùn)行在“裸機(jī)”上的最基本的系統(tǒng)軟件,任何其他軟件都必須在操作系統(tǒng)的支持下才能運(yùn)行甸怕。
2. 操作系統(tǒng)的目標(biāo)與作用
可以從不同的觀點(diǎn)來觀察操作系統(tǒng)的作用甘穿。
從資源的管理角度出發(fā),可將操作系統(tǒng)視為計(jì)算機(jī)系統(tǒng)軟件與硬件資源的管理者梢杭;從用戶角度出發(fā)扒磁,操作系統(tǒng)則是用戶與計(jì)算機(jī)硬件系統(tǒng)間的接口。此外式曲,操作系統(tǒng)還實(shí)現(xiàn)了對(duì)計(jì)算機(jī)資源的抽象,隱藏了硬件的操作細(xì)節(jié)缸榛。
2.1 操作系統(tǒng)作為計(jì)算機(jī)系統(tǒng)資源的管理者
-
處理機(jī)管理
在多道程序環(huán)境下吝羞,處理機(jī)的分配和運(yùn)行都以進(jìn)程(或線程)為基本單位。因此内颗,對(duì)處理機(jī)的管理可歸結(jié)為對(duì)進(jìn)程的管理钧排。其主要的職責(zé)包括:進(jìn)程控制、進(jìn)程同步均澳、進(jìn)程通信恨溜、死鎖處理以及處理機(jī)調(diào)度等。
-
存儲(chǔ)器管理
存儲(chǔ)器管理的目標(biāo)是給多道程序提供良好的環(huán)境找前,方便用戶使用以及提高內(nèi)存的利用率糟袁。其主要職責(zé)包括內(nèi)存分配、地址映射躺盛、內(nèi)存擴(kuò)充等项戴。
-
文件管理
計(jì)算機(jī)中的信息都是以文件的形式存在的,操作系統(tǒng)中負(fù)責(zé)文件管理的部分稱為文件系統(tǒng)槽惫。文件管理包括文件存儲(chǔ)空間的管理周叮、目錄管理及文件讀/寫管理和保護(hù)等。
-
設(shè)備管理
設(shè)備管理的主要任務(wù)是完成用戶的I/O請(qǐng)求界斜,方便用戶對(duì)各種設(shè)備進(jìn)行方便地使用仿耽,并提高各類設(shè)備的利用率。主要包括緩沖管理各薇、設(shè)備分配项贺、設(shè)備處理和虛擬設(shè)備等功能。
2.2 操作系統(tǒng)作為用戶與計(jì)算機(jī)硬件系統(tǒng)之間的接口
為方便用戶使用計(jì)算機(jī),操作系統(tǒng)提供了用戶接口敬扛。
操行系統(tǒng)提供的接口分為兩類:一類是命令接口晰洒,用戶利用操作命令來組織和控制作業(yè)的執(zhí)行;另一類是程序接口啥箭,編程人員可以利用這些接口來請(qǐng)求操作系統(tǒng)的服務(wù)谍珊。
2.3 操作系統(tǒng)實(shí)現(xiàn)了對(duì)計(jì)算機(jī)資源的抽象
沒有任何軟件支持的計(jì)算機(jī)稱為裸機(jī),它向用戶提供實(shí)際的硬件接口急侥,用戶必須對(duì)各類物理接口有一定的了解砌滞,并利用機(jī)器指令進(jìn)行編程才能使用,使用難度較大坏怪。
為了方便用戶使用計(jì)算機(jī)硬件贝润,人們?cè)诼銠C(jī)上覆蓋上操作系統(tǒng),由操作系統(tǒng)提供資源管理功能和各種服務(wù)铝宵,將裸機(jī)改造成功能更強(qiáng)打掘、 使用更方便的機(jī)器。操作系統(tǒng)對(duì)隱藏了對(duì)硬件操作的細(xì)節(jié)鹏秋,實(shí)現(xiàn)了對(duì)計(jì)算機(jī)資源的抽象尊蚁。
3. 操作系統(tǒng)的基本特征
操作系統(tǒng)的基本特征包括:并發(fā)、共享侣夷、虛擬和異步横朋。其中,并發(fā)和共享是操作系統(tǒng)的兩個(gè)最基本的特征百拓。
3.1 并發(fā)
并發(fā)是指兩個(gè)或者多個(gè)事件在同一時(shí)間間隔內(nèi)發(fā)生琴锭。值得一提的是,并行是指兩個(gè)或者多個(gè)事件在同一時(shí)刻發(fā)生衙传。在單處理機(jī)操作系統(tǒng)中决帖,進(jìn)程間只能并發(fā),但設(shè)備與設(shè)備粪牲,設(shè)備與進(jìn)程間是可以并發(fā)執(zhí)行的古瓤。
通常,程序是靜態(tài)實(shí)體腺阳。在多道程序系統(tǒng)中落君,引入進(jìn)程的目的是為了使多個(gè)程序能夠并發(fā)執(zhí)行。進(jìn)程由程序亭引、數(shù)據(jù)和PCB構(gòu)成绎速,是一個(gè)能夠獨(dú)立運(yùn)行的活動(dòng)實(shí)體。同時(shí)焙蚓,進(jìn)程也是資源的基本分配單位纹冤,在沒有引入線程的操作系統(tǒng)中洒宝,進(jìn)程也是獨(dú)立調(diào)度的基本單位。
線程比進(jìn)程更小萌京,基本不擁有資源雁歌。因此,對(duì)線程的切換開銷比進(jìn)程切換小得多知残,因而有效地提高了并發(fā)的程度靠瞎。關(guān)于進(jìn)程與線程間的討論將在以后的章節(jié)進(jìn)一步展開。
3.2 共享
共享(資源共享)是指系統(tǒng)中的資源可供內(nèi)存中多個(gè)并發(fā)執(zhí)行的進(jìn)程共同使用求妹。共享進(jìn)一步可以分為互斥方式共享和同時(shí)訪問共享乏盐。
-
互斥方式共享
系統(tǒng)中的某些資源,如打印機(jī)制恍、磁帶機(jī)父能,雖然它們可以提供給多個(gè)進(jìn)程使用,但為使所打印或記錄的結(jié)果不致造成混淆净神,應(yīng)規(guī)定在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程訪問該資源何吝。此類資源被稱為臨界資源或者獨(dú)占資源。
-
同時(shí)訪問共享
系統(tǒng)中還有另一類資源鹃唯,允許在一段時(shí)間內(nèi)由多個(gè)進(jìn)程在宏觀上“同時(shí)”對(duì)它們進(jìn)行訪問岔霸。(而在微觀上,這些進(jìn)程可能是交替地對(duì)該資源進(jìn)行訪問即 “分時(shí)共享”)典型的可供多個(gè)進(jìn)程“同時(shí)”訪問的資源是磁盤設(shè)備俯渤,一些用重入碼編寫的文件也可以被“同時(shí)”共享,即若干個(gè)用戶同時(shí)訪問該文件型宝。
3.3 虛擬
”虛擬“是指通過某種技術(shù)八匠,把物理實(shí)體變?yōu)槿舾蓚€(gè)邏輯上的對(duì)應(yīng)物。用于實(shí)現(xiàn)虛擬的技術(shù)被稱為虛擬技術(shù)趴酣。
在操作系統(tǒng)中利用兩種方式實(shí)現(xiàn)虛擬技術(shù):時(shí)分復(fù)用梨树,空分復(fù)用。時(shí)分復(fù)用被用來實(shí)現(xiàn)虛擬處理機(jī)岖寞、虛擬設(shè)備等功能抡四,空分復(fù)用的應(yīng)用場景則為虛擬磁盤技術(shù)與虛擬存儲(chǔ)器技術(shù)等。
3.4 異步
在多道程序環(huán)境下仗谆,允許多個(gè)程序并發(fā)執(zhí)行指巡,但由于資源有限,進(jìn)程只有在獲得所需的資源后才能執(zhí)行隶垮。因此藻雪,進(jìn)程的執(zhí)行不是一貫到底,而是走走停停狸吞,以不可預(yù)知的速度向前推進(jìn)勉耀,這就是進(jìn)程的異步性指煎。
異步性使得操作系統(tǒng)運(yùn)行在一種隨機(jī)的環(huán)境下,可能導(dǎo)致進(jìn)程出現(xiàn)與時(shí)間交錯(cuò)有關(guān)的錯(cuò)誤便斥。但是至壤,只要運(yùn)行的環(huán)境相同,操作系統(tǒng)必須保證多次運(yùn)行程序枢纠,獲得的結(jié)果是相同的像街。