
OS概述
OS的定義
操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)的一個(gè)系統(tǒng)軟件,它是這樣一些程序模塊的集合 ——它們能有效地組織和管理計(jì)算機(jī)系統(tǒng)中的硬件及軟件資源,合理地組織計(jì)算機(jī)工作流程,控制程序的執(zhí)行,并向用戶提供各種服務(wù)功能,使得用戶能夠靈活,方便,有效地使用計(jì)算機(jī),并使整個(gè)計(jì)算機(jī)系統(tǒng)能高效地運(yùn)行。
OS的特性
- 并發(fā)性
- 共享性
- 隨機(jī)性
OS的功能
- 進(jìn)程管理
- 存儲(chǔ)管理:內(nèi)存分配,地址映射,內(nèi)存保護(hù),內(nèi)存擴(kuò)充;
- 文件管理:文件存儲(chǔ)空間的管理,文件操作的一般管理,目錄管理,文件的存取控制;
- 設(shè)備管理:緩沖區(qū)管理,設(shè)備分配,設(shè)備驅(qū)動(dòng),設(shè)備無(wú)關(guān)性;
- 作業(yè)管理
- 其他功能
OS的發(fā)展歷史
OS的分類
- 批處理操作系統(tǒng)
- 分時(shí)操作系統(tǒng):將一臺(tái)計(jì)算機(jī)很好的提供給多個(gè)用戶同時(shí)使用,提高計(jì)算機(jī)的利用率。
- 實(shí)時(shí)操作系統(tǒng):是計(jì)算機(jī)系統(tǒng)可以立即對(duì)用戶程序要求或者外部信號(hào)作出反應(yīng)的系統(tǒng),它可以分為硬實(shí)時(shí)系統(tǒng)和軟實(shí)時(shí)系統(tǒng)。
- 嵌入式操作系統(tǒng)
- 個(gè)人計(jì)算機(jī)操作系統(tǒng)
OS硬件環(huán)境
特權(quán)指令
特權(quán)指令是指在指令系統(tǒng)中那些只能由操作系統(tǒng)使用的指令。
處理器工作狀態(tài)劃分成:管態(tài)和目態(tài)
管態(tài)
操作系統(tǒng)管理程序運(yùn)行的狀態(tài),具有較高的特權(quán)級(jí)別,又稱為特權(quán)態(tài),系統(tǒng)態(tài)。
目態(tài)
用戶程序運(yùn)行時(shí)的狀態(tài),具有較低的特權(quán)級(jí)別,又稱為普通態(tài),用戶態(tài)。
程序狀態(tài)字
程序狀態(tài)字是指指示處理器狀態(tài)的寄存器
PSW通常包括以下狀態(tài)代碼
- CPU的工作狀態(tài)碼:
指明管態(tài)還是目態(tài),用來(lái)說(shuō)明當(dāng)前在CPU上執(zhí)行的是操作系統(tǒng)還是一般用戶。 - 條件碼:
反映指令執(zhí)行后的結(jié)果特征。 - 中斷屏蔽碼:
指出是否允許中斷。
多級(jí)存儲(chǔ)體系
計(jì)算機(jī)存儲(chǔ)系統(tǒng)的設(shè)計(jì)主要考慮三個(gè)問(wèn)題:容量,速度,成本。

