第一章 操作系統(tǒng)引論
操作系統(tǒng)的概念
- 形式化定義:操作系統(tǒng)是一組能有效地組織和管理計(jì)算機(jī)硬件和軟件資源,合理地對(duì)各類作業(yè)進(jìn)行調(diào)度,以及方便用戶使用的程序集合。
- 非形式化定義:系統(tǒng)軟件,程序模塊的集合,資源管理和用戶接口功能。
操作系統(tǒng)的目標(biāo)
方便性
定義:良好的、一致的用戶接口,彌補(bǔ)硬件系統(tǒng)的類型和數(shù)量差別。
主要實(shí)現(xiàn)方法:
- 統(tǒng)一用戶接口、圖形接口;
- 虛擬地址;
- 虛擬存儲(chǔ)器;
- 邏輯設(shè)備;
- 文件系統(tǒng);
- 緩沖區(qū)技術(shù)。
有效性
定義:使CPU、I/O設(shè)備和存儲(chǔ)空間得到有效利用;管理和分配硬件、軟件資源,合理地組織計(jì)算機(jī)的工作流程。
主要實(shí)現(xiàn)方法:
- 多道程序設(shè)計(jì);
- 多進(jìn)程并發(fā);
- 虛擬存儲(chǔ)器、按需調(diào)頁(段);
- 對(duì)換區(qū)技術(shù);
- 緩沖區(qū)技術(shù);
- 獨(dú)占設(shè)備 -> 共享設(shè)備。
可擴(kuò)充性
定義:無結(jié)構(gòu)化 -> 模塊化 -> 層次化 -> 微內(nèi)核。
開放性
定義:遵循標(biāo)準(zhǔn)規(guī)范,方便地實(shí)現(xiàn)互連,實(shí)現(xiàn)應(yīng)用的可移植性和互操作性。
操作系統(tǒng)的作用
用戶與計(jì)算機(jī)硬件系統(tǒng)之間的接口
含義:OS處于用戶與計(jì)算機(jī)硬件系統(tǒng)之間,用戶通過OS來使用計(jì)算機(jī)系統(tǒng)(或者說,用戶在OS的幫助下能夠方便、快捷、可靠地操縱計(jì)算機(jī)硬件和運(yùn)行自己的程序)。
- 命令接口:命令行方式(聯(lián)機(jī)用戶接口/交互式用戶接口)和腳本方式(脫機(jī)用戶接口/批處理命令接口)允許用戶直接使用;
- 程序接口:由一組系統(tǒng)調(diào)用(能完成特定功能的程序)組成,允許用戶通過程序間接使用;
- GUI:菜單方式(圖形用戶接口),現(xiàn)代操作系統(tǒng)中最流行的圖形用戶接口。
其中命令接口和程序接口統(tǒng)稱為用戶接口。
注意:系統(tǒng)調(diào)用 = 系統(tǒng)調(diào)用命令 = 廣義指令。
計(jì)算機(jī)系統(tǒng)資源的管理者
含義:在一個(gè)計(jì)算機(jī)系統(tǒng)中,通常都含有多種硬件和軟件資源,OS的主要功能正是對(duì)處理機(jī)、存儲(chǔ)器、I/O設(shè)備、文件這四類資源進(jìn)行有效的管理。
- 處理機(jī)管理:分配和控制處理機(jī);
- 存儲(chǔ)器管理:內(nèi)存的分配與回收;
- I/O設(shè)備管理:I/O設(shè)備的分配(回收)與操縱;
- 文件(數(shù)據(jù)和程序)管理:實(shí)現(xiàn)對(duì)文件的存取、共享和保護(hù)。
實(shí)現(xiàn)了對(duì)計(jì)算機(jī)資源的抽象
OS能把一臺(tái)沒有任何軟件支持的裸機(jī)改造成功能更強(qiáng)大、用戶使用更方便靈活、更安全可靠的虛擬機(jī)。
注:通常把覆蓋了軟件的機(jī)器稱為擴(kuò)充機(jī)器,又稱為虛擬機(jī)。
操作系統(tǒng)的發(fā)展過程
未配置計(jì)算機(jī)的操作系統(tǒng)
主要矛盾:
- 計(jì)算機(jī)處理能力很高,手工操作的低效率造成浪費(fèi);
- 用戶獨(dú)占全機(jī)所有的資源。
人工操作方式
用戶獨(dú)占全機(jī),人機(jī)速度矛盾導(dǎo)致資源利用率極低。
- 用戶獨(dú)占全機(jī),即一臺(tái)計(jì)算機(jī)上的資源由上機(jī)用戶所獨(dú)占;
- CPU等待人工操作。
脫機(jī)輸入輸出(Off-Line I/O)方式
- 減少了CPU的空閑時(shí)間;
- 提高了I/O速度。
單道批處理系統(tǒng)
批處理的含義:批處理是在監(jiān)督程序的控制下對(duì)一批作業(yè)自動(dòng)進(jìn)行處理而不需人工干預(yù)的一種技術(shù),該技術(shù)旨在提高系統(tǒng)的吞吐量和資源利用率。
- 優(yōu)點(diǎn):一定程度上緩解了人機(jī)速度矛盾,資源利用率有所提升;
- 缺點(diǎn):內(nèi)存中僅能有一道程序運(yùn)行,只有在該程序運(yùn)行結(jié)束后才能調(diào)入下一道程序,CPU有大量的時(shí)間是在空閑等待I/O完成(CPU與I/O設(shè)備忙閑不均),資源利用率依然很低。
多道批處理系統(tǒng)
多道程序設(shè)計(jì):指在內(nèi)存中同時(shí)存放若干個(gè)作業(yè),并使它們同時(shí)運(yùn)行的一種程序設(shè)計(jì)技術(shù)。在單處理機(jī)環(huán)境下,僅在宏觀上這些作業(yè)同時(shí)運(yùn)行,而在微觀上它們是交替執(zhí)行,即每時(shí)每刻只有一個(gè)作業(yè)在執(zhí)行,其余作業(yè)處于阻塞狀態(tài),或處于就緒狀態(tài)。
主要優(yōu)點(diǎn):
- 資源利用率高:引入多道批處理系統(tǒng)能使多道程序交替運(yùn)行,以保持CPU處于忙碌狀態(tài);在內(nèi)存中裝入多道程序可提高內(nèi)存的利用率;此外還可以提高I/O設(shè)備的利用率;
- 系統(tǒng)吞吐量大:CPU和其他資源保持“忙碌”狀態(tài);僅當(dāng)作業(yè)完成時(shí)或運(yùn)行不下去時(shí)才進(jìn)行切換,系統(tǒng)開銷小。
主要缺點(diǎn):
- 平均周轉(zhuǎn)周期長:由于作業(yè)要排隊(duì)進(jìn)行處理,因而作業(yè)的周轉(zhuǎn)時(shí)間較長,通常需要幾個(gè)小時(shí)甚至幾天;
- 無交互能力:用戶一旦把作業(yè)提交給系統(tǒng)后,直至作業(yè)完成,用戶都不能與自己的作業(yè)進(jìn)行交互,修改和調(diào)試程序極不方便。
多道批處理系統(tǒng)需要解決的問題:
- 處理機(jī)爭用問題:既要滿足各道程序運(yùn)行的需要,又要能夠提高處理機(jī)的利用率;
- 內(nèi)存的分配與保護(hù)問題:系統(tǒng)應(yīng)能為每道程序分配必要的內(nèi)存空間,且不會(huì)因?yàn)槟车莱绦虺霈F(xiàn)異常情況而破壞其它程序;
- I/O設(shè)備分配問題:系統(tǒng)應(yīng)采取適當(dāng)?shù)牟呗詠矸峙湎到y(tǒng)中的I/O設(shè)備,以達(dá)到既能方便用戶對(duì)設(shè)備的使用,又能提高設(shè)備利用率的目的;
- 文件的組織和管理問題:系統(tǒng)應(yīng)能有效地組織存放在系統(tǒng)中的大量程序和數(shù)據(jù),使它們既便于用戶使用,又能保證數(shù)據(jù)的安全性;
- 作業(yè)管理問題:系統(tǒng)應(yīng)能對(duì)系統(tǒng)中所有的作業(yè)進(jìn)行合理的組織,以滿足這些作業(yè)用戶的不同要求;
- 用戶與系統(tǒng)的接口問題:為使用戶能方便地使用操作系統(tǒng),OS還應(yīng)提供用戶與OS之間的接口。
分時(shí)系統(tǒng)
特點(diǎn):計(jì)算機(jī)的系統(tǒng)資源(尤其是CPU時(shí)間)進(jìn)行時(shí)間上的分割,每個(gè)時(shí)間段稱為一個(gè)時(shí)間片,每個(gè)用戶依次輪流使用時(shí)間片。
主要優(yōu)點(diǎn):用戶請(qǐng)求可以被即時(shí)響應(yīng),解決了人機(jī)交互問題,允許多個(gè)用戶使用同一臺(tái)計(jì)算機(jī),并且用戶對(duì)計(jì)算機(jī)的操作相對(duì)獨(dú)立,感受不到別人的存在。
主要缺點(diǎn):不能優(yōu)先處理一些緊急任務(wù)。操作系統(tǒng)對(duì)各個(gè)用戶/作業(yè)都是完全公平的,循環(huán)地為每個(gè)用戶/作業(yè)服務(wù)一個(gè)時(shí)間片,不區(qū)分任務(wù)的緊急性。
特征:
- 多路性:允許將多臺(tái)終端同時(shí)連接到一臺(tái)主機(jī)上,并按分時(shí)原則為每個(gè)用戶服務(wù);
- 獨(dú)立性:每個(gè)用戶在各自的終端上進(jìn)行操作,彼此之間互不干擾,給用戶的感覺就像是他一人獨(dú)占主機(jī)進(jìn)行操作;
- 及時(shí)性:用戶的請(qǐng)求能在很短的時(shí)間內(nèi)獲得響應(yīng);
- 交互性:用戶可通過終端與系統(tǒng)進(jìn)行廣泛的人機(jī)對(duì)話。
實(shí)時(shí)系統(tǒng)
主要優(yōu)點(diǎn):能夠優(yōu)先響應(yīng)一些緊急任務(wù),某些緊急任務(wù)不需時(shí)間片排隊(duì)。
在實(shí)時(shí)系統(tǒng)的控制下,計(jì)算機(jī)系統(tǒng)接收到外部信號(hào)后及時(shí)進(jìn)行處理,并且要在嚴(yán)格的時(shí)限內(nèi)處理完事件。實(shí)時(shí)系統(tǒng)的主要特點(diǎn)是及時(shí)性和可靠性。
現(xiàn)代操作系統(tǒng)
網(wǎng)絡(luò)操作系統(tǒng)
網(wǎng)絡(luò)操作系統(tǒng)是伴隨計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展而生的,能把網(wǎng)絡(luò)中各個(gè)計(jì)算機(jī)有機(jī)地結(jié)合起來,實(shí)現(xiàn)數(shù)據(jù)傳送等功能,實(shí)現(xiàn)網(wǎng)絡(luò)中各種資源的共享(如文件共享)和各臺(tái)計(jì)算機(jī)之間的通信。
分布式操作系統(tǒng)
分布式操作系統(tǒng)的主要特點(diǎn)是分布性和并行性。系統(tǒng)中各計(jì)算機(jī)的地位相同,任何工作都可以分布在這些計(jì)算機(jī)上,由它們并行、協(xié)同完成這個(gè)任務(wù)。
個(gè)人計(jì)算機(jī)操作系統(tǒng)
如Windows、macOS等,方便個(gè)人使用。
操作系統(tǒng)的基本特征
并發(fā)
含義:兩個(gè)或多個(gè)事件在同一時(shí)間間隔內(nèi)發(fā)生。這些事件在宏觀上是同時(shí)發(fā)生的,在微觀上是交替發(fā)生的。
并行:兩個(gè)或多個(gè)事件在同一時(shí)刻發(fā)生。
操作系統(tǒng)的并發(fā)性是指:計(jì)算機(jī)系統(tǒng)中在一段時(shí)間內(nèi)宏觀上有多個(gè)程序在同時(shí)運(yùn)行。(微觀上這些程序是分時(shí)地交替執(zhí)行)
重要考點(diǎn):
- 并發(fā)和并行的區(qū)別;
- 并發(fā)和共享互為存在條件;
- 沒有并發(fā)和共享,就談不上虛擬和異步,因此并發(fā)和共享是操作系統(tǒng)的兩個(gè)最基本的特征。
共享
含義:共享即資源共享或資源服用,其含義為系統(tǒng)中的資源可供多個(gè)并發(fā)執(zhí)行的進(jìn)程共同使用。
互斥共享方式
系統(tǒng)中的某些資源(如打印機(jī)、磁帶機(jī)等)雖然可以提供給多個(gè)進(jìn)程(線程)使用,但在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程訪問該資源。
同時(shí)共享方式
系統(tǒng)中的某些資源允許在一段時(shí)間內(nèi)由多個(gè)進(jìn)程“同時(shí)”對(duì)它們進(jìn)行訪問。(宏觀上同時(shí),微觀上交替)
并發(fā)與共享的關(guān)系
并發(fā)和共享是多用戶(多任務(wù))OS的兩個(gè)最基本的特征,它們互為存在條件。
虛擬
含義:通過某種技術(shù)將一個(gè)物理實(shí)體變?yōu)槿舾蓚€(gè)邏輯上對(duì)應(yīng)物的功能。前者是實(shí)的,即實(shí)際存在的;后者是虛的,是用戶感覺上的東西。
時(shí)分復(fù)用技術(shù)和空分復(fù)用技術(shù)
在OS中,使用時(shí)分復(fù)用技術(shù)和空分復(fù)用技術(shù)來實(shí)現(xiàn)“虛擬”。
-
時(shí)分復(fù)用技術(shù):在計(jì)算機(jī)領(lǐng)域中,廣泛應(yīng)用時(shí)分復(fù)用技術(shù)來實(shí)現(xiàn)虛擬處理機(jī)、虛擬設(shè)備等,使資源的利用率得以提高。
- 虛擬處理機(jī)技術(shù)
- 虛擬設(shè)備技術(shù)
-
空分復(fù)用技術(shù):使用空分復(fù)用技術(shù)來提高存儲(chǔ)器資源的利用率。
- 虛擬磁盤技術(shù)
- 虛擬存儲(chǔ)器技術(shù)
異步
含義:在多道程序環(huán)境下,允許多個(gè)進(jìn)程并發(fā)執(zhí)行,但由于資源有限,進(jìn)程的執(zhí)行不是一貫到底的,而是走走停停,以人們不可預(yù)知的速度向前推進(jìn)。
操作系統(tǒng)四大基本特性之間的關(guān)系

