收藏一下,雖然很多東西還沒接觸到

来源:http://www.cnblogs.com/roucheng/archive/2016/06/11/systemtype.html
-Advertisement-
Play Games

操作系統和類型 (2007-8-15 22:17) 1、操作系統概念 是電腦系統的一種系統軟體,由它統一管理電腦系統的資源和控製程序的執行。 2、分類 (1) 批處理操作系統 何問起 hovertree.com 作業——把用戶要求電腦系統進行處理的一個計算問題稱為一個作業。 批處理操作系統—— ...


操作系統和類型

 (2007-8-15 22:17)

  1、操作系統概念     是電腦系統的一種系統軟體,由它統一管理電腦系統的資源和控製程序的執行。 2、分類 (1) 批處理操作系統 何問起 hovertree.com      作業——把用戶要求電腦系統進行處理的一個計算問題稱為一個作業。       批處理操作系統——用戶為作業準備好程式和數據後,再寫一份控製作業執行的說明書。然後把作業說明書、相應的程式和數據一起交給操作員。操作員將收到的一批作業的有關信息輸入到電腦系統中等待處理,由操作系統選擇作業並按其作業說明書的要求自動控製作業的執行。採用這種批量化處理作業的操作系統稱為“批處理操作系統”。       批處理系統按照預先寫好的業說明書控製作業的執行。因此,作業執行時無需人工干預,實現了電腦操作的自動化。      批處理操作系統可分為批處理單道系統和批處理多道系統。      “單道”的意思是指一次只有一個作業裝入電腦系統的主存儲器運行。      多道程式設計的硬體支持:中斷和通道。      批處理多道系統能極大地提高電腦系統的工作效率,具體表現為(理由):     1)多道作業並行工作,減少了處理器的空閑時間,即提高了處理器的利用率。     2)作業調度可以按照一定的組合選擇裝入主存儲器的作業,只要搭配合理,則可充分利用電腦系統的資源。     3)作業執行過程中,不再訪問低速的設備,而是直接在高速的磁碟上存取信息,從而縮短了作業執行時間,使單位時間內的處理能力得到提高。     4)作業成批輸入、自動選擇和控製作業執行,減少了人工操作時間和作業交接時間,有利於提高系統的吞吐率。       批處理系統的缺點是在作業執行時用戶不能直接干預作業的執行。http://hovertree.com/hovertreescj/ (2)分時操作系統       分時操作系統——能使用戶通過與電腦相連的終端來使用電腦系統,允許多個用戶與電腦系統進行一系列的交互,並使得每個用戶感到好像自己獨占一臺支持自己請求服務的電腦系統。具有這種功能的操作系統稱為“分時操作系統”,簡稱為“分時系統”。       在分時系統中,為了使一個電腦系統能同時為多個終端用戶服務,系統採用了分時技術。      分時技術:把CPU時間劃分成許多時間片,每個終端用戶每次可以使用一個由時間片規定的CPU時間。這樣,多個終端用戶就輪流地使用CPU時間。如果某個用戶在規定的一個時間片內沒有完成工作,這時也要把CPU讓給其它用戶,等待下一輪再使用一個時間片的時間,迴圈輪轉,直至結束。       批處理多道系統是實現自動控制無需人工干預的系統,而分時系統是實現人機交互的系統。      分析系統的主要特點?     5) 同時性     允許多個終端用戶同時使用一個電腦系統。     6) 獨立性     用戶在各自的終端上請求系統服務,彼此獨立,互不幹擾。好像每個用戶只有自己在單獨使用電腦系統,而實際上電腦系統在被多用戶分享。     7)及時性     對用戶的請求能在較短時間內給出應答。使用戶覺得系統及時相應了他的請求而得到滿意。     8)交互性     採用人-機對話的方式工作。用戶在終端上可以直接輸入、調試和運行自己的程式,能及時修改程式中的錯誤且直接獲得結果。     分時系統適合於短小作業,對於一些需要處理較長時間才有結果且不需要交互的大型作業來說,比較適合於用批處理系統。因此,有些操作系統既有批處理能力,又提供分時交互的能力。     前臺作業——由分時系統控制的作業稱為前臺作業。     後臺作業——由批處理系統控制的作業稱為後臺作業。 (3)實時操作系統     實時操作系統——能使電腦系統接收到外部信號後及時進行處理,併在嚴格的規定時間內處理結束,再給出反饋的操作系統稱為“實時操作系統”,簡稱為“實時系統”。     實時系統是較少有人為干預的監督和控制系統,僅當電腦系統識別到了違反系統規定的限制或本身發生故障時,才需要人為干預。      設計實時操作系統時有兩點必須特別註意:    1)要及時響應、快速處理。何問起 hovertree.com    2)要求有高可靠性、不強求系統資源的利用率。 (4)網路操作系統     網路操作系統——為電腦網路配置的操作系統稱為“網路操作系統”。網路操作系統把電腦網路中的各台電腦有機地聯合起來,實現各台電腦之間的通信及網路中各種資源的共用。用戶可以藉助通信系統使用網路中其它電腦的資源、實現相互間的信息交換,從而大大擴展了電腦的應用範圍。 (5)分散式操作系統       為分散式電腦系統配置的操作系統稱為“分散式操作系統”,分散式操作系統能使系統中若幹台電腦相互協作完成一個共同的任務,在分散式操作系統控制下,使各台電腦組成了一個完整的、功能強大的電腦系統。      分散式電腦系統——是由多台電腦組成的一種特殊的電腦網路。網路中的各台電腦沒有主次之分;網路中任意兩台電腦可以通過通信交換信息;網路中的資源供各用戶共用。 3、操作系統的功能     從資源管理的觀點出發,操作系統的功能可分為:處理器管理、存儲管理、文件管理、設備管理和作業管理等五大功能。 十、處理器管理 1、多道程式設計       多道程式設計——讓多個計算問題同時裝入一個電腦系統的主存儲器並行執行,這種設計技術稱為“多道程式設計”,這種電腦系統稱為“多道程式設計系統”或簡稱“多道系統”。     在多道程式設計的系統中,應採用“存儲保護”的方法保證各道程式互不侵犯。           程式浮動——在多道程式設計的系統中,要求編製的程式存放在主存的任何區域都能正確執行。甚至在執行過程中,當程式被改變了存放區域,其執行仍不受影響,也就是說,程式可以隨機地從主存的一個區域移動到另一個區域,程式被移動後絲毫不影響它的執行,這種技術稱為“程式浮動      採用多道程式設計的技術後,可有效地提高系統中資源的利用率,增加單位時間內算題量,從而提高了系統吞吐量。具體表現為:     1)提高了處理機的利用率。     2)充分利用外圍設備資源。     只要將使用不同設備的程式搭配在一起,同時裝入主存儲器,那麼,系統中的各種外圍設備都經常會處於忙碌狀態,使系統中的設備資源被充分利用。     3)發揮了處理器與外圍設備以及外圍設備之間的並行工作能力。 2、進程概念和屬性     進程——把一個程式在一個數據集合上的一次執行稱為一個進程。進程是操作系統中可以並行工作的基本單位,也是核心調度及資源分配的最小單位,它由程式、數據還有進程式控制制塊PCB組成,它與程式的重要區別之一是:進程是有狀態的,而程式沒有,程式是靜態的。進程與程式並非是一一對應的。一個程式運行在不同的數據集上就構成不同的進程,能得到不同的結果。。在SMP系統中,操作系統還提供了線程機制,它是處理器分配的最小單位。     進程的5個基本特征:         動態性:      進程是進程實體的執行過程,進程由創建而產生、由調度而執行,因得不到資源而暫停執行,並且隨著撤消而消亡,有一定的生命期;       併發性:     多個進程實體存在於記憶體中,能在一段時間內同時運行。引入進程的目的就是為了使其程式與其他進程的程式併發執行,而程式不能併發執行。        獨立性:     進程實體是能獨立運行的基本單位,同時也是系統中獨立獲得資源和獨立調度的基本單位。        非同步性:     進程實體按各自獨立的、不可預知的速度向前推進;        結構特征: 進程是由程式段、數據段和進程式控制制塊三部分組成。在操作系統中,進程是進行系統資源分配、調度和管理的最小單位。 例題:     ___1___是操作系統中可以並行工作的基本單位,也是核心調度及資源分配的最小單位,它由___2___組成,它與程式的重要區別之一是:___3___。在SMP系統中,操作系統還提供了___4___制,它是___5___的最小單位。     1: A. 作業    B. 過程     C. 函數     D. 進程     2: A. 程式、數據和標識符            B. 程式、數據和PCB     C. 程式、標識符和PCB            D. 數據、標識符和PCB    3:A. 程式可占用資源,而它不可       B. 程式有狀態,而它沒有     C. 它有狀態,而程式沒有          D. 它能占有資源,而程式不能     4: A. 約束    B. 線程     C. 共用     D. 分時     5: A. 存儲器分配          B. 資源分配     C. 處理器分配          D. 網路結點分配        解答:1.D   2.B    3.C    4.B    5.C 3、進程的狀態和轉換    進程在執行過程中狀態會不斷地變化,每個進程在任何時刻總是處於三種基本狀態(運行態、就緒態、阻塞態)的某一種基本狀態。三種狀態之間的轉換關係為:      運行態→阻塞態(等待):往往是由於等待外設,等待主存等資源分配或等待人工干預而引起的。     阻塞態→就緒態:則是等待的條件已滿足,只需要分配到處理器後就能運行。      運行態→就緒態:不是由於自身原因,而是由於外界原因使運行狀態的進程讓出處理器,這時候就變成就緒態。      就緒態→運行態:系統按某種策略選中就緒隊列中的一個進程占用處理器,此時就變成了運行態。 在不少系統中,還增加了兩種基本狀態:      新狀態:一個進程剛剛建立,但還未將它送入就緒隊列時的狀態。     終止狀態:當一個進程已經正常結束或異常結束,系統已將它從就緒隊列中移出,但尚未將它撤消時的狀態。  4、進程調度演算法     常用的進程調度演算法有先來先服務、優先數、時間片輪轉及分級調度等演算法。 (1)先來先服務調度演算法     先來先服務進程調度演算法——這種調度演算法是按進程進入就緒隊列的先後次序選擇可以占用處理器的進程。當有進程就緒時,把該進程排入就緒隊列的末尾,而進程調度總是把處理器分配給就緒隊列中的第一個進程。一旦一個進程占有了處理器,它就一直運行下去,直到因等待某個事件或進程完成了工作才讓出CPU      特點分析:     優點:演算法簡單     缺點:有時會使進程等待分配處理器的平均時間較長。        例:就緒隊列中依次有A、B、C三個進程,它們的處理時間分別為3ms、3ms、24ms。按先來先服務的順序,進程A先占用CPU,則它們的平均等待時間為(0+3+6)/3=3ms。     如果進程是按C,B,A的次序進入隊列,則這三個進程的平均等待時間為(27+24+0)/3=17ms。    可見,當運行時間較長的進程先就緒時,先來先服務演算法使系統效率受到影響。 (2)優先數調度演算法     優先數進程調度演算法——對每個進程確定一個優先數,進程調度總是讓具有最高優先數的進程先使用處理器。如果進程具有相同的優先數,則對這些有相同優先數的進程再按先來先服務的次序分配處理器。    為了調度方便,就緒隊列中進程可按優先數從大到小排列。     一般,讓系統進程的優先數大於用戶進程的優先數,重要計算問題的進程優先數大於一般計算問題的進程優先數,互動式作業進程的優先數大於批處理作業進程的優先數。     進程被創建時系統為其確定一個優先數,進程的優先數可以是固定的,也可以是動態變化的。例如:提高進程使用外圍設備的進程的優先數,有利於處理器與外圍設備的處理能力;提高較長時間未使用處理器的就緒進程的優先數,以縮短等待處理器的平均時間。     一個高優先數的進程占用處理器後,系統可有兩種方式對待它。一種是“非搶占式”,一種是“搶占式”。搶占式進程調度演算法適合於實時系統。 (3)時間片輪轉調度演算法     (4)分級調度演算法       分級調度演算法——分級調度演算法由系統設置多個就緒隊列,每個就緒隊列中的進程按時間片輪轉法占用處理器。具體的調度原則是:當有進程就緒時,排入第一級就緒隊列的末尾;當某就緒隊列的一個進程獲得處理器並用完規定的時間片後,它的工作尚未結束,則排入下一級就緒隊列的末尾;當最後一級中的進程占用處理器運行一個規定的時間片後,它的工作尚未完成,則仍排入本隊列的末尾;當占用處理器的進程在規定的時間片內運行時出現等待事件,則排入等待隊列,等待結束後成為就緒狀態排入第一級就緒隊列;第一級就緒隊列的優先順序最高,每次總是先選擇第一級就緒隊列中的進程,僅當該隊列為空時,才從第二級就緒隊列中選進程。若仍為空,則再從下一級就緒隊列中選,依次類推。      對不同就緒隊列中的進程,可規定使用不同長度的時間片。一般來說,第一級就緒隊列中的時間片短一些,以後各級就緒隊列的時間片逐級增長,有利於提高系統吞吐率。但也存在問題,當需要運行時間長的進程進入了低級就緒隊列之後,有可能長時間得不到處理器。 1、線程的基本概念和屬性 線程是進程中可獨立執行的子任務,一個進程中可有一個或多個線程,每個線程都有唯一的一個標識符。      線程有如下屬性:     1)每個線程有唯一的一個標識符和一張線程描述表,線程描述表記錄了線程執行時的寄存器和棧等現場狀態;     2)不同的線程可以執行相同的程式,即同一個服務程式被不同的用戶調用時操作系統為它們創建成不同的線程;    3)同一個進程中的各個線程共用分配給進程的主存空間;    4)線程是處理器的獨立調度單位,多個線程是可以併發執行的。    5)一個線程被創建後便開始了它的生命周期,直至終止。線程的生命周期內會經歷等待態、就緒態和運行態等各種狀態變化。      線程與進程有許多相似之處,為此線程也稱為輕型進程。      在採用線程的操作系統中,線程與進程的根本區別在於進程是資源分配單位,而線程是調度和執行的單位。     在採用進程技術的操作系統中,進程既是資源分配單位又是調度和執行的單位。其缺點主要表現在:    1) 每個進程要占用一個進程式控制制塊和一個私有的主存空間,開銷較大;    2) 進程之間的通信必須要由通信機制來完成,速度較慢;    3)進程增多會給調度和控制帶來複雜性,增加了死鎖的機會。     因此,應儘量避免設計過多的進程。     多線程技術具有明顯的優越性:     1)建線程不需分配資源,因此創建線程比創建進程速度快,且系統開銷少;    2)線程間的通信在同一地址空間中進行,故不需要額外的通信機制,使通信更簡便,信息傳送速度也快;     3)線程能獨立執行,能充分利用和發揮處理器與外圍設備並行工作的能力。 十一、死 鎖     1、死鎖概念     若系統中存在一組進程,它們中的每個進程都占用了某種資源,而又都在等待其中另一個進程所占用的資源,這種等待永遠不能結束,則說明系統出現了死鎖。     2、死鎖形成原因     系統中形成死鎖的原因有兩種:     一是操作系統對資源的管理不當所引起的;     當若幹進程需求資源的總數大於系統能提供的資源數時,進程間就會出現競爭資源的現象,如果對進程競爭資源管理或分配不當就會引起死鎖。        二是沒有顧及進程併發執行時可能出現的情況,與併發進程的執行速度有關。例:5個哲學家吃通心麵問題。 3、系統出現死鎖的四個必要條件     1)互斥使用資源     每個資源每次只允許一個進程使用。     2)占有並等待資源     進程占有某些資源後又申請資源而得不到滿足,處於等待資源狀態且不釋放已經占有得資源。     3)不可強占資源     任何進程不能搶奪其它進程占用的資源,即已被占用的資源只能由占用資源的進程自己來釋放。     4)迴圈等待資源     存在一組進程,其中每個進程都在等待另一個進程占用的資源。     註意,系統出現死鎖的以上四個條件是必要條件而不是充分條件,只要破壞其中任何一個條件就可以防止死鎖。 4、死鎖的防止     死鎖的防止方法:如果有死鎖形成,則4個必要條件一定同時成立,於是,只要採用的資源分配策略能使其中之一不成立,則就能防止死鎖的發生。 1)互斥條件      要使互斥使用資源的條件不成立,唯一的資源分配策略是允許進程共用資源。     如“只讀文件”是一種很好的共用資源。      要破壞“互斥使用資源”的條件經常是行不通的。如:印表機不能被多個進程共用。對可共用的磁碟來說,任何時刻也只允許一個進程啟動它。 (2)占有並等待條件      要是占有並等待資源的條件不成立,經常使用兩種資源分配策略:靜態分配資源和釋放已占資源。      靜態分配資源策略(也稱為預分配資源)——要求每個進程在開始執行前就申請它所需要的全部資源,僅當系統能滿足進程的資源申請要求且把資源分配給進程後,該進程才能開始執行。     特點:靜態分配資源的策略實現簡單,但降低了資源的利用率。     釋放已占資源策略——這種分配策略是僅當進程沒有占有資源時才允許它去申請資源。如果進程已占用了某些資源而又要再申請資源,則它應先歸還所占的資源後再申請新資源。     特點:仍會使進程處於等待資源狀態,但不會出現占有了部分資源再等待其它資源的現象。 (3)可搶奪條件     搶占式資源分配策略:要使不可搶占其它進程占有的資源不成立,可以約定如下:如果一個進程已經占有了某些資源又要申請新資源,而新資源不能滿足必須等待時,系統可以搶奪該進程已有的資源。具體做法如下:      一個進程申請的資源尚未被占用,則系統可把資源分配給該進程。      若進程A申請的資源R已被進程B占用,則查看進程B的狀態。如果進程B處於等待另一個資源的狀態,那麼就搶奪進程B已占的資源R並把R分配給進程A;如果進程B不是處於等待資源狀態,則讓進程A處於等待資源R的狀態。       一個等待資源的進程只有再得到自己申請的新資源和所有被搶奪的老資源後才能繼續執行。      這種可搶奪的資源分配策略不是對所有資源都適用的,它只適合於主存和處理器。     例如:對印表機、磁帶機等就不能採用搶奪的方式,否則會造成混亂。 4)迴圈等待條件     按序分配資源——要使迴圈等待條件不成立可採用按序分配的資源分配策略。具體做法是把系統中所有資源排序,對每個資源確定一個編號,規定任何一個進程申請兩個以上的資源時,總是先申請編號最小的資源,再申請編號大的資源。 2、死鎖的避免     死鎖的避免是解決死鎖問題的另一種方法,其思想是當估計到可能有死鎖發生時再設法避免死鎖。它不同於死鎖的防止。 (1)安全狀態      如果操作系統能保證所有進程在有限的時間能得到需要的全部資源,則稱系統處於安全狀態,否則說系統是不安全的。      不安全狀態並不一定會發生死鎖,但它隱含著將發生死鎖。只要系統能保持安全狀態就可以避免死鎖的發生。 例:設系統共有12個同類資源,三個進程。     1)某一時刻進程占有資源的情況如下:
進程 已占資源數 還需要資源數 最大需求數
P1 2 7 9
P2 5 5 10
P3 2 2 4
  此時系統還剩3個資源,處於安全狀態。    2)若進程P1提出再分配一個資源的要求,則進程占有資源的情況如下:
進程 已占資源數 還需要資源數 最大需求數
P1 3 7 9
P2 5 5 10
P3 2 2 4
       則系統處於不安全狀態。這種不安全狀態是由於資源分配不當造成的。 不安“全狀態”與“死鎖”兩著並不是等同的。不安全狀態隱含著死鎖將會發生。 (2)銀行家演算法     是在安全狀態下系統接到一個進程的資源請求後,就先判斷這個資源請求是否超過了自己所要申請的總的資源數目,判斷完畢後再繼續進行下一個判斷,即判斷是否小於系統現有的可以分配的資源數目。如果這兩個判斷都通過,則系統把資源分配給該進程,系統檢查現在的系統是否處於安全狀態,如果安全則正式把資源分配給進程,以完成此次分配。否則剛纔的試分配作廢,如下表所示。 例題     假設系統中有三類互斥資源R1、R2和R3,可用資源數分別為10、5和7。在T0時刻系統中有P1、P2、P3、P4和P5五個進程,這些進程對資源的最大需求量和已分配資源數如下表所示。如果進程按___1___序列執行,那麼系統狀態是安全的。
  資源 進程 最大需求量 R1 R2 R3 已分配資源數 R1 R2 R3