沿著層次下降時(shí),每比特的價(jià)格將下降,容量將增大,速度將變慢,處理器的訪問(wèn)頻率下降!
用戶接口與作業(yè)管理
作業(yè)的概念
用戶在一次計(jì)算過(guò)程中,或一次事務(wù)處理過(guò)程中,要求計(jì)算機(jī)系統(tǒng)所做工作的總稱。
用戶與操作系統(tǒng)之間的接口分為:作業(yè)級(jí)接口和程序級(jí)接口
作業(yè)級(jí)接口
操作系統(tǒng)為用戶對(duì)作業(yè)運(yùn)行全過(guò)程控制提供的功能。
- 聯(lián)機(jī)接口(交互式)
- 脫機(jī)接口(批處理)
程序級(jí)接口
系統(tǒng)為用戶在程序一級(jí)提供有關(guān)服務(wù)而設(shè)置的,由一組系統(tǒng)調(diào)用命令組成。
- 負(fù)責(zé)管理和控制運(yùn)行的程序。
- 并在這些程序與系統(tǒng)控制的資源和提供的服務(wù)間實(shí)現(xiàn)交互作用。
JCB
作業(yè)控制塊是批處理作業(yè)存在的標(biāo)志,其中保存有系統(tǒng)對(duì)于作業(yè)進(jìn)行管理所需要的全部信息,它們被保存于磁盤區(qū)域中。
- 記錄系統(tǒng)管理作業(yè)所需要的全部信息
- 作業(yè)控制塊是批處理作業(yè)存在的標(biāo)志
- 位于磁盤固定區(qū)域中(長(zhǎng)度固定)
作業(yè)的狀態(tài)及轉(zhuǎn)換
個(gè)作業(yè)從進(jìn)入系統(tǒng)到運(yùn)行結(jié)束經(jīng)歷四個(gè)不同的狀態(tài)
- “進(jìn)入狀態(tài)”
- “后備狀態(tài)”
- “執(zhí)行狀態(tài)”
-
“完成狀態(tài)”
作業(yè)的狀態(tài)及轉(zhuǎn)換.png
作業(yè)調(diào)度算法
- 先來(lái)先服務(wù)算法(FCFS:First Come First Serve)
- 最短作業(yè)優(yōu)先算法(SJF:Shortest Job First)
- 最高響應(yīng)比優(yōu)先算法(HRN:Highest Response Ratio Next)
響應(yīng)比R
= 作業(yè)周轉(zhuǎn)時(shí)間 / 作業(yè)處理時(shí)間
=(作業(yè)處理時(shí)間+作業(yè)等待時(shí)間)/ 作業(yè)處理時(shí)間
= 1 +(作業(yè)等待時(shí)間 / 作業(yè)處理時(shí)間)
系統(tǒng)調(diào)用
用戶在程序中調(diào)用操作系統(tǒng)提供的一些子功能。
- 一種特殊的過(guò)程調(diào)用,由特殊的機(jī)器指令實(shí)現(xiàn)(每種機(jī)器的機(jī)器指令集中都有一條系統(tǒng)調(diào)用指令——訪管指令)
- 系統(tǒng)調(diào)用是操作系統(tǒng)提供給編程人員的
唯一接口 - 從目態(tài)轉(zhuǎn)入管態(tài)
- 系統(tǒng)調(diào)用是一個(gè)低級(jí)過(guò)程,只能由匯編語(yǔ)言直接訪問(wèn)
- 利用系統(tǒng)調(diào)用,動(dòng)態(tài)請(qǐng)求和釋放系統(tǒng)資源,完成與硬件相關(guān)的工作以及控制程序的執(zhí)行等
進(jìn)程管理
程序順序執(zhí)行的特點(diǎn)
- 順序性
處理機(jī)嚴(yán)格按照程序所規(guī)定的順序執(zhí)行,即每個(gè)操作必須在下一個(gè)操作開始之前結(jié)束。
- 封閉性
程序一旦開始執(zhí)行,其計(jì)算結(jié)果不受外界的影響,當(dāng)程序的初始條件給定之后,其后的狀態(tài)只能由程序本身確定,即只有本程序才能改變它。
- 可再現(xiàn)性
程序執(zhí)行的結(jié)果與初始條件有關(guān),而與執(zhí)行時(shí)間無(wú)關(guān)。即只要程序的初始條件相同,它的執(zhí)行結(jié)果是相同的,不論它在什么時(shí)間執(zhí)行,也不管計(jì)算機(jī)的運(yùn)行速度。
多道程序并發(fā)執(zhí)行的特點(diǎn)
程序并發(fā)執(zhí)行(定義)
若干個(gè)程序段同時(shí)在系統(tǒng)中運(yùn)行,這些程序的執(zhí)行在時(shí)間上是重迭的,一個(gè)程序段的執(zhí)行尚未結(jié)束,另一個(gè)程序段的執(zhí)行已經(jīng)開始,即使這種重迭是很小的,也稱這幾個(gè)程序段是并發(fā)執(zhí)行的。

多道程序環(huán)境具有以下特點(diǎn)
- 獨(dú)立性
- 隨機(jī)性
- 資源共享性
進(jìn)程的概念
進(jìn)程是具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。
進(jìn)程的狀態(tài)及變遷

