操做系統之面試常考 分看點一

最近這段時間正在積極準備面試,複習到操做系統部分,本篇文章就介紹操做系統基礎內容,參考第四版《計算機操做系統》這本文章總結了面試中常考、經常使用到的基本知識點,但願對準備面試的同窗和想回顧操做系統知識點的程序員們有所幫助,不對的地方歡迎指正!程序員

1、操做系統引論面試

操做系統目標算法

1:方面性,2:有效性,3:可擴展性,4:開放性編程

 

操做系統基本特性數組

1:併發、2:共享、3:虛擬、4:異步安全

 

描述多道批處理、分時、實時操做系統的特色各是什麼?服務器

   批處理操做系統:多道性、無序性、調度性,系統利用率高、吞吐量大、平均週轉時間長、但無交互能力。網絡

   分時操做系統:有多路性、獨立性、及時性和交互性。 有較好的人機交互的特性,而且能夠實現共享主機數據結構

   實時系統:有多路性、獨立性、及時性、交互性和可靠性。其實是指操做系統工做時,其各類資源能夠根據須要隨時進行動態分配。因爲各類資源能夠進行動態分配,所以,其處理事務的能力較強、速度較快。多線程

  總結:從可靠性:實時系統更強,從交互性:分時系統更強

 

2、進程的描述與控制 

程序併發執行的特徵

1:間斷性:程序在併發執行的時候,由於是共享資源,以及完成同一項任務而相互合做,導致在這些併發執行的程序之間造成了相互制約的關係,致使程序執行呈現:執行--暫停--執行

2:失去封閉性:當系統中有多個併發執行的程序時,各個資源是他們所共享的,這些資源的狀態也由這些程序所改變,因此摸一個程序的運行環境會受到其餘程序的影響。

3:不可再生性

 

進程的特徵與三種基本狀態

一、特徵:

    1:動態性,2:併發性,3:獨立性,4:異步性。
二、狀態:
    1:就緒狀態,2:執行狀態,3:阻塞狀態
三、三種基本狀態轉換:
    處於就緒狀態的進程,在調度程序爲之分配了處理機以後便開始執行, 就緒 -> 執行
    正在執行的進程若是由於分配他的時間片已經用完,而被剝奪處理劑, 執行 -> 就緒
    若是由於某種緣由導致當前的進程執行受阻,使之不能執行。               執行 -> 阻塞
 
 
四、建立狀態和終止狀態圖
 
 
 
進程控制塊PCB的做用
  1:做爲獨立運行基本單位的標誌
  2:能實現間斷性運行方式
  3:提供進程通訊管理所須要的信息
  4:提供進程調度所須要的信息
 

線程與進程的區別聯繫

  一、定義:

    進程:進程是具備必定獨立功能的程序關於某個數據集合上的一次運行活動,是系統進行資源分配和調度的一個獨立單位。(包括程序段,相關數據段,和進程控制塊PCB)

      線程:線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程本身基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),可是它可與同屬一個進程的其餘的線程共享進程所擁有的所有資源.

 

   二、關係:一個線程能夠建立和撤銷另外一個線程;同一個進程中的多個線程之間能夠併發執行.相對進程而言,線程是一個更加接近於執行體的概念,它能夠與同進程中的其餘線程共享數據,但擁有本身的棧空間,擁有獨立的執行序列。

  三、區別:主要差異在於它們是不一樣的操做系統資源管理方式。進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不一樣執行路徑。線程有本身的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等於整個進程死掉,因此多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。 但對於一些要求同時進行而且又要共享某些變量的併發操做,只能用線程,不能用進程。

  4.優缺點:線程和進程在使用上各有優缺點:線程執行開銷小,但不利於資源的管理和保護;而進程正相反。同時,線程適合於在 SMP機器上運行,而進程則能夠跨機器遷移。

 

