計算機考研複試面試常問問題 操做系統篇

計算機考研複試面試常問問題 操做系統篇

在複習過程當中,我用心查閱並整理了在考研複試面試中可能問到的大部分問題,並分點整理了答案,能夠直接理解背誦並加上本身的語言潤色!極力推薦打印下來看,效率更高!linux

此係列一共有8篇:編程語言篇|數據結構篇|操做系統篇|組成原理篇|計算機網絡篇|數據庫篇|軟件工程篇|計算機專業英語篇(還未所有完成,敬請期待,大家的支持和關注是我最大的動力!)程序員

我的整理,不可用於商業用途,轉載請註明出處。面試

做者各個平臺請搜索:程序員寶藏。快來探索屬於你的寶藏吧!算法

須要pdf直接打印版,可在公衆號"程序員寶藏"回覆複試上岸獲取(會持續更新)數據庫

須要408電子書2021版,可在公衆號"程序員寶藏"回覆408電子書獲取編程

須要408初試視頻2021版,可在公衆號"程序員寶藏"回覆408視頻獲取小程序

須要複試機試視頻,可在公衆號"程序員寶藏"回覆機試必過獲取api

加油,你們均可以上岸!!!讓咱們一塊兒努力!!! 安全

第一章、計算機系統概述

快速喚起記憶的知識框架服務器

計算機考研複試面試常問問題 操做系統篇

<u>1.操做系統的目標和功能?(什麼是操做系統?)</u>

1.操做系統是計算機資源的管理者

處理機管理(進程控制、進程同步、進程通訊、死鎖處理、處理機調度)

存儲器管理(提升內存利用率,內存的分配與回收、地址映射、內存保護與共享、內存擴充)

文件管理(計算機中的信息都是以文件的形式存在的)

設備管理(完成用戶的I/O請求,方便用戶使用設備、並提升設備的利用率

2.操做系統爲用戶提供使用計算機硬件系統的接口

命令接口(用戶經過控制檯或終端輸入操做命令,向系統提供各類服務要求)

程序接口(由系統調用組成,用戶在程序中使用這些系統調用來請求操做系統爲其提供服務)

圖形接口 最多見的圖形用戶界面GUI(最終仍是經過調用程序接口實現的)

3.操做系統用做擴充機器

沒有任何軟件支持的計算機稱爲裸機,實際呈如今用戶面前的計算機系統是通過若干層軟件改造的計算機。操做系統將裸機改形成功能更強、使用更方便的機器。咱們將覆蓋了軟件的機器稱爲擴充機器或虛擬機。


<u>2.操做系統的運行機制?</u>

1.內核程序和應用程序(內核態和用戶態)

在計算機系統中,一般CPU執行兩種不一樣性質的程序:一種是操做系統內核程序;另外一種是用戶自編程序或系統外層的應用程序。內核程序是應用程序的」管理者」。「管理程序「能夠執行一些特權指令,而」被管理程序「出於安全考慮不能執行這些指令。所謂特權指令,是指計算機中不容許用戶直接使用的指令,如:I/O指令、置中斷指令,存取用於內存保護的寄存器,送程序狀態字到程序狀態字寄存器等指令。

操做系統在具體實現上劃分了用戶態(目態)和核心態(管態),以嚴格區分兩類程序。

2.層次式結構

操做系統的各項功能分別被設置在不一樣的層次上。一些與硬件關聯較緊密的模塊,諸如時鐘管理、中斷管理、設備驅動等處於最底層。其次是運行頻率較高的程序,諸如進程管理、存儲管理和設備管理等。 上面的這兩部份內容構成了操做系統的內核,這部份內容的指令操做工做在覈心態。

3.內核

內核是計算機上配置的底層軟件,是計算機功能的延伸,包括如下4個方面的內容:

1)時鐘管理 時鐘的第一功能是計時,操做系統須要經過時鐘管理,向用戶提供標準的系統時間。其次,經過時鐘中斷的管理,能夠實現進程的切換。在分時操做系統中,採用時間片輪轉調度的實現;在實時系統中,按截至時間控制運行的實現;在批處理系統中,經過時鐘管理來衡量一個做業的運行程度等。

2)中斷機制 引入中斷技術的初衷是提升多道程序運行環境中CPU的利用率,主要針對外部設備。後來逐步獲得發展,造成了多種類型,成爲操做系統各項操做的基礎。如,鍵盤或鼠標信息的輸入、進程的管理和調度、系統功能的調用、設備驅動、文件訪問等。都依賴於中斷機制。能夠說,現代操做系統是靠中斷驅動的軟件。中斷機制中,只有一小部分功能屬於內核,負責保護和恢復中斷現場的信息,轉移控制權到相關的處理程序。這樣能夠減小中斷的處理時間,提升系統的並行處理能力。

3)原語 操做系統底層是一些可被調用的公用小程序,它們各自完成一個規定的操做,其特色是:

------ 它們處於操做系統的最底層,是最接近硬件的部分。

