版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三章存儲管理第三章存儲管理主存儲器是僅次于CPU的寶貴資源。眾多進程共用一個存儲器,必然涉及到存儲器的分配、安全、利用率、共享以及擴展等諸多問題。存儲管理需要做的事情是:將用戶程序所用的地址空間轉換為主存儲器中的實際地址空間,將用戶程序的操作地址變換為存儲器上的具體位置。為存儲空間提供安全和共享的手段。為用戶程序實現(xiàn)虛擬存儲空間等。3.1實用系統(tǒng)中的存儲管理方法DOS分區(qū)及分段WindowsXP的存儲器Linux存儲管理3.1.1DOS分區(qū)及分段
主存儲器被限制為1MB的內存空間。
低端的640KB的基本內存。高端的擴展內存。
系統(tǒng)啟動后將操作系統(tǒng)調入基本內存的低端位置,大概占幾十KB的空間。
基本內存的剩余部分便是用來存放用戶程序的用戶區(qū)。在DOS發(fā)展的后期,已經可以利用擴展內存來存放系統(tǒng)的數據結構、驅動程序以及某些庫文件等內容,但用戶不能對擴展存儲器中的內容進行修改。
程序和數據不能突破基本內存的限制,因此,用戶程序的大小必須低于640KB。用戶區(qū)內只能存放一個用戶程序,因此,DOS系統(tǒng)只支持單道程序。
3.1.2Windowsxp的存儲器
Windowsxp要求存儲器最低為64MB。內存被劃分為大小為4KB的頁面。內存中可以存放多個用戶任務的頁面,因此,Windows支持多任務同時運行。用戶在編制程序時,其大小最高可達4GB,但在程序運行時,并不是全部程序都裝入內存,而是只裝入程序的部分頁面來運行。當需要裝入新的程序頁面而內存中又沒有足夠的空閑區(qū)域時,操作系統(tǒng)將內存中長期未使用的頁面換出到輔助存儲器上早已安排的頁面(pagingfile)文件中,騰出空間后再將需要換進的頁面調入。Windows支持虛擬存儲器。3.1.2Windowsxp的存儲器
頁面在內存中換出換進PageFaults/sec是每秒鐘發(fā)生頁面缺失的平均數量。頁面缺失將直接導致頁面換進。PagesInput/sec是從磁盤換進頁面的速度。當一個進程引用一個虛擬內存的頁面,而此頁面不存在于內存,就會發(fā)生頁面缺失。PagesOutput/sec是指為了釋放物理內存空間而將頁面寫入磁盤的速度。當物理內存不足時,Windows會將頁面寫回到磁盤以便釋放空間。出頁的峰值往往與進頁峰值接近。說明出頁多是因為有進頁需求,即只有當內存中沒有可分配空間,同時又必須調入內存新的頁面時,才需要換出頁面。3.1.2Windowsxp的存儲器
可用物理內存AvailableMBytes是計算機上運行的進程的可用物理內存大小。它是將零的、空閑的和備用內存列表的空間添加在一起來計算的。3.1.3Linux存儲管理
Linux系統(tǒng)也是將存儲器空間劃分成頁面,根據進程運行時的需要來對頁面進行換進、換出的。同樣在磁盤上也安排了交換區(qū)來與內存協(xié)調工作,以達到擴大內存的目的。但是Linux系統(tǒng)的交換區(qū)多采用在硬盤上劃分出一個指定區(qū)域來作為交換區(qū),因此,交換區(qū)的大小不可變化。3.2存儲管理功能用戶實體與存儲空間分配、釋放及分配原則地址映射虛擬存儲器存儲保護與共享存儲區(qū)整理3.2.1用戶實體與存儲空間
1.用戶實體與存儲器的關系任務在被激活之前存放在輔助存儲器上。當任務被激活時,它成為進程進入主存儲器。進程的描述部分及主程序部分始終存放于主存儲器,其他程序和數據部分視需要由操作系統(tǒng)在內存與外存之間交換。當用戶向計算機提交自己的任務時,存儲管理是以一種邏輯形式來進行描述。而當操作系統(tǒng)處理用戶的任務時,是對具體的存儲器地址進行操作。存儲管理的工作就是圓滿地處理發(fā)生在銜接邏輯和物理存儲時所產生的各種問題。3.2.1用戶實體與存儲空間
2.存儲空間與存儲地址概念:
邏輯地址 邏輯地址空間 物理地址 物理地址空間用戶的每一條程序指令要訪問的數據都有一個對應的地址,這個地址被稱為邏輯地址。由于它是相對于0的地址,因此又被稱為相對地址。當用戶程序被編譯為目標代碼時也使用的是相對地址。原則上講,因此用戶可以無限制地加長自己的程序。在具體應用中相對地址的大小受相對地址寄存器位數的限制,如在Windows中相對地址寄存器為32位,表示相對地址最大可達4GB。邏輯地址空間可以定義為:實體(用戶、作業(yè)、任務、進程或程序)所用的所有邏輯地址的集合。不同的操作系統(tǒng)賦予邏輯地址空間不同的表現(xiàn)形式,它的大小也是可以確定的。用戶可以直接對邏輯地址和邏輯地址空間進行訪問和操作。邏輯地址空間又稱為相對地址空間,有時候也被簡稱為用戶空間或者作業(yè)空間。邏輯地址空間的大小被限制在0到相對地址最大值之間。內存中的實際地址被稱為物理地址。由于它并不和任何相對地址相關,因此,物理地址又稱為絕對地址。物理地址的最小值為0,最大值取決于內存的大小和內存地址寄存器的所能表現(xiàn)的最大值,二者中較小的那一個值為物理地址的最大值。
物理地址空間可以定義為:當邏輯地址空間被映射到內存時所對應的物理地址的集合。物理地址空間又稱為絕對地址空間。物理地址空間并不是指物理內存,只有當邏輯地址空間存在時,才會有物理地址空間。物理地址空間受存儲器大小的限制,也就是說物理地址空間最大只能達到內存的大小。3.2.2分配、釋放及分配原則
1.存儲分配
2.存儲釋放
3.分配原則
在設計分配程序時需要考慮諸多因素:(1)內存空間的劃分(2)數據結構的確定
(3)作業(yè)空間的劃分(4)淘汰算法
(5)分配算法
存儲分配實際上是將作業(yè)的邏輯地址空間映射成為內存中的物理地址空間。內存中有許多尚未使用的區(qū)域即自由區(qū)都可以被分配,但到底選擇哪一自由區(qū)必須依據分配算法來確定。
存儲釋放實際上是解除邏輯地址空間與物理地址空間的聯(lián)系,并釋放物理空間。存儲釋放程序將回收的內存區(qū)域重新設定為自由區(qū),并將其安排進入自由區(qū)隊列。進入自由區(qū)隊列的具體位置也必須依據分配算法。3.2.3地址映射
裝入后的作業(yè)并不能立即運行,因為作業(yè)中每一個指令要訪問的地址依然是相對地址,相對地址是邏輯地址空間中的地址,并不是內存中的實際地址,因此不能夠訪問。
裝入是指將邏輯地址空間安排到內存中具體的物理位置上。裝入針對的是整個邏輯地址空間。1.裝入2.地址映射對于指令要訪問的地址進行相對地址到絕對地址的變換,就是地址映射。地址映射就是將邏輯地址空間中的地址映射到物理地址空間中去。采用的辦法為重定位。3.重定位在裝入過程完成后,根據裝入的起始位置來修改程序中指令要訪問的地址,將相對地址改為絕對地址就是重定位。絕對地址=(BR)+相對地址根據不同的地址修改時間可將重定位劃分為靜態(tài)重定位和動態(tài)重定位。3.2.3地址映射
3.重定位:靜態(tài)重定位動態(tài)重定位
靜態(tài)重定位是在裝入過程完成后在程序運行前,一次將所有的指令要訪問的地址全部修改為絕對地址,在程序運行過程中不再修改。靜態(tài)重定位要求程序一旦裝入其絕對地址空間就不能發(fā)生變化了。
動態(tài)重定位是在程序的運行過程中,當指令需要執(zhí)行時對將要訪問的地址進行修改。動態(tài)重定位允許在程序運行過程中,其絕對地址空間發(fā)生變化或被分割為不同的區(qū)域,變化后只需要將基地址寄存器中的內容作對應修改。
采用靜態(tài)重定位方式的主要優(yōu)點是:(1)可以在一般機器上全部用軟件實現(xiàn)。(2)裝入程序可以實現(xiàn)靜態(tài)連接。靜態(tài)重定位方式主要缺點是:(1)執(zhí)行期間程序不能在主存儲器中移動,所以對提高主存儲器的利用率不利。(2)若程序空間大于被分配的物理空間,由程序員自行采取某種手段來空間不足問題,如采用覆蓋結構。(3)用戶不能共享已經存放在主存中的同一個程序,如果幾個用戶要使用同一個程序,則每個用戶必須在各自的主存空間中存放一個程序副本。
采用動態(tài)重定位方式的主要優(yōu)點有:(1)在程序開始執(zhí)行之前,不一定要把整個程序都調入到主存中。一個程序可以被分配在多個不連續(xù)的主存物理空間內,以提高主存儲器的利用率。(2)幾個程序可以共享存放在主存中的同一個程序段。(3)支持虛擬存儲器。動態(tài)重定位方式的主要缺點有:(1)需要有硬件支持。(2)實現(xiàn)存儲管理的軟件算法比較復雜。3.2.4虛擬存儲器
(1)實際內存空間(2)輔助存儲器上的內存交換區(qū)(3)虛擬地址(4)換進、換出機制虛擬存儲器是將內存進行虛擬,使用戶能使用比實際內存大得多的虛擬空間。要實現(xiàn)虛擬內存必須具備如下條件:
目前的操作系統(tǒng)幾乎全部具備虛擬存儲器功能,雖然不同的系統(tǒng)其實現(xiàn)虛擬存儲器的基本條件都相似,但在數據的換進、換出策略上是可以不同的。
3.2.5存儲保護與共享
存儲保護就是要保護進程的數據不被非法訪問者破壞。
(1)界地址寄存器保護法 (2)訪問授權保護3.2.5存儲保護與共享
(1)界地址寄存器保護法 采用硬件: 基地址寄存器BR
長度寄存器LR
采用軟件:
當進程之間需要共享某些數據時,使用界地址寄存器就表現(xiàn)得無能為力。
3.2.5存儲保護與共享
(2)訪問授權保護當進程訪問某個區(qū)域時,若進程的訪問權限大于等于被訪問區(qū)域的權限值,訪問可以進行,否則視為非法。系統(tǒng)為每一個存儲區(qū)域都給定一個訪問權限值。同時也為每一個進程賦予一個訪問權限值。
一個進程可以對不同存儲區(qū)域有不同的訪問權限;一個存儲區(qū)域也可以被多個具有不同訪問權限的進程按權限級別進行訪問。訪問授權保護還有一個好處是它允許存儲區(qū)域的共享。3.2.6存儲區(qū)整理
當系統(tǒng)運行一段時間后,可能出現(xiàn)如下問題:
產生許多碎片; 進程過分分散存儲; 換進、換出的次數過多,導致系統(tǒng)運行緩慢; 不斷“內存空間不夠”。
——存儲區(qū)需要整理。3.2.6存儲區(qū)整理
存儲器的整理方法:
(1)定期將內存中的碎片合并; (2)將某些進程的分散存儲區(qū)域移動到一起。經過整理后
系統(tǒng)中有更大的自由分區(qū),提高存儲管理的效率; 在整理時中斷所有進程,并且需要消耗較多的CPU時間。3.3分區(qū)管理單一分區(qū)多重固定分區(qū)多重動態(tài)分區(qū)3.3.1單一分區(qū)
1.原理連續(xù)的用戶邏輯地址空間,經過裝入程序直接裝入分區(qū)的低地址部分的單一的連續(xù)的區(qū)域。2.分配與釋放
3.3.1單一分區(qū)
3.地址映射
采用靜態(tài)重定位的方式在作業(yè)裝入時一次性對所有指令將要訪問的地址進行修改。由于作業(yè)的物理地址空間不會發(fā)生變化,因此,單一連續(xù)分區(qū)不適合使用動態(tài)重定位。
3.3.1單一分區(qū)
4.存儲保護
使用界地址寄存器保護法。其中,基址寄存器的內容是操作系統(tǒng)常駐內存部分以后的首地址,長度寄存器的內容便是用戶可用區(qū)域的長度。由于操作系統(tǒng)不會發(fā)生變化,甚至可以不使用界地址寄存器,而將基址和長度用兩個常量來代替。3.3.1單一分區(qū)
5.單一連續(xù)分區(qū)的優(yōu)缺點3.3.1單一分區(qū)
(1)管理簡單。(2)使用安全。(3)不需要任何附加的硬件設備。(1)作業(yè)的大小受用戶區(qū)大小的限制。(2)不支持多用戶。(3)容易造成系統(tǒng)資源的浪費。3.3.2多重固定分區(qū)
將內存空間由小到大劃分為若干個位置固定大小不等的區(qū)域,每個區(qū)域可以存放一個作業(yè),存放于不同區(qū)域的作業(yè)可以并行。用戶邏輯地址空間依然是一個連續(xù)的整體,在作業(yè)申請進入內存時一次性裝入。
描述內存中每一個區(qū)域的情況描述存放于區(qū)域中的作業(yè)3.3.2多重固定分區(qū)
地址映射由于作業(yè)被分配進入內存后位置不再發(fā)生變化,因此,地址映射可以采用靜態(tài)重定位方法。不過我們要注意到每一個作業(yè)的物理地址空間的起始位置是不相同的,因此,對每一個作業(yè)進行重定位時要修正基址寄存器的值。存儲保護存儲保護可以采取界地址寄存器的方法和訪問授權保護,由于作業(yè)在內存中的位置保持不變,可以用兩個常量替代界地址寄存。
3.3.2多重固定分區(qū)
優(yōu)缺點:(1)提高了CPU的利用率。(2)作業(yè)大小受到最大分區(qū)大小的限制。(3)空間浪費。(4)碎片問題。3.3.3多重動態(tài)分區(qū)
根據作業(yè)對內存空間的申請來劃分主存區(qū)域,區(qū)域的大小可變、位置可變、數量也可變
描述已被分配的區(qū)域描述內存中的自由區(qū)域為每一個自由分區(qū)設置一個鏈接指針來指向下一個自由分區(qū),使所有的自由分區(qū)形成一個鏈表3.3.3多重動態(tài)分區(qū)
多重分區(qū)分配與釋放
將作業(yè)分配到內存中第一個碰到的大于或等于作業(yè)申請空間的未分配區(qū)。將作業(yè)申請大小與內存中所有未分配區(qū)的大小進行比較,直到找到最小的大于或等于作業(yè)空間的區(qū)分配給作業(yè)。將作業(yè)申請大小與內存中所有未分配區(qū)的大小進行比較,直到找到最大的大于或等于作業(yè)空間的區(qū)分配給作業(yè)。算法簡單但分配比較盲目,可能造成較小的作業(yè)分割了較大的空間,使大作業(yè)無法被分配。優(yōu)先使用小的自由空間,但每次分配以后的剩余空間可能變得過小而成為碎片。使用大的自由空間,在進行分割后剩余空間還可以被使用,但也使大的自由空間無法保留給需要大空間的作業(yè)。另外可以有:最佳適應算法也是最先適應算法最壞適應算法也是最先適應算法——如何實現(xiàn)?——幾種方法比較3.3.3多重動態(tài)分區(qū)
4.地址映射
動態(tài)分區(qū)采用動態(tài)重定位方式來實現(xiàn)地址映射,這樣作業(yè)的基地址發(fā)生變化也不會影響執(zhí)行。當作業(yè)被選擇運行時,其物理空間起始地址被裝入基地址寄存器中,CPU每執(zhí)行一條指令之前重定位硬件對指令要訪問的地址進行修改。5.存儲保護存儲保護可以采用界地址寄存器的方法和訪問授權保護,不過由于作業(yè)被分配于內存一個連續(xù)的區(qū)域中,訪問授權保護的作用似乎并不大,因為作業(yè)并沒有對其他作業(yè)空間的訪問權力。3.3.3多重動態(tài)分區(qū)
6.存儲區(qū)整理經過不斷地分配和釋放后,內存中自由分區(qū)會變得越來越多和越來越小,這就使很多小自由分區(qū)成為碎片??梢杂镁o縮的方法來解決碎片。緊縮是將內存中已使用區(qū)域經過移動沉淀到低地址部分,從而使碎片浮動到內存的高地址部分合并成較大的可使用空間。用緊縮方法來消除碎片需要占用大量的CPU時間,并且在移動過程中稍有不慎就有可能破壞全部數據。3.3.3多重動態(tài)分區(qū)
7.多重動態(tài)分區(qū)的優(yōu)缺點(1)多道程度得以提高。(2)提高了內存的利用率。(3)作業(yè)大小依然受內存容量的限制。(4)對碎片問題的解決需要以增加系統(tǒng)開銷為代價。(5)不便共享。3.4分頁管理分區(qū)管理中要求:
一次性將作業(yè)空間分配到內存的某一個區(qū)域中,即使內存中空閑區(qū)域總和超過作業(yè)要求的空間,如果沒有合適的區(qū)域,分配將無法完成,其原因是作業(yè)空間始終是一個整體。能否將作業(yè)空間分割成若干部分呢?
靜態(tài)分頁管理 動態(tài)分頁管理
3.4.1靜態(tài)分頁管理
作業(yè)地址空間劃分成連續(xù)的大小相同的頁面內存劃分成連續(xù)的大小相等的塊(也稱為頁框)頁面的大小與內存塊的大小完全相同作業(yè)進入內存時其不同的頁面對應于內存中不同的塊,連續(xù)頁面可以對應不連續(xù)的塊。1.原理
2.邏輯地址
3.4.1靜態(tài)分頁管理
頁面號,頁號的范圍還取決于邏輯地址的位數。頁內位移,頁內位移范圍與內存塊的大小有關例:假定邏輯地址為32位,內存塊的大小為4KB。
4KB的頁內位移變化范圍為0~4095字節(jié),這需要12位來進行描述(212=4×1024);剩下的20位就是頁面號的范圍0~1048575(220-1)。由此可見內存塊的劃分有一定的規(guī)則,其大小只能是2N。分頁管理的邏輯地址實際上是線性變化的。用戶編程時不需要確定邏輯地址的頁面號和頁內位移,只有邏輯地址空間進入物理地址空間后,頁面號和頁內位移才通過計算電路來劃分。對于用戶而言,邏輯地址就是一個受地址寄存器位數限制的連續(xù)變化的地址范圍,可以根據需要來確定頁面大小和頁面號的范圍,因此我們稱分頁管理的邏輯地址空間為線性空間。3.數據結構
3.4.1靜態(tài)分頁管理
頁表:頁表用來說明作業(yè)頁面號與內存塊號的對應關系,內容包括頁面號、內存塊號。頁表寄存器:頁表寄存器用來存放作業(yè)所對應的頁表的起始地址。內存分塊表:內存分塊表內容為塊號、塊使用狀態(tài)(已使用或未使用)。作業(yè)表:作業(yè)表內容為作業(yè)號、頁表起始地址。4.地址映射
3.4.1靜態(tài)分頁管理
頁表起始地址
頁表中頁號為P的表目地址:(頁表寄存器)+表目長度×P獲得對應的內存塊號P’獲得絕對地址:P’×頁框長度+d5.分配與釋放
3.4.1靜態(tài)分頁管理
6.存儲保護與共享
3.4.1靜態(tài)分頁管理
存儲保護:用頁表寄存器來記錄頁表的起始地址和頁表長度,它相當于界地址寄存器的功能作業(yè)A、作業(yè)B、作業(yè)C共享一個內存塊的情況無法真正實現(xiàn)共享!7.存儲區(qū)整理表面看來不存在內存空間的浪費。但存在頁內碎片。內存分塊越大,頁內碎片也越大。如何減小頁內碎片?3.4.1靜態(tài)分頁管理
8.靜態(tài)分頁管理的優(yōu)缺點(1)管理簡單(2)每訪問一次內存數據需要經過二次尋址。(3)解決了碎片問題。無須內存碎片整理。(4)無法實現(xiàn)共享。(5)作業(yè)大小受內存可用頁面數的限制。
——如果想在內存中運行較大的作業(yè),則必須利用內存以外的存儲空間。3.4.1靜態(tài)分頁管理
3.4.2動態(tài)分頁管理
1.原理
與靜態(tài)分頁管理不同:——按需分配。將需要運行的頁面存放于內存,暫時不需要運行的頁面存放于輔存,當需要運行存放于輔存上的頁面時,再將對應的頁面調入內存。注意頁表變化4.分配與淘汰算法——動態(tài)分配
4.分配與淘汰算法——淘汰算法3.4.2動態(tài)分頁管理
衡量淘汰算法依據:——好的淘汰算法應該有較低的缺頁率和淘汰率。
4.分配與淘汰算法——淘汰算法選擇在最遠的將來才被訪問的頁面淘汰。
誰是最遠的、將來才被訪問的頁面?選擇最早進入內存的頁面淘汰
這種方法包含一個假定:最早進入內存的頁面就是目前最不會被使用的頁面。
假定不成立?——系統(tǒng)抖動!4.分配與淘汰算法——淘汰算法選擇最近一段時間內最長時間未被使用的頁面淘汰該算法的假定:長時間未使用的頁面不會馬上被使用。這正好符合內存局部性原理(內存中某個位置現(xiàn)在被訪問,很快將再次被訪問;某個位置現(xiàn)在被訪問,其鄰近位置也將被訪問。)問題:需要確定一個比較時間段來反映哪一個頁面長期未被使用,時間段過長時該算法將變?yōu)橄冗M先出算法,時間段過短又會使系統(tǒng)頻繁地記錄訪問次數并進行比較,從而增加系統(tǒng)開銷。(4)最近未使用算法(NRU)
選擇頁面選擇指針遇到的最近未被訪問的頁面淘汰。簡化的方法是:頁面選擇指針下移,只要遇到剛才未使用的頁面就可以淘汰。
5.虛擬存儲器動態(tài)分頁技術實現(xiàn)了虛擬存儲器。
虛擬要素?3.4.2動態(tài)分頁管理
6.加速尋址二次尋址?一次尋址?3.4.2動態(tài)分頁管理
7.分頁管理的優(yōu)缺點(1)管理簡單。(2)支持虛擬存儲器。(3)無法實現(xiàn)共享?!鳂I(yè)空間按邏輯意義分割!3.4.2動態(tài)分頁管理
3.5分段與段頁式管理分段管理段頁式管理3.5.1分段管理
作業(yè)地址空間按邏輯意義劃分成段,每段都有其對應的段號和段長,對分段數量和分段的長度沒有限制。
內存空間采用多重動態(tài)分區(qū)的形式,分區(qū)的長度和位置沒有限制。
段表將作業(yè)中的段對應于內存中的分區(qū)。有缺段機制。1.原理3.5.1分段管理
2.邏輯地址
段號S段內位移d每個段的段內位移的范圍是不同的。
分頁管理中,邏輯地址是線性地址。 分段管理中,段號S和段內位移d不能形成一個線性地址,因為它實際上是代表著段長和段內位移兩個變量。 由于這兩個變量沒有特定的限制范圍而無法用一個變量來替代,因此分段管理的邏輯地址是二維地址,分段管理的邏輯地址空間是二維空間。
3.5.1分段管理
3.數據結構
段表段表寄存器內存分塊表Or 已使用分區(qū)表 自由分區(qū)表 自由分區(qū)塊鏈作業(yè)表3.5.1分段管理
4.地址映射
段表中段號為S的表目地址=(段表寄存器)+表目長度×S段表起始地址=(段表寄存器)對應的內存分區(qū)地址S′絕對地址=S′+d3.5.1分段管理
5.分配與釋放
首先為作業(yè)分配段表空間;分配主程序段: 按一定的分配算法(內存空間采用動態(tài)分區(qū)形式,因此分配算法可采用最先適應算法、最佳適應算法或者最壞適應算法。)填寫段表: 填入對應段表表目中該段的內存地址,其他暫時不在內存的段,缺段狀態(tài)置為1,在需要運行時再調入。6.連接
當作業(yè)空間邏輯分段后,用戶是靠調用來實現(xiàn)段與段之間的關系,而存儲管理將其實現(xiàn)稱為連接——
連接也可以分為靜態(tài)連接與動態(tài)連接。6.連接
3.5.1分段管理
靜態(tài)連接發(fā)生在作業(yè)剛裝入內存還沒有被執(zhí)行前,——一次完成所有連接。動態(tài)連接發(fā)生在執(zhí)行過程中,每當作業(yè)段與段之間產生調用要求時才進行連接。問題:作業(yè)段必須一次全部調入內存,限制了作業(yè)的大小,對內存的容量要求高。作業(yè)中的各段沒有必要一次全部調入,這極大的提高了內存的利用率。分段管理采用的是動態(tài)連接方式。7.共享
3.5.1分段管理
8.存儲保護 在段表中既有段的起始位置也有段的長度,
——實現(xiàn)作業(yè)區(qū)域的界限管理。 在段表中增加一個訪問權限項,
——實現(xiàn)訪問授權控制。9.虛擬存儲器 缺段中斷機制+換進、換出,
——實現(xiàn)了虛擬存儲器。10.存儲區(qū)整理 動態(tài)分區(qū)形式導致內存碎片,
——可以使用緊縮的方法。3.5.1分段管理
11.分段管理的特點(1)易于實現(xiàn)共享。(2)實現(xiàn)了動態(tài)連接。(3)實現(xiàn)了虛擬存儲器。(4)段長受內存容量的限制。(5)內存管理復雜。3.5.1分段管理
有沒有同時利用分頁管理和分段管理的優(yōu)點,克服它們的弱點管理方法?3.5.2段頁式管理
作業(yè)地址空間分段再分頁內存分塊(頁框)對應頁表是否在內存對應頁面是否在內存3.5.2段頁式管理
2.邏輯地址
段號頁號頁內位移一維地址二維地址3.5.2段頁式管理
3.數據結構段表頁表段表寄存器存儲分塊表作業(yè)表3.5.2段頁式管理
4.地址映射
3.5.2段頁式管理
5.分配與釋放
段表分配
頁表分配
內存塊分配淘汰算法3.5.2段頁式管理
6.連接與共享連接——頁表動態(tài)連接(段連接)共享——同分段管理的共享7.存儲保護同分段管理的存儲保護8.虛擬存儲器缺段中斷+缺頁中斷+淘汰算法3.5.2段頁式管理9.存儲區(qū)整理只存在頁內碎片10.快速尋址使用高速存儲器來存放常用頁面的頁表,頁表內容為:段號、頁號和塊號。各種存儲管理方案比較
3.6常用系統(tǒng)的存儲管理方案DOS系統(tǒng)存儲管理WindowsXP的存儲管理Linux系統(tǒng)的存儲管理3.6.1DOS系統(tǒng)存儲管理
單一連續(xù)分區(qū)方式,用戶程序一次全部調入內存。
用戶地址空間可以分為四段。用來存放程序的代碼段,用來存放數據的數據段,用來實現(xiàn)數據操作的堆棧段,用來處理數組的地址段。這些段不需要連續(xù)存放,用戶甚至可以指定段的相對位置。段的起始地址由對應的段寄存器來指定,絕對地址由段地址加上段內位移來確定。如果用戶程序必須突破640KB的限制,可以采用稱為覆蓋的技術來進行編程。覆蓋技術實際上是同層模塊對同一個內存區(qū)域的覆蓋使用,以此來節(jié)約內存空間。如果用戶程序采用了覆蓋技術,只要不同層次的最大模塊的總和不超過640KB,該程序就可以運行。DOS系統(tǒng)只能識別1MB以內的內存空間。3.6.2Windows的存儲管理
Windowsxp使用的是486以上I386系列CPU提供的段頁式管理。CPU提供了一個16位的段選擇器和32位的偏移地址寄存器,因此,允許用戶空間分段,每段最大可達4GB。內存空間分為大小為4KB的塊。Windowsxp為每個進程提供4GB的虛擬存儲器,它由物理內存和用戶驅動器根目錄上的頁面文件(pagingfile)構成,虛擬空間的實現(xiàn)是由在內存與頁面文件之間的交換來完成的,交換的基本單位為4KB的頁面。虛擬地址有前、后兩個64KB的保護區(qū),該保護區(qū)的應用是為了防止編程錯誤而設定的。用戶程序的虛擬地址起始位實際為0x00400000。3.6.2Windows的存儲管理
4GB的虛擬地址又被分割成兩個2GB空間,低端的2GB提供給用戶進程使用,內裝用戶進程的程序代碼、數據等,高端的2GB為系統(tǒng)進程使用。用戶進程的虛擬地址空間被分為自由、已確認和保留三個部分:虛擬內存的確認區(qū):具有備用的物理內存,根據該區(qū)域設定的訪問權限,用戶可以進行寫、讀或在其中執(zhí)行程序等操作。虛擬內存的保留區(qū):沒有備用的物理內存,但具有一定的訪問權限。虛擬內存的自由區(qū):不限定其用途,其相應的權限為不可訪問。3.6.2Windows的存儲管理
與虛擬內存相關的訪問權限告訴系統(tǒng)進程可在內存中進行何種類型的操作。如只讀權限(可以在該區(qū)域上讀,但不能寫或者執(zhí)行),執(zhí)行權限(不能在該區(qū)域上讀或寫,但能執(zhí)行),非訪問權限(不允許進程對其地址進行任何操作)。Windowsxp還提供了在小塊內存中動態(tài)分配和釋放內存的處理程序——應用程序堆,應用程序堆對這種內存管理來說,無論是資源上還是運行上都是很高效的。另外,Windowsxp還提供了其他幾個內存擴展工具如內存塊清空、內存塊覆蓋、內存塊復制等。
3.6.3Linux系統(tǒng)的存儲管理
由于Linux系統(tǒng)也使用的是486以上的微機,它也利用了486的分頁技術來實現(xiàn)虛擬存儲器。在系統(tǒng)安裝時從硬盤上劃出一塊區(qū)域作為交換區(qū),系統(tǒng)運行時通過頁面的換進、換出來擴大存儲空間。整個虛擬空間可以劃分為16K個段,每個段的大小可變,最大能夠達到4GB,每個段可以提供獨立的段內保護。每個虛擬地址空間(16K個段)可以分為相等的兩個部分,一半稱為全局虛擬地址空間,由全局段描述符表(GlobalDescriptorLabel,
GDT)映射,另一半稱為局部虛擬地址空間,由局部段描述符表(LocalDescriptorLabel,
LDT)映射。3.6.3Linux系統(tǒng)的存儲管理
在同一個任務內部,還提供4種(0~3)保護特權級,某一級特權i只可以訪問所有其他大于等于這一特權級的程序段。進程的虛擬空間包括了系統(tǒng)(內核)空間和用戶空間兩個部分,它們分別處于不同的特權級。內核空間特權級為0,進程執(zhí)行這個空間的指令,稱為處于內核態(tài)(或者系統(tǒng)態(tài));用戶空間的特權級為3,進程執(zhí)行這個空間的指令,稱為處于用戶態(tài)。Linux系統(tǒng)采用記齡(aging)淘汰算法。Linux系統(tǒng)根據訪問次數來決定是否適合換出,優(yōu)先換出那些很長時間沒有訪問的頁面。3.7本
章
小
結
存儲管理涉及到對內存的劃分、分配與釋放、地址映射、存儲保護、存儲共享、虛擬存儲器等諸多方面。分頁管理簡單易行,分段管理利于共享,段頁式管理集中了所有存儲管理的優(yōu)點。存儲管理采用動態(tài)分配和淘汰算法進行內存和外存頁面的換進、換出來實現(xiàn)虛擬存儲器。也采用動態(tài)連接技術和用戶空間的合理劃分來實現(xiàn)對存儲區(qū)的共享。DOS系統(tǒng)采用了單一連續(xù)分區(qū)的方案,作業(yè)大小受內存容量的限制。Windowsxp和Linux系統(tǒng)采用動態(tài)段頁式管理,在內存與外存之間進行大小為4KB的頁面交換。本章結束,可記得做作業(yè)喲!第4章作業(yè)管理用戶界面作業(yè)作業(yè)與資源進程調度與作業(yè)調度作業(yè)與任務、進程、程序本章小結用戶界面用戶界面是操作系統(tǒng)提供給用戶使用計算機的手段對于不同的計算機用戶,操作系統(tǒng)要提供不同的交互手段,使用戶都能操控計算機來實現(xiàn)自己的目的作業(yè)控制語言作業(yè)控制命令菜單控制窗口和圖標系統(tǒng)調用用戶界面作業(yè)控制語言在早期批處理系統(tǒng)中,為了描述用戶提交給計算機的任務,系統(tǒng)提供給用戶的是類似于高級語言的作業(yè)控制語言
當用戶向計算機提出要求時,需要用作業(yè)控制語言來編寫作業(yè)控制程序,內容包括:每一個運行步驟要處理的數據需要運行的程序輸入和輸出方式需要使用的資源等用戶界面作業(yè)控制命令DOS操作系統(tǒng)是一個單用戶系統(tǒng)命令主要集中在文件管理方面,包含對文件及其目錄的創(chuàng)建、修改、刪除等對系統(tǒng)的控制主要有系統(tǒng)配置、時鐘設置、中斷處理等還能進行常規(guī)的編輯、編譯、連接裝配和程序執(zhí)行在DOS操作系統(tǒng)發(fā)展的后期,其命令又增加了通信、共享等功能雖然DOS系統(tǒng)幾經改善,但最后還是沒有逃脫被淘汰的命運命令dir的運行及其運行結果,即顯示當前目錄下的子目錄子目錄用戶界面作業(yè)控制命令Linux系統(tǒng)也采用了作業(yè)控制命令的形式當用戶登錄系統(tǒng)就進入一個稱為Shell的命令界面shell是一種命令解釋程序(命令解釋器),shell解釋用戶輸入的命令行,提交系統(tǒng)內核處理,并將結果返回給用戶一旦用戶注冊到系統(tǒng)后,shell就被系統(tǒng)裝入內存,并一直運行到用戶退出系統(tǒng)之止
ls命令顯示當前目錄下的所有文件,內容有文件名稱、存取權限、文件主名稱、大小、創(chuàng)建日期時間等Linux有如下幾大類命令:(1)有關進程及進程管理,內容包括進程的創(chuàng)建、等待、喚醒、撤消,進程的監(jiān)視,運行時間指定,安排前臺和后臺進程,實現(xiàn)進程的優(yōu)先級,以及實現(xiàn)批處理環(huán)境。(2)有關文件管理,包括文件及目錄的各種操作、文件的連接、文件的查找、文件輸入/輸出等。(3)有關用戶和用戶管理,包括用戶及用戶權限的設定、用戶信息顯示、用戶口令維護、用戶分組等。(4)有關硬盤管理和文件壓縮,包括對指定文件的壓縮、文件形式的轉換、磁盤空間的管理、環(huán)境設置、文件系統(tǒng)的安裝與拆卸。(5)有關網絡,包括設定系統(tǒng)的主機名、防火墻操作、主機登錄與退出、網絡地址的查找及路由指定等。(6)其他,如確定程序的執(zhí)行時間、報告系統(tǒng)名和其他信息、版本信息、用戶對話、信息廣播、電子郵件等。用戶界面菜單控制菜單將操作系統(tǒng)的功能進行分類,然后再進行更小類型的劃分,直到落實到每一個具體的功能
菜單控制的好處是:菜單列表一目了然,用戶只需要在菜單的提示下進行選擇來實現(xiàn)相應的功能程序運行的中間及最終結果都直接顯示在指定的輸出界面上用戶界面窗口和圖標采用窗口來打開一個較大的功能,再用窗口內的圖標來代表更為具體的功能
Windowsxp中采用的是圖標和窗口方式Linux系統(tǒng)中采用的是命令方式,但Linux并沒有回避窗口和圖標方式的巨大優(yōu)勢
用戶界面系統(tǒng)調用操作系統(tǒng)向編程人員提供了一種能夠完成底層操作的接口——系統(tǒng)調用系統(tǒng)調用其實是事先編制好的、存在于操作系統(tǒng)中的、能實現(xiàn)那些與機器硬件部分相關的工作的控制程序這些程序是操作系統(tǒng)程序模塊的一部分用戶通過操作系統(tǒng)的特殊入口地址來達到調用這些程序的目的
DOS系統(tǒng)只能通過匯編語言及其他高級語言來實現(xiàn)系統(tǒng)調用,通過中斷入口表按照數字所指定的地址來尋找調用地址Linux的每一個系統(tǒng)調用都有對應的調用名稱,只要輸入相應的命令和參數就能實現(xiàn)系統(tǒng)調用
Windows提供的系統(tǒng)調用稱為應用程序編程接口
(API),通過調用內核對象的功能函數來實現(xiàn)的作業(yè)作業(yè)是用戶交給計算機的具有獨立功能的任務在聯(lián)機系統(tǒng)中,從用戶登錄系統(tǒng)到用戶退出系統(tǒng)的整個過程,可以多次形成作業(yè),用戶每輸入一條命令或運行一段程序都代表著一個作業(yè)步作業(yè)在系統(tǒng)中也是動態(tài)的,從作業(yè)產生到作業(yè)消失的整個過程中,作業(yè)的狀態(tài)跟隨系統(tǒng)的運作而發(fā)生變化作業(yè)的狀態(tài)作業(yè)控制塊作業(yè)調度程序作業(yè)作業(yè)的狀態(tài)提交狀態(tài)當用戶正在通過輸入設備向計算機提交作業(yè)時,作業(yè)處于提交狀態(tài)處于提交狀態(tài)的作業(yè)存在于輸入設備和輔助存儲器中,這時,完整的作業(yè)描述信息還未產生對于整個系統(tǒng)來說,處于提交狀態(tài)的作業(yè)可以有多個對于單個用戶來說,一次只能提交一個作業(yè)
后備狀態(tài)當用戶完成作業(yè)的提交,作業(yè)已存在于輔助存儲器中,這時的作業(yè)處于后備狀態(tài)處于后備狀態(tài)的作業(yè)具有完整的作業(yè)描述信息,這些信息包括作業(yè)的名稱、大小、作業(yè)對應的程序等處于后備狀態(tài)的作業(yè)有資格進入主存儲器但何時進入主存儲器,還需要看有否這樣的時機
執(zhí)行狀態(tài)作業(yè)被調度進入主存儲器,并以進程的形式存在,其狀態(tài)就是執(zhí)行狀態(tài)處于執(zhí)行狀態(tài)的作業(yè)并不意味著一定在CPU上運行,是否運行依賴于進程控制處于執(zhí)行狀態(tài)的作業(yè)可以有多個,其數量與主存中作業(yè)的數量相一致,主存能容納的作業(yè)數量越多,處于執(zhí)行狀態(tài)的作業(yè)越多
停止狀態(tài)當作業(yè)已經完成其指定的功能,等待著與之相關的進程、資源,及其他描述信息的撤消,作業(yè)便進入停止狀態(tài)
作業(yè)作業(yè)控制塊(JCB)JCB用來唯一地標識作業(yè)并記錄所有與作業(yè)相關的信息這些信息是:作業(yè)標識:操作系統(tǒng)用來區(qū)分每一個作業(yè)。用戶標識:創(chuàng)建作業(yè)的用戶名稱及帳號。估計運行時間:預計的作業(yè)需要占用CPU的時間。優(yōu)先數:在作業(yè)調度時,能反應該作業(yè)被調度的機會。作業(yè)創(chuàng)建時間:作業(yè)從提交狀態(tài)變?yōu)楹髠錉顟B(tài)的時間。作業(yè)狀態(tài):代表作業(yè)在系統(tǒng)中所處的狀態(tài)。作業(yè)地址:作業(yè)在系統(tǒng)中的存放位置。作業(yè)對其他資源的要求:如存儲器要求、設備要求、文件及數據的要求等
作業(yè)作業(yè)調度程序提交狀態(tài)后備狀態(tài)作業(yè)調度程序實現(xiàn)從作業(yè)的提交狀態(tài)直到作業(yè)的后備狀態(tài)的所有狀態(tài)轉換作業(yè)調度程序實現(xiàn)作業(yè)的建立,為作業(yè)分配空的JCB,再在輔助存儲器空間上獲得作業(yè)的存放空間,然后將作業(yè)的有關信息填入到JCB中作業(yè)調度程序執(zhí)行狀態(tài)運行狀態(tài)就緒狀態(tài)等待狀態(tài)作業(yè)調度程序實現(xiàn)作業(yè)從后備狀態(tài)轉換到執(zhí)行狀態(tài)要完成的任務是:按照一定的算法從后備作業(yè)中選出一個作業(yè),將該作業(yè)的內容調入內存,實現(xiàn)作業(yè)資源的分配,調用進程創(chuàng)建原語為該作業(yè)建立進程,然后放棄對該作業(yè)的控制權
停止狀態(tài)作業(yè)調度程序實現(xiàn)作業(yè)從執(zhí)行狀態(tài)轉變?yōu)橥V範顟B(tài)當作業(yè)調度程序獲知某一個作業(yè)已經完成其所有的工作,便接過對該作業(yè)的控制權,釋放該作業(yè)所占有的資源,釋放該作業(yè)所對應的JCB
進程調度程序只管理進程從就緒狀態(tài)變?yōu)檫\行狀態(tài),而作業(yè)調度程序是對作業(yè)的整個過程進行管理作業(yè)狀態(tài)的變化是不可逆的,這也反映了作業(yè)運行的順序特征作業(yè)與資源資源管理的目的使資源達到充分利用使每一個用戶都能不需等待時間太長就能獲得資源使資源的分配盡量合理而不至于產生死鎖資源管理程序具備功能(1)對資源進行描述(2)對資源進行分配(3)保證資源使用的安全性根據不同資源的特性選取適當的數據結構來描述資源,內容包括資源標識、資源分配特性、資源安全要求、資源分配狀況等。資源描述數據結構是資源存在的標志按照一定的分配原則從若干申請資源的作業(yè)中選出合適的作業(yè),將作業(yè)申請資源的邏輯名與資源的物理地址進行連接,這樣用戶就能夠開始對資源的使用如果是共享資源,安全性表現(xiàn)在所有共享該資源的作業(yè)相互之間沒有不良影響或者越權操作。如果是獨享資源,安全性表現(xiàn)能夠用實現(xiàn)臨界資源的手段來使用獨享資源作業(yè)與資源資源分配策略排隊方法這種方法一般針對獨占使用的資源若干作業(yè)同時申請對獨享資源的使用,作業(yè)管理系統(tǒng)往往按照一定的順序將作業(yè)排成隊列,然后逐一安排對資源的使用排隊方法又可以根據隊列順序的安排原則分為:按先后順序排隊的先來先服務,按優(yōu)先級順序排隊的優(yōu)先級方法,按作業(yè)長短排隊的短作業(yè)優(yōu)先等虛擬資源方法有些作業(yè)在申請資源時,迫切要求資源的分配,于是系統(tǒng)就采取一種特殊的方法,使作業(yè)感覺到資源已被分配所分配的資源并不是作業(yè)申請的資源本身,而是資源的某種替代物最常見的方法是:用輔助存儲器的指定空間來代表資源,作業(yè)使用該空間來進行數據的輸入/輸出或存儲,一旦資源空閑,作業(yè)管理系統(tǒng)就將指定空間上的數據轉移到具體資源上。由于這一切都是操作系統(tǒng)來完成的,用戶不知道他在一段時間內并未獲得所申請的資源,因此,從一個時間范圍上來看,每一個用戶都享用了他所申請的資源,這種感覺上的資源就是虛擬資源進程調度與作業(yè)調度調度算法設計原則作業(yè)調度算法進程調度算法實用系統(tǒng)中的調度算法進程調度與作業(yè)調度調度算法設計原則公平在一般情況下,所有的實體都有公平的被調度機會高資源利用率對資源的均衡使用這樣做才能保證系統(tǒng)的穩(wěn)定性吞吐量吞吐量越高,系統(tǒng)的處理能力越強響應時間響應時間直接影響用戶的滿意程度衡量調度算法時采用的時間量周轉時間作業(yè)從提交開始到進入停止狀態(tài)的時間平均周轉時間
帶權周轉時間
周轉時間與實際運行時間的比為帶權周轉時間
平均帶權周轉時間
進程調度與作業(yè)調度作業(yè)調度算法先來先服務根據作業(yè)到達的先后次序安排作業(yè)的執(zhí)行順序,最先到達的作業(yè)最先執(zhí)行該算法操作最簡單同時看起來也最公平沒有考慮作業(yè)運行時間的長短,會使短作業(yè)的帶權周轉時間增大,長作業(yè)的帶權周轉時間較小,造成長短作業(yè)處于事實上的不公平狀態(tài)
先來先服務執(zhí)行順序提交時間運行時間開始時間完成時間周轉時間帶權周轉時間18.002.008.0010.002.00128.500.5010.0010.502.00439.000.1010.5010.601.601649.500.2010.6010.801.306.5先來先服務平均1.7256.875進程調度與作業(yè)調度作業(yè)調度算法短作業(yè)優(yōu)先根據作業(yè)提出的運行時間的長度來安排調度順序,最短的作業(yè)最先被調度進入執(zhí)行狀態(tài)降低短作業(yè)的帶權周轉時間,卻提高了長作業(yè)的帶權周轉時間對整個系統(tǒng)來說,短作業(yè)優(yōu)先算法可以提高系統(tǒng)的吞吐能力,加快系統(tǒng)的響應時間未考慮在響應時間上的公平,短作業(yè)有短的響應時間,如果系統(tǒng)中短作業(yè)過多,長作業(yè)則會有過長的等待時間
短作業(yè)優(yōu)先調度順序提交時間運行時間開始時間完成時間周轉時間帶權周轉時間18.002.008.0010.002.00148.500.5010.3010.802.304.629.000.1010.0010.101.101139.500.2010.1010.300.804短作業(yè)優(yōu)先平均1.555.15進程調度與作業(yè)調度作業(yè)調度算法最高響應比優(yōu)先帶權周轉時間又稱為響應比最高響應比優(yōu)先是按作業(yè)的響應比來安排調度順序,響應比高的作業(yè)優(yōu)先調度。響應比=周轉時間∕運行時間
=(運行時間+等待時間)∕運行時間
=1+等待時間∕運行時間每個作業(yè)的響應比隨時都在發(fā)生變化,因此要不斷地重新計算
最高響應比優(yōu)先調度順序提交時間運行時間開始時間完成時間周轉時間帶權周轉時間18.002.008.0010.002.00148.500.5010.1010.602.104.229.000.1010.0010.101.101139.500.2010.6010.801.306.5最高響應比優(yōu)先平均1.6255.675
在兩道環(huán)境下有四個作業(yè),已知它們進入系統(tǒng)的時間、估計運行時間,系統(tǒng)采用短作業(yè)優(yōu)先作業(yè)調度算法,作業(yè)被調度運行后不再退出,當一新作業(yè)投入運行后,可按照作業(yè)運行時間長短調整作業(yè)執(zhí)行的次序。請給出這四個作業(yè)的執(zhí)行時間序列,并計算出平均周轉時間及帶權平均周轉時間
作業(yè)調度算法應用例子兩道批處理系統(tǒng)中
最短作業(yè)優(yōu)先作業(yè)算法計算結果10:00,JOB1進入,只有一作業(yè),JOB1被調入執(zhí)行10:05,JOB2到達,最多允許兩作業(yè)同時進入,所以JOB2也被調入當一新作業(yè)運行后,可按作業(yè)運行時間長短調整執(zhí)行次序即基于優(yōu)先數可搶占式調度策略優(yōu)先數是根據作業(yè)估計運行時間大小來決定的。由于JOB2運行時間(20分)比JOB1少(到10:05,JOB1還需25分鐘),所以JOB2運行,而JOB1等待JOB3退出后,下一個是JOB4,JOB4結束后,JOB1才能繼續(xù)運行10:10,JOB3到達輸入井,內存已有兩作業(yè),JOB3不能馬上進入內存;10:20,JOB4也不能進入內存10:25,JOB2運行結束,退出,內存中剩下JOB1(剩25分鐘)作業(yè)調度算法:最短作業(yè)優(yōu)先因此JOB3進入內存,比較JOB1和JOB3運行時間,JOB3運行時間短,故JOB3運行進程調度與作業(yè)調度進程調度算法時間片輪轉法將所有的就緒進程按到達的先后順序排隊,每個進程被逐一地分配一個時間片運行,時間片完畢時運行態(tài)進程重新進入就緒隊列在一個時間片范圍內至少應該能完成一次現(xiàn)場保護和現(xiàn)場恢復、一次中斷處理程序或者一條原語的執(zhí)行
確定時間片需考慮因素:系統(tǒng)設計目標系統(tǒng)性能系統(tǒng)的設計目標決定了系統(tǒng)中運行的進程類型。用于工程運算的計算機系統(tǒng)往往需要較長的時間片,這樣可以降低進程之間頻繁切換所導致的系統(tǒng)開銷。用于輸入/輸出工作的系統(tǒng)只需要較短的時間片,因為它只需要在一個時間片范圍內完成少量的輸入/輸出準備和善后工作。用于普通多用戶聯(lián)機操作的系統(tǒng),時間片的大小主要取決于用戶響應時間計算機系統(tǒng)本身的性能也對時間片大小的確定產生影響。CPU時鐘頻率越快,單位時間內能夠執(zhí)行的指令數越多,其時間片就可以設置得越短。CPU指令周期長,程序的執(zhí)行速度就慢,時間片就需要較長,可長的時間片又有可能影響用戶響應時間,這時候便需要折中取值進程調度與作業(yè)調度進程調度算法優(yōu)先級法在時間片輪轉的基礎上,為進程設置優(yōu)先級,就緒進程按優(yōu)先級不同安排調度順序靜態(tài)優(yōu)先級在進程被創(chuàng)建時設定的優(yōu)先級動態(tài)優(yōu)先級動態(tài)優(yōu)先級在進程的存在過程中不斷地發(fā)生變化
設定可以考慮如下確定原則:運行系統(tǒng)程序的進程優(yōu)先級較高,運行用戶程序的進程優(yōu)先級較低。主要使用珍貴資源(如CPU、主存儲器等)的進程優(yōu)先級較低,主要使用輸入/輸出設備的進程優(yōu)先級較高。對于用戶要求緊急的進程給予較高優(yōu)先級
動態(tài)優(yōu)先級的變化原則往往取決于進程的等待時間、進程的運行時間、進程使用資源的類型等因素。一般情況是等待時間越長,優(yōu)先級越高,運行時間長,優(yōu)先級就會降低
進程調度與作業(yè)調度進程調度算法多級反饋隊列是一個綜合的調度算法,它綜合考慮了進程到達的先后順序、進程預期的運行時間、進程使用的資源種類等因素
進程的組織就緒進程被組織成N條隊列,優(yōu)先級由高向低排列,時間片由短到長排列
隊列號時間片優(yōu)先級指針123
:N高低短長進程調度與作業(yè)調度進程調度算法多級反饋隊列調度算法入口(隊列號=1)第一個進程退出就緒隊列否選中進程:狀態(tài)=運行態(tài)按指定時間片運行…隊列空?是隊列號++選擇優(yōu)先級最高的隊列如果該隊列為空,則指針移動到下一個優(yōu)先級隊列,直到找到不為空的隊列選擇隊列中的第一個進程運行運行時間片由隊列首部指定隊列號時間片優(yōu)先級指針123
:N高低短長當新的進程要進入就緒隊列時,根據進程的表現(xiàn)選擇不同優(yōu)先級的隊列進入。判斷及插入方法如下:①如果正在運行的進程時間片用完需要放棄CPU,在該進程運行之前所處隊列優(yōu)先級基礎上,下降一個優(yōu)先級后,進入該優(yōu)先級所對應的隊列尾部。②如果是因輸入/輸出中斷而進入等待隊列的進程,在進程被喚醒時進入該進程中斷之前所處的隊列尾部。③如果是新創(chuàng)建的進程,直接進入最高優(yōu)先級隊列的尾部
進程調度與作業(yè)調度進程調度算法多級反饋隊列算法特點短作業(yè)優(yōu)先當新的進程進入時,都是進入優(yōu)先級最高的隊列,如果作業(yè)需要運行的時間很短,則在較高的優(yōu)先級隊列中幾次運行就可以完成。如果作業(yè)需要運行時間較長,則會在使用完時間片后不斷往下一個隊列轉移,直到進入優(yōu)先級最低的隊列。輸入/輸出進程優(yōu)先由于進程在完成輸入/輸出中斷以后,返回到中斷以前所在的隊列,因此,它的優(yōu)先級不會降低。運算型進程有較長的時間片運算型進程需要較長的CPU運行時間,它雖然開始也是進入高優(yōu)先級短時間片的隊列,但每次運行后都下移一個隊列,時間片隨之變長,直到最后獲得最長的時間片。采用了動態(tài)優(yōu)先級,使用珍貴資源CPU的進程優(yōu)先級不斷降低。采用了可變時間片以適應不同進程對時間的要求,運算型進程將獲得較長的時間片
進程調度與作業(yè)調度實用系統(tǒng)中的調度算法WindowsXPWindowsxp程序用線程來構成進程,因此,時間片最終由線程來使用進程中線程的數目越多,獲得時間片的機會越多Windowsxp采用多級反饋隊列,每一個優(yōu)先數都對應于一個就緒進程隊列線程對時間片的使用采用的是同一個優(yōu)先數的時間片輪轉法
進程調度與作業(yè)調度實用系統(tǒng)中的調度算法WindowsXP進程優(yōu)先數分為兩大類:用于通信任務和實時任務的固定優(yōu)先數(優(yōu)先數為31-16)用于用戶提交的交互式任務的可動態(tài)調整優(yōu)先數(優(yōu)先數為15-0)進程優(yōu)先級別說明值REALTIME_PRIORITY_CLASS最高級24HIGH_NORMAL_PRIORITY_CLASS13ABOVE_NORMAL_PRIORITY_CLASSNORMAL_PRIORITY_CLASS8BELOW_NORMAL_PRIORITY_CLASSIDLE_PRIORITY_CLASS最低級6線程優(yōu)先數在進程所具有的級別基礎上,再進行相對調整可動態(tài)調整的線程優(yōu)先數確定原則為:每個進程創(chuàng)建時有一個基本優(yōu)先數,取值范圍從0到15其包含的線程有一個線程基本優(yōu)先數,取值范圍從-2到2線程的初始優(yōu)先數為進程基本優(yōu)先數加上線程基本優(yōu)先數,但必須在0到15的范圍內由于每個進程和線程的重要程度不同,每個進程和線程要賦予一個優(yōu)先級
級別說明THREAD_PRIORITY_IDLE當線程包含在具有HIGH_PRIORITY_CLASS或者更低級別的進程中時,線程的基礎優(yōu)先級為1;如果包含在REALTIMG_PRIORITY_CLASS優(yōu)先級的進程中時,則線程的優(yōu)先級為16。THREAD_PRIORITY_LOWEST線程的基礎優(yōu)先級比包含該線程的進程的優(yōu)先級低兩級。THREAD_PRIORITY_BELOW_NORMAL線程的基礎優(yōu)先級比包含該線程的進程的優(yōu)先級低一級。THREAD_PRIORITY_NORMAL線程的基礎優(yōu)先級和包含該線程的進程的優(yōu)先級相同。THREAD_PRIORITY_ABOVE_NORMAL線程的基礎優(yōu)先級比包含該線程的進程的優(yōu)先級低一級。THREAD_PRIORITY_HIGHEST線程的基礎優(yōu)先級比包含該線程的進程的優(yōu)先級低兩級。THREAD_PRIORITY_CRITICAL當線程包含在具有HIGH_PRIORITY_CLASS或者更低級別的進程中時,線程的基礎優(yōu)先級為15;如果包含在REALTIMG_PRIORITY_CLASS優(yōu)先級的進程中時,則線程的優(yōu)先級為31。進程調度與作業(yè)調度實用系統(tǒng)中的調度算法Linux系統(tǒng)提供了三種調度算法用于實時進程:先進先出算法(FIFO,F(xiàn)irstInFirstOut)輪轉算法(RR,RoundRobin)用于普通進程:可搶占式動態(tài)優(yōu)先級算法(PreemptiveScheduling)
按照實時進程進入可運行隊列的先后順序,依次把每一個進程投入執(zhí)行,只有前面的進程執(zhí)行完成或者自動放棄CPU(比如進入等待狀態(tài)),下一個進程才可以執(zhí)行。同時也考慮了進程的優(yōu)先級,具有相同優(yōu)先級的進程采用FIFO算法,如果有更高的優(yōu)先級出現(xiàn),調度函數就要選擇具有高優(yōu)先級的進程使用處理機按照進程在隊列中的順序依次分配時間片,運行態(tài)進程使用完時間片后進入就緒態(tài)重新排到可運行隊列的尾部,等待下一次調度考慮了進程的優(yōu)先級,具有相同優(yōu)先級的進程采用RR算法,而具有更高優(yōu)先級的實時進程擁有首先使用CPU的權利每個進程擁有不變的靜態(tài)優(yōu)先級和可變的動態(tài)優(yōu)先級,調度函數根據各進程的優(yōu)先級來確定權值,擁有最大權值的進程被選中執(zhí)行,如果多個進程具有相同權值,則選取排在可運行隊列最前面的那一個每一個進程都分配一定的時間片,時間片使用完之后,系統(tǒng)轉入調度函數,等所有非實時進程的時間片都使用完之后,再按照各自的優(yōu)先級給每個進程重新分配時間片。Linux時間片默認值為200ms,用戶可以針對不同的進程設置時間片的值進程調度與作業(yè)調度實用系統(tǒng)中的調度算法Linux中進程權值policy,進程被指定的調度算法priority,進程靜態(tài)優(yōu)先級counter,進程的動態(tài)優(yōu)先級rt-priority,實時優(yōu)先級進程的調度策略是從父進程那里繼承來的,但是也可以通過特定系統(tǒng)調用來改變。記載了進程最多可以擁有的時間片,從父進程那里繼承過來,只能由用戶通過系統(tǒng)調用來修改。表示進程在當前時間片中剩余的時間量它的初值等于靜態(tài)優(yōu)先級,在進程執(zhí)行期間,隨時間不斷減少,當它小于或等于0時,表明進程的時間片用完,重新設置為0,并引起調度。實時進程的優(yōu)先級,取值范圍為0~99,取0時表示不是實時進程系統(tǒng)在進行調度時,首先依據policy的值確定該進程的調度策略,選用與策略對應的算法進程權值權值是衡量一個進程是否執(zhí)行的惟一標準實時進程權值計算公式為:goodness=1000+rt-priority對于采用實時FIFO策略的進程:具有高實時優(yōu)先級的進程將一直執(zhí)行,直到進入僵死狀態(tài)、進入等待狀態(tài)或者是被具有更高實時優(yōu)先級的進程奪去處理機采用實時RR策略的進程:時間片用完之后,將被放到可運行隊列的尾部,等待下一次調度,處理機由下一個具有相同實時優(yōu)先級的進程使用普通進程權值的計算公式為:goodness=counter+priority普通進程的搶占式動態(tài)優(yōu)先級調度策略記為SCHED-OTHER,選擇執(zhí)行的依據是進程的動態(tài)優(yōu)先級進程創(chuàng)建之初,動態(tài)優(yōu)先級和靜態(tài)優(yōu)先級具有相同的值,隨著進程的執(zhí)行,動態(tài)優(yōu)先級慢慢減小,如果一個普通進程時間片用完的話,它的動態(tài)優(yōu)先級就是0,而且要等到其他所有進程的動態(tài)優(yōu)先級為0時才用靜態(tài)優(yōu)先級的值來初始化當前普通進程的時間片沒有用完,為了增大當前進程的權值,避免過分頻繁的進程切換,當前進程的權值計算公式為:
goodness=counter+priority+1新的普通進程進入可運行隊列后,在都使用相同靜態(tài)優(yōu)先級的情況下,新進程的權值很大,這樣可以保證新進程的響應時間
作業(yè)與任務、進程、程序操作系統(tǒng)的設計者描述系統(tǒng)行為時較多的用:進程、任務、線程;將調度算法劃分為對CPU的競爭、對存儲器的競爭和對輸入/輸出設備的競爭作業(yè)概念更多地用于脫機處理系統(tǒng),進程的概念更多的用于聯(lián)機處理
Linux系統(tǒng)中處理的對象是進程,而Windowsxp中只有任務、進程、線程概念任務被啟動,對應于該任務的進程也就被建立進程的運行包括兩種情況:以純粹的進程形式存在或者以線程的形式存在。線程是構成進程的可獨立運行的單元,當進程由線程構成時,線程成為占有CPU時間片的實體
作業(yè)、任務、進程、程序、線程之間都沒有唯一的對應關系程序是進程的基本組成部分,但它又可以對應多個進程,一個進程也可以由多個程序構成進程是作業(yè)的執(zhí)行狀態(tài),一個作業(yè)又可以對應多個進程線程包含在進程之中,一個進程可以由一個或多個線程構成本章小結作業(yè)管理是操作系統(tǒng)面向用戶的一部分。它提供給用戶使用計算機的界面,目前最流行方式是用窗口代表任務、用圖標代表功能系統(tǒng)中的作業(yè)有四種基本狀態(tài),由作業(yè)調度程序來完成狀態(tài)的轉化。將后備狀態(tài)的作業(yè)變?yōu)閳?zhí)行狀態(tài)需遵循作業(yè)調度算法,將就緒態(tài)的進程變?yōu)檫\行狀態(tài)需遵循進程調度算法,而算法的選取離不開公平、資源利用率、響應時間等設計原則實用操作系統(tǒng)正在不斷推出新的概念,不管何種新的概念都是為了描述使用資源的實體和對資源的競爭
重、難點講解在單道批處理系統(tǒng)中,有下列四個作業(yè),它們的提交時刻和運行時間由下表給出,請用先來先服務調度算法和最短作業(yè)優(yōu)先調度算法進行調度,完成下表并說明哪一種算法調度性能好些?(課后題14題)先來先服務算法作業(yè)提交時刻運行時間開始時間完成時間周轉時間帶權周轉時間18:00120分鐘8:0010:00120分鐘128:5050分鐘10:0010:50120分鐘2.439:0030分鐘10:5011:20140分鐘4.749:5010分鐘11:2011:30100分鐘10平均周轉時間T=120分鐘平均帶權周轉時間W=4.5最短作業(yè)優(yōu)先算法作業(yè)提交時刻運行時間開始時間完成時間周轉時間帶權周轉時間18:00120分鐘8:0010:00120分鐘128:5050分鐘10:4011:30160分鐘3.239:0030分鐘10:1010:40100分鐘3.349:5010分鐘10:0010:1020分鐘2平均周轉時間T=100分鐘平均帶權周轉時間W=2.37重、難點講解有5個進程它們按P1,P2,P3,P4,P5的順序幾乎同時到達,分別要求的運行時間為8,4,6,2,10,其優(yōu)先級分別為4,3,2,1和5(5為最高優(yōu)先級)。分別使用先來先服務、優(yōu)先級調度和時間片輪轉算法(設時間片為1)。分別計算其平均周轉時間和平均帶權周轉時間。(課后17題)先來先服務作業(yè)提交時刻運行時間開始時間完成時間周轉時間帶權周轉時間P1080881P204812123P3061218183P40218202010P50102030303平均周轉時間:17.6平均帶權周轉時間:4優(yōu)先級調度作業(yè)提交時刻運行時間開始時間完成時間周轉時間帶權周轉時間P1081018182.25P2041822225.5P3062228284.7P40228303015P5010010101平均周轉時間:21.6平均帶權周轉時間:5.69時間片轉算法作業(yè)提交時刻運行時間開始時間完成時間周轉時間帶權周轉時間P108027273.38P204116164P306223233.83P4023994.5P5010430303平均周轉時間:21平均帶權周轉時間:3.74第5章
文
件
系
統(tǒng)計算機中所有信息(程序、數據、圖像、電子郵件……),平時都只能以文件的形式存放在外存中,需要時再將它們調入內存。用戶直接通過文件名就能使用文件。
——文件系統(tǒng)負責對文件的各種具體管理工作本章內容:文件及文件系統(tǒng)的基本概念文件的邏輯結構和物理結構文件的目錄管理文件存儲空間管理對文件的各種操作文件的共享、安全與控制等
5.1Windows中的文件
Windows支持長文件名,文件名最多可使用256個字符。通過擴展名可識別該文件的類型。例如Arj.exe——一個可執(zhí)行文件Leaves.bmp——一個圖像文件xz.dbf——一個數據庫文件除“?\*“<>|”外,文件名可以包含空格和其他所有字符。
文件的存放路徑由文件所在驅動器和文件夾來確定。文件夾代表對文件及目錄形式存放的信息的分組。一個文件夾里包含其他文件夾,這樣,多層文件夾就構成了一個“文件夾樹”,最底層的樹葉才是一個文件。在DOS和Linux中,把文件夾稱為“目錄”,從而形成一棵“目錄樹”。Windowsxp提供了兩個十分有效的文件管理工具:“我的電腦”“資源管理器”圖5.1Windowsxp的資源管理器
樹格
其內還包含有其他子文件夾
可將文件夾收縮
用戶要進行一些如復制、更名、移動等操作,只需在選中對應圖標后點擊相應的命令按鈕即可。
“開始→程序→附件→記事本”
圖5.2Windows的記事本
Linux同樣提供了幾個編輯器例如
vi——標準文本編輯器
emacs——全能編輯器。遠遠超出普通編輯器的功能,可以保存日歷,作為計算器使用,建立大綱甚至瀏覽WWW網。用戶打開文件進行編輯時,看到的文件是由一個個字符組成的有序的集合。文件系統(tǒng)為了完成編輯任務,需要直接對輔存上的文件進行操作。計算機處理的文件和用戶眼中的文件是不一樣的,就是說文件有不同的表現(xiàn)形式。5.1.3文件的不同形態(tài)
用戶看到的文件是邏輯文件。有些文件由有序的字符流組成,如一封信、一個程序,稱為流式文件。有些文件則由若干記錄組成,如數據庫文件,稱為記錄式文件。計算機處理的文件稱為物理文件。針對不同的存儲介質,文件的存放形式是不一樣的,因此,物理文件也有不同的形態(tài):連續(xù)存放串聯(lián)存放
Windowsxp支持三個不同的文件系統(tǒng):FAT、FAT32和NTFS5.2文件和文件系統(tǒng)的基本概念
文件的含義很廣,一篇文章,一張照片,一首歌曲,一個程序,甚至是黑客編寫的病毒等都可以構成文件,到底什么是文件呢?
5.2.1文件
1.文件的定義文件是一組具有符號名的相關聯(lián)字符的集合。文件是一組具有符號名的相關聯(lián)記錄的集合。
操作系統(tǒng)把文件視為字符流,可以簡化管理。此時文件的基本單位是單個字符,字符之間只有順序關系而沒有結構上的聯(lián)系
把一組相關數據項的集合稱為記錄,例如,對學校進行管理時,學生是基本單位,描述學生時應該包括學號、姓名、年齡、所在系別班級等數據項。
和文件相關的術語有:域(字段)——數據的基本單位,由字符、數字構成。記錄——相關域的集合。數據庫(文件)——關聯(lián)記錄的集合,數據元素之間存在關系。2.文件名
文件名是一個用來標識文件的有限長度的字符串。有了文件名就能區(qū)分不同的文件,還可以通過文件名來對文件進行管理。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版酒店紅酒供貨合同
- 2025年度新能源汽車充電樁運營管理合同重點條款探討3篇
- 2024政府機關綠化工程采購合同范本二零二四2篇
- 二零二五版合同能源服務與節(jié)能產品推廣協(xié)議模板3篇
- 2025年度智能場館場地租賃合同范本3篇
- 2024自建房施工合同包工包料合同
- 二零二四年度35kv架空線路施工工程設計與施工協(xié)調合同
- 2025年度金融機構外匯借款合同模板12篇
- 勞動合同編號:XX-2025年度-001
- 2025年智能燃氣表推廣與應用居民供氣合同3篇
- 2023年湖北省武漢市高考數學一模試卷及答案解析
- 城市軌道交通的網絡安全與數據保護
- 英國足球文化課件
- 《行政職業(yè)能力測驗》2023年公務員考試新疆維吾爾新疆生產建設兵團可克達拉市預測試題含解析
- 醫(yī)院投訴案例分析及處理要點
- 燙傷的安全知識講座
- 工程變更、工程量簽證、結算以及零星項目預算程序實施細則(試行)
- 練習20連加連減
- 五四制青島版數學五年級上冊期末測試題及答案(共3套)
- 員工內部崗位調換申請表
- 商法題庫(含答案)
評論
0/150
提交評論