進程間的通訊是如何實現的?

  早期的屬於低級通訊:緣由:1:效率低,生產者每次只能向緩衝池投放一個信息  2:通訊對用戶不透明,隱藏了通訊的具體細節。如今發展爲高級通訊:用戶能夠利用操做系統所提供的一組通訊命令傳送大量數據。操做系統隱藏了進程通訊的實現細節。或者說,通訊過程對用戶是透明的。

高級通訊機制:

1:共享存儲器系統(存儲器中劃分的共享存儲區)

  實際操做中對應的是「剪貼板」(剪貼板其實是系統維護管理的一塊內存區域)的通訊方式。

2:消息傳遞系統(進程間的數據交換以消息(message)爲單位)

  當今最流行的微內核操做系統中,微內核與服務器之間的通訊,都採用 了消息傳遞機制

3:管道通訊系統(鏈接讀寫進程實現他們之間通訊的共享文件(pipe文件,相似先進先出的隊列,由一個進程寫,另外一進程讀))

  管道分爲匿名管道、命名管道。匿名管道是未命名的、單向管道,經過父進程和一個子進程之間傳輸數據。匿名管道只能實現本地機器上兩個進程之間的通訊,不能實現跨網絡的通訊。命名管道不只能夠在本機上實現兩個進程間的通訊,還能夠跨網絡實現進程間的通訊。

 

4:客戶機-服務器系統

    包括:套接字(socket),遠程過程調用和遠程方法調用

 

什麼是臨界區?如何解決衝突?

  每一個進程中訪問臨界資源的那段程序稱爲臨界區,每次只准許一個進程進入臨界區,進入後不容許其餘進程進入。

  1:若是有若干進程要求進入空閒的臨界區,一次僅容許一個進程進入;

  2:任什麼時候候,處於臨界區內的進程不可多於一個。如已有進程進入本身的臨界區,則其它全部試圖進入臨界區的進程必須等待;

  3:進入臨界區的進程要在有限時間內退出,以便其它進程能及時進入本身的臨界區;

  4:若是進程不能進入本身的臨界區,則應讓出CPU,避免進程出現「忙等」現象。

進程同步原則

  進程同步的主要任務:是對多個相關進程在執行次序上進行協調,以使併發執行的諸進程之間能有效地共享資源和相互合做,從而使程序的執行具備可再現性。同步機制遵循的原則:

  1:空閒讓進;

  2:忙則等待(保證對臨界區的互斥訪問);

  3:有限等待(有限表明有限的時間,避免死等);

  4:讓權等待,(當進程不能進入本身的臨界區時,應該釋放處理機,以避免陷入忙等狀態)。

 

進程同步

  因爲進程同步產生了一系列經典的同步問題「生產者-消費者」問題,「哲學家進餐」問題,「讀者-寫者」問題。

 

程序和進程的區別

  程序計算機指令的集合,它以文件的形式存儲在磁盤上。程序是靜態實體(passive Entity),在多道程序系統中,它是不能獨立運行的,更不能與其餘程序併發執行。

使用系統資源狀況:不使用(程序不能申請系統資源,不能被系統調度,也不能做爲獨立運行的單位,它不佔用系統的運行資源)。

  進程:進程是進程實體(包括:程序段、相關的數據段、進程控制塊PCB)的運行過程,是一個程序在其自身的地址空間中的一次執行活動。是系統進行資源分配和調度的一個獨立單位。

使用系統資源狀況:使用(進程是資源申請、調度和獨立運行的單位,所以,它使用系統中的運行資源)

 

3、處理機調度與死鎖

處理機調度的層次:

  1:高級調度

        主要用於多道批處理系統中,又稱長做業調度,調度隊像是做業,根據某種算法決定將後備隊列中的哪幾個做業調入內存。

  2:低級調度

        操做系統中最基本的一種調度方式(頻率最高),在多道批處理、分時和時實三中類型的OS中都存在,又稱爲短做業調度。

  3:中級調度

        又稱爲內存調度,目的是爲了提升內存的利用率和系統的吞吐率,

 