------ 這些程序的運行具備原子性,其操做只能一鼓作氣

------ 這些程序的運行時間都較短,並且調用頻繁。

定義原語的直接方法是關閉中斷,讓它的全部動做不可分割地進行完再打開中斷。

4)系統控制的數據結構及處理 系統中用來登記狀態信息的數據結構不少,好比:做業控制塊、進程控制塊、設備控制塊、各種鏈表等。爲了實現有效的管理,系統須要一些基本的操做,常見的操做有如下三種:

------ 進程管理:進程狀態管理、進程調度和分配、建立和撤銷進程控制塊等。

------ 存儲器管理:存儲器的空間分配和回收、內存信息保護程序、代碼對換程序等。

------ 設備管理:緩衝區管理、設備分配和回收等。


<u>3.中斷和異常?</u>

1.中斷的引入——爲了支持CPU和設備之間的並行操做

中斷也稱外中斷,指來自CPU執行指令之外的事件的發生,如設備發出的I/O結束中斷、時鐘中斷等。這一類中斷一般是與當前執行的指令無關的事件。

2.異常的引入——表示CPU執行指令自己時出現的問題

異常也稱內中斷、例外或陷入,指源自CPU執行指令內部的事件,如程序的非法操做碼、地址越界、算術溢出、缺頁異常等。對異常的處理通常要依賴與當前程序的運行現場,不能被屏蔽。

3.中斷和異常的聯繫與區別

計算機考研複試面試常問問題 操做系統篇

4.中斷執行的流程

計算機考研複試面試常問問題 操做系統篇
以上是多重中斷的流程,其中,1~3步是由硬件(中斷隱指令)完成的;4-9步是由中斷服務程序完成的。

<u>4.系統調用?</u>

計算機系統的各類硬件資源是有限,爲了更好的管理這些資源,進程是不容許直接操做的,全部對這些資源的訪問都必須有操做系統控制。也就是說操做系統是使用這些資源的惟一入口,而這個入口就是操做系統提供的系統調用。通常地,系統調用都是經過中斷實現的,好比,linux下中斷號0x80就是進行系統調用的。

操做系統爲用戶態進程與硬件設備進行交互提供了一組接口——系統調用:1.把用戶從底層的硬件編程中解放了出來;2.極大地提升了系統的安全性使用戶程序具備可移植性;用戶程序與具體硬件已經被抽象接口所替代。

系統調用流程圖以下:

計算機考研複試面試常問問題 操做系統篇


5.<u>大內核和微內核</u>

1.大內核

大內核是將操做系統功能做爲一個緊密結合的總體放到內核。因爲各模塊共享信息,所以有很高的性能。

2.微內核

因爲操做系統不斷複雜,所以將一部分操做系統功能移出內核,從而下降內核的複雜性。移出的部分根據分層的原則劃分紅若干服務,相互獨立。
在微內核結構下,操做系統被劃分紅小的、定義良好的模塊,只有微內核這一個模塊運行在內核態,其他模塊運行在用戶態。
由於須要頻繁地在用戶態和核心態之間進行切換,因此會有必定的性能損失。

計算機考研複試面試常問問題 操做系統篇

第二章、進程管理

快速喚起記憶的知識框架

計算機考研複試面試常問問題 操做系統篇


6.<u>進程與線程</u>?

1.進程的概念與定義

在多道程序環境下,容許多個進程併發執行,此時他們將失去封閉性,並具備間斷性及不可再現性的特徵。爲此引入了進程的概念,以便更好地描述和控制程序的併發執行,實現操做系統的併發性和共享性。

進程是程序的運行過程,是系統進行資源分配和調度的一個獨立單位。

2.線程的概念和定義

早期,在OS中能擁有資源和獨立運行的基本單位是進程,然而隨着計算機技術的發展,進程出現了不少弊端,一是因爲進程是資源擁有者,建立、撤消與切換存在較大的時空開銷,所以須要引入輕型進程;二是因爲對稱多處理機(SMP)出現,能夠知足多個運行單位,而多個進程並行開銷過大。

線程是操做系統可以進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運做單位。一條線程指的是進程中一個單一順序的控制流,每條線程執行不一樣的任務。

3.進程和線程的區別

1.進程(Process)是系統進行資源分配和調度的基本單位,線程(Thread)是CPU調度和分派的基本單位;

2.線程依賴於進程而存在,一個進程至少有一個線程;

3.進程有本身的獨立地址空間,線程共享所屬進程的地址空間;

4.進程是擁有系統資源的一個獨立單位,而線程本身基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),和其餘線程共享本進程的相關資源如內存、I/O、cpu等;

5.在進程切換時,涉及到整個當前進程CPU環境的保存環境的設置以及新被調度運行的CPU環境的設置,而線程切換隻需保存和設置少許的寄存器的內容,並不涉及存儲器管理方面的操做,可見,進程切換的開銷遠大於線程切換的開銷;