進(jìn)程調(diào)度算法
- 先進(jìn)先出進(jìn)程調(diào)度算法(FIFO):按照進(jìn)程就緒的先后次序來(lái)調(diào)度進(jìn)程。
- 基于優(yōu)先數(shù)的調(diào)度(HPF—Highest Priority First):優(yōu)先選擇就緒隊(duì)列中優(yōu)先級(jí)最高的進(jìn)程投入運(yùn)行。
- 時(shí)間片輪轉(zhuǎn)程序調(diào)度算法:把CPU劃分成若干時(shí)間片,并且按順序賦給就緒隊(duì)列中的每一個(gè)進(jìn)程,進(jìn)程輪流占有CPU,當(dāng)時(shí)間片用完時(shí),即使進(jìn)程未執(zhí)行完畢,系統(tǒng)也剝奪該進(jìn)程的CPU,將該進(jìn)程排在就緒隊(duì)列末尾。同時(shí)系統(tǒng)選擇另一個(gè)進(jìn)程運(yùn)行。
進(jìn)程控制
原語(yǔ):創(chuàng)建、撤消進(jìn)程以及完成進(jìn)程各狀態(tài)之間的轉(zhuǎn)換,由具有特定功能的原語(yǔ)完成。
- 創(chuàng)建進(jìn)程原語(yǔ)
- 撤消進(jìn)程原語(yǔ)
- 阻塞原語(yǔ)
- 喚醒原語(yǔ)
- 掛起原語(yǔ)
- 激活原語(yǔ)
進(jìn)程撤銷
收回進(jìn)程所占有的資源,撤消該進(jìn)程的PCB。
進(jìn)程阻塞
處于運(yùn)行狀態(tài)的進(jìn)程,在其運(yùn)行過(guò)程中期待某一事件發(fā)生,如等待鍵盤輸入、等待磁盤數(shù)據(jù)傳輸完成、等待其它進(jìn)程發(fā)送消息,當(dāng)被等待的事件未發(fā)生時(shí),由進(jìn)程自己執(zhí)行阻塞原語(yǔ),使自己由運(yùn)行態(tài)變?yōu)樽枞麘B(tài)。阻塞是因?yàn)橐却硞€(gè)資源而無(wú)法運(yùn)行。
進(jìn)程喚醒
一個(gè)正在運(yùn)行的進(jìn)程會(huì)因等待某事件(例如,等待打印機(jī))的發(fā)生,由運(yùn)行狀態(tài)轉(zhuǎn)換成阻塞狀態(tài),當(dāng)它等待的事件發(fā)生后,這個(gè)進(jìn)程將由阻塞狀態(tài)轉(zhuǎn)換成就緒狀態(tài)。這種轉(zhuǎn)換由進(jìn)程喚醒操作完成。
進(jìn)程掛起
掛起則是可以運(yùn)行,但被臨時(shí)置為睡眠。
※ 進(jìn)程的互斥
一組并發(fā)進(jìn)程中的一個(gè)或多個(gè)程序段,因共享某一公有資源而導(dǎo)致它們必須以一個(gè)不允許交叉執(zhí)行的單位執(zhí)行。
※ 臨界資源
一次僅允許一個(gè)進(jìn)程使用的資源稱為臨界資源。
※ 臨界區(qū)
在每個(gè)進(jìn)程中,訪問(wèn)臨界資源的那段程序,稱為臨界區(qū)或臨界段。
※ 信號(hào)量
信號(hào)燈是一個(gè)確定的二元組(s,q),s是一個(gè)具有非負(fù)初值的整型變量,s是信號(hào)量,q是一個(gè)初始狀態(tài)為空的隊(duì)列。
- 信號(hào)量
s代表資源實(shí)體或并發(fā)進(jìn)程的狀態(tài),初值只能為0或正整數(shù)。 -
S>0,代表可供并發(fā)進(jìn)程使用的資源個(gè)數(shù)(臨界資源則只有1個(gè))。 -
S=0,空閑資源數(shù)為0。 -
S<0,代表有|s|個(gè)進(jìn)程等待臨界資源以進(jìn)入臨界區(qū)。 -
S的值只能由p、v原語(yǔ)改變;其他改變s值的指令均為非法。
※ PV操作
-
p、v操作用以改變信號(hào)量的值; - 是通過(guò)
PV原語(yǔ)來(lái)完成的:p(s)和v(s)。 -
p(s):使信號(hào)量s的值減1; -
v(s):使信號(hào)量s的值加1; - 既,
P減V加
p(s)操作的主要?jiǎng)幼魅缦?- s值減1
- 若相減結(jié)果大于或等于0,則進(jìn)程繼續(xù)執(zhí)行
- 若相減結(jié)果小于零,該進(jìn)程被封鎖,并將它插入到該信號(hào)燈的等待隊(duì)列中,然后轉(zhuǎn)進(jìn)程調(diào)度程序
v(s)操作的主要?jiǎng)幼魅缦?- s值加1
- 若相加結(jié)果大于零,進(jìn)程繼續(xù)執(zhí)行
- 若相加結(jié)果小于或等于零,則從該認(rèn)號(hào)燈的等待隊(duì)列中移出一個(gè)進(jìn)程,解除它的等待狀態(tài),將其轉(zhuǎn)變?yōu)榫途w狀態(tài),并將其加入就緒隊(duì)列,然后使本操作的進(jìn)程繼續(xù)執(zhí)行。
※ 進(jìn)程的互斥與同步
- 互斥——
間接制約,共享臨界資源引發(fā)的并發(fā)進(jìn)程間的制約。 - 同步——
直接制約,并發(fā)進(jìn)程間相互共享對(duì)方私有資源引發(fā)的。
※ 生產(chǎn)者-消費(fèi)者問(wèn)題
- 生產(chǎn)者——把系統(tǒng)中釋放某一類資源的進(jìn)程統(tǒng)稱為生產(chǎn)者。
- 消費(fèi)者——把系統(tǒng)中使用某一類資源的進(jìn)程統(tǒng)稱為消費(fèi)者。
- 生產(chǎn)者——消費(fèi)者問(wèn)題:一個(gè)長(zhǎng)度為n的有界緩沖區(qū)被一組生產(chǎn)者和一組消費(fèi)者共享,形成生產(chǎn)者消費(fèi)者問(wèn)題。
進(jìn)程間通信
又稱高級(jí)通信;進(jìn)程之間直接以較高的效率傳送較多的數(shù)據(jù)的信息交換方式稱為進(jìn)程間通信。
常用的進(jìn)程通信方式有管道、共享內(nèi)存、消息機(jī)制。
線程
進(jìn)程內(nèi)一個(gè)相對(duì)獨(dú)立的,可獨(dú)立調(diào)度和指派的執(zhí)行單元;是進(jìn)程中的一個(gè)執(zhí)行路徑。
進(jìn)程與線程的區(qū)別與聯(lián)系
- 進(jìn)程是
資源分配和處理機(jī)調(diào)度的基本單位。 - 線程與資源分配無(wú)關(guān);一個(gè)進(jìn)程內(nèi)的多個(gè)線程共享該進(jìn)程的資源。
- 進(jìn)程具有完整獨(dú)立的
虛地址空間,而線程則只能繼承和共享這個(gè)空間。 - 一個(gè)進(jìn)程可以包含一個(gè)以上的線程