P1 P2 P3 P4 P5 7   5   3 3   2   2 9   0   2 2   2   2 4   3   3 0   1   0 2   0   0 3   0   2 2   1   1 0   0   2
  A.P1→P2→P4→P5→P3                  B.P2→P1→P4→P5→P3  C.P2→P4→P5→P1→P3                  D.P4→P2→P4→P1→P3        解答:C        解答: 資源分配圖
資源 進程 最大需求量 R1 R2 R3 還需要的資源量 R1 R2 R3 已分配資源數 R1 R2 R3
P1 P2 P3 P4 P5 7   5   3 3   2   2 9   0   2 2   2   2 4   3   3 7   4   3 1   2   2 6   0   0 0   1   1 4   3   1 0   1   0 2   0   0 3   0   2 2   1   1 0   0   2
      首先除去已經分配的資源還剩下的資源數為R1=3,R2=3,R3=2;接著看一下還需要的資源數目,知道P1、P3和P5都不能夠分配,因為剩下的資源不夠。下麵就要從P2和P4出發尋找安全序列,我們可以找到一個從P2開始的一個安全序列,P2、P4、P5、P1、P3;需要註意的是:一個進程資源全部獲得之後就執行,完畢後釋放所有申請的資源,這些資源還可以參與到下一個進程的資源分配。 十二、存儲管理 1、絕對地址和邏輯地址     絕對地址     主存儲器以位元組為編址單位,每個位元組都有一個地址與其對應。這些地址成為主存儲器的“絕對地址”,由絕對地址對應的主存儲空間稱為“物理地址空間”。     邏輯地址     用戶程式中使用的地址稱為“邏輯地址”,由邏輯地址對應的存儲空間稱為“邏輯地址空間”。邏輯地址從0開始編址。      重定位     把邏輯地址轉換為絕對地址的工作稱為“重定位”或“地址轉換”。 2、頁式存儲管理 (1)基本原理     頁式存儲管理需要硬體的支持,首先把主存分成大小相同的許多塊,塊是進行主存空間分配的物理單位。因此,要求程式中的邏輯地址也進行分頁,頁的大小與塊的大小一致。一個作業有多少頁,那麼在把它裝入主存時就給它分配多少塊主存空間。這些主存塊可以是不相鄰的。提供編程使用的邏輯地址由頁號和頁內地址兩部分組成。用戶編程時無需考慮如何分頁的問題,仍使用連續的邏輯地址即可。地址結構確定了主存儲器分塊的大小,也就確定了頁面的大小。     絕對地址計算公式:絕對地址 = 塊號×塊長 + 頁內地址 (2)存儲空間的分配與去配     最簡單的方法就是用“位示圖”構成主存分配表。位示圖中的每一位與一個主存儲塊對應,每一位的值可以取0或1。當取0時表示對應的塊為空閑,當取1時表示已被占用。在位示圖中增加一個位元組記錄當前剩餘的空閑塊數。       塊號計算公式:塊號 = 字型大小*字長 + 位號     若歸還的塊號為i,則在位示圖中對應的位置為:       字型大小 = ëi /字長û       位號 = i mod 字長 (3)地址轉換 (4)快表       頁式存儲管理中的頁表一般是存放在主存儲器中,因此,當要按給定的邏輯地址進行讀寫時,必須訪問兩次主存。第一次按頁號讀取頁表中的塊號,第二次按計算出的絕對地址進行讀寫,這樣就延長了指令的執行周期,降低了執行速度。      快表——為了提高頁式存儲管理的存取速度,通常設一個小容量的高速緩衝存儲器。高速緩衝存儲器可根據指定的特征,對各存儲單元進行並行查找,因而查找速度極快,但造價很高。利用高速緩衝存儲器存放頁表中的一部分,把存放在高速緩衝存儲器中的部分頁表稱為“快表”快表中登記了頁表中一部分頁號與主存塊號的對應關係。      快表的理論依據是程式的局部性。    例題:     某虛擬存儲器的用戶編程空間共32個頁面,每頁為1KB,記憶體為16KB。假定某時刻一用戶頁表中已調入記憶體的頁面的頁號和物理塊號的對照表如下:  