6.線程之間的通訊更方便,同一進程下的線程共享全局變量等數據,而進程之間的通訊須要以進程間通訊(IPC)的方式進行;

7.多線程程序只要有一個線程崩潰,整個程序就崩潰了,但多進程程序中一個進程崩潰並不會對其它進程形成影響,由於進程有本身的獨立地址空間,所以多進程更加健壯

4.進程和程序的區別

(1) 程序是永存的;進程是暫時的,是程序在數據集上的一次執行,有建立有撤銷,存在是暫時的;
(2)程序是靜態的觀念,進程是動態的觀念;
(3)進程具備併發性,而程序沒有;
(4)進程是競爭計算機資源的基本單位,程序不是。
(5)進程和程序不是一一對應的: 一個程序可對應多個進程即多個進程可執行同一程序; 一個進程能夠執行一個或幾個程序


7.<u>進程的通訊方式</u>?

1.共享內存

顧名思義,共享內存就是兩個進程同時共享一塊內存,而後在這塊內存上的數據能夠共同修改和讀取,達到通訊的目的。

2.無名管道

無名管道是半雙工的通訊方式;而且只能在具備親緣關係的進程之間使用(親緣關係是指進程間的父子關係,兄弟關係等),具備親緣關係的進程在建立時同時擁有一個無名管道的句柄,能夠進行讀寫;無名管道不存在磁盤節點,只存在與內存中用完即銷燬。

3.命名管道

命名管道也是半雙工的通訊方式;能夠在不具備親緣關係的進程間通訊;有名管道存在磁盤節點,有對應的FIFO文件,凡是能夠訪問該路徑的文件的進程都可以進行通訊。

4.消息隊列

消息隊列是由消息的鏈表,存放在內核中並由消息隊列標識符標識。消息隊列克服了信號傳遞信息少、管道只能承載無格式字節流以及緩衝區大小受限等缺點。

5.套接字

套接字是網絡編程的api,經過套接字能夠不一樣的機器間的進程進行通訊,經常使用於客戶端進程和服務器進程的通訊。

6.信號

信號是Unix系統中使用的最古老的進程間通訊的方法之一。操做系統經過信號來通知進程系統中發生了某種預先規定好的事件(一組事件中的一個),它也是用戶進程之間通訊和同步的一種原始機制。一個鍵盤中斷或者一個錯誤條件(好比進程試圖訪問它的虛擬內存中不存在的位置等)都有可能產生一個信號。Shell也使用信號向它的子進程發送做業控制信號。


<u>8.進程的5種狀態及轉換過程?</u>

計算機考研複試面試常問問題 操做系統篇


<u>9.進程的調度算法有哪些?</u>

1.先來先服務 first-come first-serverd(FCFS)

按照請求的順序進行調度。非搶佔式,開銷小,無飢餓問題,響應時間不肯定(可能很慢);

對短進程不利,對IO密集型進程不利。

2.最短做業優先 shortest job first(SJF)

按估計運行時間最短的順序進行調度。非搶佔式,吞吐量高,開銷可能較大,可能致使飢餓問題;

對短進程提供好的響應時間,對長進程不利

3.優先級調度算法

爲每一個進程分配一個優先級,按優先級進行調度。爲了防止低優先級的進程永遠等不到調度,能夠隨着時間的推移增長等待進程的優先級。

4.時間片輪轉

將全部就緒進程按 FCFS 的原則排成一個隊列,用完時間片的進程排到隊列最後。搶佔式(時間片用完時),開銷小,無飢餓問題,爲短進程提供好的響應時間;

若時間片小,進程切換頻繁,吞吐量低;若時間片太長,實時性得不到保證。

5.最高響應比優先

響應比 = 1+ 等待時間/處理時間。同時考慮了等待時間的長短和估計須要的執行時間長短,很好的平衡了長短進程。非搶佔,吞吐量高,開銷可能較大,提供好的響應時間,無飢餓問題。

6.多級反饋隊列調度算法

設置多個就緒隊列一、二、3...,優先級遞減,時間片遞增。只有等到優先級更高的隊列爲空時纔會調度當前隊列中的進程。若是進程用完了當前隊列的時間片還未執行完,則會被移到下一隊列。

搶佔式(時間片用完時),開銷可能較大,對IO型進程有利,可能會出現飢餓問題。


10.<u>同步和互斥</u>?

1.同步

多個進程由於合做而使得進程的執行有必定的前後順序。好比某個進程須要另外一個進程提供的消息,得到消息以前進入阻塞態;

2.互斥

多個進程在同一時刻只有一個進程能進入臨界區

3.同步機制的4個準則

1.空閒讓進
當無進程處於臨界區,可容許一個請求進入臨界區的進程當即進入本身的臨界區

2.忙則等待
當已有進程進入本身的臨界區,全部企圖進入臨界區的進程必須等待

3.有限等待
對要求訪問臨界資源的進程,應保證該進程能在有限時間內進入本身的臨界區

4.讓權等待
當進程不能進入本身的臨界區,應釋放處理機


