1.1 操作系統(tǒng)的基本概念
1.1.1 操作系統(tǒng)的概念
操作系統(tǒng)(Operating System免胃, OS)是指控制和管理整個(gè)計(jì)算機(jī)系統(tǒng)的硬件和軟件資源,并合理地組織調(diào)度計(jì)算機(jī)的工作和資源的分配涎才;以提供給用戶和其他軟件方便的接口和環(huán)境;它是計(jì)算機(jī)系統(tǒng)中最基本的系統(tǒng)軟件。
1.1.2 操作系統(tǒng)的功能和目標(biāo)
1.1.2.1 作為系統(tǒng)資源的管理者
- 處理機(jī)管理
在多道程序環(huán)境下苞轿,處理機(jī)的分配和運(yùn)行都以進(jìn)程(或線程)為基本單位,因而對(duì)處理機(jī)的管理可歸結(jié)為對(duì)進(jìn)程的管理为流。并發(fā)是指在計(jì)算機(jī)內(nèi)同時(shí)運(yùn)行多個(gè)進(jìn)程呕屎,因此進(jìn)程何時(shí)創(chuàng)建、何時(shí)撤銷敬察、如何管理秀睛、如何避免沖突、合理共享就是進(jìn)程管理的最主要的任務(wù)莲祸。進(jìn)程管理的主要功能包括進(jìn)程控制蹂安、進(jìn)程同步、進(jìn)程通信锐帜、死鎖處理田盈、處理機(jī)調(diào)度等。
- 存儲(chǔ)器管理
存儲(chǔ)器管理是為了給多道程序的運(yùn)行提供良好的環(huán)境缴阎,方便用戶使用及提高內(nèi)存的利用率允瞧,主要包括內(nèi)存分配與回收、地址映射蛮拔、內(nèi)存保護(hù)與共享和內(nèi)存擴(kuò)充等功能述暂。
- 文件管理
計(jì)算機(jī)中的信息都是以文件的形式存在的,操作系統(tǒng)中負(fù)賁文件管理的部分稱為文件系統(tǒng)建炫。文件管理包括文件存儲(chǔ)空間的管理畦韭、目錄管理及文件讀寫管理和保護(hù)等。
- 設(shè)備管理
設(shè)備管理的主要任務(wù)是完成用戶的IO請(qǐng)求肛跌,方便用戶使用各種設(shè)備艺配,并提高設(shè)備的利用率察郁,主要包括緩沖管理、設(shè)備分配转唉、設(shè)備處理和虛擬設(shè)備等功能皮钠。
1.1.2.2 向上層提供方便易用的服務(wù)
- 命令接口
使用命令接口進(jìn)行作業(yè)控制的主要方式有兩種,即聯(lián)機(jī)控制方式和脫機(jī)控制方式酝掩。按作業(yè)控制方式的不同鳞芙,可將命令接口分為聯(lián)機(jī)命令接口和脫機(jī)命令接口。
- 聯(lián)機(jī)命令接口期虾,用戶說(shuō)一句原朝,系統(tǒng)跟著做一句。如命令行CMD等等
- 脫機(jī)命令接口镶苞,用戶說(shuō)一堆喳坠,系統(tǒng)跟著做一堆。如批處理命令接口bat等等
- 程序接口
程序接口由一組系統(tǒng)調(diào)用(也稱廣義指令)組成茂蚓。用戶通過(guò)在程序中使用這些系統(tǒng)調(diào)用來(lái)請(qǐng)求操作系統(tǒng)為其提供服務(wù)壕鹉、如使用各種外部設(shè)備、申請(qǐng)分配和回收內(nèi)存及其他各種要求聋涨。
普通用戶不能直接使用程序接口晾浴,只能通過(guò)程序代碼簡(jiǎn)介使用
1.1.2.3 對(duì)硬件機(jī)器的拓展
沒(méi)有任何軟件支持的計(jì)算機(jī)成為裸機(jī)。在裸機(jī)上安裝的操作系統(tǒng)牍白,可以提供資源管理功能和方便用戶的服務(wù)功能脊凰,將裸機(jī)改造成功能更強(qiáng)、使用更方便的機(jī)器
通常把覆蓋了軟件的機(jī)器成為擴(kuò)充機(jī)器茂腥,又稱之為虛擬機(jī)
1.1.3 操作系統(tǒng)的特征
1.1.3.1 并發(fā)
并發(fā):指兩個(gè)或多個(gè)事件在同一時(shí)間間隔內(nèi)發(fā)生狸涌。這些事件宏觀上是同時(shí)發(fā)生的,但微觀上是交替發(fā)生的最岗。
注意區(qū)別并行和并發(fā)的區(qū)別
并行:指兩個(gè)或多個(gè)事件在同一時(shí)刻同時(shí)發(fā)生帕胆。
操作系統(tǒng)的并發(fā)性指計(jì)算機(jī)系統(tǒng)中“同時(shí)”運(yùn)行著多個(gè)程序,這些程序宏觀上看是同時(shí)運(yùn)行著的般渡,而微觀上看是交替運(yùn)行的懒豹。操作系統(tǒng)就是伴隨著“多道程序技術(shù)”而出現(xiàn)的。因此驯用,操作系統(tǒng)和程序并發(fā)是一起誕生的脸秽。
單核CPU同一時(shí)刻只能執(zhí)行一個(gè)程序,各個(gè)程序只能并發(fā)地執(zhí)行
多核CPU同一時(shí)刻可以同時(shí)執(zhí)行多個(gè)程序晨汹,多個(gè)程序可以并行地執(zhí)行
如4 核CPU豹储,意味著可以并行地執(zhí)行4個(gè)程序
1.1.3.2 共享
共享即資源共享贷盲,是指系統(tǒng)中的資源可供內(nèi)存中多個(gè)并發(fā)執(zhí)行的進(jìn)程共同使用淘这。
- 互斥共享方式:系統(tǒng)中的某些資源剥扣,雖然可以提供給多個(gè)進(jìn)程使用,但一個(gè)時(shí)間段內(nèi)只允許一個(gè)進(jìn)程訪問(wèn)該資源
- 同時(shí)共享方式:系統(tǒng)中的某些資源铝穷,允許一個(gè)時(shí)間段內(nèi)由多個(gè)進(jìn)程“同時(shí)”對(duì)它們進(jìn)行訪問(wèn)
所謂的“同時(shí)”往往是宏觀上的钠怯,而在微觀上,這些進(jìn)程可能是交替地對(duì)該資源進(jìn)行訪問(wèn)的,即分時(shí)共享
并發(fā)和共享是操作系統(tǒng)兩個(gè)最基本的特征曙聂,兩者之間互為存在的條件:①資源共享是以程序的并發(fā)為條件的晦炊,若系統(tǒng)不允許程序并發(fā)執(zhí)行,則自然不存在資源共享問(wèn)題;②若系統(tǒng)不能對(duì)資源共享實(shí)施有效的管理宁脊,則必將影響到程序的并發(fā)執(zhí)行断国,甚至根本無(wú)法并發(fā)執(zhí)行。
1.1.3.3 虛擬
虛擬是指把一個(gè)物理上的實(shí)體變?yōu)槿舾蓚€(gè)邏輯上的對(duì)應(yīng)物榆苞。物理實(shí)體(前者)是實(shí)際存在的稳衬,而邏輯上對(duì)應(yīng)物(后者)是用戶感受到的。
操作系統(tǒng)的虛擬技術(shù)可歸納為:時(shí)分復(fù)用技術(shù)坐漏,如處理器的分時(shí)共享:空分復(fù)用技術(shù),如虛擬存儲(chǔ)器薄疚。
1.1.3.4 異步
異步是指,在多道程序環(huán)境下赊琳,允許多個(gè)程序并發(fā)執(zhí)行街夭,但由于資源有限,進(jìn)程的執(zhí)行不是一貫到底的躏筏,而是走走停停板丽,以不可預(yù)知的速度向前推進(jìn),這就是進(jìn)程的異步性寸士。
1.2 操作系統(tǒng)的發(fā)展與分類
1.2.1 手工操作階段
用戶在計(jì)算機(jī)上算題的所有工作都要人工千預(yù)檐什,如程序的裝入、運(yùn)行弱卡、結(jié)果的輸出等乃正。
主要缺點(diǎn):用戶獨(dú)占全機(jī)、人機(jī)速度矛盾導(dǎo)致資源利用率極低
1.2.2 批處理階段
1.2.2.1 單道批處理系統(tǒng)
引入脫機(jī)輸入/輸出技術(shù)(用外圍機(jī)+磁帶完成)婶博,并由監(jiān)督程序負(fù)責(zé)控制作業(yè)的輸入瓮具、輸出
主要優(yōu)點(diǎn):緩解了一定程度的人機(jī)速度矛盾,資源利用率有所提升凡人。
主要缺點(diǎn):內(nèi)存中僅能有一道程序運(yùn)行名党,只有該程序運(yùn)行結(jié)束之后才能調(diào)入下一道程序。CPU有大量的時(shí)間是在空閑等待I/O完成挠轴。資源利用率依然很低传睹。
1.2.2.2 多道批處理系統(tǒng)
多道程序設(shè)計(jì)技術(shù)允許多個(gè)程序同時(shí)進(jìn)入內(nèi)存并允許它們?cè)?CPU中交替地運(yùn)行,這些程序共享系統(tǒng)中的各種硬/軟件資源岸晦。
主要優(yōu)點(diǎn):多道程序并發(fā)執(zhí)行欧啤,共享計(jì)算機(jī)資源睛藻。資源利用率大幅提升,CPU和其他資源更能保持“忙碌”狀態(tài)邢隧,系統(tǒng)吞吐量增大店印。
主要缺點(diǎn):用戶響應(yīng)時(shí)間長(zhǎng),沒(méi)有人機(jī)交互功能(用戶提交自己的作業(yè)之后就只能等待計(jì)算機(jī)處理完成倒慧,中間不能控制自己的作業(yè)執(zhí)行按摘。[1])
操作系統(tǒng)正式誕生,用于支持多道程序并發(fā)運(yùn)行
1.2.3 分時(shí)操作系統(tǒng)
分時(shí)操作系統(tǒng):計(jì)算機(jī)以時(shí)間片為單位輪流為各個(gè)用戶/作業(yè)服務(wù)纫谅,各個(gè)用戶可通過(guò)終端與計(jì)算機(jī)進(jìn)行交互炫贤。
主要優(yōu)點(diǎn):用戶請(qǐng)求可以被即時(shí)響應(yīng),解決了人機(jī)交互問(wèn)題付秕。允許多個(gè)用戶同時(shí)使用一臺(tái)計(jì)算機(jī)照激,并且用戶對(duì)計(jì)算機(jī)的操作相互獨(dú)立,感受不到別人的存在盹牧。
主要缺點(diǎn):不能優(yōu)先處理一些緊急任務(wù)俩垃。操作系統(tǒng)對(duì)各個(gè)用戶/作業(yè)都是完全公平的,循環(huán)地為每個(gè)用戶/作業(yè)服務(wù)一個(gè)時(shí)間片汰寓,不區(qū)分任務(wù)的緊急性口柳。
1.2.4實(shí)時(shí)操作系統(tǒng)
為了能在某個(gè)時(shí)間限制內(nèi)完成某些緊急任務(wù)而不需要時(shí)間片排隊(duì),誕生了實(shí)時(shí)操作系統(tǒng)有滑。根據(jù)時(shí)間限制可分為兩種情況
- 硬實(shí)時(shí)系統(tǒng):必須在絕對(duì)嚴(yán)格的規(guī)定時(shí)間內(nèi)完成處理跃闹,如:導(dǎo)彈控制系統(tǒng)、自動(dòng)駕駛系統(tǒng)
- 軟實(shí)時(shí)系統(tǒng):能接受偶爾違反時(shí)間規(guī)定毛好,如:12306火車訂票系統(tǒng)
在實(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í)性和可靠性
1.2.5 其他幾種操作系統(tǒng)
網(wǎng)絡(luò)操作系統(tǒng):是伴隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展而誕生的找默,能把網(wǎng)絡(luò)中各個(gè)計(jì)算機(jī)有機(jī)地結(jié)合起來(lái),實(shí)現(xiàn)數(shù)據(jù)傳送等功能吼驶,實(shí)現(xiàn)網(wǎng)絡(luò)中各種資源的共享(如文件共享)和各臺(tái)計(jì)算機(jī)之間的通信惩激。(如:Windows NT 就是一種典型的網(wǎng)絡(luò)操作系統(tǒng),網(wǎng)站服務(wù)器就可以使用)
分布式操作系統(tǒng):主要特點(diǎn)是分布性和并行性蟹演。系統(tǒng)中的各臺(tái)計(jì)算機(jī)地位相同风钻,任何工作都可以分布在這些計(jì)算機(jī)上,由它們并行酒请、協(xié)同完成這個(gè)任務(wù)骡技。
個(gè)人計(jì)算機(jī)操作系統(tǒng):如Windows XP、MacOS羞反,方便個(gè)人使用布朦。
1.3 操作系統(tǒng)的運(yùn)行環(huán)境
1.3.1 操作系統(tǒng)的運(yùn)行機(jī)制
CPU 上會(huì)運(yùn)行兩種程序毛萌,一種是操作系統(tǒng)內(nèi)核程序,一種是應(yīng)用程序
內(nèi)核是操作系統(tǒng)最重要最核心的部分喝滞,也是最接近硬件的部分
操作系統(tǒng)的功能未必都在內(nèi)核中,如圖形化用戶界面GUI
應(yīng)用程序只能使用“非特權(quán)指令”膏秫,如:加法指令右遭、減法指令等
操作系統(tǒng)內(nèi)核作為“管理者”,有時(shí)會(huì)讓CPU執(zhí)行一些“特權(quán)指令”缤削,如:內(nèi)存清零指令窘哈。這些指令影響重大,只允許“管理者”——即操作系統(tǒng)內(nèi)核來(lái)使用
CPU 有兩種狀態(tài)亭敢,“內(nèi)核態(tài)”和“用戶態(tài)”
- 處于內(nèi)核態(tài)時(shí)滚婉,說(shuō)明此時(shí)正在運(yùn)行的是內(nèi)核程序,此時(shí)可以執(zhí)行特權(quán)指令
- 處于用戶態(tài)時(shí)帅刀,說(shuō)明此時(shí)正在運(yùn)行的是應(yīng)用程序让腹,此時(shí)只能執(zhí)行非特權(quán)指令
內(nèi)核態(tài)→用戶態(tài):執(zhí)行一條特權(quán)指令——修改PSW的標(biāo)志位為“用戶態(tài)”,這個(gè)動(dòng)作意味著操作系統(tǒng)將主動(dòng)讓出CPU使用權(quán)
用戶態(tài)→內(nèi)核態(tài):由“中斷”引發(fā)扣溺,硬件自動(dòng)完成變態(tài)過(guò)程骇窍,觸發(fā)中斷信號(hào)意味著操作系統(tǒng)將強(qiáng)行奪回CPU的使用權(quán)
1.3.2 中斷和異常的概念
“中斷”會(huì)使CPU由用戶態(tài)變?yōu)閮?nèi)核態(tài),使操作系統(tǒng)重新奪回對(duì)CPU的控制權(quán)
“中斷”是讓操作系統(tǒng)內(nèi)核奪回CPU使用權(quán)的唯一途徑
中斷可以分為內(nèi)中斷和外中斷
- 內(nèi)中斷:與當(dāng)前執(zhí)行的指令有關(guān)锥余,中斷信號(hào)來(lái)源于CPU內(nèi)部腹纳,也稱異常、例外
- 陷阱驱犹、陷入:由陷入指令引發(fā)嘲恍,是應(yīng)用程序故意引發(fā)的
- 故障:由錯(cuò)誤條件引起的,可能被內(nèi)核程序修復(fù)雄驹。內(nèi)核程序修復(fù)故障后會(huì)把CPU使用權(quán)還給應(yīng)用程序佃牛,讓它繼續(xù)執(zhí)行下去。如:缺頁(yè)故障医舆。
- 終止:由致命錯(cuò)誤引起吁脱,內(nèi)核程序無(wú)法修復(fù)該錯(cuò)誤,因此一般不再將CPU使用權(quán)還給引發(fā)終止的應(yīng)用程序彬向,而是直接終止該應(yīng)用程序兼贡。如:整數(shù)除0、非法使用特權(quán)指令
- 外中斷:與當(dāng)前執(zhí)行的指令無(wú)關(guān)娃胆,中斷信號(hào)來(lái)源于CPU外部
- 時(shí)鐘中斷:由時(shí)鐘部件發(fā)來(lái)的中斷信號(hào)
- I/O中斷請(qǐng)求:由輸入/輸出設(shè)備發(fā)來(lái)的中斷信號(hào)
中斷處理過(guò)程見計(jì)組第七章
1.3.3 系統(tǒng)調(diào)用
“系統(tǒng)調(diào)用”是操作系統(tǒng)提供給應(yīng)用程序(程序員/編程人員)使用的接口遍希,可以理解為一種可供應(yīng)用程序調(diào)用的特殊函數(shù),應(yīng)用程序可以通過(guò)系統(tǒng)調(diào)用來(lái)請(qǐng)求獲得操作系統(tǒng)內(nèi)核的服務(wù)
系統(tǒng)調(diào)用的功能可以分為
- 設(shè)備管理:完成設(shè)備的請(qǐng)求/釋放/啟動(dòng)等功能
- 文件管理:完成文件的讀/寫/創(chuàng)建/刪除等功能
- 進(jìn)程控制:完成進(jìn)程的創(chuàng)建/撤銷/阻塞/喚醒等功能
- 進(jìn)程通信:完成進(jìn)程之間的消息傳遞/信號(hào)傳遞等功能
- 內(nèi)存管理:完成內(nèi)存的分配/回收等功能
應(yīng)用程序通過(guò)系統(tǒng)調(diào)用請(qǐng)求操作系統(tǒng)的服務(wù)里烦。而系統(tǒng)中的各種共享資源都由操作系統(tǒng)內(nèi)核統(tǒng)一掌管凿蒜,因此凡是與共享資源有關(guān)的操作(如存儲(chǔ)分配禁谦、I/O操作、文件管理等)废封,都必須通過(guò)系統(tǒng)調(diào)用的方式向操作系統(tǒng)內(nèi)核提出服務(wù)請(qǐng)求州泊,由操作系統(tǒng)內(nèi)核代為完成。這樣可以保證系統(tǒng)的穩(wěn)定性和安全性漂洋,防止用戶進(jìn)行非法操作遥皂。
- 陷入指令是在用戶態(tài)執(zhí)行的,執(zhí)行陷入指令之后立即引發(fā)一個(gè)內(nèi)中斷刽漂,使CPU進(jìn)入核心態(tài)
- 發(fā)出系統(tǒng)調(diào)用請(qǐng)求是在用戶態(tài)演训,而對(duì)系統(tǒng)調(diào)用的相應(yīng)處理在核心態(tài)下進(jìn)行
1.4 操作系統(tǒng)的體系結(jié)構(gòu)
原語(yǔ)是一種特殊的程序,具有原子性贝咙。也就是說(shuō)样悟,這段程序的運(yùn)行必須一氣呵成,不可被“中斷”
1.4.1 大內(nèi)核和微內(nèi)核
大內(nèi)核:將操作系統(tǒng)的主要功能模塊都作為系統(tǒng)內(nèi)核庭猩,運(yùn)行在核心態(tài)
- 優(yōu)點(diǎn):高性能
- 缺點(diǎn):內(nèi)核代碼龐大窟她,結(jié)構(gòu)混亂,難以維護(hù)
微內(nèi)核:只把最基本的功能保留在內(nèi)核
- 優(yōu)點(diǎn):內(nèi)核功能少蔼水,結(jié)構(gòu)清晰礁苗,方便維護(hù)
- 缺點(diǎn):需要頻繁地在核心態(tài)和用戶態(tài)之間切換,性能低
變態(tài)的過(guò)程是有成本的徙缴,要消耗不少時(shí)間试伙,頻繁地變態(tài)會(huì)降低系統(tǒng)性能
-
無(wú)法調(diào)試程序/無(wú)法在程序運(yùn)行過(guò)程中輸入一些參數(shù) ?