頁號 物理塊號
0 3
1 7
2 11
3 8
    邏輯地址0A5C(H)所對應的物理地址是什麼?要求:寫出主要計算過程。     把0A5C(H)=0000101001011100     ∵地址轉換原理:頁面偏移量與塊內偏移量相同,頁內地址等於塊內地址。     ∴邏輯地址轉為物理地址                 ∴只要實現頁號與塊號的轉換     000010=2        查表 物理塊號   11               11=001011     物理地址為:(0010111001011100)2=(2E5C)(H) 3、段式存儲管理 (1)基本原理       基本原理——每個作業由若幹段組成。每一段都有完整的邏輯意義,都可獨立編製程式,每一段的長度可以不同,每一段的邏輯地址都是從0開始,段內的地址是連續的,而段與段之間的地址是不連續的。段式存儲管理以段為單位進行記憶體空間分配。       段式存儲管理提供給用戶編程時使用的邏輯地址由兩部分組成:段號和段內地址,其格式如下:      允許作業的最多段數及每段的最大長度由硬體的地址結構確定。      頁式存儲管理提供連續的邏輯地址空間,由系統自動地進行分頁;而段式存儲管理中作業的分段是由用戶決定的,每段獨立編程,因此,段間的邏輯地址是不連續的。  (2)主存空間的分配和去配     段式存儲管理分配主存空間的方法與可變分區管理方式的分配方法相同,也有相同結構的主存空間分配表。所不同的是段式存儲管理是為作業的每一個段分配一個連續的主存空間,當把作業裝入主存儲器後,為該作業建立一張“段表”。作業結束時,要收回該作業各段所占用的主存空間,使其成為空閑區,回收存儲空間的方法與可變分區管理方式相同。 (3)地址轉換與存儲保護    段式存儲管理需要硬體的地址轉換機構做支撐。 4、可分頁的段式存儲管理     段式存儲管理的一個致命的弱點是每段必須占據主存中一個連續區域。     基本思想:每個作業由用戶進行分段,每一段的邏輯地址是從0開始的一組連續地址。但存儲管理不是為每一段分配一個連續的主存空間,而是把每一段再分成若幹頁面,把每一段的信息按頁存放在不必相鄰的空閑主存塊中。所以,段頁式存儲管理兼顧了段式在邏輯上清晰和頁式在管理上方便的優點。      段式存儲管理為每一個裝入主存的作業建立一張段表,且對每一段要建立一張頁表。段表的長度由作業分段的個數決定,段表中每個表目指出本段的頁表始址和長度。頁表的長度由對應段所分的頁的個數決定,頁表中的每一個表目指出本段的邏輯頁號與主存塊號的對應關係。 2、虛擬儲器的工作原理     虛擬存儲器的工作原理——把作業信息保存在磁碟上,當作業請求裝入時,只將其中一部分先裝入主存儲器,作業執行過程中若要訪問的信息不在主存中,則再設法把這些信息裝入主存。     作業信息不全部裝入主存能否保證正常工作? 程式具有兩個特點:第一,程式執行時有些部分是彼此互斥的,即在程式的一次執行中,執行了這部分就不會去執行另一部分。例如,出錯處理程式僅當有錯時才被執行。第二,程式的執行往往具有局部性,在一段時間里可能迴圈執行某些指令或多次訪問某一部分的數據。可見,沒有必要把作業的全部信息同時存放在主存中。 例題(源自2004年網路工程工程師下半年上午試題)     虛擬存儲管理系統的基礎是程式的___1___理論,這個理論的基本含義是指程式執行時往往會不均勻的訪問主存儲器單元。根據這個理論,Denning提出了工作集理論。工作集是進程運行時被頻繁地訪問的頁面集合。在進程運行時,如果它的工作集頁面都在___2___內,能夠使用該進程有效地運行,否則會出現頻繁的頁面調入/調出現象。     1: A. 全局性     B. 局部性     C. 時間全局性     D. 空間全局性     2: A. 主存儲器   B. 虛擬存儲器 C. 輔助存儲器     D. U盤        解答:1.B    2.A 3、頁式虛擬存儲管理      基本原理     基本原理——頁式虛擬存儲管理是在頁式存儲管理的基礎上實現虛擬存儲器的,首先把作業信息作為副本存放在磁碟上,作業執行時,把作業信息的部分頁面裝入主存儲器,作業執行時若所訪問的頁面已在主存中,則按頁式存儲管理方式進行地址轉換,得到欲訪問的主存絕對地址,若欲訪問的頁面不在主存中,則產生一個“缺頁中斷”,由操作系統把當前所需的頁面裝入主存中。      頁表格式
  0 1   主存塊號 磁碟上的位置 標誌
     
     
     
       擴充後的頁表格式