<u>11.進程同步相關概念</u>

爲何須要進程同步:進程有時候會和其餘進程共享一些資源,好比內存、數據庫等。當多個進程同時讀寫同一份共享資源的時候,可能會發生衝突。所以須要進程的同步,多個進程按順序訪問資源。

互斥量 Mutex:互斥量是內核對象,只有擁有互斥對象的線程纔有訪問互斥資源的權限。由於互斥對象只有一個,因此能夠保證互斥資源不會被多個線程同時訪問;當前擁有互斥對象的線程處理完任務後必須將互斥對象交出,以便其餘線程訪問該資源;

信號量 Semaphore:信號量是內核對象,它容許同一時刻多個線程訪問同一資源,可是須要控制同一時刻訪問此資源的最大線程數量。信號量對象保存了最大資源計數當前可用資源計數,每增長一個線程對共享資源的訪問,當前可用資源計數就減1,只要當前可用資源計數大於0,就能夠發出信號量信號,若是爲0,則將線程放入一個隊列中等待。線程處理完共享資源後,應在離開的同時經過ReleaseSemaphore函數將當前可用資源數加1。若是信號量的取值只能爲0或1,那麼信號量就成爲了互斥量;

事件 Event:容許一個線程在處理完一個任務後,主動喚醒另一個線程執行任務。事件分爲手動重置事件和自動重置事件。手動重置事件被設置爲激發狀態後,會喚醒全部等待的線程,並且一直保持爲激發狀態,直到程序從新把它設置爲未激發狀態。自動重置事件被設置爲激發狀態後,會喚醒一個等待中的線程,而後自動恢復爲未激發狀態。

臨界區 Critical Section:指的是訪問資源的那段代碼,任意時刻只容許一個線程對臨界資源進行訪問。擁有臨界區對象的線程能夠訪問該臨界資源,其它試圖訪問該資源的線程將被掛起,直到臨界區對象被釋放。


<u>12.死鎖</u>

1.死鎖的定義

是指兩個或兩個以上的進程在執行過程當中,因爭奪資源而形成的一種互相等待的現象,若無外力做用,它們都將沒法推動下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱爲死鎖進程。

2.死鎖緣由

① 系統資源不足(對不可剝奪資源的競爭)

② 進程推動順序不當(P1擁有A申請B,P2擁有B申請A)

3.產生死鎖的必要條件

① 互斥條件:指進程對所分配到的資源進行排它性使用,即在一段時間內某資源只由一個進程佔用。

② 請求和保持條件:指進程已經保持至少一個資源,但又提出了新的資源請求,而該資源已被其它進程佔有,此時請求進程阻塞,但又對本身已得到的其它資源保持不放。

③ 不剝奪條件:指進程已得到的資源,在未使用完以前,不能被剝奪,只能在使用完時由本身釋放

④ 環路等待條件:指在發生死鎖時,必然存在一個進程資源的環形鏈。

4.處理死鎖的基本方法:

① 預防死鎖:這是一種較簡單和直觀的事先預防的方法。方法是經過設置某些限制條件,去破壞產生死鎖的四個必要條件中的一個或者幾個,來預防發生死鎖。預防死鎖是一種較易實現的方法,已被普遍使用。可是因爲所施加的限制條件每每太嚴格,可能會致使系統資源利用率和系統吞吐量下降。

② 避免死鎖:該方法一樣是屬於事先預防的策略,但它並不須事先採起各類限制措施去破壞產生死鎖的的四個必要條件,而是在資源的動態分配過程當中,用 某種方法去防止系統進入不安全狀態,從而避免發生死鎖。

③ 檢測死鎖:這種方法並不須事先採起任何限制性措施,也沒必要檢查系統是否已經進入不安全區,此方法容許系統在運行過程當中發生死鎖。但可經過系統所設置的檢測機構,及時地檢測出死鎖的發生,並精確地肯定與死鎖有關的進程和資源,而後採起適當措施,從系統中將已發生的死鎖清除掉。

④ 解除死鎖:這是與檢測死鎖相配套的一種措施。當檢測到系統中已發生死鎖時,須將進程從死鎖狀態中解脫出來。經常使用的實施方法是撤銷或掛起一些進程,以便回收一些資源,再將這些資源分配給已處於阻塞狀態的進程,使之轉爲就緒狀態,以繼續運行。


<u>13.什麼是飢餓?與死鎖有什麼差異?</u>

等待時間給進程推動和響應帶來明顯影響時成爲進程飢餓。

飢餓並不表明系統已經死鎖,但至少有一個程序的執行被無限期地推遲。
差異:
① 進入飢餓的進程能夠只有一個,可是死鎖必須大於等於兩個;
② 出於飢餓狀態的進程能夠是一個就緒進程,可是死鎖狀態的進程一定是阻塞進程。


<u>14.銀行家算法</u>

