天天看點

考研複試專業課面試——作業系統

記:作業系統的有關内容是我參考其他的部落格和網上查資料進行總結的,可能不完全正确,希望大家多多指正。

1、什麼是程序和線程,他們的差別是什麼?

    程序是一個能獨立運作的活動實體,是系統進行資源配置設定和排程的獨立機關。線程是程序的一個實體,是CPU排程和分派的基本機關,線程是比程序更小的獨立運作的基本機關。線程除了一些本身必須的資源外基本不占用系統資源,它可與該程序中的其他線程共享該程序所擁有的的所有資源,同一個程序中的多個線程能夠并發執行。

    程序和應用程式的差別在于:應用程式作為一個靜态檔案存儲在計算機存儲空間中,而程序則是在動态的條件下,由作業系統維護的系統資源管理實體。

2、作業系統的特征?

    作業系統有四大特征:并發,共享,異步,虛拟。

    并行性:指兩個或多個事件在同一時刻發生;

    并發性:指兩個或多個事件在同一時間間隔内發生。

3、三态、五态和七态分别是什麼?

    三态:就緒,執行,阻塞

    五态:就緒,執行,阻塞,建立,終止

    七态:就緒,執行,阻塞,建立。終止,激活,挂起

4、中斷和異常?

    中斷:指計算機在執行程式期間,系統内發異常的或者非預期緊急處理事件,使得CPU暫時中斷目前正在執行的程式轉去處理異常或緊急事件,處理完畢後再回到程式中斷處繼續執行原來的程式的過程。

    異常:指程序在運作過程中發生了某種異常事件,使得程式無法再繼續執行(例如,除0錯誤,越界等)

5、線程同步的四種方式?

    (1)臨界區:當多個線程共享一個獨占性資源時可以使用臨界區對象。擁有臨界區的線程可以通路被保護起來的資源,其他線程再想通路則被挂起,直到擁有臨界區的線程釋放臨界區為止。

    (2)事件:事件機制允許一個線程再處理完一個任務後主動喚醒另一個線程執行任務。例如,在某些網絡應用程式中,一個線程a負責真挺通信端口,另一個線程b負責更新使用者資料,當a結束時通知線程b在何時去更新使用者資料。

    (3)互斥量:互斥對象和臨界區對象非常相似,互斥對象允許在程序之間使用,而臨界區對象隻允許在同一個程序的各個線程之間使用。

    (4)信号量:當需要一個計數器來限制可以使用某共享資源的線程數量時可以使用信号量對象。該計數器存儲了目前還可以使用某資源的線程的個數,當該計數器的值為0時,如果再有線程通路該資源則被放入等待隊列,直到該計數器不為0或者逾時為止。

6、使用者态和核心态的差別?

    當一個程序執行系統調用而陷入核心代碼中執行時,稱該程序處于核心态,當一個程序執行使用者自己的代碼時,稱其處于使用者态。運作在使用者态下的程式不能直接通路作業系統核心資料結構和程式。使用者态切換到核心态有三種方式:

    (1)系統調用:這種方式是使用者态程序主動要求切換到核心态,使用者态程序請求使用作業系統提供的服務程式來完成工作。系統調用的機制是使用了作業系統為使用者特别開放的一個中斷。

    (2)異常:CPU在執行運作在使用者态下的程式時發生了某些不可知的異常,觸發了由目前執行的程式轉去處理異常的核心相關程式中,也就轉到了核心态。

    (3)外圍裝置中斷:當外圍裝置完成使用者請求的操作後,會向CPU發出相應的中斷信号,這時CPU會暫停執行下一條即将要執行的指令轉而去執行與中斷信号對應的處理程式,如果先前執行的指令是使用者态下的程式,那麼這個轉換的過程自然也就發生了由使用者态到核心态的切換

7、死鎖的概念以及導緻死鎖的四個必要條件分别是什麼?

    死鎖定義為一組互相競争資源或者通信的程序之間的“永久性”阻塞。當一組程序中的每一個程序都在等待某個事件,而該事件隻有在當改組程序中其他被阻塞的程序執行完畢後才能夠釋放,稱這組程序發生了死鎖。

    導緻死鎖的四個必要條件如下:

    (1)互斥:指一次隻有一個程序可以擁有某資源,程序不可通路已經配置設定給其他程序的資源。

    (2)占有且等待:程序在等待其他程序的時候占有已經配置設定給他的資源。

    (3)不可搶占:不可強行搶占已經配置設定給其他程序的資源。

    (4)循環等待:存在一個封閉的程序鍊,每個程序都至少占有一個下一個程序所需要的資源。