頁號 塊號 改變位 引用位 標誌位 磁碟上的位置
           
           
           
        缺頁處理過程     1)根據當前執行指令中的邏輯地址查頁表,判斷該頁是否在主存儲器中。     2)該頁標誌為“0”,形成缺頁中斷。中斷裝置通過交換PSW讓操作系統的中斷處理程式占用處理器。    3) 操作系統處理缺頁中斷,處理的辦法是查主存分配表找一個空閑的主存塊,查頁表找出該頁在磁碟上的位置,啟動磁碟讀出該頁信息。    4)把從磁碟上讀出的信息裝入找到的主存塊中。    5)當頁面信息被裝入主存後,應修改頁表中對應的表目。填上該頁所占用的主存塊號,把標誌置為“1”,表示該頁已在主存儲器中。    6)由於產生缺頁中斷時的那條指令並沒執行完,所以在把頁面裝入之後應重新執行被中斷的指令。當重新執行改指令時,由於要訪問的頁面已被裝入主存,所以可正常執行下去。 4、頁面調度       頁面調度——當主存中無空閑塊時,為了裝入一個頁面而必須按某種演算法從已在主存的頁中選擇一個頁,將它暫時調出主存,讓出主存空間,用來存放所需裝入的頁面,這個工作稱為“頁面調度”。     抖動——如果採用了一個不合適的演算法,就會出現這樣的現象:剛被調出的頁面又立即要用,因而又要把它裝入,而裝入不久又被選種調出,調出不久又被裝入,如此反覆,使調度非常頻繁。這種現象稱為“抖動”或稱“顛簸”。      一個好的頁面調度演算法應減少和避免抖動現象。      常用的頁面調度演算法有先進先出演算法、最近最少用演算法和最近最不常用演算法。     先進先出調度演算法(FIFO演算法)     1)先出先出調度演算法——先進先出調度演算法總是選擇最先裝入主存儲器的那一頁調出,或者說是把駐留在主存中時間最長的那一頁調出。     2)例:依次要訪問的頁號為7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1。現在只有三個主存塊可供使用,把開始的三頁先裝入主存。執行時按FIFO演算法進行頁面調度。請畫出頁面裝入和調出的情況並給出缺頁中斷次數。          缺頁中斷次數為12。  缺頁中斷率為12/20=60%     最近最少用調度演算法(LRU)     1)LRU調度演算法——LRU調度演算法是基於程式執行的局部性,即程式一旦訪問到某些數據和指令時可能在一段時間里還經常會訪問它們,因此,不應該把這些頁面調出。如果在最近一段時間里沒有被訪問過的頁,則在最近的將來也可能暫時不會被訪問,所以,需要裝入新頁時可以選擇這些頁面調出。     2) 堆棧的方法實現——這種方法能準確地選擇最近最少用的頁。棧中存放當前在主存中的頁,每當訪問一頁時就調整一次,使棧頂總是指向最近訪問的頁,而棧底是最近最少使用的頁。當發生缺頁中斷時總是選擇棧底所指示的頁面調出。     7   0   1   2   0   3   0   4   2   3   0   3   2   1   2   0   1   7   0   1用LRU調度演算法,則總共產生9次缺頁中斷,缺頁中斷率為9/20=45%    最近最不常用調度演算法LFU(Least frequently used)    1)LFU調度演算法——該演算法是根據在一段時間內頁面被使用的次數選擇可以調出的頁。如果一個頁被訪問的次數多,則是經常要使用的頁,就不應該把它調出。所以這種演算法總是選擇被訪問次數少的頁面調出。   2) 一種簡單的實現方法是為每一個頁設置一個計數器,當訪問一頁時,就把該頁對應的計數器加1。操作系統確定一個周期T,在周期T內,若沒有發生缺頁中斷,則把所有的計數器清0,開始一個新的周期重新計數。若在周期T內發生缺頁中斷,則選擇計數值最小的頁調出,同時把所有的計數器清0。這種演算法的實現開銷大,並且T的大小難以確定。 5、缺頁中斷率      缺頁中斷率f = F/A     其中:A為作業執行中訪問頁面的總次數,F為缺頁中斷次數。       影響缺頁中斷的因素有:    1)分配給作業的主存塊數。    每個作業只要能得到一塊主存空間就可以開始執行。可增加同時執行的作業數,但是低效的。     設作業有n頁,當能分到n/2塊主存空間時才把它裝入主存執行,則可使系統獲得最高效率。    2)頁面的大小     頁面大,缺頁中斷率就低,反之,缺頁中斷率就高。    3)程式編製方法 (參見P77)    4)頁面調度演算法     理想的調度演算法是當要裝入一個新頁而必須調出一個頁面時,所選擇調出的頁應是以後再也不使用的頁,或是距當前最長時間以後才使用的頁。這種演算法被稱為“最佳演算法”(OPT)。據估計,採用FIFO調度演算法產生的缺頁中斷率約為最佳演算法的三倍。 例題:     對於如下的頁面訪問序列: 1,2,3,4,1,2,5,1,2,3,4,5     當記憶體塊數量分別為3和4時,試問:使用FIFO、LRU置換演算法產生的缺頁中斷是多少?(所有記憶體開始時都是空的,凡第一次用到的頁面都產生一次缺頁中斷) FIFO