主要思想是避免系統進入不安全狀態,在每次進行資源分配時,它首先檢查系統是否有足夠的資源知足要
求,若是有,則先試行分配,並對分配後的新狀態進行安全性檢查。若是新狀態安全,則正式分配上述資
源,不然拒絕分配上述資源。這樣就保證系統始終處於安全狀態,從而避免死鎖現象的發生。


<u>15.死鎖定理</u>

若是資源分配圖是能夠徹底簡化的(能消去全部的邊),則沒有死鎖。


第三章、內存管理

快速喚起記憶的知識框架

計算機考研複試面試常問問題 操做系統篇


16.<u>存儲器管理應具備的功能</u>?

存儲管理的主要任務是爲多道程序的運行提供良好的環境,方便用戶使用存儲器,提升存儲器的利用率以
及從邏輯上擴充存儲器,故應具備如下功能:

① 內存的分配和回收:實施內存的分配,回收系統或用戶釋放的內存空間。

② 地址變換:提供地址變換功能,將邏輯地址轉換成物理地址。

③ 擴充內存:藉助於虛擬存儲技術活其餘自動覆蓋技術,爲用戶提供比內存空間大的地址空間,從邏輯
上擴充內存。

④ 存儲保護:保證進入內存的各道做業都在本身的存儲空間內運行,互不干擾。

17.<u>將用戶程序變爲可在內存中執行的程序的步驟</u>?

1.編譯:由編譯程序將用戶源代碼編譯成若干目標模塊

2.連接:由連接程序將編譯後造成的一組目標模塊及所需的庫函數連接在一塊兒,造成一個完整的裝入模塊。

3.裝入:由裝入程序將裝入模塊裝入內存中運行。

計算機考研複試面試常問問題 操做系統篇


18.<u>程序的連接方式有哪些</u>?

① 靜態連接:在程序運行以前,先把各個目標模塊及所需庫連接爲一個完整的可執行程序,之後再也不拆
開。

② 裝入時動態連接:將應用程序編譯後所獲得的一組目標模塊在裝入內存時採用邊裝入邊連接的連接方
式。

③ 運行時動態連接:知道程序運行過程當中須要一些模塊時,纔對這些模塊進行連接。


19.<u>程序的裝入方式有哪些</u>?

① 絕對裝入:在編譯時就知道程序將要駐留在內存的物理地址,編譯程序產生含有物理地址的目標代碼,
不適合多道程序設計。

② 可重定位裝入:根據內存當前狀況,將裝入模塊裝入到內存的適當位置,地址變換一般在裝入時一次
完成,以後再也不改變,也稱靜態重定位。當操做系統爲程序分配一個以某地址爲起始地址的連續主存
區域後,重定位時將程序中指令或操做數的邏輯地址加上這個起始地址就獲得了物理地址。

③ 動態運行裝入:容許程序運行時在內存中移動位置,把裝入模塊裝入到內存後的全部地址都是相對地
址,在程序執行過程當中每當訪問到相應指令或數據時,纔將要 訪問的程序或數據的相對地址轉換爲物
理地址。動態重定位的實現要依靠硬件地址變換機構。


20.<u>覆蓋技術和交換技術</u>?

1.覆蓋技術:

把一個大的程序劃分爲一系列覆蓋,每一個覆蓋是一個相對獨立的程序單位,把程序執行時並不要求同時 裝入內存的覆蓋組成一組,成爲覆蓋段,這個覆蓋段分配到同一個存儲區域,這個存儲區域成爲覆蓋區,它與覆蓋段一一對應。覆蓋段的大小由覆蓋段中最大的覆蓋來肯定。(爲了解決內存容量過小的問題,打破了必須將一個程序所有信息裝入內存後才能運行的限制)

2.交換技術:

把暫時不用的某個程序及數據部分從內存移到外存中去,以便騰出必要的內存空間;或者把指定的程序或數據從外存讀到相應的內存中,並將控制權交給他,讓其在系統上運行的一種內存擴充技術。處理器的中級調度就是採用交換技術。

3.區別:
① 與覆蓋技術相比,交換技術不要求程序員給出的 程序段之間的覆蓋結構;

② 交換技術主要在進程和做業之間進行,覆蓋技術主要在同一個進程或做業中進行;交換技術主要在進程和做業之間進行,覆蓋技術主要在同一個進程或做業中進行;

③ 覆蓋技術只能覆蓋於覆蓋程序段無關的程序段,交換進程由換出和換入兩個過程組成。覆蓋技術只能覆蓋於覆蓋程序段無關的程序段,交換進程由換出和換入兩個過程組成。


<u>21.內存連續分配管理方式有哪些?</u>

1.單一連續分配

內存在此方式下分爲系統區和用戶區,系統區僅提供給操做系統使用,一般在低地址部分;用戶區是爲用戶提供的、除系統區以外的內存空間。這種方式無需進行內存保護。

這種方式的優勢是簡單、無外部碎片,能夠釆用覆蓋技術,不須要額外的技術支持。缺點是隻能用於單用戶、單任務的操做系統中,有內部碎片,存儲器的利用率極低。

2.固定分區分配