存儲(chǔ)管理
存儲(chǔ)管理的目的
- 充分利用內(nèi)存,為多道程序并發(fā)執(zhí)行提供存儲(chǔ)基礎(chǔ)。
- 盡可能方便用戶使用,即用戶程序中不必考慮硬件細(xì)節(jié)。
- 解決程序比實(shí)際內(nèi)存大的問(wèn)題。
- 解決內(nèi)存保護(hù)與安全。
- 解決共享問(wèn)題。
存儲(chǔ)管理任務(wù)
▼ 內(nèi)存空間的管理、分配與回收
▼ 存儲(chǔ)共享
▼ 存儲(chǔ)保護(hù)
▼ 內(nèi)存擴(kuò)充
▼ 地址映射
- 邏輯地址(相對(duì)地址,虛地址)
用戶程序經(jīng)過(guò)匯編或編譯后形成目標(biāo)代碼,目標(biāo)代碼通常采用相對(duì)地址的形式,其首地址為0,其余指令中的地址都相對(duì)于首地址而編址。不能用邏輯地址在內(nèi)存中讀取信息。
- 物理地址(絕對(duì)地址,實(shí)地址)
內(nèi)存中存儲(chǔ)單元的實(shí)際地址,可直接尋址。
- 地址映射
邏輯地址轉(zhuǎn)換為運(yùn)行時(shí)由機(jī)器直接尋址的物理地址,這一過(guò)程稱為地址映射。
靜態(tài)地址轉(zhuǎn)換
當(dāng)用戶程序被裝入內(nèi)存時(shí),一次性實(shí)現(xiàn)邏輯地址到物理地址的轉(zhuǎn)換,以后不再轉(zhuǎn)換,一般在裝入內(nèi)存時(shí)由軟件完成。
動(dòng)態(tài)地址轉(zhuǎn)換
在程序運(yùn)行過(guò)程中要訪問(wèn)數(shù)據(jù)時(shí)再進(jìn)行地址變換。
虛擬存儲(chǔ)器
程序、數(shù)據(jù)、堆棧的大小可以超過(guò)內(nèi)存的大小,操作系統(tǒng)把程序當(dāng)前使用的部分保留在內(nèi)存,而把其它部分保存在磁盤上,并在需要時(shí)在內(nèi)存和磁盤之間動(dòng)態(tài)交換。得到一個(gè)容量很大的“內(nèi)存”,這就是虛存。
目的
提高內(nèi)存利用率
1.分區(qū)式存儲(chǔ)管理
系統(tǒng)把內(nèi)存用戶區(qū)劃分為若干分區(qū),分區(qū)大小可以相等,也可以不等。一個(gè)進(jìn)程占據(jù)一個(gè)分區(qū)。
- 固定分區(qū)
預(yù)先把可分配的內(nèi)存空間分割成若干個(gè)連續(xù)區(qū)域,每一區(qū)域稱為分區(qū)。
每個(gè)分區(qū)的大小可以相同也可以不同,分區(qū)大小固定不變,每個(gè)分區(qū)裝一個(gè)且只能裝一個(gè)作業(yè)。
缺點(diǎn):內(nèi)存利用率不高
- 可變分區(qū)
內(nèi)存不是預(yù)先劃分好的,作業(yè)裝入時(shí),根據(jù)作業(yè)的需求和內(nèi)存空間的使用情況來(lái)決定是否分配,若有足夠的空間,則按需要分割一部分分區(qū)給該進(jìn)程;否則令其等待內(nèi)存空間。
內(nèi)存管理
空閑塊表——記錄了空閑區(qū)起始地址和長(zhǎng)度。
已分配區(qū)表。
內(nèi)存分配
三種分配算法:首先適應(yīng)分配算法、最佳適應(yīng)分配算法、最壞適應(yīng)分配算法
內(nèi)存回收
當(dāng)某一塊歸還后,前后空間合并,修改內(nèi)存空閑塊表。考慮:上鄰、下鄰、上下相鄰、上下不相鄰。
“碎片”問(wèn)題
經(jīng)過(guò)一段時(shí)間的分配回收后,內(nèi)存中存在很多很小的空閑塊。它們每一個(gè)都很小,不足以滿足分配要求;但其總和滿足分配要求。這些空閑塊被稱為碎片。
分區(qū)存儲(chǔ)管理缺點(diǎn)
- 分區(qū)式作業(yè)必須
連續(xù)存儲(chǔ)。 - 分區(qū)式方式下當(dāng)作業(yè)的地址空間大于內(nèi)存可用分區(qū)空間時(shí),作業(yè)不能馬上運(yùn)行,必須等到空閑分區(qū)和其他分區(qū)釋放后融合成為更大的空閑分區(qū)后才能全部載入內(nèi)存。
- 碎片問(wèn)題(外碎片),內(nèi)存利用率不高,受實(shí)際內(nèi)存容量限制。
2.分頁(yè)式存儲(chǔ)管理
頁(yè)是信息的物理單位,進(jìn)行分頁(yè)是出于系統(tǒng)管理的需要;段是信息的邏輯單位,分段是出于用戶的需要。
基本思想(工作原理)
- 用戶程序劃分
把用戶程序按邏輯頁(yè)劃分成大小相等的部分,稱為頁(yè)。從0開始編制頁(yè)號(hào),頁(yè)內(nèi)地址是相對(duì)于0編址。
- 頁(yè)表
OS為每個(gè)進(jìn)程建立的一張表,存放在主存的固定區(qū)域中,也有可能放在高速緩沖存儲(chǔ)器,或部分放在主存,部分放在高速緩存中,最簡(jiǎn)單的頁(yè)表只包含兩方面的信息:頁(yè)號(hào)、頁(yè)面對(duì)應(yīng)的塊號(hào)。
- 頁(yè)表始址寄存器
用于保存正在運(yùn)行進(jìn)程的頁(yè)表的始址
- 頁(yè)表長(zhǎng)度寄存器
用于保存正在運(yùn)行進(jìn)程的頁(yè)表的長(zhǎng)度
- 邏輯地址:(虛地址)