做業調度的算法:

  1:先來先服務算法(FSFS)
      最簡單的調度算法,既可用於做業調度也可用於進程調度,系統按照做業到達的前後順序進行調度,或者是優先考慮在系統中等待時間最長的做業
  2:短做業優先調度算法(SJF)
      實際狀況短做業佔有比例很大,爲了使他們比長做業優先執行,而產生了短做業優先的調度算法 ,做業越短優先級越高,
      缺點:是必須知道做業的運行時間,對長做業不利,人機沒法實現交互,未徹底考慮做業的緊迫程度

  3:優先級調度算法(PSA)

    優先級:對於先來先服務算法,做業的等待時間就是他的優先級,等待時間越長優先級越高,對於短做業優先級做業的長短就是他的優先級。在優先級算法中,基於做業的緊迫程度。

  4:高響應比優先調度算法(HRRN)

    在FSFS中只是考慮做業的等待時間而忽略做業的運行時間,SJF算法正好相反,高響應比算法既考慮做業的等待時間有考慮做業的運行時間,

    優先權 =  (等待時間+要求服務時間)/要求服務時間

    因爲等待時間與服務時間之和就是做業的相應時間,顧優先級至關於響應比:Rp

    Rp = (等待時間+要求服務時間)/要求服務時間 = 響應時間/要求服務時間

 

什麼是死鎖,死鎖產生的4個條件

  死鎖定義:

    在兩個或多個併發進程中,若是每一個進程持有某種資源而又都等待別的進程釋放它或它們如今保持着的資源,在未改變這種狀態以前都不能向前推動,稱這一組進程產生了死鎖。通俗地講,就是兩個或多個進程被無限期地阻塞、相互等待的一種狀態。

  產生條件:

    1:互斥條件        -- 一個資源一次只能被一個進程使用
    2:請求保持條件 -- 一個進程因請求資源而阻塞時,對已經得到資源保持不放 
    3:不可搶佔條件 -- 進程已得到的資源在未使用完以前不能強行剝奪
    4:循環等待條件 -- 若干進程之間造成一種頭尾相接的循環等待資源的關係
 
預防避免死鎖的方法
  1: 破壞「請求和保持」條件:規定全部進程在開始運行以前,都必須一次性的申請其在整個運行過程所須要的所有資源。

       優勢:簡單,安全。  缺點:資源嚴重浪費,惡化了系統的利用率;

  2: 破壞「不剝奪」條件:進程逐個的提出資源請求,當一個已經保持了某些資源的進程,再提出新的資源請求而不能當即獲得知足時,必須釋放它已經保持了的全部資源,待之後須要時再從新申請。

    缺點:實現複雜,代價大,反覆地申請和釋放資源,而使進程的執行無限的推遲、延長了進程的週轉時間增長系統開銷、下降系統吞吐量。

  3: 破壞「環路等待」條件:將全部的資源按類型進行線性排隊,並賦予不一樣的序號。全部進程請求資源必須按照資源遞增的次序提出,防止出現環路。

    缺點:一、序號必須相對穩定,限制了新設備類型的增長二、做業(進程)使用資源順序和系統規定的順序不一樣而形成資源的浪費三、限制了用戶編程

  注意:因爲互斥條件是非共享設備所必需的,不能改變

 

4、存儲器管理    

連續分配存儲管理方式

  1:單一連續分配
  2:固定分區分配
  3:動態分區分配
       其中動態分區分配將涉及到分區分配中實際須要的數據結構,分區分配算法和分區的分配與回收操做
  內存分配的流程:
 
 
動態分區分配算法
  1:首次適應算法(FF):    
        要求地址空間遞增的順序連接,再分配內存時從鏈首開始查找,知道有一個知足的空間爲止。該算法優先利用內存中低址空間,保留了高址空間, 缺點是低址部分不斷被劃分,留下許多內存碎片
  2:循環首次適應算法(NF):
        爲了防止留下碎片,減小低址空間開銷,NF算法每次從上一次分配的地方繼續分配,該算法須要一個起始查詢的指針用於指示下一次查詢的空間地址。 缺點是:缺少大的空間分區
  3:最加適應算法(BF):
        每次做業分配時,老是把知足要求,又是最小的空間分配給做業,該算法把空間分區按其容量大小從小到大排列成空閒區鏈, 缺點是: 留下許多內存碎片
  4:最壞適應算法(WF):
        老是挑選最大的空閒區域分配給做業使用,優勢是不至於使空閒區間過小,產生碎片的可能性小, 缺點是:缺少大的空間分區