固定分區分配是最簡單的一種多道程序存儲管理方式,它將用戶內存空間劃分爲若干個固定大小的區域,每一個分區只裝入一道做業。當有空閒分區時,即可以再從外存的後備做業隊列中,選擇適當大小的做業裝入該分區,如此循環。

固定分區分配在劃分分區時,有兩種不一樣的方法。

(1) 分區大小相等:用於利用一臺計算機去控制多個相同對象的場合,缺少靈活性。

(2) 分區大小不等:劃分爲含有多個較小的分區、適量的中等分區及少許的大分區。

3.動態分區分配

動態分區分配又稱爲可變分區分配,是一種動態劃份內存的分區方法。這種分區方法不預先將內存劃分,而是在進程裝入內存時,根據進程的大小動態地創建分區,並使分區的大小正好適合進程的須要。所以系統中分區的大小和數目是可變的。

4.動態分區分配算法

在進程裝入或換入主存時,若是內存中有多個足夠大的空閒塊,操做系統必須肯定分配哪一個內存塊給進程使用,這就是動態分區的分配策略,考慮如下幾種算法:

(1) 首次適應(First Fit)算法:空閒分區以地址遞增的次序連接。分配內存時順序查找,找到大小能知足要求的第一個空閒分區。

(2) 最佳適應(Best Fit)算法:空閒分區按容量遞增造成分區鏈,找到第一個能知足要求的空閒分區。

(3) 最壞適應(Worst Fit)算法:又稱最大適應(Largest Fit)算法,空閒分區以容量遞減的次序連接。找到第一個能知足要求的空閒分區,也就是挑選出最大的分區。

(4) 鄰近適應(Next Fit)算法:又稱循環首次適應算法,由首次適應算法演變而成。不一樣之處是分配內存時從上次查找結束的位置開始繼續查找。


22.<u>基本分頁和請求分頁內存管理方式</u>?

本問內容比較多,適合系統複習,都整理過來不過全面,請自行查閱相關資料(狗頭保命)。


23.<u>頁面置換算法有哪些</u>?

1.最佳(OPT)置換算法

從主存中移出永遠再也不須要的頁面;如無這樣的頁面存在,則選擇最長時間不須要訪問的頁面。於所選擇的被淘汰頁面將是之後永不使用的,或者是在最長時間內再也不被訪問的頁面,這樣能夠保證得到最低的缺頁率。 即被淘汰頁面是之後永不使用或最長時間內再也不訪問的頁面。(日後看)

2.先進先出(FIFO)置換算法

是最簡單的頁面置換算法。這種算法的基本思想是:當須要淘汰一個頁面時,老是選擇駐留主存時間最長的頁面進行淘汰,即先進入主存的頁面先淘汰。其理由是:最先調入主存的頁面再也不被使用的可能性最大。 即優先淘汰最先進入內存的頁面。(往前看)

3.最近最久未使用(LRU)算法

這種算法的基本思想是:利用局部性原理,根據一個做業在執行過程當中過去的頁面訪問歷史來推測將來的行爲。它認爲過去一段時間裏未曾被訪問過的頁面,在最近的未來可能也不會再被訪問。因此,這種算法的實質是:當須要淘汰一個頁面時,老是選擇在最近一段時間內最久不用的頁面予以淘汰。 即淘汰最近最長時間未訪問過的頁面。(往前看)

4.時鐘(CLOCK)置換算法

LRU算法的性能接近於OPT,可是實現起來比較困難,且開銷大;FIFO算法實現簡單,但性能差。因此操做系統的設計者嘗試了不少算法,試圖用比較小的開銷接近LRU的性能,這類算法都是CLOCK算法的變體。
簡單的CLOCK算法是給每一幀關聯一個附加位,稱爲使用位。當某一頁首次裝入主存時,該幀的使用位設置爲1;當該頁隨後再被訪問到時,它的使用位也被置爲1。對於頁替換算法,用於替換的候選幀集合看作一個循環緩衝區,而且有一個指針與之相關聯。當某一頁被替換時,該指針被設置成指向緩衝區中的下一幀。當須要替換一頁時,操做系統掃描緩衝區,以查找使用位被置爲0的一幀。每當遇到一個使用位爲1的幀時,操做系統就將該位從新置爲0;若是在這個過程開始時,緩衝區中全部幀的使用位均爲0,則選擇遇到的第一個幀替換;若是全部幀的使用位均爲1,則指針在緩衝區中完整地循環一週,把全部使用位都置爲0,而且停留在最初的位置上,替換該幀中的頁。因爲該算法循環地檢查各頁面的狀況,故稱爲CLOCK算法,又稱爲最近未用(Not Recently Used, NRU)算法。


<u>24.什麼是頁表和快表,有什麼做用?</u>