操作系統(tǒng)的主要功能
處理機(jī)管理功能
處理機(jī)管理的主要功能:
- 進(jìn)程控制:創(chuàng)建和撤銷進(jìn)程;
- 進(jìn)程同步:對(duì)諸進(jìn)程的運(yùn)行進(jìn)行協(xié)調(diào);
- 進(jìn)程通信:實(shí)現(xiàn)進(jìn)程間的信息交換;
- 調(diào)度:包括作業(yè)調(diào)度和任務(wù)調(diào)度,完成處理機(jī)資源的分配、回收調(diào)度等功能。
存儲(chǔ)器管理功能
存儲(chǔ)器管理功能主要包括:
- 內(nèi)存的分配和回收
- 內(nèi)存保護(hù)
- 地址映射
- 內(nèi)存擴(kuò)充
內(nèi)存分配
主要任務(wù):
- 為每道程序分配內(nèi)存空間;
- 提高存儲(chǔ)器的利用率;
- 允許正在運(yùn)行的程序申請(qǐng)附加空間,以適應(yīng)程序和數(shù)據(jù)動(dòng)態(tài)增長的需要。
分配方式:
- 靜態(tài)分配方式:在作業(yè)裝入后的整個(gè)運(yùn)行期間不允許該作業(yè)再申請(qǐng)新的內(nèi)存空間,也不允許作業(yè)在內(nèi)存中“移動(dòng)”;
- 動(dòng)態(tài)分配方式:允許作業(yè)在運(yùn)行過程中繼續(xù)申請(qǐng)新的附加內(nèi)存空間,以適應(yīng)數(shù)據(jù)的動(dòng)態(tài)增長,也允許作業(yè)在內(nèi)存中“移動(dòng)”。
內(nèi)存保護(hù)
主要任務(wù):
- 確保每道程序都僅在自己的內(nèi)存空間運(yùn)行,彼此互不干擾;
- 絕不允許用戶程序訪問操作系統(tǒng)的程序和數(shù)據(jù),也不允許用戶程序轉(zhuǎn)移到非共享的其它用戶程序中去執(zhí)行。
地址映射
為確保程序能正確運(yùn)行,存儲(chǔ)器管理必須提供地址映射功能,即能夠?qū)⒌刂房臻g中的邏輯地址轉(zhuǎn)換為內(nèi)存空間中與之對(duì)應(yīng)的物理地址。該功能在硬件的支持下完成。
內(nèi)存擴(kuò)充
借助虛擬存儲(chǔ)技術(shù),從邏輯上擴(kuò)充內(nèi)存容量,使用戶所感覺到的內(nèi)存容量比實(shí)際內(nèi)存容量大得多,以便讓更多的用戶程序能并發(fā)運(yùn)行。
主要功能:
- 請(qǐng)求調(diào)入功能;
- 置換功能。
設(shè)備管理功能
主要任務(wù):
- 完成用戶進(jìn)程提出的I/O請(qǐng)求,為用戶進(jìn)程分配所需的I/O設(shè)備,并完成指定的I/O操作;
- 提高CPU和I/O設(shè)備的利用率,提高I/O速度,方便用戶使用I/O設(shè)備。
主要功能:
- 緩沖管理;
- 設(shè)備分配;
- 設(shè)備處理。
文件管理功能
主要任務(wù):對(duì)用戶文件和系統(tǒng)文件進(jìn)行管理以方便用戶使用,并保證文件的安全性。
主要功能:
- 文件的存儲(chǔ)空間管理;
- 目錄管理;
- 文件的讀/寫管理和保護(hù);
操作系統(tǒng)與用戶之間的接口
用戶接口
- 聯(lián)機(jī)用戶接口:“說一句做一句”;
- 脫機(jī)用戶接口:“說一堆做一堆”;
- 圖形用戶接口(GUI)
程序接口
由一組系統(tǒng)調(diào)用(能完成特定功能的子程序)組成,允許用戶通過程序間接使用。
現(xiàn)代操作系統(tǒng)的新功能
系統(tǒng)安全
- 認(rèn)證技術(shù)
- 密碼技術(shù)
- 訪問控制技術(shù)
- 反病毒技術(shù)
網(wǎng)絡(luò)的功能和服務(wù)
- 網(wǎng)絡(luò)通信
- 資源管理
- 應(yīng)用互操作
支持多媒體
- 接納控制功能
- 實(shí)時(shí)調(diào)度
- 多媒體文件的存儲(chǔ)
OS結(jié)構(gòu)設(shè)計(jì)
傳統(tǒng)操作系統(tǒng)結(jié)構(gòu)
無結(jié)構(gòu)操作系統(tǒng)
特點(diǎn):
- 設(shè)計(jì)者只把注意力放在功能的實(shí)現(xiàn)和獲得高的效率上,缺乏首尾一致的設(shè)計(jì)思想;
- OS是一組過程的集合,各過程之間可以相互調(diào)用,在OS內(nèi)部不存在任何結(jié)構(gòu)。
缺點(diǎn):
- 操作系統(tǒng)既龐大又雜亂,缺乏清晰的程序結(jié)構(gòu),調(diào)試?yán)щy;
- 程序難以理解和閱讀,增加了維護(hù)人員的負(fù)擔(dān)。
模塊化結(jié)構(gòu)OS
特點(diǎn):
- 基于分解和結(jié)構(gòu)化原則控制大型軟件的復(fù)雜度;
- 按其功能精心地劃分為若干個(gè)具有一定獨(dú)立性和大小的模塊;
- 仔細(xì)地規(guī)定好各模塊間的接口,使各模塊之間能通過該接口實(shí)現(xiàn)交互;
- 模塊由眾多服務(wù)過程(模塊接口)組成,可以隨意調(diào)用其他模塊中的服務(wù)過程。
優(yōu)點(diǎn):
- 提高OS設(shè)計(jì)的正確性、可理解性和可維護(hù)性;
- 增強(qiáng)OS的適應(yīng)性;
- 加快OS的開發(fā)過程。
缺點(diǎn):
- 功能劃分和模塊接口難以保證正確和合理;
- 模塊之間的依賴關(guān)系復(fù)雜,降低了模塊之間的相互獨(dú)立性——不利于修改。
分層式結(jié)構(gòu)OS
特點(diǎn):每一層都僅使用其底層所提供的功能和服務(wù),使得系統(tǒng)的調(diào)試和驗(yàn)證都變得容易。
層次設(shè)置:
- 程序嵌套
- 運(yùn)行頻率
- 公共模塊
- 用戶接口
優(yōu)點(diǎn):
- 易保證系統(tǒng)的正確性;
- 易擴(kuò)充和易維護(hù);
缺點(diǎn):系統(tǒng)效率降低。
客戶/服務(wù)器模式
OS劃分為兩部分(提高靈活性和可擴(kuò)充性):
- 一組服務(wù)器(進(jìn)程),用于提供各種服務(wù);
- 內(nèi)核,用來處理客戶和服務(wù)器之間的通信。
組成:
- 客戶機(jī)
- 服務(wù)器
- 網(wǎng)絡(luò)系統(tǒng)
客戶與服務(wù)器的交互方式:
- 客戶發(fā)送請(qǐng)求消息;
- 服務(wù)器接收消息;
- 服務(wù)器回送消息;
- 客戶接收消息。
優(yōu)點(diǎn):
- 數(shù)據(jù)的分布處理和存儲(chǔ);
- 便于集中管理;
- 靈活性和可擴(kuò)充性;
- 易于改編應(yīng)用軟件。
不足:
- 可靠性問題;
- 瓶頸問題。
微內(nèi)核OS結(jié)構(gòu)
主要特征:將OS劃分為微內(nèi)核和多個(gè)服務(wù)器。
基本概念:
- 足夠小的內(nèi)核:實(shí)現(xiàn)與硬件緊密相關(guān)的處理、實(shí)現(xiàn)一些較基本的功能、負(fù)責(zé)客戶和服務(wù)器之間的通信;
- 基于客戶/服務(wù)器模式:操作系統(tǒng)中最基本的部分放入內(nèi)核中,絕大部分功能放在微內(nèi)核外的一組服務(wù)器(進(jìn)程)中實(shí)現(xiàn);
- 應(yīng)用“機(jī)制與策略分離”原理:機(jī)制決定事情如何來做,策略決定做什么內(nèi)容;
- 采用面向?qū)ο蠹夹g(shù):基于面向?qū)ο蠹夹g(shù)中的“抽象”和“隱蔽”原則控制系統(tǒng)的復(fù)雜性,再進(jìn)一步利用“對(duì)象”、“封裝”和“繼承”等概念確保操作系統(tǒng)的正確性、可靠性、易修改性、易擴(kuò)展性等,并提高操作系統(tǒng)的設(shè)計(jì)速度。
微內(nèi)核所提供的基本功能:
- 進(jìn)程管理
- 存儲(chǔ)器管理
- 進(jìn)程通信管理
- I/O設(shè)備管理
優(yōu)點(diǎn):
- 提高了系統(tǒng)的可擴(kuò)展性;
- 增強(qiáng)了系統(tǒng)的可靠性;
- 可移植性強(qiáng);
- 提供了對(duì)分布式系統(tǒng)的支持;
- 融入了面向?qū)ο蠹夹g(shù)。
不足:微內(nèi)核OS的運(yùn)行效率有所降低,主要原因是客戶對(duì)OS提出服務(wù)請(qǐng)求時(shí)需要利用消息實(shí)現(xiàn)多次交互和進(jìn)行用戶/內(nèi)核模式及上下文的多次切換。