分頁存儲管理方式

    分頁存儲的基本方法:
        1:頁面和物理快   頁面:分頁存儲管理將進程的邏輯地址空間分紅若干頁,並從0開始編號,把內存的物理地址分紅若干塊(物理快)
        2:地址結構:   頁號P ----- 偏移量W(包括頁號P和偏移量W),對於特定的機器其地址結構必定,給定邏輯地址A,頁面的大小爲
                                   L,則頁號P和頁內地址D有一下關係:P = int[A/L]; d=[A] MOD L  例如:頁面大小1kb A=2170B 得:p=2 d=122
        3:頁表:記錄相應頁在內存中對應的物理塊號
        4:地址轉換機構:將用戶邏輯空間的地址,轉變爲空間中的物理地址

分段存儲管理方式

        分段是管理不會產生內存碎片(短號 , 段內地址)
        分段管理方式的引入緣由:
        1:通常程序分爲若干段,如:主程序段、數據段、棧段等,每一個段大可能是一個相對獨立的單位
        2:實現知足信息共享、信息保護、動態連接、以及信息動態增加等須要
 
分頁和分段的區別:
  共同點:二者都採用離散分配方式,且都地址映射機構來實現地址的轉換    
  不一樣點:
        1:頁是信息的物理單位採用分頁存儲管理方式是爲了實現離散分配方法。提升內存的利用率,採用分段目的主要在於能更好的知足用戶的需求
        2:頁的大小固定且有系統決定,在採用分頁存儲管理方式中直接由硬件實現。而段的大小不固定,決定於用戶所編寫的程序
        3:分頁的地址空間是一維的,分頁徹底是系統徹底是行爲,分段系統中是二維的。

段頁式存儲管理方式

   基本原理是分段和分頁相結合,其地址結構由:段號、段內頁號、頁內地址三部分組成。在段頁式系統中得到一條指令須要三次訪問內存,第一次訪問內存中的段表,第二次訪問內存中的頁表,第三次訪問內存中的數據。

 

Windows下的內存是如何管理的?

 Windows提供了3種方法來進行內存管理:

    1:虛擬內存,最適合用來管理大型對象或者結構數組;

    2:內存映射文件,最適合用來管理大型數據流(一般來自文件)以及在單個計算機上運行多個進程之間共享數據;

    3:內存堆棧,最適合用來管理大量的小對象。

 Windows操縱內存能夠分兩個層面:物理內存和虛擬內存。

 其中物理內存由系統管理,不容許應用程序直接訪問


5、虛擬存儲器 

操做系統的內容分爲幾塊?什麼叫作虛擬內存?他和主存的關係如何?內存管理屬於操做系統的內容嗎?

    操做系統的主要組成部分:進程和線程的管理,存儲管理,設備管理,文件管理。虛擬內存是一些系統頁文件,存放在磁盤上,每一個系統頁文件大小爲4K,物 理內存也被分頁,每一個頁大小也爲4K,這樣虛擬頁文件和物理內存頁就能夠對應,實際上虛擬內存就是用於物理內存的臨時存放的磁盤空間。頁文件就是內存頁, 物理內存中每頁叫物理頁,磁盤上的頁文件叫虛擬頁,物理頁+虛擬頁就是系統全部使用的頁文件的總和。
 

請求分頁存儲管理方式   

請求頁表機制:做用是吧用戶的邏輯地址映射爲內存空間中的物理地址。
結構
 
頁號 物理塊號 狀態位P 訪問字段A 修改位M 外存地址
 