頁表指出邏輯地址中的頁號與所佔主存塊號的對應關係。做用:頁式存儲管理在用動態重定位方式裝入做業時,要利用頁表作地址轉換工做。快表就是存放在高速緩衝存儲器的部分頁表。它起頁表相同的做用。因爲採用頁表作地址轉換,讀寫內存數據時CPU要訪問兩次主存。有了快表,有時只要訪問一次高速緩衝存儲器,一次主存,這樣可加速查找並提升指令執行速度。


25.<u>地址翻譯的過程</u>?

TLB->頁表(TLB不命中)->Cache->主存(Cache不命中)->外存


第四章、文件管理

本章重要程度比較低

快速喚起記憶知識框架

計算機考研複試面試常問問題 操做系統篇


26.<u>文件的基本操做</u>?

文件屬於抽象數據類型。爲了恰當地定義文件,就須要考慮有關文件的操做。操做系統提供系統調用,它對文件進行建立、寫、讀、定位和截斷。

①建立文件:建立文件有兩個必要步驟,一是在文件系統中爲文件找到空間;二是在目錄中爲新文件建立條目,該條目記錄文件名稱、在文件系統中的位置及其餘可能信息。

②寫文件:爲了寫文件,執行一個系統調用,指明文件名稱和要寫入文件的內容。對於給定文件名稱,系統搜索目錄以查找文件位置。系統必須爲該文件維護一個寫位置的指針。每當發生寫操做,便更新寫指針。

③讀文件:爲了讀文件,執行一個系統調用,指明文件名稱和要讀入文件塊的內存位置。一樣,須要搜索目錄以找到相關目錄項,系統維護一個讀位置的指針。每當發生讀操做時,更新讀指針。一個進程一般只對一個文件讀或寫,因此當前操做位置可做爲每一個進程當前文件位置指針。因爲讀和寫操做都使用同一指針,節省了空間也下降了系統複雜度。

④文件重定位(文件尋址):按某條件搜索目錄,將當前文件位置設爲給定值,而且不會讀、寫文件。

⑤刪除文件:先從目錄中找到要刪除文件的目錄項,使之成爲空項,而後回收該文件所佔用的存儲空間。

⑥截斷文件:容許文件全部屬性不變,並刪除文件內容,即將其長度設爲0並釋放其空間。

這6個基本操做能夠組合執行其餘文件操做。例如,一個文件的複製,能夠建立新文件、 從舊文件讀出並寫入到新文件。


27.<u>磁盤調度算法有哪些</u>?

一、先來先服務算法(FCFS)First Come First Service

這是一種比較簡單的磁盤調度算法。它根據進程請求訪問磁盤的前後次序進行調度。此算法的優勢是公平、簡單,且每一個進程的請求都能依次獲得處理,不會出現某一進程的請求長期得不到知足的狀況。此算法因爲未對尋道進行優化,在對磁盤的訪問請求比較多的狀況下,此算法將下降設備服務的吞吐量,導致平均尋道時間可能較長,但各進程獲得服務的響應時間的變化幅度較小。

二、最短尋道時間優先算法(SSTF) Shortest Seek Time First

該算法選擇這樣的進程,其要求訪問的磁道與當前磁頭所在的磁道距離最近,以使每次的尋道時間最短,該算法能夠獲得比較好的吞吐量,但卻不能保證平均尋道時間最短。其缺點是對用戶的服務請求的響應機會不是均等的,於是致使響應時間的變化幅度很大。在服務請求不少的狀況下,對內外邊緣磁道的請求將會無限期的被延遲,有些請求的響應時間將不可預期。

三、掃描算法(SCAN)電梯調度

掃描算法不只考慮到欲訪問的磁道與當前磁道的距離,更優先考慮的是磁頭的當前移動方向。例如,當磁頭正在自裏向外移動時,掃描算法所選擇的下一個訪問對象應是其欲訪問的磁道既在當前磁道以外,又是距離最近的。這樣自裏向外地訪問,直到再無更外的磁道須要訪問纔將磁臂換向,自外向裏移動。這時,一樣也是每次選擇這樣的進程來調度,即其要訪問的磁道,在當前磁道以內,從而避免了飢餓現象的出現。因爲這種算法中磁頭移動的規律頗似電梯的運行,故又稱爲電梯調度算法。此算法基本上克服了最短尋道時間優先算法的服務集中於中間磁道和響應時間變化比較大的缺點,而具備最短尋道時間優先算法的優勢即吞吐量較大,平均響應時間較小,但因爲是擺動式的掃描方法,兩側磁道被訪問的頻率仍低於中間磁道。

四、循環掃描算法(CSCAN)

循環掃描算法是對掃描算法的改進。若是對磁道的訪問請求是均勻分佈的,當磁頭到達磁盤的一端,並反向運動時落在磁頭以後的訪問請求相對較少。這是因爲這些磁道剛被處理,而磁盤另外一端的請求密度至關高,且這些訪問請求等待的時間較長,爲了解決這種狀況,循環掃描算法規定磁頭單向移動。例如,只自裏向外移動,當磁頭移到最外的被訪問磁道時,磁頭當即返回到最裏的欲訪磁道,即將最小磁道號緊接着最大磁道號構成循環,進行掃描。