- 內(nèi)存空間
按頁(yè)的大小劃分為大小相等的區(qū)域,稱為內(nèi)存塊(物理頁(yè)面,頁(yè)框)。
- 內(nèi)存分配
以頁(yè)為單位進(jìn)行分配,并按進(jìn)程的頁(yè)數(shù)多少來(lái)分配。邏輯上相鄰的頁(yè),物理上不一定相鄰。
缺頁(yè)中斷處理
在地址映射過(guò)程中,在頁(yè)表中發(fā)現(xiàn)所要
訪問(wèn)的頁(yè)不在內(nèi)存,則產(chǎn)生缺頁(yè)中斷。操作系統(tǒng)接到此中斷信號(hào)后,就調(diào)出缺頁(yè)中斷處理程序,根據(jù)頁(yè)表中給出的外存地址,將該頁(yè)調(diào)入內(nèi)存,使作業(yè)繼續(xù)運(yùn)行下去。如果內(nèi)存中有空閑塊,則分配一頁(yè),將新調(diào)入頁(yè)裝入內(nèi)存,并修改頁(yè)表中相應(yīng)頁(yè)表項(xiàng)目的駐留位及相應(yīng)的內(nèi)存塊號(hào)。
若此時(shí)內(nèi)存中沒(méi)有空閑塊,則要淘汰某頁(yè),若該頁(yè)在內(nèi)存期間被修改過(guò),則要將其寫回外存
頁(yè)式存儲(chǔ)管理地址變換過(guò)程

頁(yè)式管理的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
- 實(shí)現(xiàn)了作業(yè)或進(jìn)程的
非連續(xù)存放,有效解決了碎片問(wèn)題。 - 實(shí)現(xiàn)了內(nèi)外存統(tǒng)一管理的虛存方式,用戶可利用的存儲(chǔ)空間大大增加。
缺點(diǎn)
- 硬件開銷加大(地址變換,缺頁(yè)中斷等)。
- 增加了系統(tǒng)開銷(缺頁(yè)中斷處理)。
- 抖動(dòng)現(xiàn)象。
- 每個(gè)作業(yè)或進(jìn)程的最后一頁(yè)總有一部分空間得不到利用。
頁(yè)面置換(淘汰)算法
- 理想置換算法—最佳頁(yè)面算法(OPT)
淘汰以后不再需要的或最遠(yuǎn)的將來(lái)才會(huì)用到的頁(yè)面。
- 最近未使用頁(yè)面置換算法(NRU——Not Recently Used)
選擇在最近一段時(shí)間內(nèi)未使用過(guò)的一頁(yè)并淘汰之。
- 先進(jìn)先出頁(yè)面置換算法(FIFO)
選擇在內(nèi)存中駐留時(shí)間最長(zhǎng)的頁(yè)并淘汰之。
3.段式存儲(chǔ)管理
基本思想(工作原理)
- 用戶程序劃分
按程序自身的邏輯關(guān)系劃分為若干個(gè)程序段,每個(gè)程序段都有一個(gè)段名,且有一個(gè)段號(hào)。段號(hào)從0開始,每一段也從0開始編址,段內(nèi)地址是連續(xù)的。
-
邏輯地址
分段式存儲(chǔ)管理邏輯地址.png 內(nèi)存劃分
內(nèi)存空間被動(dòng)態(tài)的劃分為若干個(gè)長(zhǎng)度不相同的區(qū)域,稱為物理段,每個(gè)物理段由起始地址和長(zhǎng)度確定。
- 內(nèi)存分配
以段為單位分配內(nèi)存,每一個(gè)段在內(nèi)存中占據(jù)連續(xù)空間(內(nèi)存隨機(jī)分割,需要多少分配多少),但各段之間可以不連續(xù)存放。
段式虛擬地址是二維的,包括(段號(hào),段內(nèi)地址)。
OS為每個(gè)段指定一個(gè)唯一的段號(hào),段號(hào)與段號(hào)之間無(wú)順序關(guān)系。
段式地址變換
- 段表
包括段號(hào),段長(zhǎng),段首址。
- 段表始址寄存器
用于保存正在運(yùn)行進(jìn)程的段表的始址。
- 段表長(zhǎng)度寄存器
用于保存正在運(yùn)行進(jìn)程的段表的長(zhǎng)度。