1 1 1 4 4 4 5 5 5 5 5 5
  2 2 2 1 1 1 1 1 3 3 3
    3 3 3 2 2 2 2 2 4 4
∴FIFO在3個內塊時,缺G中斷是9次
    3 4 1 2 5 1 2 3 4 5
  2 2 3 4 1 2 5 1 2 3 4
1 1 1 2 3 4 1 2 5 1 2 3
∴LRN在3個記憶體塊時,缺頁中斷數為10次。 10、段式虛擬存儲管理      段式虛擬存儲管理以段式存儲管理為基礎,為用戶提供比主存實際容量大的虛擬空間。     基本思想     段式虛擬存儲管理把作業中的各分段信息保留在磁碟上,當作業可以投入執行時,首先把當前需要的一段或幾段裝入主存。作業執行時若要訪問的段已在主存,則按段式存儲管理的方式進行地址轉換,若要訪問的段不在主存,則產生一個“缺段中斷”,由操作系統把當前需要的段裝入主存。操作系統處理缺段中斷的方法是:    1)查主存分配表,找出一個足夠大的連續區以容納該段。如果找不到,則檢查空閑區總和;若空閑區總和能滿足該段要求,那麼進行適當移動將分散的空閑區集中。    2)若空閑區總和不能滿足要求,可把主存中一段或幾段調出,然後把當前要訪問的段裝入主存。   3)段被移動、調出和裝入後,都要對段表中的相應表目作修改。   4)新的段裝入後,讓作業重新執行被中斷的指令。     在段表中應增設段是否在主存的標誌以及各段在磁碟上的位置,已在主存的段仍要指出該段在主存中的起始地址和占用主存區長度。     段頁式虛擬存儲管理結合了段式和頁式的優點,但增加了設置表格(段表、頁表)等開銷,段頁式虛擬存儲管理一般只在大型電腦系統中採用。 十三、文件管理     文件系統——操作系統設計了對信息進行管理的功能,稱為文件管理或文件系統。文件管理的主要工作是管理用戶信息的存儲、檢索、更新、共用和保護。文件系統對文件統一管理,目的是方便用戶且保證文件的安全可靠。面向用戶,文件系統主要是實現對信息的“按名存取”。 1、文件保護方法 文件的保護是防止文件被破壞。     防止系統故障造成的破壞    文件系統必須有防止硬、軟體的各種意外可能破壞文件的能力。為此,文件系統經常採用建立副本和定時轉儲的方法來保護文件。     防止用戶共用文件可能造成的破壞     對共用文件要防止非法使用文件造成的破壞,可以用下麵的方法規定用戶使用文件的許可權:   (1)採用樹形目錄結構     凡能得到某級目錄的用戶就可得到該級目錄所屬的全部目錄和文件,按目錄中規定的存取許可權使用目錄或文件。   (2)儲控製表     列出每個用戶對每個文件或子目錄的存儲許可權,可以用一個兩維矩陣表示。    存取控製表的最大問題是用戶與文件較多時這個矩陣就很大,實現起來開銷很大  (3)文件使用許可權     在許多系統中(如UNIX)把與每個文件連接的用戶分為三類:文件主、伙伴和一般用戶,分別定義它們對文件的讀、寫、執行和刪除許可權。 2、文件的保密    文件的保密是防止不經文件擁有者授權而竊取文件。   常用的文件保密方法有:隱蔽文件目錄、設置口令和使用密碼等三種措施。 十四、設備管理 1、通道和通道程式     通道結構    通道——又稱輸入輸
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最開始學Oracle的時候,有個概念叫SGA和PGA,是非常重要的概念,其實就是記憶體中的緩衝池。InnoDB的設計類似於Oracle,也會在記憶體中開闢一片緩衝池。眾所周知,CPU的速度和磁碟的IO速度相差可以用鴻溝來形容,因此聰明的前輩們使用了記憶體這個ROM來彌補這道鴻溝,那麼資料庫的設計者們也繼承 ...
  • 作為玩windows的碼農,在centos上面裝點東西,真的會崩潰的要死,,,我想大家也知道,在centos上面,你下載的是各種源代碼,需要自己編譯。。。而 使用yum的話,這個弔軟體包有點想nuget,不過yum上面都是老的掉牙的軟體。。。有時候還要升級,比如我在安裝redis的另一種監控redm ...
  • 執行計劃的組成部分 正確的看執行計劃 DBMS_XPLAN 這個包是一個很好查看執行計劃,顯示很多格式,來分析執行計劃中存在的問題 format:控制詳細執行計劃輸出的格式,包含以下內容: BASIC:顯示最少的信息-ID,operation name TYPICAL :預設,在計劃中顯示最多相關信 ...
  • Sometimes there is a need to change the name of your database whether this is because the original name was based on some other project that is no lon ...
  • 一.安裝環境: 系統:Centos6.5x64 Apache: httpd-2.4.10.tar.gz Mysql: mysql-5.6.20-linux-glibc2.5-x86_64.tar.gz Php: php-5.6.0.tar.gz Apr: apr-1.5.1.tar.gz Apr-u ...
  • 快捷鍵總結: 打開cmd: windows+R 在”運行“命令框裡面輸入”mstsc.exe"按回車鍵後顯示輸入IP界面 鎖住觸屏區:fn+f6 鎖定當前用戶:window+L 任務管理器:ctrl+alt+delete 打開遠程連接:Window+r 打開我的電腦:Window+e 打開記事本:w ...
  • SWAT—Samba WEB管理工具 本文試驗環境是RHEL5.2+samba-swat-3.0.28。Server的IP是192.168.120.241。 1. swat介紹 SWAT:The Samba WEB Administration Tool SWAT是Samba的圖形化管理工具。我們可 ...
  • 如果一個程式員從來沒有在linux,unix下開發過程式,一直在windows下麵開發程式, 同樣是工作10年, 大部分情況下與在linux,unix下麵開發10年的程式員水平會差別很大。我寫這篇文章並不是想貶低windows下麵開發的人,做windows開發的人看了可能會感覺不舒服,我並不是這個意 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...