1:狀態位P:指示頁面是否調入內存,供程序訪問時參考
2:訪問字段A:用於記錄本也在一段時間內被訪問的次數,供換出頁面時參考
3:修改位M:標識頁面調入內存是否被修改過,供置換頁面時參考
4:外存地址:用於指示該頁在外存上指示地址
內存分配:
    最小物理塊數:若採用單地址指令,且採用直接尋址,須要物理塊數是2,一塊用於存放指令頁面,另外一塊用於存放數據頁面
                            若採用間接尋址至少須要3塊
 

虛擬存儲器頁面置換算法

1:最佳置換算法(Optimal):一種理論的算法,選着淘汰的頁面是之後必定再也不使用的頁面(理想化的),該算法沒法實現,只能做爲其餘算法好壞的一個評價對比。
2:先進先出(FIFO)算法:老是最早淘汰最早進去的頁面,該算法容易實現。缺點:一般程序調入內存的前後順序和程序執行的前後順序不一致,致使缺頁率高。
3:最近最久未使用(LEU):FIFO算法性能差,LRU算法根據頁面調入內存的前後孫旭決定,由於違法預測將來的使用狀況,就是用過去的使用狀況做爲未來的使用狀況的近似。
4:最少使用算法(LFU):在每一個頁面設置一個移位寄存器記錄該頁面的訪問頻率,最近時期最少使用的頁面被淘汰
 

6、輸入輸出系統

 IO軟件的層次結構
  1:用戶層IO軟件,2:設備獨立性軟件,3:設備驅動程序,4:中斷處理程序
 
  對IO設備的控制方式
  1:使用輪詢的可編程方式
    cpu不停地檢查設備的狀態,以字節爲單位,非中斷方式,利用率低
  2:使用中斷可編程的Io方式
    添加CPU中斷,提升了CPU的利用率
  3:直接存儲方式
    以數據塊爲單位,放寬響應時間
  4:IO通道的方式
    以數據塊組成的一組數據塊爲單位,大幅度提升CPU的利用率
 
    設備分配1
  1:設備分配中的數據結構
    1:設備分配表DCT,2:控制器控制表,通道控制表,系統設備設備表
  2:設備分配須要考慮的因素
    1:設備的固有屬性,2:獨佔設備得分配策略,3:設備的分配算法,4:設備分配中的安全性
  3:獨佔設備的分配程序
 
 SpooLing系統的構成
  1:輸入井和輸出井
  2:輸入緩衝區和輸出緩衝區
  3:輸入進程和輸出進程
  4:井管理程序
  
   緩衝區
   1:單緩衝區,處理時間是:max(c,T)+M
   2:雙緩衝區,處理時間是:max(C+T);
 

7、文件管理

 文件邏輯結構分類 

  按文件的有無結構分:

    1:有結構文件(記錄式文件) 2:無結構文件(流式文件)

  按文件組織方式分:

    1:順序文件,2:索引文件,3:索引順序文件

8、磁盤存儲器管理

外存的組織方式    
     1:連續組織方式,
            又稱爲連續分配方式,要求每個文件分配一個相鄰的盤快
            優勢:順序訪問容易:訪問連續文件很是容易,訪問速度很是快
            缺點:要求爲文件分配連續的空間,必須事先知道文件的長度,不能靈活的刪除插入記錄動態增加的文件難分配空間
    2:連接組織方式(分爲隱式連接和顯示連接)
           採用連接組織的方式能夠爲文件分配多個不連續的盤快
    優勢:1:消除磁盤的外部碎片,提升內存的利用率 。2:對插入刪除修改很是容易。3:能夠適應文件的動態增加
    3:索引組織方式
   分爲單索引和多索引組織方式。
 
文件存儲的組織方式
  1:空閒表法,2:空閒鏈表法(空閒盤快連,空閒盤區鏈),3:位示圖法,  4:成組連接法(重要)
 
不對的地方歡迎指正,轉載請註明出處!謝謝!
相關文章
相關標籤/搜索