8、處理死鎖的方式?

    處理死鎖的方式有三種:死鎖預防、死鎖避免和死鎖檢測。

    在死鎖避免中用到的銀行家算法,首先需要定義狀态和安全狀态的概念。狀态是指目前給程序配置設定的資源情況,安全狀态是指至少存在一個資源配置設定序列不會導緻死鎖。當程序請求配置設定資源時,假設同意了該請求系統的狀态發生了改變,判斷改變後的狀态是安全狀态,若是則同意該請求,若不是則阻塞該程序,直到同意該請求後系統為安全狀态為止。

9、程序排程算法都有哪些?

    程序排程算法有:先來先服務算法,短程序優先排程算法,高優先級優先排程算法,非搶占式優先權算法,搶占式優先權排程算法,高響應比優先排程算法,時間片輪轉排程算法,多級回報隊列排程算法,其中多級回報隊列排程算法的實作過程如下:

    (1)設定多個就緒隊列,每個隊列設定不同的優先級,優先級越高的其時間片就越小。

    (2)當一個程序進入記憶體後,按照先來先服務的規則首先放到第一隊列的隊尾,如果能在第一隊列中完成則可以撤出,如果不能完成則放到第二隊列的隊尾,以此類推。

    (3)隻有第一隊列為空時才會去排程第二隊列中的程序,以此類推。

    (4)當處理機正在處理第i隊列中的一個程序時,有一個新程序放到了優先級更高的隊列中,則此時處理機轉去處理優先級高的隊列中的程序,并且把正在處理的程序放到第i隊列的隊尾。

10、生産者和消費者問題?

    兩個程序共享一個公共的固定大小的緩沖區,其中一個是生産者,往緩沖區中放入消息,另一個是消費者,從緩沖區中取消息。當緩沖區滿時生産者還想往裡面放置消息,或者當緩沖區為空時消費者想要從緩沖區中取出消息,這樣就會出現問題,為了保證這種問題不發生,常用信号量和消息傳遞來解決生産者和消費者問題。

11、使用虛拟記憶體的好處?

    (1)可以盡可能多的保留程序,因為對于任何特定的程序都隻存儲他的某些塊,是以就有足夠的空間放入更多的程序。

    (2)程序可以比記憶體空間要大。

12、記憶體連續配置設定方式采用的幾種算法以及各自優缺點?

    (1)首次适應算法:即從空閑分區鍊的首部開始查詢,直到找到一個大小滿足要求的空閑分區為止,然後按照作業的大小從空閑分區劃分出一塊記憶體配置設定給作業,剩餘分區仍然留在空閑分區連中。

    (2)循環首次适應算法:與首次适應算法類似,隻是在尋找空閑分區時不是每次都從鍊的首部開始,而是從上次查找到的空閑分區處開始查詢,直到找到一個滿足要求的分區位置。該算法能夠使分區分布更加均勻,缺點是會缺乏大的空閑分區。

    (3)最佳适應算法:該算法總能把即滿足要求又是最小的分區配置設定給作業,在進行操作之前該算法要求将所有分區按大小進行排序,形成一個遞增的鍊,每次查找到的分區都必将是最合适的分區。這種算法孤立來看是最優的,但在每次配置設定完分區後剩餘的空閑分區是最小的,将會留下許多難以利用的小空閑分區,并且每次進行分區之後都要從新排序,開銷也比較大。

    (4)最差适應算法:與最佳适應算法相反,該算法要求按照降序将空閑分區排列成一個鍊,從第一個分區開始進行配置設定,顯然如果第一個分區都不能滿足要求那其他分區也不能滿足要求。該算法在大空閑分區中放入一個程式後其剩餘的空閑分區往往也非常大,還可以再放入較大的程式。

13、分段分頁方式的各自優缺點的比較?

    (1)分頁是資訊的實體機關,為實作離散式配置設定方式,以減少記憶體外零頭,提高記憶體使用率。分段是資訊的邏輯機關,其含有一組意義相對完整的資訊。

    (2)頁的大小是固定的,由系統确定;段的大小不确定,決定于使用者所編寫的程式。

    (3)分頁的位址空間是一維的,程式員隻需要利用一個标記符;分段的位址空間是二維的,在确定一個位址時不僅要給出段名還要給出段内位址。

14、同步和互斥?

    同步:指散布在不同任務之間的若幹程式片段,他們的運作必須按照規定的某種先後次序,這種先後次序依賴于任務本身。

    互斥:指散布在不同任務之間的若幹程式片段,當某個任務運作其中一個程式片段時,其他任務就不能運作他們中的任意一個程式片段,隻能等到該任務運作完這個程式片段才可以。

15、外存配置設定的幾種方式以及優缺點?

繼續閱讀