段式存儲(chǔ)管理的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
- 實(shí)現(xiàn)了內(nèi)、外存統(tǒng)一管理的虛擬存儲(chǔ)。
- 段長(zhǎng)可以動(dòng)態(tài)增長(zhǎng)。
- 便于信息的共享。
缺點(diǎn)
- 更多的硬件開銷。
- 出現(xiàn)碎片。
- 段長(zhǎng)受內(nèi)存可用區(qū)大小限制。
- 段的置換過(guò)程中出現(xiàn)抖動(dòng)現(xiàn)象。
段式存儲(chǔ)管理、頁(yè)式存儲(chǔ)管理的比較
- 段式存儲(chǔ)管理按程序邏輯結(jié)構(gòu)劃分,頁(yè)式存儲(chǔ)管理按內(nèi)、外存物理結(jié)構(gòu)劃分。
- 段式存儲(chǔ)管理的程序地址是二維的,頁(yè)式存儲(chǔ)管理的程序地址是一維的。
- 段式存儲(chǔ)管理面向用戶,頁(yè)式存儲(chǔ)管理面向系統(tǒng)。
- 段長(zhǎng)由用戶決定,可能不相等;頁(yè)長(zhǎng)由系統(tǒng)決定,一定相等。
4.段頁(yè)式存儲(chǔ)管理
基本思想(工作原理)
在段式存儲(chǔ)管理中結(jié)合分頁(yè)式存儲(chǔ)管理技術(shù),在一個(gè)分段內(nèi)劃分頁(yè)面,即形成段頁(yè)式存儲(chǔ)管理。具體而言,將程序按內(nèi)容或過(guò)程(函數(shù))關(guān)系分成段,每個(gè)分段有自己的段名,每個(gè)段再劃分成若干大小相等的頁(yè);內(nèi)存以與頁(yè)相等的大小劃分成若干塊;用戶程序的一頁(yè)裝入到內(nèi)存的一塊中,如此,一個(gè)段可以裝入到若干個(gè)不連續(xù)的內(nèi)存塊中,段的大小不再受內(nèi)存可用的限制了。
段頁(yè)式地址空間
段頁(yè)式用戶虛擬地址仍然是二維的,按段劃分;地址結(jié)構(gòu)由段號(hào)、段內(nèi)頁(yè)號(hào)、頁(yè)內(nèi)偏移地址組成;用戶使用的仍然是段號(hào)和段內(nèi)偏移地址,由地址變換機(jī)構(gòu)將段內(nèi)偏移地址解釋成頁(yè)號(hào)和頁(yè)內(nèi)偏移地址。
存儲(chǔ)管理中的快表是指聯(lián)想存儲(chǔ)器
顛簸(抖動(dòng))
在虛存中,頁(yè)面在內(nèi)存與外存之間頻繁調(diào)度,以至于調(diào)度頁(yè)面所需時(shí)間比進(jìn)程實(shí)際運(yùn)行的時(shí)間還多,此時(shí)系統(tǒng)效率急劇下降,甚至導(dǎo)致系統(tǒng)崩潰。這種現(xiàn)象稱為顛簸或抖動(dòng)
原因
- 頁(yè)面置換算法不合理。
- 分配給進(jìn)程的物理頁(yè)面數(shù)太少
局部性原理
程序局部性原理
在一段時(shí)間內(nèi)一個(gè)程序的執(zhí)行往往呈現(xiàn)出高度的局部性,表現(xiàn)在時(shí)間與空間兩方面
- 時(shí)間局部性
一條指令被執(zhí)行了,則在不久的將來(lái)它可能再被執(zhí)行。
- 空間局部性
若某一存儲(chǔ)單元被使用,則在一定時(shí)間內(nèi),與該存儲(chǔ)單元相鄰的單元可能被使用。
覆蓋與交換的技術(shù)
交換技術(shù)與覆蓋技術(shù)的共同點(diǎn)
進(jìn)程的程序和數(shù)據(jù)主要放在外存,當(dāng)前需要執(zhí)行的部分放在內(nèi)存,內(nèi)外存之間進(jìn)行信息交換
交換技術(shù)與覆蓋技術(shù)的不同點(diǎn)
與覆蓋技術(shù)相比,交換技術(shù)不要求用戶給出程序段之間的邏輯覆蓋結(jié)構(gòu),交換發(fā)生在進(jìn)程或作業(yè)之間,而覆蓋發(fā)生在同一進(jìn)程或作業(yè)內(nèi)。覆蓋只能覆蓋那些與覆蓋段無(wú)關(guān)的程序段。
文件系統(tǒng)
文件的概念
一組帶標(biāo)識(shí)的在邏輯上有完整意義的信息項(xiàng)的序列,這個(gè)標(biāo)識(shí)為文件名.
- 信息項(xiàng)
構(gòu)成文件內(nèi)容的基本單位。
- 長(zhǎng)度
單個(gè)字節(jié),或多個(gè)字節(jié)。
文件系統(tǒng)的概念
操作系統(tǒng)中統(tǒng)一管理信息資源的一種軟件,管理文件的存儲(chǔ)、檢索、更新,提供安全可靠的共享和保護(hù)手段,并且方便用戶使用。
文件的分類
1.按文件性質(zhì)和用途分類
- 系統(tǒng)文件(關(guān)OS及有關(guān)系統(tǒng)所組成文件)
- 用戶文件
- 庫(kù)文件(標(biāo)準(zhǔn)子程序及常用應(yīng)用程序組成文件,允許用戶使用但不能修改
)
2.按信息保存期限分類
- 臨時(shí)文件
- 永久文件
- 檔案文件
3.按文件的保護(hù)方式分類
- 只讀文件
- 讀寫文件
- 可執(zhí)行文件
4.按文件的邏輯結(jié)構(gòu)分類
- 流式文件
- 記錄式文件
5.按文件的物理結(jié)構(gòu)分類
- 順序文件
- 鏈接文件
- 索引文件
文件的邏輯結(jié)構(gòu)
指從用戶觀點(diǎn)看到的文件組織形式
流式文件
構(gòu)成文件的基本單位是字符,文件是有邏輯意義的、無(wú)結(jié)構(gòu)的一串字符的集合。
文件:一個(gè)無(wú)結(jié)構(gòu)字節(jié)序列。
好處:提供很大的靈活性。
記錄文件
文件是由若干個(gè)記錄組成,每個(gè)記錄有一個(gè)鍵,可按鍵進(jìn)行查找。
記錄式文件是有結(jié)構(gòu)的文件。
文件:一個(gè)固定長(zhǎng)度記錄的序列,每條記錄有其內(nèi)部結(jié)構(gòu)。
文件的存取方法
順序存取
最后一次存取總是在前一次存取的基礎(chǔ)上進(jìn)行,不必給出具體的存取位置。
隨機(jī)存取
在請(qǐng)求對(duì)某個(gè)文件進(jìn)行存取時(shí)要指出具體的存取位置(如記錄號(hào)、字符序號(hào)等)。
文件的物理結(jié)構(gòu)
順序結(jié)構(gòu)
文件的信息存放在若干連續(xù)的物理塊中。
優(yōu)點(diǎn)
- 簡(jiǎn)單。
- 支持順序存取和隨機(jī)存取。
- 順序存取速度快。
- 所需的磁盤尋道次數(shù)和尋道時(shí)間最少。
缺點(diǎn)
- 文件不能動(dòng)態(tài)增長(zhǎng)。
- 不利于文件插入和刪除。
- 外部碎片問(wèn)題。
鏈接結(jié)構(gòu)
一個(gè)文件的信息存放在若干不連續(xù)的物理塊中,各塊之間通過(guò)指針連接,前一個(gè)物理塊指向下一個(gè)物理塊。
優(yōu)點(diǎn)
- 提高了磁盤空間利用率,不存在外部碎片問(wèn)題。
- 有利于文件插入和刪除。
- 有利于文件動(dòng)態(tài)擴(kuò)充。
缺點(diǎn)
- 存取速度慢,不適于隨機(jī)存取。
- 可靠性問(wèn)題,如指針出錯(cuò)。
- 更多的尋道次數(shù)和尋道時(shí)間。
- 鏈接指針占用一定的空間。
索引結(jié)構(gòu)
一個(gè)文件的信息存放在若干不連續(xù)物理塊中,系統(tǒng)為每個(gè)文件建立一個(gè)專用數(shù)據(jù)結(jié)構(gòu)--索引表,并將這些塊的塊號(hào)存放在一個(gè)索引表中。一個(gè)索引表就是磁盤塊地址數(shù)組,其中第i個(gè)條目指向文件的第i塊。
優(yōu)點(diǎn)
- 保持了鏈接結(jié)構(gòu)的優(yōu)點(diǎn),又解決了其缺點(diǎn)。
- 即能
順序存取,又能隨機(jī)存取。 - 滿足了文件
動(dòng)態(tài)增長(zhǎng)、插入刪除的要求。 - 能充分利用外存空間。
缺點(diǎn)
- 較多的尋道次數(shù)和尋道時(shí)間。
- 索引表本身帶來(lái)了系統(tǒng)開銷。
UNIX文件系統(tǒng)采用的是多級(jí)索引結(jié)構(gòu)(綜合模式)
- 每個(gè)文件的索引表為
15個(gè)索引項(xiàng),每項(xiàng)2個(gè)字節(jié)。最前面12項(xiàng)直接登記存放文件信息的物理塊號(hào)(直接尋址)。 -
如果文件大于12塊,則利用第13項(xiàng)指向一個(gè)物理塊,該塊中最多可放256個(gè)文件物理塊的塊號(hào)(一級(jí)索引)。對(duì)于更大的文件還可利用第14和第15項(xiàng)作為二級(jí)和三級(jí)索引。
UNIX多級(jí)索引結(jié)構(gòu).png
文件目錄
把所有的FCB組織在一起,就構(gòu)成了文件目錄,即文件控制塊的有序集合。
FCB
文件控制塊(File Control Block):是操作系統(tǒng)為管理文件而設(shè)置的數(shù)據(jù)結(jié)構(gòu),存放了為管理文件所需的所有有關(guān)信息(文件屬性)。文件控制塊是文件存在的標(biāo)志。
多級(jí)目錄結(jié)構(gòu)
一級(jí)目錄結(jié)構(gòu)
為所有文件建立一個(gè)目錄文件(組成一線性表)。
優(yōu)點(diǎn)
簡(jiǎn)單,易實(shí)現(xiàn)。
缺點(diǎn)
- 限制了用戶對(duì)文件的命名。
- 文件平均檢索時(shí)間長(zhǎng)。
- 限制了對(duì)文件的共享。
二級(jí)目錄結(jié)構(gòu)
為改變一級(jí)目錄文件目錄命名沖突,并提高對(duì)目錄文件檢索速度而改進(jìn)。
目錄分為兩級(jí)
一級(jí)稱為主文件目錄,給出用戶名,用戶子目錄所在的物理位置。
二級(jí)稱為用戶文件目錄(又稱用戶子目錄),給出該用戶所有文件的FCB。
優(yōu)點(diǎn)
- 解決了文件的重名問(wèn)題問(wèn)題 —— 用戶名 | 文件名。
- 查找時(shí)間降低。
缺點(diǎn)
增加了系統(tǒng)開銷。
多級(jí)目錄結(jié)構(gòu)(樹型目錄)
優(yōu)點(diǎn)
- 層次結(jié)構(gòu)清晰,便于管理和保護(hù)。
- 有利于文件分類。
- 解決重名問(wèn)題。
- 提高文件檢索速度。
- 能進(jìn)行存取權(quán)限的控制。
缺點(diǎn)
查找一個(gè)文件按路徑名逐層檢查,由于每個(gè)文件都放在外存,多次訪盤影響速度。
文件的共享
文件的共享是指不同的用戶同時(shí)使用一個(gè)文件。
有三種文件的共享形式
- 文件被多個(gè)用戶使用,由存儲(chǔ)權(quán)限控制。
- 文件被多個(gè)程序使用,但分別使用自己的讀寫指針。
- 文件被多個(gè)程序使用,但共享讀寫指針。
文件共享的目的:節(jié)省時(shí)間和存儲(chǔ)空間,減少用戶工作量,進(jìn)程間通過(guò)文件交換信息。
文件的保護(hù)
文件的保護(hù)是用于提供文件安全性的特定的一種操作系統(tǒng)機(jī)制。
文件系統(tǒng)的安全
確保未經(jīng)授權(quán)的用戶不能存取某些文件。
安全性的兩個(gè)重要方面
- 數(shù)據(jù)丟失。
- 入侵者。
設(shè)備管理
設(shè)備的分類
1.按功能特性分
- 存儲(chǔ)型設(shè)備
- 輸入輸出型設(shè)備(交互型設(shè)備)
- 數(shù)據(jù)通信設(shè)備
2.按數(shù)據(jù)組織分
塊設(shè)備
以數(shù)據(jù)塊為單位存儲(chǔ)、傳輸信息;傳輸速率較高、可尋址(隨機(jī)讀寫)。
字符設(shè)備
以字符為單位存儲(chǔ)、傳輸信息;傳輸速率低、不可尋址。
3.按資源分配角度分
獨(dú)占設(shè)備
在一段時(shí)間內(nèi)只能有一個(gè)進(jìn)程使用的設(shè)備,一般為低速I/O設(shè)備(如打印機(jī),磁帶等)。
共享設(shè)備
在一段時(shí)間內(nèi)可有多個(gè)進(jìn)程共同使用的設(shè)備,多個(gè)進(jìn)程以交叉的方式來(lái)使用設(shè)備,其資源利用率高(如硬盤)。
虛設(shè)備
在一類設(shè)備上模擬另一類設(shè)備,常用共享設(shè)備模擬獨(dú)占設(shè)備,用高速設(shè)備模擬低速設(shè)備,被模擬的設(shè)備稱為虛設(shè)備。
目的:將慢速的獨(dú)占設(shè)備改造成多個(gè)用戶可共享的設(shè)備,提高設(shè)備的利用率。(實(shí)例:SPOOLing技術(shù),利用虛設(shè)備技術(shù)——用硬盤模擬輸入輸出設(shè)備)。
設(shè)備管理的功能
設(shè)備管理的主要任務(wù)是控制設(shè)備和CPU之間進(jìn)行I/O操作。
虛擬設(shè)備技術(shù)
是在一類物理設(shè)備上模擬另一類物理設(shè)備的技術(shù),是將獨(dú)占設(shè)備轉(zhuǎn)換成共享設(shè)備的技術(shù)。
SPOOLing技術(shù)
是一個(gè)虛擬設(shè)備,一個(gè)資源轉(zhuǎn)換技術(shù)(用空間,如輸入,輸出等換取CPU時(shí)間)。
解決問(wèn)題:在進(jìn)程所需物理設(shè)備不存在或被占用時(shí)使用該設(shè)備。
設(shè)備獨(dú)立性
用戶在編制程序時(shí)使用的設(shè)備與實(shí)際使用的設(shè)備無(wú)關(guān)。
緩沖技術(shù)及緩沖的種類
緩沖技術(shù)的引入
最早引入:CPU與I/O設(shè)備之間凡是數(shù)據(jù)到達(dá)和離去速度不匹配的地方均可采用緩沖技術(shù)。
目的
- 緩解CPU與I/O設(shè)備之間速度不匹配的矛盾。
- 提高CPU與I/O設(shè)備之間的并行性。
- 減少了I/O設(shè)備對(duì)CPU的中斷請(qǐng)求次數(shù),放寬CPU對(duì)中斷響應(yīng)時(shí)間的要求。
緩沖區(qū)設(shè)置
- 硬緩沖
由硬件寄存器實(shí)現(xiàn)(例如:設(shè)備中設(shè)置的緩沖區(qū))。
- 軟緩沖
在內(nèi)存中開辟一個(gè)空間,用作緩沖區(qū)。
緩沖區(qū)管理
- 單緩沖
當(dāng)用戶進(jìn)程發(fā)出I/O請(qǐng)求時(shí),操作系統(tǒng)在內(nèi)存的系統(tǒng)空間為該操作分配一個(gè)緩沖區(qū),可以實(shí)現(xiàn)預(yù)讀和滯后寫。
- 雙緩沖
可以實(shí)現(xiàn)用戶數(shù)據(jù)區(qū)—緩沖區(qū)之間交換數(shù)據(jù)和緩沖區(qū)—外設(shè)之間交換數(shù)據(jù)的并行。
- 緩沖池
緩沖區(qū)的設(shè)置可分為單緩沖 、雙緩沖、和緩沖池。 其中關(guān)于緩沖池的操作有提取輸入、提取輸出、收容輸入和收容輸出。
死鎖
死鎖
一組進(jìn)程中,每個(gè)進(jìn)程都無(wú)限等待被該組進(jìn)程中另一進(jìn)程所占有的資源,因而永遠(yuǎn)無(wú)法得到的資源,這種現(xiàn)象稱為進(jìn)程死鎖,這一組進(jìn)程就稱為死鎖進(jìn)程。
產(chǎn)生死鎖的四個(gè)必要條件
- 互斥條件
- 不可剝奪條件
- 請(qǐng)求和保持條件
- 循環(huán)等待條件
通道
是一塊能控制一臺(tái)或多臺(tái)外圍設(shè)備與CPU并行工作的硬件。