第五章、輸入輸出管理

快速喚起記憶知識框架

計算機考研複試面試常問問題 操做系統篇

28.I/O<u>控制方式有哪些</u>?

1.程序 I/O 方式

早期的計算機系統中, 沒有中斷系統,因此CPU和I/O設備進行通訊,傳輸數據時CPU速度遠快於I/O設備,因而CPU須要不斷測試I/O設備,看其是否完成了傳輸。

計算機考研複試面試常問問題 操做系統篇

2.中斷驅動方式

當某進程要啓動某個 I/O 設備工做時,便由 CPU 向相應的設備控制器發出一條 I/O 命令,而後當即返回繼續執行原來的任務。僅當輸完一個數據時,才需 CPU 花費極短的時間去作些中斷處理。

計算機考研複試面試常問問題 操做系統篇

3.DMA方式(直接存儲器訪問)

經過在I/O設備和內存之間開啓一個能夠直接傳輸數據的通路,採用DMA控制器來控制一個數據塊的傳輸,CPU只需在一個數據塊傳輸開始階段設置好傳輸所需的控制信息,並在傳輸結束階段作進一步處理。

計算機考研複試面試常問問題 操做系統篇

4.I/O通道控制方式

雖然DMA方式比起中斷方式來已經顯著地減小了CPU的干預,即已由以字(節)爲單位的干預減小到以數據塊爲單位的干預。但CPU每發出一條I/O指令,也只能去讀/寫一個連續的數據塊。而當咱們須要一次去讀多個數據塊且將它們分別傳送到不一樣的內存區域,或者相反時,則需由CPU分別發出多條I/O指令及進行屢次中斷處理才能完成。
---- 通道控制方式與DMA控制方式相似,也是一種之內存爲中心,實現設備與內存直接交換數據的控制方式。
---- 與DMA控制方式相比,通道方式所須要的CPU干預更少,並且能夠作到一個通道控制多臺設備,從而進一步減輕了CPU負擔。
---- 通道本質上是一個簡單的處理器,專門負責輸入、輸出控制,具備執行I/O指令的能力,並經過執行通道I/O程序來控制I/O操做。
---- 通道的指令系統比較簡單,通常只有數據傳送指令、設備控制指令等。


29.<u>Spooling技術</u>?

虛擬性是OS的四大特性之一。若是說能夠經過多道程序技術將一臺物理CPU虛擬爲多臺邏輯CPU,從而容許多個用戶共享一臺主機,那麼,經過SPOOling技術即可將一臺物理I/O設備虛擬爲多臺邏輯I/O設備,一樣容許多個用戶共享一臺物理I/O設備。

SPOOLing技術是對脫機輸入、輸出系統的模擬。相應地,SPOOLing系統必須創建在具備多道程序功能的操做系統上,並且還應有高速隨機外存的支持,這一般是採用磁盤存儲技術。

SPOOLing系統主要有如下三部分:

(1)輸入井和輸出井。這是在磁盤上開闢的兩個大存儲空間。輸入井是模擬脫機輸入時的磁盤設備,用於暫存I/Q設備輸入的數據;輸出井是模擬脫機輸出時的磁盤,用於暫存用戶程序的輸出數據。

(2)輸入緩衝區和輸出緩衝區。爲了緩和和CPU和磁盤之間速度不匹配的矛盾,在內存中要開闢兩個緩衝區;輸入緩衝區和輸出緩衝區。輸入緩衝區用於暫存由輸入設備送來的數據,之後再傳送到輸入井。輸出緩衝區用與暫存從輸出井送來的數據,之後在傳送給輸出設備。

(3)輸入進程SPi 和輸入進程SP0。這裏利用兩個進程來模擬脫機I/O時的外圍控制機。其中,進程SPi模擬脫機輸入時的外圍控制機,將用戶要求的數據從輸入機經過輸入緩衝區再送到輸入井,當CPU須要輸入數據時,直接從輸入井讀入內存;進程SP0模擬脫機輸出時的外圍控制機,把用戶要求輸出的數據從先內存送到輸出井,待輸出設備空閒時,在將輸出井中的數據通過輸出緩衝區送到輸出設備上。

SPOOLing技術的特色:

(1)提升了I/O速度。從對低速I/O設備進行的I/O操做變爲對輸入井或輸出井的操做,如同脫機操做同樣,提升了I/O速度,緩和了CPU與低速I/O設備速度不匹配的矛盾。

(2)將獨佔設備改造爲共享設備。由於在SPOOLing系統的系統中,實際上並沒爲任何進程分配設備,而知識在輸入井或輸出井中爲進程分配一個存儲區和創建一張I/O請求表。這樣,便把獨佔設備改造爲共享設備。

(3)實現了虛擬設備功能。多個進程同時使用一獨享設備,而對每一進程而言,都認爲本身獨佔這一設備,從而實現了設備的虛擬分配。不過,該設備是邏輯上的設備。