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