計算機操作系統 操作系統的目標
1、有效性 (提高系統資源利用率,提高系統的吞吐量)
2、方便性
3、可擴充性
4、開發性 操作系統的作用
1、os作為用戶和計算機硬件系統之間的接口
2、os作為計算機系統資源的管理者
3、os實現了對計算機資源的抽象 os的定義 操作系統:是一組控制和管理計算機硬件和軟件資源,合理地對各類作業進行調度,以方便用戶使用的程序的集合。 實時系統 指系統能夠即時響應外部事件的請求,在規定的實踐內容完成對該事件的處理,並控制所有實時任務協調一致的運行。 操作系統的基本特性 分時系統具有允許用戶和計算機進行人機交互特征,實時系統具有實時特性,但是它們都有並發、共享、虛擬和異步這四個基本特征。其中,並發特征是操作系統最重要的特征,其它三個特征都是以並發特征為前提的。
並行與並發 並行性是指兩個或多個事件在同一時刻發生,並發性是指兩個或多個事件在同一個時間間隔內發生。 引入進程 為使多個程序能並發執行,系統必須分別為每個程序建立進程。簡單來說,進程就是在系統中能獨立語序並作為資源分配的基本單位,它是一組機器指令、數據和堆棧組成的,是一個能獨立運行的活動實體。多個進程之間可以並發執行和交互信息。一個進程在運行是需要一定的資源,如cpu、存儲空間及I/O設備。 線程:能更高效的提高系統內多個程序間並發執行的程度。 互斥共享方式:當A進程訪問完並釋放該資源后,才允許另一個進程對該資源進行訪問。在一段時間內只允許一個進程訪問的資源成為臨界資源或者獨占資源。 進程是以人們不可預知的速度向前推進,此為進程的異步性。 操作系統的主要功能 處理機管理,存儲器管理,設備管理和文件管理。
處理機管理功能 處理機的分配和運行都是以進程為基本單位,因而對處理機的管理歸結為對進程的管理。在引入了線程的os中,有包含對線程的管理。處理機管理的主要功能是創建和撤銷進程(線程),對諸進程(線程)的運行進行協調,實現進程(線程)之間的信息交換,以及按照一定的算法把處理機分配給進程(線程)。 存儲器管理功能 內存分配 os在實現內存分配時,可以采取靜態和動態兩種方式。在靜態分配方式中,每個作業的內存空間是在作業裝入時確定的;在作業裝入后的整個運行期間,不允許改作業再次申請新的內存空間,也不允許作業在內存中"移動"。在動態分配方式中,每個作業所要求的基本內存空間也是在裝入時確定的,但允許作業在過程中繼續申請新的附加內存空間,以適應程序和數據的動態增長,也允許作業在內存中移動。 設備管理器 設備管理應該具有緩沖管理、設備分配和設備處理以及虛擬設備等功能。
模塊的獨立性 衡量模塊的獨立性有一下兩個標准:
1、內聚性 指模塊內部各部分間聯系的緊密程度。內聚性越高,模塊的獨立性越強。
2、耦合度 指模塊間互相聯系和互相影響的程度。耦合度越低,模塊的獨立性越好。
面向對象技術的優點
1、通過"重用"提高產品的質量和生產率
2、使系統具有更好的易修改性和易擴展性
3、更易保證系統的正確性和可靠性 程序順序執行及其特征 程序順序執行的特征
1、順序性
2、封閉性 程序是在封閉的環境下執行的,即程序運行時獨占全機資源,資源的狀態(除初始狀態外)只有本程序才能改變它。程序一旦開始執行,其執行結果不受外界因素影響。
3、可再現性 程序並發執行時的特征 程序的並發執行,雖然提高了系統的吞吐量,但是也產生了一些與程序順序執行時不同的特征
1、間斷性
2、失去封閉性 程序在並發執行時,是多個程序共享系統中的各種資源,因而這些資源的狀態將由多個程序來改變,致使程序的運行失去了封閉性。這樣,程序在執行時,必然會受到其他程序的影響。
3、不可再現 由於失去了封閉性,也將致使其再失去可再現性。 進程的特征和狀態 進程的特征
1、結構性 為使程序(含數據)能獨立運行,應為之配置一進程控制塊,即pcb(process control block),由程序段、相關數據段和pcb三部分便組成了進程實體。
2、動態性 動態性是進程的最基本的特征,動態性還表現在:它由創建而產生,由調度而執行,由撤銷而消亡。進程實體有一定的生命周期,而程序則只是一組有序指令的集合,並存放於某種介質上,其本身不具有運動的含義,因而是靜態的。
3、並發性
4、獨立性 獨立性是指進程實體是一個能獨立運行、獨立分配資源和獨立接受調度的基本單位。凡未建立pcb的程序都不能作為一個獨立的單位參與運行。
5、異步性 進程是程序的一次執行。
進程是一個程序及其數據在處理機上順序執行時所發生的活動。進程是程序在一個數據集合上運行的進程,它是系統進行資源分配和調度的一個獨立單位。 進程的三種基本狀態
1、就緒狀態 進程分配到除cpu以外的所有必要資源后,只要再獲得cpu,便可立即執行。
2、執行狀態 進程已獲得CPU,其程序正在執行。在單處理機系統中,只有一個進程處於執行狀態。在多處理機系統中,則有多個進程處於執行狀態。
3、阻塞狀態 正在執行的進程由於發生某事件而暫時無法繼續執行時,便放棄處理機而處於暫停狀態,亦即進程的執行受到阻塞,也吧這種暫停狀態稱為阻塞狀態,有時也稱為等待或封鎖狀態。
進程控制塊 系統為每個進程定義了一個數據結構---進程控制塊PCB(process control block),它是進程實體的一部分,是操作系統中最重要的記錄型數據結構。 pcb是進程存在的唯一標志 pcb可以被操作系統中的多個模塊讀或修改,如調度程序、資源分配程序、中斷處理程序以及監督和分析程序等讀或修改。 進程標識符 進程標識符用於唯一地標識一個進程。
一個進程通常有兩種標識符:1、內部標識符
2、外部標識符 進程控制 進程控制是進程管理最基本的功能。它用於創建一個新進程,終止一個已完成的進程,或終止一個因出現某事件而使其無法進行下去的進程,還可負責進程運行中的狀態轉換。 原語 原語是由若干條指令組成的,用於完成一定功能的一個過程。它與一般過程的區別是,它們是原子操作,它是一個不可分割的基本單位,因此,在執行過程中不允許被中斷。原子操作在管態下執行,常駐內存。
引起創建進程的事件
1、用戶登錄
2、作業調度 在批處理系統中,當作業調度程序按一定的算法調度到某作業時,便將該作業裝入內存,為它分配必要的資源,並立即為它創建進程,再插入就緒隊列中。
3、提供服務
4、應用請求
進程的創建
1、申請空白PCB
2、為新進程分配資源
3、初始化進程控制塊
4、講新進程插入就緒隊列 進程的阻塞是進程自身的一種主動行為。
進程喚醒過程:首先把被阻塞的進程從等待該事件的阻塞隊列中移出,將其PCB中的現行狀態由阻塞改為就緒,然后再將該PCB插入到就緒對列中。 進程的掛起與激活 進程的掛起 首先檢查被掛起進程的狀態,若處於活動就緒狀態,便將其改為靜止就緒;對於活動阻塞狀態的進程,則將之改為靜止阻塞。 進程的激活過程 系統將利用激活原語active()將指定進程激活。激活原語先將進程從外存調入內存,檢查該進程的現行狀態,若是靜止就緒,便將之改為活動就緒;若為靜止阻塞,便將之改為活動阻塞。 進程同步 進程同步的主要任務是對多個相關進程在執行次序上進行協調,以使並發執行的諸進程之間能有效地共享資源和相互合作,從而使程序的執行具有可再現性。
進程兩種形式的制約關系
1、間接制約關系:源於資源共享。例子(打印機:AB進程,A進程提出打印請求,系統已經將唯一的一台打印機分配給了進程B,則此時進程A只能阻塞,B釋放后才能將A的阻塞改為就緒狀態。)
2、臨界資源 : 不允許消費者進程到一個空緩沖區去去產品,也不允許生產者進程向一個已裝滿產品且尚未被取走的緩沖區中投放產品。
同步機制應遵循的規則
1、空閑讓進
2、忙則等待
3、有限等待 對要求訪問臨界資源的進程,應保證在有限時間內能進入自己的臨界區,以免陷入死等狀態。
4、讓權等待 當進程不能進入自己的臨界區時,應立即釋放處理機,以免進程陷入忙等。 經典進程的同步問題 消費者問題 利用互斥信號量mutex實現諸進程對緩沖池的互斥使用。利用信號量empty和full分別表示緩沖池中空緩沖區和滿緩沖區的數量。 生產者--消費者問題中應注意:在每個程序中用於實現互斥的 wait(mutex)和signal(mutex)必須成對的出現。其次,對資源信號量empty 和full的wait和signal操作,同樣需要成對地出現。 每個程序中的多個wait操作順序不能顛倒,應先執行對資源信號量的wait操作,然后再執行對互斥信號量的wait操作,否則可能引起進程死鎖。 線程 線程的基本屬性 操作系統中引入線程,為了減少程序在並發執行時所付出的時空開銷,使os具有更好的並發性。
進程的基本屬性:
1、進程是一個可以擁有資源的獨立單位。
2、進程同時又是一個可獨立調度和分派的基本單位。
線程與進程的比較
1、調度 在傳統的操作系統中,作為擁有資源的基本單位和獨立調度、分派的基本單位都是進程 在引入線程的操作系統中,則把線程作為調度和分派的基本單位,而進程作為資源的擁有的基本單位,把傳統進程的兩個屬性分開,是線程基本上不擁有資源,這樣線程便能輕裝前進,從而顯著的提高系統的並發程度。在同一個進程中,線程的切換不會引起進程的切換,但從一個進程中的線程換到另一個進程的線程時,講會引起進程的切換。
2、並發性 在引入線程的操作系統中,不僅進程之間可以並發執行,而且在一個進程中的多個線程之間亦可並發執行,使得操作系統具有更好的並發性,從而能更加有效地提高系統資源的利用率和系統的吞吐量。可以顯著的提高文件服務的質量和系統的吞吐量。
3、擁有資源 進程都可以又有資源,是系統中擁有資源的一個基本單位。一般而言,線程自己不擁有系統資源(也有一點必不可少的資源),但是它可以訪問其隸屬進程的資源,即一個進程的代碼段、數據段以及所擁有的系統資源,如已打開的文件、I/O設備等,可以改共進程所有的線程共享。
4、系統開銷 在創建或撤銷進程時,系統都要為之創建和回收進程控制塊,分配或回收資源,操作系統所有付出的開銷明顯大於線程創建或撤銷時的開銷。類似的,在進程切換時,誰寄到當前進程CPU環境的保存及新被調度運行進程的CPU環境的設置,而線程的切換則僅需保存和設置少量寄存器內容,不涉及存儲器管理方面的操作,所以就切換代價而言,進程也是遠高於線程的。 由於一個進程中的多個線程具有相同的地址空間,在同步和通信的實現方面線程也比進程容易。在一些操作系統中,線程的切換、同步和通信都無需操作系統內核的干預。
線程的屬性 每個線程都是作為利用CPU的基本單位,是話費最小開銷的實體。線程具有以下屬性
1、輕型實體
2、獨立調度和分派的基本單位
3、可並發執行
4、共享進程資源 進程不是一個可執行的實體。 線程的實現方式
a、內核支持線程(Macintosh和os/2操作系統)
優點: 1. 在多處理器系統中,內核能夠同時調度同一進程中的多個線程並執行
2. 如果進程中的一個線程被阻塞了,內核可以調度該進程中的其它線程占有處理器運行,也可以運行其它進程中的線程;
3. 內核支持線程具有很小的數據結構和堆棧,線程的切換比較快,切換開銷小 4. 內核本身也可以采用多線程技術,可以提高系統的執行速度和效率。
缺點: 1. 對於用戶的線程切換而言,其模式切換的開銷較大,在同一個進程中,從一個線程切換到另一個線程時,需要從用戶態轉到內核態進行,這是因為用戶進程的線程在用戶態運行,而線程調度和管理是在內核實現的,系統開銷較大
b、用戶級線程(數據庫管理系統如Infomix)
優點: 1. 線程切換不需要轉換到內核空間,節省了模式切換的開銷,也節省了內核的寶貴資源
2. 調度算法可以用進程專用。在不干擾操作系統調度的情況下,不同的進程可以根據自身需要,選擇不同的調度算法對自己的線程進行管理和調度,而與操作系統的低級調度算法是無關的。
3. 用戶級線程的實現與操作系統平台無關,因為對於線程管理的代碼是在用戶程序內的,屬於用戶程序的一部分,所有的應用程序都可以對之進行共享。因此,用戶級線程甚至可以在不支持線程機制的操作系統平台上實現。
缺點: 1. 系統調用的阻塞問題,在基於進程機制的操作系統中,大多數系統調用將阻塞進程,因此,當線程執行一個系統調用時,不僅該線程被阻塞,而且進程內的所有線程都會被阻塞。而在內核支持線程方式中,則進程中的其他線程仍可運行
2. 在單純的用戶級線程實現方式中,多線程應用不能利用多處理機進行多重處理的優點。內核每次分配給一個進程的僅有一個CPU,因此進程中僅有一個線程能執行,在該線程放棄CPU之前,其他線程只能等待。 一些系統如Solaris操作系統同時實現了這兩種類型的線程 處理機調度與死鎖 高級調度 高級調度又稱為作業調度或長度調度,其主要功能是根據某種算法,把外存上處於后背隊列中的那些作業調入內存,也就是說,它的調度對象是作業。 作業和作業步 作業:一個比程序更為廣泛的概念,它不僅包含了通常的程序和數據,而且應該配備一份作業說明書,系統根據該說明書來對程序的運行進行控制。在批處理系統中,是以作業為基本單位從外存調入內存的。
作業步:在作業運行期間,每個作業都必須經過若干個相對獨立、又相互關聯的順序加工步驟才能得到結果,我們把其中的每一個加工步驟稱為一個作業步,各作業步之間存在着相互聯系。往往是把上一個作業步的輸出作為下一個作業步的輸入。 低級調度 低級調度稱為進程調度或短程調度,它所調度的對象是進程(或內核級線程)。進程調度是最基本的一種調度,在多道批處理、分時和實時三種類型的os中,都必須配置這級調度。
低級調度的功能 主要功能如下: 1. 保存處理機的現場信息。在進程調度進行調度時,首先需要保存當前進程的處理機的現場信息,如程序計數器、多個通用寄存器中的內容等,講它們送入該進程的進程控制塊(pcb)中的相應單元。
2. 按某種算法選取進程。低級調度程序按某種算法如優先數算法、輪轉法等,從就緒隊列中選取一個進程,把它的狀態改為運行狀態,並准備把處理機分配給它。
3. 把處理器分配給進程。由分配程序(Dispatcher)把處理器分配給進程。
此時需要為選中的進程回復處理機現場,即把選中進程的進程控制塊內有關處理現場的信息裝入處理器相應的各個寄存器中,把處理器的控制權交給該進程,讓他從取出的斷點處開始繼續運行。 進程調度中的三個基本機制 1、排隊器 2、分派器(分派程序)
3、上下文切換機制 進程調度方式
a、非搶占方式 可能引起進程調度因素可歸納為如下:
1. 正在執行的進程執行完畢,或因發生某事件而不能再繼續執行;
2. 執行中的進程因提出I/O請求而暫停執行
3. 在進程通信或同步過程中執行了某種原語操作,如P操作(wait操作)、Block原語、Wakeup原語等。
b、搶占方式 搶占調度方式是基本與一定原則,主要如下: 1. 優先權原則 允許優先權搞的新進到進程搶占當前進程的處理機
2. 短作業(進程)優先原則
3. 時間片原則 中級調度 中級調度又稱中程調度。引入中級調度的主要目的是為了提高內存利用率和系統吞吐量。
選擇調度方式和調度算法的若干准則
a、面向用戶的准則
1. 周轉時間短,通常把周轉時間的長短作為評價批處理系統的性能、選擇作業調度方式與算法的重要准則之一。所謂周轉時間,是指從作業被提交給系統開始,到作業完成為止的這段時間間隔(稱為作業周轉時間)。
它包括四部分時間:作業在外存后備隊列上等待(作業調度)的時間,進程在就緒隊列上等待進程調度的時間,進程在CPU上執行的時間,以及進程等待I/O操作完成的時間。
2. 響應時間快
3. 截止時間的保證
4. 優先權准則
b、面向系統的准則
1. 系統吞吐量高
2. 處理機利用率好
3. 各類資源的平衡利用 調度算法 調度算法是指:根據系統的資源分配策略所規定的資源分配算法。對於不同的系統和系統目標,通常采用不同的調度算法。
先來服務和短作業(進程)優先調度算法
1、先來先服務(FCFS)調度算法 一種最簡單的調度算法,該算法既可用於作業調度,也可用於進程調度。 FCFS算法比較利於長作業(進程),而不利於短作業(進程)。
2、短作業(進程)優先調度算法(SJ(P)F) 指對短作業或短進程優先調度的算法。可以分別作用於作業調度和進程調度。短作業優先的調度算法是從后背隊列中選擇一個或若干個估計運行最短的作業,將它們調入內存運行。
缺點:
a、該算法對長作業不利
b、該算法完全未考慮作業的緊迫程度,因而不能保證緊迫性作業(進程)會被及時處理。
c、由於作業(進程)的長短只是根據用戶所提供的估計執行時間而定,而用戶又有可能會有意無意的縮短其作業的估計運行時間,致使該算法不一定能真正做到短作業有點調度。 產生死鎖的原因和必要條件 死鎖:指多個進程在運行過程中因爭奪資源而造成的一種僵局,當進程處於這種僵持狀態時,若無外力作用,它們都講無法向前推進。
產生死鎖的原因
a、競爭資源 當系統中供多個進程共享的資源如打印機、公用隊列等,其數目不足以滿足諸進程的需要時,會引起諸進程對資源的競爭而產生死鎖
b、進程間推進順序非法。進程在運行過程中,請求和釋放的資源不當,也同樣會導致產生進程死鎖。 競爭資源硬氣進程死鎖 1、可剝奪和非剝奪性資源 系統中的資源分成兩類:一類是可剝奪性資源,是指某進程在獲得這類資源后,該資源可以再被其他進程或系統剝奪。
CPU和主存均屬於可剝奪性資源。 另一類資源是不可剝奪資源 ,當系統把這類資源分配給某進程后,再不能強行收回,只能在進程用完后自行釋放,如磁帶機、打印機等。
2、競爭非剝奪性資源 在系統中所配置的非剝奪行資源,由於它們的數量不能滿足諸進程運行的需要,會使進程在運行過程匯總。因爭奪這些資源而陷入僵局。
3、競爭臨時性資源 是指由一個進程產生,被另一個進程使用一短暫時間后便無用的資源,也稱之為消耗性資源,也能引起死鎖。
產生死鎖的必要條件
1、互斥條件 : 指進程對分配到的資源進行排它性使用,即在一段時間內某資源只由一個進程占用。如果此時還有其他進程請求該資源,則請求者只能等待,直至占有該資源的進程用畢釋放。
2、請求和保持條件 : 指進程已經保持了至少一個資源,但有提出了新的資源請求,而該資源又已被其它進程占有,此時請求進程阻塞,但又對自己已獲得的資源保持不放。
3、不剝奪條件 : 只進程已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時自己釋放。 4、環路等待條件:在發生死鎖時,必然存在一個進程-----資源的環形鏈,即進程集合{P0,P1,P2。。。Pn},P0正在等待一個P1占用的資源,P1在等待P2的占有資源.....Pn正在等待的已被P0占用的資源。
處理死鎖的基本方法
1、預防死鎖 通過設置某些限制條件,去破壞產生死鎖的四個必要條件中的一個或幾個條件,來預防發生死鎖。預防死鎖是一種較易實現的方法,已被廣泛使用。但由於所施加的限制條件往往太嚴格,因而可能會導致系統資源利用率和系統吞吐量降低。
2、避免死鎖 同樣屬於事先預防的策略,在資源的動態分配過程中,用某種方法去防止系統進入不安全狀態,從而避免發生死鎖。這種方法只需要事先施加較弱的限制條件,便可獲得較高的資源利用率和系統吞吐量,但實現上有一定的難度。目前在比較完善的系統中使用該方法來避免發生死鎖。
3、檢測死鎖 允許系統在運行的過程中發生死鎖。可通過系統所設置的檢測機構,及時地檢測出發死鎖的發生,並精確的確定與死鎖有關的進程和資源,然后采取適當措施,從系統中將已發生的死鎖清除掉。
4、解除死鎖 與檢測死鎖配套的一種措施,當檢測到系統中已發生死鎖時,須將進程從死鎖狀態中解脫出來。常用的實施方法是撤銷或掛起一些進程,以便回收一些資源,再將這些資源分配給已處於阻塞狀態的進程,使之轉為就緒狀態,以繼續運行。死鎖的檢測和接觸措施有可能使系統獲得較好的資源利用率和吞吐量,但在實現上難度也最大。 系統安全狀態 系統的狀態分為安全狀態和不安全狀態,只要能使系統時鍾都處於安全狀態,便可避免發生死鎖。 安全狀態 指系統能按照某種進程順序(P1,P2,....Pn)(稱(P1,P2,....Pn)序列為安全序列),來為每個進程Pi分配其所需要資源,直至滿足每個進程對資源的最大需求,使每個進程都可順利地完成。如果系統無法找到這樣一個安全序列,則系統處於不安全狀態。 如果不按照安全序列分配資源,則系統可能會由安全狀態進入不安全狀態。
死鎖的檢測與解除 死鎖的檢測 當系統為進程分配資源時,若未采取任何限制性措施,則系統必須提供檢測和解除死鎖的手段,為此,系統必須做到: 1、保存有關資源的請求和分配信息 2、提供一種算法,以利用這些信息來檢測系統是否已進入死鎖狀態。 存儲器管理 動態分區分配 動態分區分配是根據進程的實際需要,動態地為之分配內存空間。 在實現可變分區分配時,將涉及到分區分配中所用的數據結構,分區分配算法和分區的分配與回收操作三個問題。
分區分配算法
1、首次適應算法 傾向於優先利用內存中低址部分的空閑分區,從而保留了高址部分的大空閑區。 缺點是低址部分不斷被划分,會留下許多難以利用、很小的空閑分區。無疑會增加查找可用空閑分區時的開銷。
2、循環首次適應算法 從上次找到的空閑分區的下一個空閑分區開始查找,直至一個能滿足要求的空閑分區,從中划出一個塊與請求大小相等的內存空間分配給作業。
缺點:會缺乏大的空閑分區
3、最佳適應算法 指每次為作業分配內存時,總是把能滿足要求、又是最小的空閑分區分配給作業,避免“大材小用”。為了加速尋找,該算法要求所有的空閑分區按其容量以從小到大的順序形成一個空閑分區鏈。 缺點:在存儲器上留下許多難以利用的小空閑區
4、最壞適應算法 要掃描整個空閑分區表或鏈表,總是挑選一個最大的空閑區分割給作業使用,其優點是可使剩下的空閑區不至於太小,產生碎片的幾率最小,對中、小作業有利,同時最壞適應分配算法查找效率很高。 缺點:它會使存儲器缺乏大的空閑分區。 最壞適應算法與首次適應算法、循環首次適應算法、最佳適應算法一起,也稱為順序搜索法。
5、快速適應算法 又稱為分類搜索法,將空閑分區根據其容量大小進行分類,對於每一類具有相同容量的所有空閑分區,單獨設立一個空閑分區鏈表。 優點:查找效率高,保留大的分區,不會產生內存碎片。 缺點:分區歸還主存時算法復雜,系統開銷較大。
分區分配操作 主要操作是分配內存和回收內存
1、分配內存 設請求的分區大小為u.size,表中每個空閑分區的大小可表示為 m.size。若m.size-u.size<=size(size是實現規定的不可再分割的剩余分區的大小)
2、回收內存 當進程運行完並釋放內存時,系統根據回收區的首址,從空閑區鏈(表)中找到相應的插入點。 基本分頁存儲管理方式 如果離散分配的基本單位是頁,則稱為分頁存儲管理方式。如果離散分配的基本單位是段,則稱為分段存儲管理方式。 頁面 分頁存儲管理是將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁。相應的,把內存空間分成與頁面相同大小的若干個存儲塊,也稱為(物理)塊或頁框(frame),同樣也為它們加以編號。 頁面大小 頁面的大小選擇適中,且大小應為2的冪,通常為512B-8KB。 頁表 頁表的作用是實現從頁號到物理塊號的地址映射。 地址變換機構 為了能將用戶地址空間中的邏輯地址變為內存空間中的物理地址,在系統中必須設置地址變換機構。該機構的基本任務是實現從邏輯地址到物理地址的轉換。 因此,地址變換機構的實際任務就是講邏輯地址中的頁號,轉換為內存的物理塊號。 基本的地址變換機構 頁表的功能可以由一組專門的寄存器來實現。一個頁表用一個寄存器。由於寄存器具有較高的訪問速度,因而有利於提高地址變換的速度。頁表大多駐留在內存中。 若未出現越界錯誤,則講頁表始址與頁號和頁表長度的乘積相加,便得到該表項在頁表中的位置,於是可從中得到該頁的物理塊號。 具有快表的地址變換機構 第一次是訪問內存中的頁表,從中找到指定頁的物理塊號,再將塊號與業內偏移量W拼接,以形成物理地址。第二次訪問內存時,才是從第一次所得地址中獲得所需數據(或向此地址中寫入數據) 為了提高地址變換速度,可在地址變換機構中增設一個具有並行查尋能力的特殊告訴緩沖寄存器 ,又稱為“聯想寄存器”,或稱為“快表”。 在CPU開出有效地址后,由地址變換機構自動地將頁號P送入高速緩沖寄存器,並將此頁號與高速緩存中的所有頁號進行比較,若其中有與此相匹配的頁號,便表示所要訪問的頁表項在快表中。可直接從快表中讀出該頁所對應的物理塊號,並送到物理地址寄存器中。如在快表中未找到相對應的頁表項,則還須再訪問內存中的頁表,找到后,把頁表項中讀出的物理塊號送地址寄存器。 兩級與多級頁表 為解決頁表非常大,占用相當大的內存空間問題: 1. 采用離散分配方式來解決難以找到一塊連續的大內存空間的問題
2. 只將當前需要的部分分頁表項調入內存,其余頁表項仍駐留在磁盤上,需要時再調入。 段表: 在系統中為每個進程建立一張段映射表,簡稱“段表”。每個段在表中占有一個表項,其中記錄了該段在內存中的起始地址(又稱為基址)和段的長度。 分頁和分段的主要區別 1、頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭。分頁僅僅是由於系統管理的需要而不是用戶的需要,段則是信息的邏輯單位。 2、頁的大小固定且由系統決定,由系統把邏輯地址划分為頁號和頁內地址兩部分,在系統中只能有一種大小的頁面;而段的長度缺不固定,決定於用戶所編寫的程序。
3、分頁的作業地址空間是一維的,即單一的線性地址空間。 虛擬存儲器的基本概念 前面介紹的各種存儲器管理方式有一個共同的特點,即它們都要求將一個作業全部裝入內存后方能運行,於是有下面兩種情況: 1. 有的作業很大,其所要求的內存空間超過了內存總容量,作業不能全部被裝入內存,致使該作業無法運行 2. 有大量作業要求運行,但由於內存容量不足以容納所有這些作業,只能將少數作業裝入內存讓它們先運行,而將其他大量的作業留在外存上等待。 出現上述情況的原因是內存容量不夠大。解決方法A、從物理上增加內存容量。B、從邏輯上擴充內存容量。(這正是虛擬存儲技術所要解決的主要問題。) 常規存儲器管理方式的特征 1、一次性 2、駐留性 局限性原理 1、時間局限性。如果程序中的某條指令一旦執行,則不久以后該指令可能再次執行;如果某數據被訪問過,則不久以后該數據可能再次被訪問。 2、空間局限性 一旦程序訪問了某個存儲單元,在不久之后,其附近的存儲單元也將被訪問,即程序在一段時間內訪問的地址,可能集中在一定的范圍之內。 虛擬存儲器的定義 僅須將那些當前要運行的少數頁面或段先裝入內存便可運行,其余部分暫留在盤上。 所謂虛擬存儲器,是指具有請求調入功能和置換功能,能從邏輯上對內存容量加以擴充的一種存儲器系統。 虛擬存儲器的實現方法
1、分頁請求系統 a、硬件支持 主要的硬件支持有:
1、請求分頁的頁表機制 ,它是在純分頁的頁表機制上增加若干項而形成的,作為請求分頁的數據結構 2、缺頁中斷機構:即每當用戶程序要訪問的頁面尚未調入內存時,便產生一缺頁中斷,以請求OS將所 缺的頁調入內存; 3、地址變換機構 ,他同樣是在純分頁地址變換機構的基礎上發展形成的。0 b、實現請求分頁的軟件 用於實現請求調頁的軟件和實現頁面置換的軟件。 2、請求分段系統 一般需要下列支持: a、請求分段的段表機制。這是在純分段的段表機制基礎上增加若干項而形成的。
b、缺段中斷機構 每當用戶程序所要訪問的段尚未調入內存時,產生一個缺段中斷,請求OS將所缺的段調入內存。 c、地址變換機構。 與請求調頁相似,實現請求掉段和段的置換功能也須得到相應的軟件支持。 虛擬存儲器的特征 虛擬存儲器具有多次性、對換性和虛擬性三大主要特征。 虛擬性是指能夠從邏輯行擴充內存容量,使用戶所看到的內存容量遠大於實際內存容量。 請求分頁便成為目前最常用的一種實現虛擬存儲器的方式。 請求分頁中的硬件支持 1、頁表機制
2、缺頁中斷機構 與一般的中斷相比,有明顯的區別,主要表現在一下方面:
a、在指令執行期間產生和處理中斷信號。 缺頁中斷是在指令執行期間,發現所要訪問的指令或數據不在內存時所產生和處理的。 b、一條指令在執行期間,可能產生多次缺頁中斷。
3、地址變換機構 內存分配策略和分配算法
1、量小物理塊數的確定
2、物理塊的分配策略
a、固定分配局部變量置換
b、可變分配全局置換
c、可變分配局部置換
3、物理塊分配算法 a、平均分配算法 b、按比例分配算法 c、考慮優先權的分配算法 最佳置換算法和先進先出的置換算法 最佳置換算法 其所選擇的被淘汰頁面,將是以后永不使用的,或許是在最長(未來)時間內不再被訪問的頁面。 先進先出(FIFO)頁面置換算法 總是淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰。 最近最久未使用(LRU)置換算法 LRU(Least Recently Used)置換算法的描述 LRU置換算法是選擇最近最久未使用的頁面予以淘汰。 LRU置換算法的硬件支持 須有兩類硬件之一的支持:寄存器或棧 I/O系統 I/O系統是實現數據輸入、輸出及數據存儲的系統。 緩沖池 緩沖池的組成 1、空(閑)緩沖區 2、裝滿輸入數據的緩沖區 3、裝滿輸出數據的緩沖區 SPOOLing技術 SPOOLing技術是講一台物理I/O設備虛擬為多台邏輯I/O設備,同樣允許多個用戶共享一台物理I/O設備。 外存分配方式 外存分配方法有連續分配、鏈接分配和索引分配三種。 采用連續分配方式的文件物理結構,將是順序式的文件結構;鏈接分配方式將形成鏈接式文件結構;而索引分配方式則將形成索引式文件結構。 連續分配方式 連續分配要求為每一個文件分給一組相鄰的盤塊。這種分配方式保證了邏輯文件中的記錄順序與存儲器中文件占用盤快的一致性。
連續分配的主要優點
1、順序訪問容易
2、順序訪問速度快
缺點: 1、要求有連續的存儲空間 2、必須事先知道文件的長度
OSI/RM的低三層
1、物理層(TCP/IP的網絡訪問層)
2、數據鏈路層 (TCP/IP的網絡訪問層)
3、網絡層 (TCP/IP的網絡互連層)
OSI/RM的高四層
1、傳輸層 (TCP/IP的傳輸層 TCP,UDP)
2、會晤層 (TCP/IP的應用層 各種應用層協議,如TELNET,FIP,SMTP)
3、表示層 (TCP/IP的應用層 各種應用層協議,如TELNET,FIP,SMTP)
4、應用層。 (TCP/IP的應用層 各種應用層協議,如TELNET,FIP,SMTP)