版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Chapter1:導(dǎo)論
計(jì)算機(jī)系統(tǒng)可以大致分為4個部分:硬件,操作系統(tǒng),系統(tǒng)程序與應(yīng)用程序,用
戶
操作系統(tǒng)是配置在計(jì)算機(jī)硬件上的第一層軟件,是對硬件的首次擴(kuò)充,它位于硬
件與其他軟件之間,是所有其他軟件運(yùn)行的基礎(chǔ)。
對操作系統(tǒng)的公認(rèn)的定義:操作系統(tǒng)是一直在計(jì)算機(jī)上運(yùn)行的程序(通常稱為內(nèi)
核)
操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)中的一個系統(tǒng)軟件,它管理和控制計(jì)算機(jī)系統(tǒng)中的
硬件和軟件資源。
裸機(jī):沒有配置軟件的計(jì)算機(jī),即計(jì)算機(jī)硬件
虛擬機(jī):覆蓋了軟件的機(jī)器
最基本的操作系統(tǒng)類型有三種:批處理操作系統(tǒng),分時操作系統(tǒng),實(shí)時操作系
統(tǒng)
批處理系統(tǒng):單道批處理系統(tǒng),多道批處理系統(tǒng)
在單處理機(jī)系統(tǒng)中,多道程序運(yùn)行的特點(diǎn)是多造、宏觀上并行和微觀上
串行。
分時系統(tǒng):時間片輪轉(zhuǎn),設(shè)置多路卡,(用戶能在很短時間內(nèi)獲得響應(yīng))人機(jī)交
互,共享主機(jī),方便用戶上機(jī)
實(shí)時系統(tǒng):系統(tǒng)能及時響應(yīng)外部事件的請求,在規(guī)定的時間范圍內(nèi)完成對該事件
的處理,并控制實(shí)時任務(wù)協(xié)調(diào)一致地運(yùn)行。(響應(yīng)時間由控制對象決定,可靠性
高)
在主機(jī)控制下進(jìn)行的輸入/輸出操作稱為_聯(lián)用鐮人獻(xiàn)C操作。(聯(lián)機(jī)批處理,脫
機(jī)批處理,聯(lián)機(jī)UO,脫機(jī)I/O)
作業(yè)是用戶在一次解題或一個事務(wù)處理過程中要求計(jì)算機(jī)系統(tǒng)所做的工作集合,
包括用戶程序、所需的數(shù)據(jù)及命令等
操作系統(tǒng)的4個基本特征:并發(fā),共享,虛擬,不確定(并發(fā)和共享互為存在
條件)
計(jì)算機(jī)系統(tǒng)的兩種運(yùn)行狀態(tài):核心態(tài)(kernelmode),0,用戶態(tài)(usermode),1
Chapter2:操作系統(tǒng)結(jié)構(gòu)
用戶接口:命令行接口(聯(lián)機(jī)命令接口,脫機(jī)命令接口)、批處理接口以及圖形
用戶接口(GUI)
系統(tǒng)調(diào)用(systemcalls):系統(tǒng)調(diào)用在運(yùn)行程序和操作系統(tǒng)之間提供接口
運(yùn)行程序和操作系統(tǒng)之間的參數(shù)傳遞有3種常用方法:寄存器中的參數(shù)傳遞,參
數(shù)存在內(nèi)存的一張表中表地址作為寄存器的參數(shù)傳遞,程序把參數(shù)壓入棧由操作
系統(tǒng)彈出
系統(tǒng)調(diào)用的類型:大致可分為5類:進(jìn)程控制,文件管理,設(shè)備管理,信息維護(hù),
通信
系統(tǒng)調(diào)用與過程調(diào)用的區(qū)別:系統(tǒng)調(diào)用在核心態(tài)下運(yùn)行,子程序在用戶態(tài)下運(yùn)行;
系統(tǒng)調(diào)用通過中斷機(jī)構(gòu)進(jìn)入以實(shí)現(xiàn)運(yùn)行狀態(tài)的改變,子程序直接調(diào)用不涉及運(yùn)行
狀態(tài)改變
系統(tǒng)結(jié)構(gòu):
MS-DOS:以最小的空間提供最多的功能。不劃分模塊,其接口和功能層次沒有
劃分清楚
早起的UNIX:受硬件功能限制,由兩個獨(dú)立的部分組成,系統(tǒng)程序和內(nèi)核
內(nèi)核包括了在物理硬件之上,系統(tǒng)調(diào)用之下的一切。內(nèi)核通過系統(tǒng)調(diào)用提供文件
系統(tǒng)、CPU調(diào)度、存儲管理和其他操作系統(tǒng)功能
操作系統(tǒng)分層:0層為硬件層,N層(最高層)為用戶接口,每層都利用較低層
的功能和服務(wù),為較高層隱藏一定的數(shù)據(jù)結(jié)構(gòu)、操作和硬件的存在
層次結(jié)構(gòu):給模塊賦予了層次順序使調(diào)用關(guān)系變得有序,在上下兩層不變的基礎(chǔ)
上可以換掉某層便于移植和擴(kuò)充,但犧牲一定的靈活性為代價
微內(nèi)核:微內(nèi)核通常包括最小的進(jìn)程和內(nèi)存管理以及通信功能
微內(nèi)核特點(diǎn):降低了開發(fā)難度,具有較好的擴(kuò)展性及可移植性,特別適合大規(guī)模
開放式的分布系統(tǒng)。但是效率較低
模塊結(jié)構(gòu),將操作系統(tǒng)內(nèi)核按照功能劃分為一個個獨(dú)立的模塊,模塊之間相對獨(dú)
立,只能通過事先規(guī)定好的接口方式來調(diào)用。每個模塊實(shí)現(xiàn)一個完整獨(dú)立的功能,
所有模塊之間相互調(diào)用,共同構(gòu)成一個完整的系統(tǒng)內(nèi)核。
模塊結(jié)構(gòu)特點(diǎn):效率高,但全局函數(shù)使用多造成訪問控制困難,結(jié)構(gòu)不清晰可理
解性可維護(hù)性可移植性差
宏內(nèi)核:在運(yùn)行過程中,它是一個獨(dú)立的進(jìn)程。模塊結(jié)構(gòu)、層次結(jié)構(gòu)的系統(tǒng)內(nèi)核
基本都是宏內(nèi)核
微內(nèi)核:大部分內(nèi)核模塊都作為獨(dú)立的進(jìn)程,它們之間通過信息通信使模塊之間
互相提供服務(wù)。
Chapter3進(jìn)程
進(jìn)程的順序執(zhí)行:程序通常由若干個程序段所組成,它們必須按照某種先后次序
來執(zhí)行,僅當(dāng)前一個操作執(zhí)行完后才能執(zhí)行后繼操作
順序執(zhí)行的特征:順序性,封閉性(一旦開始運(yùn)行結(jié)果不受外界影響),可再現(xiàn)
性(執(zhí)行情況相同重復(fù)執(zhí)行獲得相同結(jié)果)
程序的并發(fā)執(zhí)行:若干程序或程序段同時在系統(tǒng)中運(yùn)行
并發(fā)執(zhí)行的特性:間斷性,失去封閉性(進(jìn)程共享資源),不可再現(xiàn)性
Bernstein條件:能保證兩個程序段并發(fā)執(zhí)行而不會產(chǎn)生與時間有關(guān)的錯誤(全局
變量的改變什么的)
R(Si)nw(Sj)={}這兩條保證
R(Sj)nw(Si)={}兩次讀之間數(shù)據(jù)不變
w(Si)nw(Sj)={}本條保證寫操作結(jié)果不丟
考慮下面是條語句:
SI:a=x+yS2:b=z+l
S3:c=a-bS4:d=c+l
R(Sl)={x,y}R(S2)={z}R(S3)={a,b}
W(Sl)={a}W(S2)=W(S3)={c}
因R(Sl)nW(S2)UR(S2)nW(Sl)UW(Sl)nW(S2)={},故SI和S2可以并發(fā)
執(zhí)行。
因R(S2)nW(S3)UR(S3)nW(S2)UW(S3)nW(S2)=,故S2和S3不能并發(fā)
執(zhí)行。
并發(fā)語句描述:cobegin.….coend
進(jìn)程:進(jìn)程是執(zhí)行中的程序。一個進(jìn)程包括,代碼段,程序計(jì)時器和處理機(jī)寄存
器內(nèi)容,棧,數(shù)據(jù)部分
進(jìn)程的特征:動態(tài)性(進(jìn)程是動態(tài)存在和消失的而程序是靜態(tài)實(shí)體),并發(fā)性(多
個進(jìn)程實(shí)體同時在內(nèi)存并能在一段時間內(nèi)同時發(fā)生),獨(dú)立性(進(jìn)程是獨(dú)立運(yùn)行
的基本單位),異步性(進(jìn)程各自以獨(dú)立的不可預(yù)知的速度向前推進(jìn)),結(jié)構(gòu)性(由
很多段組成(程序段,數(shù)據(jù)段,控制塊))
進(jìn)程狀態(tài):新建,運(yùn)行,等待,就緒,終止
通常一個進(jìn)程至少應(yīng)有以下三種基本狀態(tài):就緒狀態(tài),執(zhí)行狀態(tài)(運(yùn)行),阻塞
狀態(tài)(等待狀態(tài)通常是I/O請求)
進(jìn)程由PCB,程序段,數(shù)據(jù)段三部分組成
進(jìn)程控制塊(PCB,process-control-block):每個進(jìn)程在操作系統(tǒng)內(nèi)用進(jìn)程控制塊
表示。PCB是描述和管理進(jìn)程的數(shù)據(jù)結(jié)構(gòu)。它是進(jìn)程實(shí)體的一部分,操作系統(tǒng)
通過PCB感知進(jìn)程的存在,PCB是進(jìn)程存在的唯一?標(biāo)志。
進(jìn)程的掛起狀態(tài):(由于系統(tǒng)故障,檢查,資源內(nèi)存不足等原因)人為將進(jìn)程掛
起使之處于靜止?fàn)顟B(tài)。
/*進(jìn)程調(diào)度*/
作業(yè)隊(duì)列:系統(tǒng)中所有進(jìn)程的集合
就緒隊(duì)列:內(nèi)存中就緒并等待執(zhí)行的所有進(jìn)程的集合(常用鏈表實(shí)現(xiàn))
設(shè)備隊(duì)列:等待某DO設(shè)備的進(jìn)程隊(duì)列
長程調(diào)度(作業(yè)調(diào)度):選擇可以進(jìn)入就緒隊(duì)列的進(jìn)程
短程調(diào)度(CPU調(diào)度):選擇下一個執(zhí)行并分配CPU
長程調(diào)度(作業(yè)調(diào)度)的頻率相對低,長程調(diào)度控制了多道
進(jìn)程可以分為:DO型進(jìn)程,和CPU型進(jìn)程
上下文切換:將CPU切換到另一個進(jìn)程需要保存當(dāng)前進(jìn)程的狀態(tài)并恢復(fù)另一個
進(jìn)程的狀態(tài),這個任務(wù)稱為上下文切換
原語:原語是由若干條機(jī)器指令構(gòu)成的,用以完成特定功能的一段程序,實(shí)現(xiàn)對
進(jìn)程的管理和控制。這段程序在執(zhí)行期間不可分割(原語不允許被中斷。不同層
次之間的對話的語言稱為原語)
種類:創(chuàng)建原語,撤銷原語,阻塞原語,喚醒原語,掛起原語,激活原語…
進(jìn)程創(chuàng)建:通過創(chuàng)建進(jìn)程系統(tǒng)調(diào)用可以創(chuàng)建多個新進(jìn)程,創(chuàng)建進(jìn)程稱為父進(jìn)程,
被創(chuàng)建進(jìn)程稱為子進(jìn)程。每個新進(jìn)程可以再創(chuàng)建新進(jìn)程,從而形成了進(jìn)程樹。進(jìn)
程樹乂稱為進(jìn)程圖或進(jìn)程家族樹
有的系統(tǒng)中,若父進(jìn)程終止不允許子進(jìn)程繼續(xù),這種現(xiàn)象稱為:級聯(lián)終止
進(jìn)程的組織:線性方式,鏈接方式(鏈表方式),索引方式
進(jìn)程通信:進(jìn)程之間的信息交換
低級進(jìn)程通信方式:進(jìn)程互斥與同步交換的信息量較少且效率較低。P、V操作
是一種低級進(jìn)程通信原語
高級進(jìn)程通信方式:進(jìn)程之間以較高的效率傳送大量數(shù)據(jù)
高級進(jìn)程通信方式分為三大類:共享存儲器系統(tǒng),消息傳遞系統(tǒng),管道通信系統(tǒng)
或共享文件系統(tǒng)
共享存儲器系統(tǒng):相互通信的進(jìn)程共享某些數(shù)據(jù)結(jié)構(gòu)或共享存儲區(qū)
消息傳遞系統(tǒng):進(jìn)程間的數(shù)據(jù)交換以消息為單位,程序員直接利用系統(tǒng)提供的一
組通信命令(原語)來實(shí)現(xiàn)通信。
消息傳遞系統(tǒng)因其實(shí)現(xiàn)方式不同可分為:直接通信方式(講消息直接發(fā)在接受進(jìn)
程的消息隊(duì)列上),間接通信方式(將消息發(fā)送到信箱)
管道(共享文件)通信:通過連接讀進(jìn)程和寫進(jìn)程的共享文件來實(shí)現(xiàn)讀寫進(jìn)程之
間通信
緩沖(Buffering):通信進(jìn)程交換的信息都駐留在臨時隊(duì)列中,隊(duì)列實(shí)現(xiàn)有三種形
式,零容量(發(fā)送者必須等待接受者),有限容量(線路滿則發(fā)送者必須等待),
無限容量(發(fā)送者無需等待)
管道:使用管道通信時,基本上采用文件系統(tǒng)的原有機(jī)制實(shí)現(xiàn)。包括創(chuàng)建、打開、
關(guān)閉、讀寫等。
管道機(jī)制應(yīng)提供以下三方面的協(xié)調(diào)能力:互斥(互斥讀寫管道),同步(管道空
滿情況處理),存在(確定對方是否存在)
在單處理機(jī)計(jì)算機(jī)系統(tǒng)中,如果有N個進(jìn)程(只考慮等待,就緒,運(yùn)行)
那么
運(yùn)行狀態(tài)最多1個,最少0個;
等待狀態(tài)最多N個,最少。個;
就緒狀態(tài)最多N-1個,最少0個。
Chapter4線程
在操作系統(tǒng)中引入進(jìn)程的目的是:使用多道程序能并發(fā)執(zhí)行,以改善資源利用率
及提高系統(tǒng)吞吐量
在操作系統(tǒng)中引入線程的目的是:減少程序并發(fā)執(zhí)行的時空開銷,使操作系統(tǒng)有
更好的并發(fā)性
線程是CPU使用的一個基本單元,包括線程標(biāo)識(threadID),程序計(jì)數(shù)器(PC),
寄存器集(registerset),棧(stack)
線程自己基本上不擁有資源,只擁有一點(diǎn)在運(yùn)行時必不可少的資源(如程序計(jì)數(shù)
器、寄存器集和棧)。但它可以與同屬一個進(jìn)程的其他線程共享進(jìn)程擁有的全部
資源
線程與屬于同一進(jìn)程的線程共享:代碼段,數(shù)據(jù)段,其他操作系統(tǒng)資源
線程的狀態(tài),同步與通信與進(jìn)程類似
進(jìn)程的掛起及終止將影響到其中所有進(jìn)程
線程的優(yōu)點(diǎn):響應(yīng)能力強(qiáng)(即使進(jìn)程的一塊被阻塞了,其他部分也能運(yùn)行),資
源共享,經(jīng)濟(jì)性,多處理器體系結(jié)構(gòu)的利用,創(chuàng)建撤銷切換時間短,共享內(nèi)存和
資源線程間通信方便
多線程模型
操作系統(tǒng)中有多種方式實(shí)現(xiàn)對進(jìn)程的支持:內(nèi)核線程(kernelThreads),用戶線
程(UserThreads)的組合實(shí)現(xiàn)
內(nèi)核線程:也稱內(nèi)核級線程,是指依賴于內(nèi)核,由操作系統(tǒng)內(nèi)核完成創(chuàng)建和撤銷
工作的線程。
一個內(nèi)核線程的阻塞不會影響其他線程的運(yùn)行。
處理機(jī)分配的對象是線程,所以有多個線程的進(jìn)程將獲得更多的處理機(jī)時間
用戶線程:也稱用戶級線程,是指不依賴于操作系統(tǒng)核心,由應(yīng)用進(jìn)程利用線程
庫提供創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來控制的線程
用戶線程的維護(hù)由應(yīng)用進(jìn)程完成,可以用于不支持線程的操作系統(tǒng)
當(dāng)一個線程阻塞時,整個進(jìn)程都必須等待。
處理機(jī)時間是分配給進(jìn)程的,進(jìn)程內(nèi)有多個線程時,每個線程的執(zhí)行時間相對少
一占八、、
用戶線程與內(nèi)核線程的關(guān)系
多對一模型:將多個用戶線程映射到一個內(nèi)核線程。線程管理由線程庫在用戶空
間進(jìn)行。用于不支持內(nèi)核線程的系統(tǒng)中(只有一個內(nèi)核線程,相當(dāng)于沒有)
一對一模型:將每個用戶線程映射到一個內(nèi)核線程。這種模型的絕大多數(shù)實(shí)現(xiàn)限
制了系統(tǒng)支持的線程數(shù)量
多對多模型:多個用戶線程到同樣數(shù)量或更少的內(nèi)核線程上
多線程問題:
線程取消可以再i下兩種情況下發(fā)生:異步取消(一個線程立即終止目標(biāo)進(jìn)程),
延遲取消(目標(biāo)線程不斷檢查它是否應(yīng)該終止)
線程與進(jìn)程的比較:從調(diào)度的基本單位,擁有資源的基本單位,并發(fā)性,和系統(tǒng)
開銷四個方面說。
ChaptersCPU調(diào)度
處理機(jī)的三級調(diào)度:作業(yè)調(diào)度,進(jìn)程調(diào)度,交換調(diào)度
作業(yè)調(diào)度:又稱長程調(diào)度,宏觀調(diào)度和高級調(diào)度,從外存上處于后備狀態(tài)的作業(yè)
中選擇一個或多個作業(yè),給他們分配內(nèi)存、I/O設(shè)備等必要資源,并建立相應(yīng)的
進(jìn)程,使該作業(yè)具有獲得競爭處理機(jī)的權(quán)利
作業(yè)調(diào)度的運(yùn)行頻率低,通常兒分鐘一次
進(jìn)程調(diào)度:又稱短程調(diào)度,微觀調(diào)度和低級調(diào)度,從就緒隊(duì)列中選取一個進(jìn)程,
將處理機(jī)分配給它。
進(jìn)程調(diào)度的運(yùn)行頻率很高,一般十幾毫秒就要運(yùn)行一次
交換調(diào)度:又稱中程調(diào)度,中級調(diào)度,將內(nèi)存總暫時不用的信息移到外存,以騰
出空間給內(nèi)存中的其他進(jìn)程使用,或?qū)⑿枰男畔耐獯孀x入內(nèi)存。
交換調(diào)度的目的是,提高內(nèi)存利用率和系統(tǒng)吞吐量
交換調(diào)度的運(yùn)行頻率介于上面兩者之間
作業(yè):是用戶在一次解題或一個事務(wù)處理過程中要求計(jì)算機(jī)系統(tǒng)所做的工作的集
合,包括用戶程序、所需的數(shù)據(jù)及命令等
作業(yè)從提交到完成要經(jīng)歷四種狀態(tài):提交狀態(tài),后備狀態(tài)(將作業(yè)插入后備作業(yè)
隊(duì)列中等待調(diào)度運(yùn)行),運(yùn)行狀態(tài)(作業(yè)在內(nèi)存中執(zhí)行),完成狀態(tài)
作業(yè)控制塊(JCB,jobcontrolblock):系統(tǒng)通過JCB感知作業(yè)的存在,JCB是
作業(yè)存在的唯一標(biāo)志
一個作業(yè)可以分成若干順序處理的加工步驟,每個步驟稱為一個作業(yè)步
多道程序的設(shè)計(jì)目標(biāo)在于任何時候都有某些進(jìn)程運(yùn)行,使CPU利用率最大化。
CPU調(diào)度可能發(fā)生如下4種情況
從運(yùn)行狀態(tài)轉(zhuǎn)到等待狀態(tài)
從運(yùn)行狀態(tài)轉(zhuǎn)到就緒狀態(tài)
從等待狀態(tài)轉(zhuǎn)到就緒狀態(tài)
進(jìn)程終止
1.4兩種情況的調(diào)度稱為非搶占調(diào)度,2,3兩種情況的調(diào)度稱為搶占式調(diào)度
進(jìn)程調(diào)度的兩種方式:搶占方式,非搶占方式
搶占方式:又稱波多方式。搶占原則有,優(yōu)先權(quán),時間片
分派程序:用來將對CPU的控制交給由短程調(diào)度程序選擇的進(jìn)程
分派延遲:分派程序終止一個進(jìn)程的運(yùn)行并啟動另一個進(jìn)程運(yùn)行所花的時間,也
成為調(diào)度時間
調(diào)度準(zhǔn)則:
CPU利用率
吞吐量(單位時間內(nèi)運(yùn)行完的程序數(shù))
周轉(zhuǎn)時間(進(jìn)程從提交到運(yùn)行結(jié)束的全部時間
等待時間(進(jìn)程在就緒隊(duì)列中等待調(diào)度的時間總和)
響應(yīng)時間(從提交請求到系統(tǒng)首次產(chǎn)生響應(yīng)所用的時間)
帶全周轉(zhuǎn)時間(作業(yè)周轉(zhuǎn)時間與作業(yè)實(shí)際運(yùn)行時間的比)
調(diào)度算法:(畫圖用到gantt圖)
FCFS先來先服務(wù)調(diào)度,適用于作業(yè)調(diào)度,進(jìn)程調(diào)度
算法簡單易于實(shí)現(xiàn),不適用與短作業(yè)和I/O繁忙的作業(yè)
SJB最短作業(yè)優(yōu)先(搶占/非搶占)
適合短作業(yè),對長作業(yè)不利,運(yùn)行時間為估計(jì)
搶占SJB調(diào)度有時稱為最短剩余時間優(yōu)先調(diào)度,若到達(dá)新進(jìn)程的CPU區(qū)間短于當(dāng)
前運(yùn)行進(jìn)程的剩余時間,則它將搶占CPU。
可能有饑餓
優(yōu)先級調(diào)度(搶占/非搶占)
優(yōu)先級的類型:靜態(tài)優(yōu)先級,動態(tài)優(yōu)先級(確定原則:占用CPU時間,等待時間)
存在的問題:饑餓,低優(yōu)先級的進(jìn)程可能永遠(yuǎn)得不到運(yùn)行
解決方法:老化,視進(jìn)程等待時間的延長提高其優(yōu)先級數(shù)
時間片輪轉(zhuǎn)調(diào)度(RR)
每個進(jìn)程得到小單位的CPU時間,稱為時間片,通常為10700毫秒。時間片用
完后,該進(jìn)程將被搶占并插入就緒隊(duì)列末尾。
時間片大?。禾螅和嘶癁镕CFS太小:調(diào)度頻繁系統(tǒng)開銷大?,F(xiàn)代操作系統(tǒng)的
時間片一般為10-100ms,上下文切換時間一般少于10uSo
確定時間片大小應(yīng)考慮的因素:
系統(tǒng)對響應(yīng)時間的要求:響應(yīng)時間=時間片*進(jìn)程數(shù)
就緒隊(duì)列中的進(jìn)程數(shù)目:時間片應(yīng)與就緒進(jìn)程數(shù)成反比
系統(tǒng)的處理能力:考慮響應(yīng)時間在可承受范圍內(nèi),系統(tǒng)速度快則時間片可以增長
時間片輪轉(zhuǎn)算法的特點(diǎn)及改進(jìn):
虛擬時間片輪轉(zhuǎn)法(針對偏重I/O的進(jìn)程):
新進(jìn)程基于FCFS進(jìn)入就緒隊(duì)列,進(jìn)程用完時間片后也進(jìn)入就緒隊(duì)列,進(jìn)程因I/O
阻塞進(jìn)入I/O隊(duì)列,I/O完成時進(jìn)程進(jìn)入附加隊(duì)列,附加隊(duì)列的優(yōu)先級高于就緒
隊(duì)列,當(dāng)進(jìn)程從附加隊(duì)列被調(diào)度時,其運(yùn)行時間不超過上次發(fā)生中斷時剩余的時
間。
高響應(yīng)比優(yōu)先調(diào)度算法
響應(yīng)比=1+作業(yè)等待時間/估計(jì)運(yùn)行時間
I
A、B、C、D、E的到達(dá)時間依次為0、1、2、3、
4,要求運(yùn)行時間依次為3、6、4、5、2
0:A運(yùn)行,BCD依次到達(dá);
3:rB=1+2/6,rc=1+1/4,rD=l:B先運(yùn)行。
9:rc=1+7/4,rD=1+6/5,rE=1+5/2;E先運(yùn)行。
11:rc=1+9/4,rD=1+8/5;C先運(yùn)行。
?由此可知作業(yè)的運(yùn)行順序?yàn)锳、B、E、C、D。
多級隊(duì)列調(diào)度
將就緒隊(duì)列分為多個獨(dú)立隊(duì)列,每個隊(duì)列有自己的調(diào)度算法,根據(jù)進(jìn)程屬性,一
個進(jìn)程被永久分配到一個隊(duì)列
例如分為前臺(交互式)RR算法,和后臺(批處理)FCFSo前臺的優(yōu)先級高
多級反饋隊(duì)列調(diào)度
進(jìn)程能在不同的隊(duì)列間移動。如果進(jìn)程使用過多的CPU時間,那么它會被移動到
更低優(yōu)先級隊(duì)列。此外,在較低優(yōu)先級隊(duì)列中等待時間過長的進(jìn)程會被移到更高
優(yōu)先級隊(duì)列
每個隊(duì)列有不同優(yōu)先級,第一隊(duì)列最高,其余遞減,每個隊(duì)列的時間片大小也各
不相同,優(yōu)先級高的隊(duì)列時間片短。
當(dāng)一個新進(jìn)程進(jìn)入系統(tǒng)時,首先將它放入第1個隊(duì)列的末尾,按先來先服務(wù)的原
則排隊(duì)等待調(diào)度。當(dāng)輪到該進(jìn)程執(zhí)行時,如能在此時間片內(nèi)完成,便可準(zhǔn)備撤離
系統(tǒng);如果它在一個時間片結(jié)束時尚未完成,調(diào)度程序便將該進(jìn)程轉(zhuǎn)入第2隊(duì)
列的末尾,再同樣地按先來先服務(wù)原則等待調(diào)度執(zhí)行。如此下去,最后一個隊(duì)列
中使用時間片輪轉(zhuǎn)調(diào)度算法。僅當(dāng)?shù)?個隊(duì)列為空時,調(diào)度程序才調(diào)度第2隊(duì)列
中的進(jìn)程運(yùn)行;僅當(dāng)?shù)?個至第(i-D個隊(duì)列均為空時,才會調(diào)度第i個隊(duì)列
中的進(jìn)程運(yùn)行。當(dāng)處理機(jī)正在為第i個隊(duì)列中的某進(jìn)程服務(wù)時,若又有新進(jìn)程進(jìn)
入優(yōu)先級較高的隊(duì)列中,則此時新進(jìn)程將搶占正在運(yùn)行進(jìn)程的處理機(jī),即由調(diào)度
程序把正在執(zhí)行進(jìn)程放回第i個隊(duì)列末尾,重新將處理機(jī)分配給新進(jìn)程。
多級反饋隊(duì)列調(diào)度算法能較好滿足各類用戶的需求
公平分享調(diào)度算法:基于進(jìn)程組來分配CPU時間,其實(shí)現(xiàn)思想是對系統(tǒng)中的每個
用戶賦予某種權(quán)值,根據(jù)用戶權(quán)值大小,按比例分配處理機(jī)時間。
進(jìn)程切換:在操作系統(tǒng)中凡是要進(jìn)行中斷處理和進(jìn)程調(diào)度時,都將涉及到進(jìn)程上
下文的保存的恢復(fù)。
中斷時:系統(tǒng)保存和恢復(fù)的是同一個進(jìn)程的上下文
進(jìn)程調(diào)度時恢復(fù)的是調(diào)度程序所選中進(jìn)程的上下文
既考慮作業(yè)等待時間,又考慮作業(yè)執(zhí)行時間的調(diào)度算法是響應(yīng)比高優(yōu)先調(diào)度
Chapter6進(jìn)程同步
進(jìn)程同步:系統(tǒng)中各進(jìn)程之間邏輯上的相互制約關(guān)系叫做進(jìn)程同步
在多道程序系統(tǒng)中,進(jìn)程之間存在著的不同制約關(guān)系可以劃分為兩類:同步和互斥
同步指進(jìn)程間具有的一定邏輯關(guān)系;互斥是指進(jìn)程間在使用共享資源方面的約束關(guān)系。
臨界區(qū)問題:每個進(jìn)程有一個訪問共享數(shù)據(jù)的代碼段,稱為臨界區(qū)(critical
section)。需保證一個進(jìn)程在其臨界區(qū)執(zhí)行時,不允許其他進(jìn)程在其臨界區(qū)執(zhí)行。
臨界資源:一段時間內(nèi)僅允許一個進(jìn)程使用的資源稱為臨界資源。如打印機(jī),共
享變量
同類臨界區(qū):所有與同一臨界資源相關(guān)聯(lián)的臨界區(qū)
臨界區(qū)問題的解決應(yīng)滿足:互斥,前進(jìn)(如果沒有進(jìn)程在其臨界區(qū)內(nèi)執(zhí)行,且有
進(jìn)程需要進(jìn)入臨界區(qū),那么只有不在剩余區(qū)執(zhí)行的進(jìn)程可以參加選擇,以確定下
一個進(jìn)入臨界區(qū)的進(jìn)程,且選擇不能無限期延長),有限等待(在一個進(jìn)程提出
進(jìn)入臨界區(qū)的請求和該請求得到答復(fù)的時間內(nèi),其他進(jìn)程進(jìn)入臨界區(qū)的次數(shù)必須
是有限的)
訪問臨界資源應(yīng)遵循的原則:空閑讓進(jìn),忙則等待,有限等待,讓權(quán)等待(當(dāng)
進(jìn)程不能進(jìn)入自己的臨界區(qū)時,應(yīng)釋放處理機(jī))
Peterson算法
enumbooIean{faIse,true);
booIeanfIag[2]={faIse,faIse);intturn;
PO:{
do{
fIag[0]=true;turn=1;
while(flag[1]&&turn==1);〃實(shí)現(xiàn)互斥,前進(jìn)
進(jìn)程PO的臨界區(qū)代碼CSO;
fIag[0]—faIse;
進(jìn)程PO的其他代碼;}
while(true)}
P1:(
do{
flag[1]=true;turn=0;
while(flag[0]&&turn==0);
進(jìn)程P1的臨界區(qū)代碼CS1;
fIag[1]=faIse;
進(jìn)程P1的其他代碼;}
while(true)}
硬件同步:用硬件方法實(shí)現(xiàn)互斥的主要思想是保證檢查操作與修改操作不被打斷
禁止中斷方法:當(dāng)進(jìn)程執(zhí)行臨界區(qū)代碼時,禁止中斷(很多缺點(diǎn))
硬件指令方法
用TS實(shí)現(xiàn)互斥:
booIeanTS(boolean*1ock)
(
booIeanold;
oId=*lock;
*lock=true;
returnold;
1
?
?■
whileTS(&lock);
〃lock=1的話,陷入while;lock=0的話,將lock置1,進(jìn)入臨界區(qū)
臨界區(qū)代碼CriticalSection;
Iock=faIse;
其他代碼remaindersection;
?
用swap指令實(shí)現(xiàn)進(jìn)程互斥:
//swap(a,b)交換兩值
I
I
I
key=true;
while(key!=faIse)Swap(&Iock,&key);
//如果lock=true,不停的swap,直到lock=false,進(jìn)入臨界區(qū)
臨界區(qū)代碼CriticalSection;
lock=faIse;
其他代碼remaindersection;
?
?
用鎖機(jī)制實(shí)現(xiàn)互斥(自旋鎖)
Iock(w)
(
while(w==1);
w=1;
)
unIock(w)
(
w=0;
)
進(jìn)程P1進(jìn)程P2
II
II
II
Iock(w);Iock(w);
臨界區(qū);臨界區(qū);
unIock(w);unIock(w);
??
這一'頁的方法都不能實(shí)現(xiàn)讓權(quán)等待,即存在忙等待
信號量:信號量S是個整型變量,除了初始化外,它只能通過兩個標(biāo)準(zhǔn)原子操作
wait()和signaI()來訪問。
wait(S)signaI(S):
{whileS0dono-op;{S++;
S—;}
Wait是原來的P操作
Signal是原來的V操作
當(dāng)進(jìn)程需要使用資源時則對信號量執(zhí)行wait,當(dāng)釋放資源時執(zhí)行signal
互斥信號量的實(shí)現(xiàn)
信號量由兩個成員(s,q)組成,其中s是一個具有非負(fù)初值的整型變量,q是
一個初始狀態(tài)為空的隊(duì)列。又稱信號燈。
除信號量的初值外,信號量的值僅能由P操作(又稱為wait操作)和V操作(又
稱為signal操作)改變。
wait(semaphore*s)
{s_>vaIue—;
if(s->vaIue<0)
{addthisprocesstos->list;
//如果所有資源都被占用,加入等待隊(duì)列,if里的value是被減過的。如果等
于0,那么value被減過之前是1,有資源,就不用等待了
bIock();
1}
signaI(semaphre*s)
{s->vaIue++;
if(s->vaIue<=0)
//如果有進(jìn)程在等待,就把第一個進(jìn)程移除。注意if里的value是被加過的,
如果value=0,那么就沒有進(jìn)程在等待
{removeaprocessPfroms->list;
wakeup(P);
1
)
信號量中的整型變量S表示系統(tǒng)中某類資源的數(shù)目。
當(dāng)其值大于0時,表示系統(tǒng)中當(dāng)前可用資源的數(shù)目;
當(dāng)其值小于0時,其絕對值表示系統(tǒng)中因請求該類資源而被阻塞的進(jìn)程數(shù)目。
P,V操作類似
P,V操作是原語
利用信號量實(shí)現(xiàn)互斥
設(shè)S為兩個進(jìn)程P1、P2實(shí)現(xiàn)互斥的信號量,S的初值應(yīng)為1(即可用資源數(shù)目為
Do只需把臨界區(qū)置于P(S)和V(S)之間,即可實(shí)現(xiàn)兩進(jìn)程的互斥。
卜解法工
除理信號量實(shí)現(xiàn)前趨關(guān)系
■例如:Pl、P2、設(shè)七個同步信號
P3、P4、P5、P6、b、c、d、e、
為一組合作進(jìn)f、g分別表示進(jìn)程
程,其前驅(qū)圖如之間的前驅(qū)關(guān)
下所示,試用P、系,如圖所示,
V操作完成這六個其初值均為0。這
進(jìn)程的同步。六個進(jìn)程的同步
描述如下:
P2()
解法2
P(a);
執(zhí)行P2的代碼;-設(shè)五個同步信號量fl、f2、f3、f4、f5分
v(c);G別表示進(jìn)程Pl、P2、P3、P4、P5是否執(zhí)
v(d);
P5行完成,其初值均為0。這六個進(jìn)程的同
步描述如下:
3
■0表示未完成,1表示完成了
P2()
{
犬仕);
執(zhí)行P2的代碼;
v(f2);
V(⑵;
死鎖:兩個或多個進(jìn)程無限等待一個事件的發(fā)生,而該事件正是由其中一個的等
待進(jìn)程引起的。
饑餓:無限期的阻塞。進(jìn)程可能永遠(yuǎn)都無法從它等待的信號量隊(duì)列中移去
經(jīng)典同步問題:
有限緩沖問題生產(chǎn)者一消費(fèi)者問題
它描述了一組生產(chǎn)者進(jìn)程向一組消費(fèi)者進(jìn)程提供產(chǎn)品,它們共享一個有界緩沖
池。緩沖池中的每個緩沖區(qū)可以存放一個產(chǎn)品,生產(chǎn)者進(jìn)程不斷生產(chǎn)產(chǎn)品并將產(chǎn)
品放入緩沖池中,消費(fèi)者進(jìn)程不斷從緩沖池內(nèi)取出產(chǎn)品并消費(fèi)。
設(shè)置兩個同步信號量empty、full,其初值分別為n、0。
//empty代表緩沖區(qū)空的區(qū)域個數(shù),fuII代表緩沖區(qū)被填充的區(qū)域個數(shù)
mutex是確保對緩沖區(qū)的訪問互斥的信號量,初值為1
<4生產(chǎn)者消費(fèi)者
—生產(chǎn)一個產(chǎn)品;p(full);
p(empty);p(mutex);
p(mutex);從緩沖區(qū)中取一個產(chǎn)品;
將一個產(chǎn)品送入緩沖區(qū);v(mutex);
v(mutex);v(empty);
v(full);消費(fèi)一個產(chǎn)品;
無論在生產(chǎn)者進(jìn)程還是在消費(fèi)者進(jìn)程中,P操作的次序都不能顛倒,否則將可能
造成死鎖。
讀者-寫者問題
第一讀者-寫者問題:要求沒有讀者需要保持等待除非有一個寫者已經(jīng)獲得允許
使用共享數(shù)據(jù)
第二讀者-寫者問題:一旦寫者就緒,不會有新讀者開始讀操作
用信號量解決讀者-寫者問題:
目標(biāo):允許多個讀進(jìn)程同時讀此數(shù)據(jù)對象,
但是一個寫進(jìn)程不能與其他進(jìn)程(不管是寫進(jìn)程還是讀進(jìn)程)同時訪問此數(shù)據(jù)對
象
互斥信號量mutex,初值1,共享變量readcount記錄當(dāng)前讀進(jìn)程數(shù),初值0,寫
互斥信號量writer,用于實(shí)現(xiàn)寫進(jìn)程與寫進(jìn)程和讀進(jìn)程的互斥,初值為1
讀者:
p(mutex);
if(readcount-0)p(writer);
〃如果沒有讀者訪問,則等待寫者的完成。如果有讀者,則直接訪問臨界區(qū)
readcount=readcount+1;
v(mutex);
讀數(shù)據(jù)集;
p(mutex);
readcount=readcount-1;
if(readcount==0)v(writer);//所有人讀完才能寫
v(mutex);
Mutex用于保護(hù)readcount的互斥訪問
哲學(xué)家進(jìn)餐問題:
第i個哲學(xué)家活動算法描述:
p(stick[i]);
p(stick[(i+1)%5]);
進(jìn)餐;
v(stick[i]);
v(stick[(i+1)%5]);
思考;
可能會死鎖
解決方法:至多允許四個哲學(xué)家同時進(jìn)餐。
僅當(dāng)左、右兩支筷子均可用時,才允許拿起筷子進(jìn)餐。
奇數(shù)號哲學(xué)家先拿左筷子再拿右筷子,偶數(shù)號哲學(xué)家相反。
睡眠的理發(fā)師問題
理發(fā)店里有一位理發(fā)師,一把理發(fā)椅和N把供等候理發(fā)顧客坐的椅子。
如果沒有顧客,理發(fā)師睡眠,當(dāng)一個顧客到來時叫醒理發(fā)師;
若理發(fā)師正在理發(fā)時又有顧客來,那么有空椅子就坐下,否則離開理發(fā)店。
為解決睡眠的理發(fā)師問題,應(yīng)使用三個信號量:
customers記錄等候理發(fā)的顧客數(shù)(不包括正在理發(fā)的顧客);初值為0
barbers記錄正在等候顧客的理發(fā)師數(shù);初值為0
mutex用于互斥。初值為1
變量count記錄等候的顧客數(shù),它是customers的一份拷貝。之所以使用count
是因?yàn)闊o法讀取信號量的當(dāng)前值。
理發(fā)師:
p(customers);/*是否有等候的顧客*/
p(mutex);
count=count—1;/*顧客數(shù)減1*/
v(barbers);/*理發(fā)師開始理發(fā)*/
v(mutex);
理發(fā);
顧客:
p(mutex);
if(count<N)
{count=count+1
v(customers);
v(mutex);
p(barbers);
理發(fā);}
elsev(mutex);/*無空椅子則離開*/
Chapter7死鎖
死鎖:是指多個進(jìn)程因競爭系統(tǒng)資源或相互通信而造成的一種僵局,若無外力作
用,這些進(jìn)程都將永遠(yuǎn)不能向前推進(jìn)
可剝奪資源:某進(jìn)程獲得這類資源后,該資源可以被其他進(jìn)程或系統(tǒng)剝奪,如
CPU,存儲器
非剝奪資源:系統(tǒng)將這類資源分配給進(jìn)程后,再不能強(qiáng)行收回,只能在進(jìn)程使用
完后主動釋放。如打印機(jī)、讀卡器
注:競爭可剝奪資源不會產(chǎn)生死鎖。
永久性資源:可順序重復(fù)使用的資源,如打印機(jī)
消耗性資源:由一個進(jìn)程產(chǎn)生,被另一個進(jìn)程使用短暫時間后便無用的資源,又
稱為臨時性資源。如消息
注:競爭永久性資源和臨時性資源都可能產(chǎn)生死鎖
死鎖產(chǎn)生的原因:競爭資源,進(jìn)程推進(jìn)順序不當(dāng)
死鎖發(fā)生的條件:互斥,占有并等待,非搶占,循環(huán)等待(等待資源的進(jìn)程間存
在環(huán))
通過資源分配圖來觀察進(jìn)程是否發(fā)生死鎖
如果資源分配圖沒有環(huán),系統(tǒng)就沒有進(jìn)程死鎖。如果分配圖有環(huán),那可能產(chǎn)生死
鎖
有死鎖的資源分配圖:有環(huán)但沒有死鎖的資源分配圖
圖中P1占有R2的一個實(shí)例可知P4釋放資源后就不會死鎖
P1申請并等待R1的一個實(shí)例
處理死鎖的基本辦法:忽略思索,預(yù)防死鎖,避免死鎖,檢測死鎖及解除
避免死鎖:
1.打破占有并等待,要求進(jìn)程在執(zhí)行前一次申請全部的資源,或只有沒有占有資
源時才可以分配資源。導(dǎo)致資源利用率低,可能出現(xiàn)饑餓
2.破壞非搶占條件,如果一個進(jìn)程占有資源并申請另一個不能立即分配的資源,
那么其現(xiàn)已分配的資源都可被搶占。缺點(diǎn):實(shí)現(xiàn)復(fù)雜,釋放已獲得資源可能造成
前一段工作的失效,重復(fù)申請和釋放資源會增加系統(tǒng)開銷,降低系統(tǒng)吞吐量。該
協(xié)議通常應(yīng)用于狀態(tài)可以保存和恢復(fù)的資源,如CPU寄存器、內(nèi)存
3.破壞循環(huán)等待:有序資源分配法;將所有資源按類型排隊(duì),并賦予不同序號,
要求進(jìn)程均嚴(yán)格按照序號遞增的次序請求資源,同類資源一次申請完。能保證沒
有死鎖
安全狀態(tài):系統(tǒng)能按某種順序如<P1、P2…、Pn>來為每個進(jìn)程分配其所需的資
源,直至最大需求,使每個進(jìn)程都可以順利完成
<P1>P2、…、Pn>為安全序列
銀行家算法:(舉例)
。時刻的安全性檢查
《銀行家算法例T
NeedO:7,4,3Needl:1,2,2Need2:6,0,0Need3:0,1,1Need4:4,3,1
■假定系統(tǒng)中有5個進(jìn)程PO、Pl、P2、P3、P4和三種類型的資AllocO:1,1,0Allod:20」Alloc2:3,0,3Alloc3:2,1,1Alloc4:1,0,2
源A、B、C,數(shù)量分別為12、5、9,在TO0寸刻的資源分配情Avail33213420
況如下所示。
w遵情況WorkNeedAllocWDrk+Alloc
進(jìn)屋'Finish
情況MaxAllocationNeedAvailableABCABCABCABC
進(jìn)程、
ABCABcABCABCPl332122201533true
P0853110743332
P3533011211744true
P1323201122
P4744431102846true
P2903303600
P28466003031149true
P3222211011
P011497431101259true
P4533043
121—~A
TO時刻存在著一個安全序列<PkP3、P4、P2、P0>,故系統(tǒng)是安全的。
資源分配圖簡化判斷是否死鎖:找出一個既不阻塞又非孤立的進(jìn)程結(jié)點(diǎn)pi,進(jìn)
程pi獲得了它所需要的全部資源,能運(yùn)行完成然后釋放所有資源。如果能消去
所有邊,則不死鎖
資源搶占來處理死鎖:逐步從進(jìn)程中搶占資源給其他進(jìn)程使用,直到死鎖環(huán)被打
破為止。
選擇一個犧牲:最小代價
回退:返回到安全狀態(tài),然后重新啟動進(jìn)程
饑餓:同一進(jìn)程可能總是被選中
處理死鎖的綜合方法:將系統(tǒng)中的資源按層次分為若干類,對每一類資源使用最
適合它的辦法解決死鎖問題。即使發(fā)生死鎖,一個死鎖環(huán)也只包含某一層次的資
源,因此整個系統(tǒng)不會受控于死鎖。
把資源分為:內(nèi)部資源(有序資源分配法),主存資源(資源剝奪法),作業(yè)資源
(可分配的設(shè)備和文件采用避免方法),交換空間(靜態(tài)分配法)
對待死鎖,一般應(yīng)考慮死鎖的預(yù)防、避免、檢測和解除四個問題。典型的銀行家
算法是屬于避免,破壞環(huán)路等待條件是屬于預(yù)防,而剝奪資源是
解除的基本方法
Chapter8內(nèi)存管理
內(nèi)存:即存儲器、主存,分為兩大部分:系統(tǒng)區(qū),用戶區(qū)
內(nèi)存由很大一組字或字節(jié)組成,每個字或字節(jié)都有它們自己的地址
存儲器管理的功能
存儲空間的分配和回收
地址變換:將邏輯地址變換成物理地址
存儲保護(hù):防止因用戶程序錯誤破壞系統(tǒng)或其他用戶,防止程序之間的相互干擾
存儲擴(kuò)充:在邏輯上為用戶提供一個比實(shí)際內(nèi)存更大的存儲空間
CPU能直接訪問的存儲器有:主存,高速緩存和寄存器
將程序裝入內(nèi)存有三種方式:絕對裝入方式(編譯時產(chǎn)生絕對地址的代碼無需地
址變換),可重定位裝入方式(編譯時產(chǎn)生相對地址的目標(biāo)代碼),動態(tài)運(yùn)行時裝
入方式(執(zhí)行時進(jìn)行地址變換)
邏輯地址:由CPU產(chǎn)生的地址。用戶編程時所用的地址,又稱相對地址、虛地址
物理地址:內(nèi)存單元所看到的地址。又稱絕對地址,實(shí)地址
邏輯地址空間:邏輯地址的集合
物理地址空間:物理地址的集合
為了確保每個進(jìn)程都有獨(dú)立的內(nèi)存空間。
基地址寄存器,界限地址寄存器
300040120900
那么程序可以訪問300040-420900的所有地址
內(nèi)存管理單元(MMU,memory-management-unit):運(yùn)行時把虛擬地址映射到物
理地址的設(shè)備。在MMU中,用戶進(jìn)程所產(chǎn)生的地址在送交內(nèi)存前都將加上重定位
寄存器的值
地址變換:將邏輯地址轉(zhuǎn)換為物理地址。又稱地址映射、重定位
地址變換分兩類:靜態(tài)地址變換(程序裝入時一次完成不改變,需要連續(xù)存儲空
間,難共享),動態(tài)地址變換(在程序執(zhí)行過程中,每次訪問內(nèi)存之前將要訪問
的地址轉(zhuǎn)為內(nèi)存地址,不需連續(xù)空間,可以實(shí)現(xiàn)虛擬存儲)
動態(tài)加載:子程序只有調(diào)用時才被加載。優(yōu)點(diǎn):不用的子程序不會被加載
動態(tài)鏈接:鏈接被推遲到執(zhí)行時期
存根:小段代碼用來定位合適的內(nèi)存駐留庫程序
程序的鏈接:鏈接程序的功能是將經(jīng)過編譯或匯編后得到的目標(biāo)模塊以及所需的
庫函數(shù)裝配成一個完整的裝入模塊
實(shí)現(xiàn)鏈接的三種方式:靜態(tài)鏈接,裝入時動態(tài)鏈接,運(yùn)行時動態(tài)鏈接
靜態(tài)鏈接:在程序運(yùn)行之前,將各目標(biāo)模塊及其所需的庫函數(shù)裝配成一個完整的
裝入模塊
裝入時動態(tài)鏈接:源程序編譯后所得到的目標(biāo)模塊在裝入內(nèi)存時邊裝入邊鏈接。
運(yùn)行時動態(tài)鏈接:將某些目標(biāo)模塊的鏈接推遲到執(zhí)行時才進(jìn)行。即在執(zhí)行過程中,
若發(fā)現(xiàn)一個被調(diào)用模塊尚未裝入內(nèi)存時,由OS去找到該模塊,將它裝入內(nèi)存并
鏈接到調(diào)用者模塊上。
覆蓋技術(shù):把一個大程序劃分為一系列覆蓋,每個覆蓋是一個相對獨(dú)立的程序單
位。把程序執(zhí)行時不要求同時裝入內(nèi)存的覆蓋組成一組叫覆蓋段。將一個覆蓋段
分配到同一個存儲區(qū)中,這個存儲區(qū)稱為覆蓋區(qū)。覆蓋區(qū)的大小由覆蓋段中最大
的覆蓋確定。
覆蓋技術(shù)主要在早期系統(tǒng)使用,要求專業(yè)的程序員給出覆蓋結(jié)構(gòu)。
交換:進(jìn)程可以暫時從內(nèi)存中交換到備份存儲上,當(dāng)需要再次執(zhí)行時再換回內(nèi)存。
(例如低優(yōu)先級內(nèi)存被換出,這樣高優(yōu)先級進(jìn)程可以裝入執(zhí)行。這種交換又被稱
為滾出,滾入)
交換空間管理:交換空間設(shè)置在外存交換區(qū),交換空間管理的主要目標(biāo)是提高交
換速度
交換空間采用連續(xù)分配方式,使用與動態(tài)分區(qū)分配類似的數(shù)據(jù)結(jié)構(gòu)和分配算法
交換技術(shù)由操作系統(tǒng)自己完成
連續(xù)內(nèi)存分配
內(nèi)存通常分為兩個區(qū)域:一個駐留操作系統(tǒng),通常位于內(nèi)存低端;一個駐留用戶
進(jìn)程,通常位于內(nèi)存高端
內(nèi)存保護(hù):防止一個進(jìn)程有意無意的破壞系統(tǒng)或其他進(jìn)程(內(nèi)存訪問不能越界)
常用的存儲保護(hù)方法:界限寄存器法,存儲保護(hù)鍵,環(huán)保護(hù)機(jī)制,訪問權(quán)限
界限寄存器法:通過對每個進(jìn)程設(shè)置一對界限寄存器(上下界寄存器或基址限長
寄存器)來防止越界訪問(如果越界則產(chǎn)生越界中斷),達(dá)到存儲保護(hù)的目的。
存儲保護(hù)鍵:為每個存儲塊分配一個保護(hù)鍵,相當(dāng)于一把鎖;進(jìn)入系統(tǒng)的每個作
業(yè)賦予一個保護(hù)鍵,相當(dāng)于一把鑰匙。當(dāng)作業(yè)運(yùn)行時,檢查鑰匙和鎖是否匹配,
若二者匹配,則允許訪問。否則發(fā)出保護(hù)性中斷信號
環(huán)保護(hù)機(jī)制:處理器狀態(tài)分為多個環(huán),分別具有不同的存儲訪問特權(quán)級,通常環(huán)
的編號越小,特權(quán)級越高。
存取權(quán)限:除上述保護(hù)方案外,還有四種存取權(quán)限:禁止做任何操作,只能執(zhí)行,
只能讀,讀/寫
內(nèi)存分配:
分區(qū)儲存管理分為:固定分區(qū),動態(tài)分區(qū)
分區(qū)分配算法:首次適應(yīng)算法,循環(huán)首次適應(yīng)算法(從上次找到的空閑分區(qū)的下
一個開始,使存儲空間利用均衡),最佳適應(yīng)算法(分區(qū)按容量遞增的次序排列),
最壞適應(yīng)算法(分區(qū)按容量大小遞減)
模擬實(shí)驗(yàn)顯示,首次適應(yīng)和最佳適應(yīng)難分伯仲,但是首次適應(yīng)快
內(nèi)部碎片:分配給作業(yè)的存儲空間中未被使用的部分
外部碎片:系統(tǒng)中無法利用的小存儲塊(因?yàn)樗鼈兲×耍?/p>
解決碎片的方法:拼接/緊縮,要浪費(fèi)很多的處理機(jī)時間
分頁:將物理內(nèi)存分為固定大小的塊,稱為幀。將邏輯內(nèi)存也分為同樣大小的塊,
稱為頁。在為進(jìn)程分配存儲空間時,總是以塊為單位來分配,可以將進(jìn)程中的某
一頁存放到主存的某一空閑塊中。
分頁沒有外部碎片,有內(nèi)部碎片
頁的邏輯地址由頁號和頁內(nèi)位移(pageoffset)組成
頁的大小一般為512B-8KB
頁表:記錄頁面在內(nèi)存中對應(yīng)物理塊的數(shù)據(jù)結(jié)構(gòu)
分頁機(jī)制中,每一次的數(shù)據(jù)/指令存取需要兩次內(nèi)存訪問(一次頁表一次數(shù)據(jù))
TLB(translationlook-asidebuffer)轉(zhuǎn)換后備緩沖區(qū),即快表,存放當(dāng)前
訪問的那些頁表項(xiàng)
TLB失效:頁號不在TLB內(nèi),則訪問頁表
如果TLB中的條目已滿,則需要替換,替換策略有LRU(最近最少使用),隨即
替換等。有的TLB允許有些條目固定下來
TLB命中率:一般80%-90%
有效內(nèi)存訪問時間:如果內(nèi)存一次存取時間是m,TLB訪問一次時間是n,命中
率為P。那么有效內(nèi)存訪問時間=p*(n+m)+(1-p)(2m+n)
存儲保護(hù)
有效-無效位(valid-invalidbit):附在頁表的每個表項(xiàng)中。當(dāng)該位有效時,表
示相關(guān)的頁在進(jìn)程的邏輯地址空間內(nèi),是合法的。反之不合法
共享頁:如果代碼是可重入代碼(reentrantcode純代碼)則可以共享(每個
進(jìn)程可以有自己的數(shù)據(jù)頁,但可用同一段代碼,訪問內(nèi)存的同一塊)
可重入代碼是不能自我修改的代碼,它在執(zhí)行期間不會改變
分段(segmentation):(考慮程序的邏輯完整性)一個程序是一些段的集合,一
個段是一個邏輯單位。如一個程序可分段為:代碼,全局變量,堆,每個線程的
棧等
每個分段有自己的名字,由0開始編址并采用一段連續(xù)的地址空間。每段分配一
個連續(xù)的內(nèi)存區(qū),但各段之間不要求連續(xù)
段表,類比頁表
分段不會產(chǎn)生內(nèi)部碎片
三種不連續(xù)內(nèi)存管理方式是:分頁存儲管理、分段存儲管理和段頁式
存儲管理(訪問兩次內(nèi)存)。
Chapter9虛擬內(nèi)存
虛擬內(nèi)存技術(shù):允許執(zhí)行進(jìn)程不必完全在內(nèi)存中。是一種以時間換空間的技術(shù)
虛擬存儲器的特征:離散型(不連續(xù)內(nèi)存分配),多次性(一個作業(yè)多次裝入內(nèi)
存),對換性(允許運(yùn)行中換進(jìn)換出),虛擬性(邏輯上擴(kuò)充內(nèi)存)
按需調(diào)頁:只有在需要的時候才調(diào)入一個頁(懶惰交換)
頁錯誤:當(dāng)訪問無效頁時,會產(chǎn)生頁錯誤陷阱.分頁硬件在通過頁表轉(zhuǎn)換地址時,
將發(fā)現(xiàn)已設(shè)置了無效位,會陷入操作系統(tǒng)。
缺頁中斷:缺頁中斷處理程序根據(jù)該頁在外存的地址把它調(diào)入內(nèi)存。若內(nèi)存有空
閑空間,則缺頁中斷處理程序只需把缺頁裝入并修改頁表中的相應(yīng)項(xiàng);若內(nèi)存中
無空閑物理塊,則需要先淘汰內(nèi)存中的某些頁,若淘汰頁曾被修改過,則還要將
其寫回外存。
有效訪問時間:
內(nèi)存的讀寫周期為t,缺頁中斷服務(wù)時間為tl(包含讀入缺頁、頁表更新、快表
更新時間),快表的命中率為a,缺頁中斷率為f,快表訪問時間為e,則有效
存取時間可表示為:
EAT=a*(e+t)+(1-a)*[(1-f)*2(e+t)+f*(tl+2(e+t))](里
面包括了查快表時間)
頁面置換(頁面淘汰):
為進(jìn)程分配的幀越多,頁錯誤越少
內(nèi)存的引用序列稱為引用串(referencestring)
采用如下引用串討論頁置換算法:70120304230321201701
(分配3個可用幀)
先進(jìn)先出置換算法(FIFO)
(會有15次頁面錯誤)(注:計(jì)算頁面錯誤時,注意前三個必產(chǎn)生3個頁面錯誤)
Belady異常:頁錯誤率可能隨分配的幀數(shù)的增加而增加
最優(yōu)置換(OPT算法/MIN算法)(不會有belady異常)產(chǎn)生的頁錯誤率最低
置換最長時間不會用到的頁(看未來)
難實(shí)現(xiàn)
LRU頁置換最近最少使用算法??梢援嫍?磿卸嗌夙撁驽e誤
近似LRU算法:附加引用位算法(被使用過就標(biāo)記1并添置高位(前八位)舍棄
最后一位),二次機(jī)會算法,增強(qiáng)型二次機(jī)會算法
基于計(jì)數(shù)的頁面置換:最不經(jīng)常使用算法(LFU),最常使用頁置換算法(MFU)
頁面緩沖算法:頁面緩沖算法是FIFO算法的發(fā)展。它在系統(tǒng)中保存一個空閑幀
緩沖池。
頁面緩沖置換算法采用FIFO選擇被置換頁面,選擇出的頁面不是立即換出,而
是放入空閑幀池。
幀分配
幀的最小數(shù)量:分配的幀要大于最少數(shù)量(不然產(chǎn)生太多的頁面錯誤)
分配算法:平均分配,比例分配(根據(jù)進(jìn)程大小,將可用的幀分給每個進(jìn)程),
按優(yōu)先級分配
全局分配與局部分配
固定分配和可變分配
將分配策略和置換范圍組合可得如下三種策略:
固定分配局部置換
可變分配全局置換
可變分配局部置換
顛簸/抖動:頻繁的頁調(diào)度行為而幾乎不能完成任何有效的工作。如果一個進(jìn)程
在換頁上用的時間多于執(zhí)行的時間,那么這個進(jìn)程就在顛簸。
Chapter10文件系統(tǒng)接口
文件系統(tǒng):操作系統(tǒng)中與管理文件有關(guān)的軟件和數(shù)據(jù)的集合。
文件系統(tǒng)負(fù)責(zé)管理外存上的文件,并為用戶提供對文件進(jìn)行存取、共享及保護(hù)的
手段。
文件是具有文件名的一組相關(guān)信息的集合,文件存放在外存上的。
文件由若干記錄組成。
記錄是一些相關(guān)數(shù)據(jù)項(xiàng)的集合。
數(shù)據(jù)項(xiàng)是數(shù)據(jù)組織中可以命名的最小邏輯單位。
文件屬性包含:名稱,標(biāo)識符,類型,位置,大小,保護(hù),時間日期和用戶標(biāo)識
所有的文件的屬性信息都保存在目錄結(jié)構(gòu)中
通常目錄項(xiàng)包含文件名及標(biāo)識號,而標(biāo)識號定位文件其他屬性信息。
文件操作:建立,刪除,讀,寫,打開,關(guān)閉(文件的操作除了正常的訪問之外,
還要包括對目錄項(xiàng)的操作)
在文件內(nèi)重定位:搜索相應(yīng)的目錄表項(xiàng),設(shè)置當(dāng)前文件指針給定值
文件類型:實(shí)現(xiàn)文件類型的常用技術(shù)是在文件名稱內(nèi)包含類型:如名稱.擴(kuò)展名
文件分類方法
按用途分類:系統(tǒng)文件(系統(tǒng)軟件構(gòu)成的文件),庫文件(系統(tǒng)提供給用戶使用
的各種標(biāo)準(zhǔn)過程、函數(shù)和應(yīng)用程序),用戶文件(用戶委托文件系統(tǒng)保存的文件)
按保護(hù)級別分類:只讀文件,讀寫文件,執(zhí)行文件(允許核準(zhǔn)用戶調(diào)用執(zhí)行,但
不允許讀寫),不保護(hù)文件(不加任何訪問限制)
按信息流向分類:輸入文件(來自輸入設(shè)備的文件),輸出文件,輸入輸出文件
(如磁盤上的文件,可以讀也可以寫)
按數(shù)據(jù)形式分類:源文件(由源程序和數(shù)據(jù)構(gòu)成的文件),目標(biāo)文件(源程序經(jīng)
過編譯但未鏈接成可執(zhí)行代碼的目標(biāo)代碼文件),可執(zhí)行文件(鏈接過的可運(yùn)行
文件)
文件結(jié)構(gòu):
邏輯結(jié)構(gòu):又稱文件組織,是從用戶觀點(diǎn)出發(fā)所看到的文件組織形式。
物理結(jié)構(gòu):又稱文件的存儲結(jié)構(gòu),是文件在外存上的存儲組織形式。
文件的邏輯結(jié)構(gòu):記錄式文件(有結(jié)構(gòu)文件),流式文件(無結(jié)構(gòu)文件,由字符
序列構(gòu)成)
記錄式文件的組織方式:順序文件(順序排列,記錄通常是定長的),索引文件
(有索引表),索引順序文件(分組順序排列,索引)
文件的物理結(jié)構(gòu):順序結(jié)構(gòu)(連續(xù)),鏈接結(jié)構(gòu)(指針),索引結(jié)構(gòu)(索引表)
文件存取方法:順序存取法(按照文件中記錄的順序依次訪問),直接存取法(任
意順序快速讀寫),按鍵存取法
目錄:用來組織文件。目錄可看作符號表,它能將文件名稱轉(zhuǎn)換成目錄項(xiàng)。
存儲結(jié)構(gòu):每個磁盤分區(qū)可以創(chuàng)建一個文件系統(tǒng)。這些分區(qū)可以組合成更大的結(jié)
構(gòu)-卷。卷可以看成虛擬磁盤。
文件由文件說明和文件體兩部分組成。
文件控制塊:即文件說明是保存文件屬性信息的數(shù)據(jù)結(jié)構(gòu)。包含,文件名,文件
類型,文件結(jié)構(gòu),文件物理位置,存取控制信息,管理信息
文件目錄與目錄文件:
目錄:文件控制塊的集合。即文件控制塊是一個目錄項(xiàng)。
目錄文件:文件的內(nèi)容為目錄信息。
目錄的功能:
實(shí)現(xiàn)“按名存取”:用戶只需提供文件名就可以對文件進(jìn)行操作。這是目錄管理
的最基本功能。
提高檢索速度
允許文件同名:不同目錄下的文件可以使用相同名字。
允許文件共享
目錄結(jié)構(gòu):
單級目錄結(jié)構(gòu)(所有文件被包含在一張目錄表,每個文件占一個表目)
二級目錄結(jié)構(gòu)(將文件目錄分為,主文件目錄(記錄用戶名以及用戶文件目錄的
位置),用戶文件目錄)
多級目錄結(jié)構(gòu)(又稱樹形目錄結(jié)構(gòu),在多級目錄結(jié)構(gòu)中,第一級目錄稱為根目錄
(樹根),目錄樹中的非葉節(jié)點(diǎn)均為目錄文件(又稱子目錄),葉結(jié)點(diǎn)為文件。)
圖形目錄結(jié)構(gòu)(無環(huán)圖目錄,允許目錄含有共享子目錄和文件。通用圖目錄)
路徑名:是一個字符串,該字符串由從根目錄出發(fā)到所找文件的通路上所有各級
子目錄名和該文件名用分隔符連接起來構(gòu)成
從根目錄出發(fā)的路徑稱為絕對路徑(absolutepathname)0
相對路徑(relativepathname):由從當(dāng)前目錄出發(fā)到所找文件的通路上的所
有目錄名與數(shù)據(jù)文件名用分隔符連接起來而形成。
有兩個特殊目錄:
“表示給定目錄的父目錄
”.表示當(dāng)前目錄
文件共享:是指不同用戶可以共同使用某文件。
共享語義:是文件系統(tǒng)對共享文件或目錄沖突訪問的處理方法。不同共享語義定
義了對緩存一致性問題的不同解決方案。
一致性語義:描述多用戶同時訪問共享文件時的語義。這些語義規(guī)定了一個用
戶所修改的數(shù)據(jù)何時對另一個用戶可見
UNIX語義:一個用戶對已經(jīng)打開的文件進(jìn)行寫操作,可以被同時打開同一文件
的其他用戶所見
會話語義(AFS語義):一個用戶對打開文件的寫不能立即被同時打開同一文件
的其他用戶所見。
不可修改共享文件語義:一旦一個文件被其創(chuàng)建者聲明為共享,它就不能被修改。
(文件名和內(nèi)容都不能被修改)
文件系統(tǒng)的早期實(shí)現(xiàn):繞道法(繞到共享文件上方的目錄),鏈接法(將一個目
錄中的鏈指針直接指向被共享文件所在的目錄),基本文件目錄表
Chapter11文件系統(tǒng)的實(shí)現(xiàn)
分層文件系統(tǒng)
文件系統(tǒng)按層組織:I/O控制層,基本文件系統(tǒng)層,文件組織模塊層,邏輯文件
系統(tǒng)層
I/O控制層:由驅(qū)動程序和中斷處理程序組成,實(shí)現(xiàn)內(nèi)存與磁盤之間的信息傳輸。
基本文件系統(tǒng)層:向合適的設(shè)備驅(qū)動程序發(fā)送一般命令就可對磁盤上的物理塊進(jìn)
行讀寫
文件組織模塊層:將邏輯塊轉(zhuǎn)換為物理塊,空閑空間管理器
邏輯文件系統(tǒng)層:管理元數(shù)據(jù)信息,管理目錄結(jié)構(gòu),通過文件控制塊來維護(hù)文件
結(jié)構(gòu)。
用于文件系統(tǒng)管理的內(nèi)存信息:
內(nèi)存安裝表:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度關(guān)于解除企業(yè)合規(guī)審查律師代理協(xié)議書2篇
- 二零二五年度高科技溫室大棚出租服務(wù)協(xié)議3篇
- 2025年度文化公司股份轉(zhuǎn)讓協(xié)議書范本3篇
- 二零二五年度租賃合同租賃物租賃期滿續(xù)租條件協(xié)議范本
- 二零二五年度2025年商業(yè)地產(chǎn)租賃管理服務(wù)合同3篇
- 2025年度員工股權(quán)激勵與公司員工福利待遇提升的專項(xiàng)合同3篇
- 二零二五年度太陽能光伏系統(tǒng)定期檢修與維修合同3篇
- 2025年度養(yǎng)殖場地承包與農(nóng)業(yè)廢棄物資源化利用合作協(xié)議3篇
- 二零二五年度競業(yè)禁止協(xié)議期限及競業(yè)限制解除程序3篇
- 二零二五年度回遷房更名與教育資源共享合同3篇
- 內(nèi)控合規(guī)風(fēng)險(xiǎn)管理手冊
- 教師工作職責(zé)培訓(xùn)課件建立良好的教師與學(xué)生關(guān)系
- 品管部年度工作總結(jié)
- 胃腸外科病人圍手術(shù)期營養(yǎng)管理專家共識護(hù)理課件
- 2024屆高考語文復(fù)習(xí):小說敘述特色專題復(fù)習(xí) 課件
- 四川省普通高中2024屆高三上學(xué)期學(xué)業(yè)水平考試數(shù)學(xué)試題(解析版)
- 石油鉆井機(jī)械設(shè)備故障預(yù)防與維護(hù)保養(yǎng)范本
- 浙江省溫州市2023-2024學(xué)年七年級上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 【全國最火爆的團(tuán)建項(xiàng)目】旱地冰壺(拓展訓(xùn)練服務(wù)綜合供應(yīng)平臺)
- 北京市西城區(qū)2023-2024學(xué)年五年級上學(xué)期期末數(shù)學(xué)試卷
- 工程結(jié)算課件
評論
0/150
提交評論