Section 1 - 操作系統(tǒng)引論
- 0.操作系統(tǒng)定義:是一組能有效組織和管理計(jì)算機(jī)硬件和軟件資源佩脊,合理對(duì)各類操作進(jìn)行調(diào)度褒繁,以方便用戶使用的程序的集合
-
1.操作系統(tǒng)的作用
- OS 作為用戶和電腦硬件系統(tǒng)之間的接口
- OS 作為計(jì)算機(jī)系統(tǒng)資源的管理者
- OS實(shí)現(xiàn)了對(duì)計(jì)算機(jī)資源的抽象(個(gè)人理解:對(duì)計(jì)算機(jī)的具體實(shí)現(xiàn)不關(guān)系系草,即面向?qū)ο笏枷?
-
2.操作系統(tǒng)的演變過程
- 未配置操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)
- 人工操作方式(人工傳輸穿孔紙帶)
- 脫機(jī)輸入/輸出(Off-Line I/O)方式(外圍設(shè)備自動(dòng)傳輸穿孔紙帶)
- 單道批處理系統(tǒng)
- 多道批處理系統(tǒng)(作業(yè)保存在外存上排成隊(duì)列,按照一定算法調(diào)入內(nèi)存,達(dá)到利用 I/O 操作使 CPU 空擋閑置的時(shí)間抗果,使 CPU 使用率提升)
- 分時(shí)系統(tǒng)(因?yàn)?0年代計(jì)算機(jī)很稀缺倡怎,一臺(tái)計(jì)算機(jī)被多人使用迅耘,但可以獲得一定的及時(shí)響應(yīng))
- 實(shí)時(shí)系統(tǒng)(將時(shí)間作為關(guān)鍵參數(shù)贱枣,必須對(duì)接收到的信號(hào)做出及時(shí)的反應(yīng))
- 微機(jī)操作系統(tǒng)的發(fā)展
- 單用戶單任務(wù)操作系統(tǒng)(只允許一位用戶上機(jī),只允許用戶的一個(gè)程序運(yùn)行颤专,主要是8位/16位為微機(jī)上纽哥,如 MS-DOS,CP/M)
- 單用戶多任務(wù)操作系統(tǒng)(只允許一位用戶上機(jī),但允許用戶把程序分成多個(gè)任務(wù)栖秕,使這些任務(wù)并發(fā)執(zhí)行)
- 多用戶多任務(wù)操作系統(tǒng)(允許多個(gè)用戶通過各自的終端春塌,使用同一臺(tái)機(jī)器,共享主機(jī)系統(tǒng)的各種資源累魔,每個(gè)用戶的程序又可分為多個(gè)任務(wù)摔笤,并發(fā)執(zhí)行,一般用在大中型機(jī)器上垦写,微機(jī)上應(yīng)用的是 UNIX OS(Linux OS是 UNIX 一個(gè)重要變種吕世,MAC OS 是基于 UNIX 內(nèi)核重新開發(fā)))
- 未配置操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)
-
3.操作系統(tǒng)的基本特性
-
并發(fā)
- 并行與并發(fā)區(qū)別:并行是多個(gè)任務(wù)在同一時(shí)刻內(nèi)同時(shí)發(fā)生,并發(fā)是多個(gè)任務(wù)在同一時(shí)間內(nèi)間隔進(jìn)行
- 引入進(jìn)程:進(jìn)程是在系統(tǒng)中獨(dú)立運(yùn)行并作為資源分配的基本單位梯投,由一組機(jī)器指令和數(shù)據(jù)命辖、堆棧等組成的,
- 未引入進(jìn)程的系統(tǒng)中分蓖,屬于同一個(gè)應(yīng)用程序的計(jì)算程序和 I/O 程序之間只能是順序執(zhí)行
- 引入進(jìn)程后尔艇,計(jì)算程序和 I/O 程序可以并發(fā)進(jìn)行
- 極大地提高系統(tǒng)資源的利用率,增加系統(tǒng)的吞吐量
-
共享
- 日常生活中的共享:如圖書館的書籍可以共享么鹤,但并未限定使用者必須在同一時(shí)間和同一地點(diǎn)閱讀
- OS環(huán)境下的共享:又稱為資源復(fù)用终娃,指系統(tǒng)中的資源可供內(nèi)存中多個(gè)并發(fā)執(zhí)行的進(jìn)程共同使用,既限定了時(shí)間(進(jìn)程在內(nèi)存期間)蒸甜,又限定了地點(diǎn)(內(nèi)存)棠耕,因?yàn)楸容^復(fù)雜,實(shí)現(xiàn) OS 環(huán)境下的共享分為以下兩種:
- 互斥共享方式
- 規(guī)定在一段時(shí)間內(nèi)柠新,只允許一個(gè)進(jìn)程訪問該資源窍荧,這種共享類型的資源稱為臨界資源
- 同時(shí)訪問方式
- 允許在一段時(shí)間內(nèi)由多個(gè)進(jìn)程“同時(shí)”對(duì)它們進(jìn)行訪問,這個(gè)"同時(shí)"是指微觀上進(jìn)程訪問該資源是交替進(jìn)行的恨憎,比較常見的“同時(shí)”訪問的資源是磁盤設(shè)備(即硬盤)
- 互斥共享方式
-
并發(fā)和共享的關(guān)系:
- 是多用戶多任務(wù) OS 的兩個(gè)最基本的特征蕊退,又是互為存在的條件
-
虛擬:
- 將一個(gè)物理實(shí)體變?yōu)槿舾蓚€(gè)邏輯上的對(duì)應(yīng)為的功能稱為”虛擬“,前者是實(shí)的憔恳,即實(shí)際存在的瓤荔,后者是虛的,只是用戶感覺上的東西
- 時(shí)分復(fù)用技術(shù)
- 利用某設(shè)備為一用戶服務(wù)的空閑時(shí)間钥组,轉(zhuǎn)而去為其他用戶服務(wù)茉贡,使設(shè)備得到最充分的利用
- 空分復(fù)用技術(shù)
- 利用存儲(chǔ)器的空閑空間分區(qū)域存放和運(yùn)行其他的多道程序,使得提高存儲(chǔ)空間的利用率
- 單純的空分復(fù)用存儲(chǔ)器只能提高內(nèi)存的利用率者铜,并不能實(shí)現(xiàn)在邏輯上擴(kuò)大存儲(chǔ)器容量的功能腔丧,還需要引入虛擬存儲(chǔ)技術(shù)
- 使用了虛擬存儲(chǔ)技術(shù)的例子:如一個(gè)100MB 的程序可以在30MB 的內(nèi)存空間上運(yùn)行
- 虛擬存儲(chǔ)技術(shù)原理:通過內(nèi)存的分時(shí)復(fù)用放椰,每次只把用戶程序的一部分調(diào)入內(nèi)存中運(yùn)行,完成后把該部分取出愉粤,再換入另一部分到內(nèi)存中運(yùn)行
-
異步:
- 進(jìn)程的異步性砾医,進(jìn)程是以人們不可預(yù)知的速度向前推進(jìn)的。即內(nèi)存中的每個(gè)進(jìn)程衣厘,在何時(shí)能獲得處理機(jī)運(yùn)行如蚜,何時(shí)又提出某種資源請(qǐng)求而暫停,以及進(jìn)程以怎樣的速度向前推進(jìn)影暴,都是不可預(yù)知的
-
- 4.操作系統(tǒng)的主要功能
- 處理機(jī)的管理管理功能
- 進(jìn)程控制:為任務(wù)創(chuàng)建進(jìn)程错邦、撤銷(終止)已結(jié)束的進(jìn)程,以及控制進(jìn)程在運(yùn)行過程中狀態(tài)轉(zhuǎn)換
- 進(jìn)程同步:為了保證多個(gè)進(jìn)程有條不紊的運(yùn)行型宙,系統(tǒng)中必須設(shè)置相應(yīng)的進(jìn)程同步機(jī)制撬呢。協(xié)調(diào)的方式有兩種:
- 進(jìn)程互斥方式:主要是對(duì)臨界資源的訪問。最簡(jiǎn)單的互斥方式妆兑,是通過為每個(gè)臨界資源配置一把進(jìn)程鎖
- 進(jìn)程同步方式:指相互合作去完成共同任務(wù)的諸進(jìn)程間魂拦,由同步機(jī)構(gòu)對(duì)它們的執(zhí)行次序加以協(xié)調(diào)。
- 進(jìn)程通信:一組相互合作的進(jìn)程去完成一個(gè)共同的任務(wù)時(shí)搁嗓,進(jìn)程之間需要交換信息芯勘。
- 調(diào)度:
- 作業(yè)調(diào)度:從后備隊(duì)列中按照一定算法選出若干個(gè)作業(yè),為他們分配資源腺逛,將這些作業(yè)調(diào)入內(nèi)存后荷愕,再分別為他們建立進(jìn)程,使他們成為可能獲得處理機(jī)的就緒進(jìn)程棍矛,并插入就緒隊(duì)列中
- 進(jìn)程調(diào)度:是從進(jìn)程的就緒隊(duì)列中按照一定算法選出一個(gè)線程安疗,分配處理機(jī),設(shè)備運(yùn)行現(xiàn)場(chǎng)茄靠,運(yùn)行它
- 存儲(chǔ)器管理功能:
- 內(nèi)存分配:
- 主要任務(wù):
- 1.為每道程序分配內(nèi)存空間
- 2.提高存儲(chǔ)器的利用率,盡量減少不可用的內(nèi)存碎片
- 3.允許正在運(yùn)行的程序申請(qǐng)附加的內(nèi)存空間蝶桶,以適應(yīng)程序和數(shù)據(jù)動(dòng)態(tài)增長(zhǎng)的需要
- 內(nèi)存分配方式:
- 1.靜態(tài)分配:運(yùn)行過程中不允許為該作業(yè)再申請(qǐng)新的內(nèi)存空間慨绳,也不允許作業(yè)在內(nèi)存中"移動(dòng)"
- 2.動(dòng)態(tài)分配:允許運(yùn)行過程中為該作業(yè)再申請(qǐng)新的附加內(nèi)存空間,也允許作業(yè)在內(nèi)存中"移動(dòng)"
- 主要任務(wù):
- 內(nèi)存保護(hù):
- 主要任務(wù):
- 確保每道用戶程序都僅在自己的內(nèi)存空間內(nèi)運(yùn)行真竖,彼此互不干擾
- 決不允許用戶程序訪問操作系統(tǒng)的程序和數(shù)據(jù)脐雪,也不允許用戶程序轉(zhuǎn)移到非共享的其他用戶程序中去執(zhí)行
- 實(shí)現(xiàn)原理:通過設(shè)置內(nèi)存保護(hù)機(jī)制
- 一個(gè)簡(jiǎn)單的實(shí)現(xiàn):通過設(shè)置兩個(gè)界限寄存器,分別用于存放正在執(zhí)行程序的上界和下界恢共。程序運(yùn)行期間战秋,對(duì)每條指令所要訪問的地址進(jìn)行 check,若發(fā)生越界讨韭,便發(fā)出越界終端請(qǐng)求脂信,結(jié)束該程序的執(zhí)行
- 主要任務(wù):
- 地址映射:
- 因?yàn)樵诙嗟莱绦颦h(huán)境下癣蟋,每道程序經(jīng)編譯和鏈接后形成的可裝入程序地址都是從0開始的,但不能講它們從”0“地址裝入內(nèi)存狰闪,所以導(dǎo)致各程序段的地址空間內(nèi)的邏輯地址與它在內(nèi)存空間內(nèi)的地址不一致疯搅,為了保證程序的正常運(yùn)行,存儲(chǔ)器管理需要提供地址映射功能埋泵,即將地址空間內(nèi)的邏輯地址轉(zhuǎn)換為內(nèi)存空間中與之對(duì)應(yīng)的物理地址
- 內(nèi)存擴(kuò)充:
- 該功能呢并非物理上的擴(kuò)充內(nèi)存幔欧,而是利用虛擬存儲(chǔ)技術(shù),通過內(nèi)存的分時(shí)調(diào)用來實(shí)現(xiàn)
- 內(nèi)存分配:
- 設(shè)備管理功能:
- 緩存管理:在 I/O 設(shè)備與 CPU 之間引入緩存丽声,來緩和 CPU 與 I/O 設(shè)備速度不匹配的矛盾礁蔗,提高 CPU 利用率,有但緩存機(jī)制、雙緩存機(jī)制等
- 設(shè)備分配:根據(jù)用戶進(jìn)程的 I/O 請(qǐng)求雁社,系統(tǒng)現(xiàn)有資源情況以及按照某種設(shè)備分配策略浴井,為之分配需要的設(shè)備
- 設(shè)備處理:設(shè)備處理程序又稱為設(shè)備驅(qū)動(dòng)程序。任務(wù)是用于實(shí)現(xiàn) CPU 和設(shè)備控制器之間的通訊歧胁。由 CPU 向設(shè)備控制器發(fā)出 I/O 指令滋饲,要求設(shè)備控制器完成指定的 I/O 操作;反之 CPU 接收設(shè)備控制器發(fā)來的終端請(qǐng)求喊巍,并給出相應(yīng)和處理
- 文件管理功能:
- 文件存儲(chǔ)空間的管理:為文件分配必要的外存空間屠缭,實(shí)施統(tǒng)一管理,并具有存儲(chǔ)空間分配和回收的功能
- 目錄管理:為每個(gè)文件建立一個(gè)目錄項(xiàng)崭参,方便用戶按照一定規(guī)則存取
- 文件的讀/寫管理和保護(hù)
- 讀寫管理:根據(jù)用戶請(qǐng)求從外存中讀取數(shù)據(jù)呵曹,或?qū)?shù)據(jù)寫入外存
- 文件保護(hù):防止文件被非法竊取和破壞
- 操作系統(tǒng)與用戶之間的接口
- 用戶接口:
- 聯(lián)機(jī)用戶接口:為聯(lián)機(jī)用戶提供,由一組鍵盤操作命令及命令解釋程序組成何暮,即命令行操作
- 脫機(jī)用戶接口
- 圖形用戶接口:將 OS 的各種功能和應(yīng)用程序用icon 直觀逼真的表示出來
- 程序接口 :
- 是為了用戶程序在執(zhí)行中訪問系統(tǒng)資源而設(shè)置的奄喂,是用戶取得操作系統(tǒng)服務(wù)的唯一途徑,方便應(yīng)用程序開發(fā)者使用
- 用戶接口:
- 現(xiàn)代操作系統(tǒng)的新功能
- 系統(tǒng)安全
- 網(wǎng)路的功能和服務(wù)
- 支持多媒體
- 處理機(jī)的管理管理功能
- 5.OS 結(jié)構(gòu)化設(shè)計(jì)
- 5.1 傳統(tǒng)的操作系統(tǒng)結(jié)構(gòu):
- 5.1.1 無結(jié)構(gòu)操作系統(tǒng):一組解決問題的代碼的無序的組合
- 5.1.2 模塊化結(jié)構(gòu) OS:按照功能詳細(xì)劃分為多個(gè)具有一定獨(dú)立性和解決具體問題的模塊海洼,模塊與模塊間通過預(yù)留的接口進(jìn)行交互跨新,局限性在于開發(fā)時(shí)的問題,主要是接口使用的問題和開發(fā)是齊頭并進(jìn)的坏逢,但需要互相調(diào)用時(shí)域帐,無法保證調(diào)用的代碼是正確的,會(huì)有很多測(cè)試上的問題
- 5.1.3 分層式機(jī)構(gòu):設(shè)計(jì) a0層是整,調(diào)用底層硬件肖揣,在經(jīng)過繁多測(cè)試后,保證 ao 么有問題后浮入,再設(shè)計(jì) a1層龙优,調(diào)用 a0層,以此類推事秀,雖然解決了模塊化 OS 結(jié)構(gòu)的問題彤断,但具有效率上的問題
- 5.2 客戶/服務(wù)器模式
- 簡(jiǎn)稱為 C/S(Client/Server)模式野舶,在上世紀(jì)90年代后開始風(fēng)靡全球,廣泛采用這個(gè)模式
- 組成:
- 客戶機(jī):可處理一些本地業(yè)務(wù)瓦糟,也可用通過 LAN 向服務(wù)器發(fā)送請(qǐng)求筒愚,請(qǐng)求某項(xiàng)服務(wù),如查看文件等
- 服務(wù)器:一般為一個(gè)較大的機(jī)器菩浙,存儲(chǔ)一些重要的文件和數(shù)據(jù)庫(kù)系統(tǒng)巢掺,接收客戶機(jī)的請(qǐng)求,做出相應(yīng)的相應(yīng)
- 網(wǎng)絡(luò)系統(tǒng):用于連接客戶機(jī)和服務(wù)器
- 5.3 面向?qū)ο蟮某绦蛟O(shè)計(jì)
- 5.4 微內(nèi)核 OS 結(jié)構(gòu)
- 基本概念:
- 足夠小的內(nèi)核:不是完整的 OS劲蜻,但是 具有OS 最基本的功能陆淀,如①與硬件聯(lián)系最緊密的部分②一些較基本的功能③客戶機(jī)與服務(wù)器之間的通信
- 基于客戶機(jī)/服務(wù)器模式:在單機(jī)微內(nèi)核操作系統(tǒng)中無一例外都采取了C/S 模式,在單機(jī)下先嬉,通過向微內(nèi)核外的服務(wù)器發(fā)送請(qǐng)求轧苫,獲得相應(yīng),實(shí)現(xiàn)大部分的功能疫蔓,如向進(jìn)程管理服務(wù)器含懊,文件管理服務(wù)器等發(fā)送請(qǐng)求,這些都是作為進(jìn)程來實(shí)現(xiàn)的
- 應(yīng)用"機(jī)制與策略分離"原理:機(jī)制->實(shí)現(xiàn)某一功能的執(zhí)行機(jī)構(gòu)(放在內(nèi)核中)衅胀,策略->在機(jī)制基礎(chǔ)上岔乔,利用一些參數(shù)和算法優(yōu)化該功能(不再內(nèi)核中)
- 采用面向?qū)ο蠹夹g(shù):采用面向?qū)ο蠹夹g(shù)來設(shè)計(jì)
- 基本概念:
- 5.5 微內(nèi)核的基本功能:
- 進(jìn)程(線程)管理:進(jìn)程的調(diào)度->機(jī)制部分,對(duì)于進(jìn)程如何分類滚躯,優(yōu)先級(jí)的確認(rèn)雏门,都屬于策略,不放在內(nèi)核中
- 低級(jí)存儲(chǔ)器管理:如實(shí)現(xiàn)將用戶空間的邏輯地址轉(zhuǎn)換為內(nèi)存空間的物理地址的頁(yè)表機(jī)制和地址變換機(jī)制掸掏,這一部分是依賴硬件茁影,放在微內(nèi)核
- 中斷和陷入處理:捕獲中斷和陷入事件,進(jìn)行相應(yīng)的前期處理丧凤,如中斷保護(hù)和識(shí)別中斷和陷入的類型
- 5.1 傳統(tǒng)的操作系統(tǒng)結(jié)構(gòu):