最近這段時間正在積極準備面試,複習到操做系統部分,本篇文章就介紹操做系統基礎內容,參考第四版《計算機操做系統》這本文章總結了面試中常考、經常使用到的基本知識點,但願對準備面試的同窗和想回顧操做系統知識點的程序員們有所幫助,不對的地方歡迎指正!程序員
1、操做系統引論面試
操做系統目標算法
1:方面性,2:有效性,3:可擴展性,4:開放性編程
操做系統基本特性數組
1:併發、2:共享、3:虛擬、4:異步安全
描述多道批處理、分時、實時操做系統的特色各是什麼?服務器
批處理操做系統:多道性、無序性、調度性,系統利用率高、吞吐量大、平均週轉時間長、但無交互能力。網絡
分時操做系統:有多路性、獨立性、及時性和交互性。 有較好的人機交互的特性,而且能夠實現共享主機數據結構
實時系統:有多路性、獨立性、及時性、交互性和可靠性。其實是指操做系統工做時,其各類資源能夠根據須要隨時進行動態分配。因爲各類資源能夠進行動態分配,所以,其處理事務的能力較強、速度較快。多線程
總結:從可靠性:實時系統更強,從交互性:分時系統更強
2、進程的描述與控制
程序併發執行的特徵
1:間斷性:程序在併發執行的時候,由於是共享資源,以及完成同一項任務而相互合做,導致在這些併發執行的程序之間造成了相互制約的關係,致使程序執行呈現:執行--暫停--執行
2:失去封閉性:當系統中有多個併發執行的程序時,各個資源是他們所共享的,這些資源的狀態也由這些程序所改變,因此摸一個程序的運行環境會受到其餘程序的影響。
3:不可再生性
進程的特徵與三種基本狀態
一、特徵:
線程與進程的區別聯繫
一、定義:
進程:進程是具備必定獨立功能的程序關於某個數據集合上的一次運行活動,是系統進行資源分配和調度的一個獨立單位。(包括程序段,相關數據段,和進程控制塊PCB)
線程:線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程本身基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),可是它可與同屬一個進程的其餘的線程共享進程所擁有的所有資源.
進程間的通訊是如何實現的?
早期的屬於低級通訊:緣由: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:中級調度
又稱爲內存調度,目的是爲了提升內存的利用率和系統的吞吐率,
做業調度的算法:
3:優先級調度算法(PSA)
優先級:對於先來先服務算法,做業的等待時間就是他的優先級,等待時間越長優先級越高,對於短做業優先級做業的長短就是他的優先級。在優先級算法中,基於做業的緊迫程度。
4:高響應比優先調度算法(HRRN)
在FSFS中只是考慮做業的等待時間而忽略做業的運行時間,SJF算法正好相反,高響應比算法既考慮做業的等待時間有考慮做業的運行時間,
優先權 = (等待時間+要求服務時間)/要求服務時間
因爲等待時間與服務時間之和就是做業的相應時間,顧優先級至關於響應比:Rp
Rp = (等待時間+要求服務時間)/要求服務時間 = 響應時間/要求服務時間
什麼是死鎖,死鎖產生的4個條件
死鎖定義:
在兩個或多個併發進程中,若是每一個進程持有某種資源而又都等待別的進程釋放它或它們如今保持着的資源,在未改變這種狀態以前都不能向前推動,稱這一組進程產生了死鎖。通俗地講,就是兩個或多個進程被無限期地阻塞、相互等待的一種狀態。
產生條件:
優勢:簡單,安全。 缺點:資源嚴重浪費,惡化了系統的利用率;
2:破壞「不剝奪」條件:進程逐個的提出資源請求,當一個已經保持了某些資源的進程,再提出新的資源請求而不能當即獲得知足時,必須釋放它已經保持了的全部資源,待之後須要時再從新申請。缺點:實現複雜,代價大,反覆地申請和釋放資源,而使進程的執行無限的推遲、延長了進程的週轉時間增長系統開銷、下降系統吞吐量。
3:破壞「環路等待」條件:將全部的資源按類型進行線性排隊,並賦予不一樣的序號。全部進程請求資源必須按照資源遞增的次序提出,防止出現環路。缺點:一、序號必須相對穩定,限制了新設備類型的增長二、做業(進程)使用資源順序和系統規定的順序不一樣而形成資源的浪費三、限制了用戶編程
注意:因爲互斥條件是非共享設備所必需的,不能改變
4、存儲器管理
連續分配存儲管理方式
1:單一連續分配分頁存儲管理方式
分段存儲管理方式
段頁式存儲管理方式
基本原理是分段和分頁相結合,其地址結構由:段號、段內頁號、頁內地址三部分組成。在段頁式系統中得到一條指令須要三次訪問內存,第一次訪問內存中的段表,第二次訪問內存中的頁表,第三次訪問內存中的數據。
Windows下的內存是如何管理的?
Windows提供了3種方法來進行內存管理:
1:虛擬內存,最適合用來管理大型對象或者結構數組;
2:內存映射文件,最適合用來管理大型數據流(一般來自文件)以及在單個計算機上運行多個進程之間共享數據;
3:內存堆棧,最適合用來管理大量的小對象。
Windows操縱內存能夠分兩個層面:物理內存和虛擬內存。
其中物理內存由系統管理,不容許應用程序直接訪問
5、虛擬存儲器
操做系統的內容分爲幾塊?什麼叫作虛擬內存?他和主存的關係如何?內存管理屬於操做系統的內容嗎?
請求分頁存儲管理方式
頁號 | 物理塊號 | 狀態位P | 訪問字段A | 修改位M | 外存地址 |
虛擬存儲器頁面置換算法
6、輸入輸出系統
7、文件管理
文件邏輯結構分類
按文件的有無結構分:
1:有結構文件(記錄式文件) 2:無結構文件(流式文件)
按文件組織方式分:
1:順序文件,2:索引文件,3:索引順序文件
8、磁盤存儲器管理