Operating System Point

一、引論

  1. 什麼是操作系統
    操作系統(Operating System, OS)是直接配置在計算機硬件上的最基本的系統軟件,負責管理計算機的軟硬件資源,實現對計算機資源抽象,爲用戶提供方便易用的接口。

  2. 操作系統四個目標:
    有效性、方便性、可擴充性、開放性

  3. 操作系統三大作用:
    OS作爲用戶與計算機硬件系統之間的接口
    OS作爲計算機系統資源管理者
    OS實現了對計算機資源的抽象

  4. 歷史上的三種基本類型的操作系統:多道批處理系統、分時系統、實時系統。

  5. 實時系統|分時系統的比較
    <1>及時性:實時信息處理系統對實時性的要求與分時系統類似,都是以人能接收的等待時間來確定,而實時控制系統的及時性,則是與控制對象所要求的開始截止時間或者完成截至時間來確定的,一般爲秒級到毫秒級。
    <2>交互性:實時信息處理系統雖然也具有交互性,但這裏人與系統的交互僅限於訪問系統中某些特定的專用服務程序,它不像分時系統那樣能向終端用戶提供數據處理和資源的共享
    <3>可靠性:分時系統雖然也要求可靠,相比之下,實時系統則要求系統具有高度的可靠性,因爲任何差錯都可能帶來巨大的經濟損失,甚至是無法預料的災難。往採取了多級容錯措施來保障系統的安全性及數據的安全性。

  6. 操作系統的四大基本特徵 : 併發 共享 虛擬 異步
    其中併發共享是最基本的特徵,又是互爲存在的條件。
    併發性是最重要的特徵。


二、進程

  1. 爲什麼要引入進程
    爲了使程序能可靠的併發,於是把程序包裝成進程,程序以進程實體的方式駐留在內存,輪流佔用CPU執行。

  2. 進程的特徵:結構特徵(進程實體)、動態性(生命週期)、併發性、異步性、獨立性。

  3. 進程的三種基本狀態及其轉換關係

    1

  4. 進程控制塊(PCB)是進程存在的唯一標誌。爲什麼呢?
    <1>:爲了描述和控制進程的運行,系統爲每個進程定義了一個數據結構–進程控制塊PCB(Process Control Block),它是進程實體的一部分,是操作系統中最重要的記錄型數據結構。
    <2>:PCB中記錄了操作系統所需的、用於描述進程當前情況以及控制進程運行的全部信息。進程控制塊的作用是使一個在多道程序環境下不能獨立運行的程序,成爲一個能與其他程序併發執行的進程。也就是OS根據PCB來對併發執行的進程進行控制和管理的。
    <3>:在調度某些進程後,要根據其PCB中所保存的處理機狀態信息,設置該進程恢復運行的現場,並根據PCB中的程序和數據內存始址,找到其程序和數據,進程在執行過程中,當需要與之合作的進程是實現同步、通信或者訪問文件時,也都需要訪問PCB;當進程由於某種原因而暫停執行時,又需要將其斷點的處理機環境保存在PCB中
    <4>:所以在進程的整個生命週期中,系統總是通過PCB對進程進行控制,所以,系統是根據進程的PCB而不是任何別的什麼而感知到該進程的存在,所以PCB是進程存在的唯一標誌。

  5. 進程同步:諸進程在併發執行時存在直接和間接兩種相互制約關係。

  6. 臨界資源與臨界區:每個進程中訪問臨界資源的那段代碼稱爲臨界區。

  7. 同步機制四準則:空閒讓進,忙則等待,有限等待,讓權等待。

  8. 進程同步 – 信號量(Semaphore)機制
    整型信號量與記錄型信號量從用戶角度來看是一樣的,均包含兩個原子操作wait(S)和signal(S),或稱PV原語。wait操作申請一個單位資源,將S值減少1;signal操作釋放一個單位資源,將S值增加1。

    整型信號量因未遵循讓權等待準則而被記錄型信號量取代。

    互斥信號量的初值是1。資源信號量的當前值代表該類臨界資源的可用數量,注意:若資源信號量的當前值是負數,則該資源當前可用數量爲0,且其絕對值代表正在排隊阻塞等待該資源的進程數量。例如與打印機相關的信號量S=-3,則打印機當前可用數量爲0臺,且有3個進程正在排隊阻塞等待該打印機。
    信號量可用於實現進程間互斥及同步。

  9. 進程間通信(IPC)
    信號量機制是卓有成效的同步工具,但不是卓有成效的進程間通信工具。於是我們介紹了三種高級進程間通信機制:管道、共享存儲區、消息隊列。

  10. 線程爲什麼要引入線程?比較線程與進程
    在操作系統中引入進程的目的,是爲了使多個程序能併發執行,以提高資源的利用率和系統的吞吐量,那麼在操作系統中在引入線程,則是爲了減少程序在併發執行時所付出的時空開銷。使OS具有更好的併發性
    線程具有許多傳統進程所具有的特徵,所以又稱爲輕型進程或進程元,相應的把傳統進程稱爲重型進程
    <1>調度:在傳統的操作系統中,作爲擁有資源的基本單位和獨立調度,分派的基本單位都是進程,而在引入進程的操作系統中,則把線程作爲調度和分派的基本單位,而進程作爲資源擁有的基本單位,這樣線程便能輕裝上陣,顯著提高系統的併發性。同一進程中,線程的切換不會引起進程的切換,但是一個進程中的線程到另一個進程中的線程時, 將會引起進程的切換。
    <2>併發性:在引入線程的操作系統中,不僅進程之間可以併發執行,而且在一個進程中的多個線程之間亦可併發執行,使操作系統具有更好的併發性,從而能夠有效提高系統資源的利用率和吞吐量。
    <3>擁有資源:不論是傳統操作系統,還是引入線程的,進程都可以擁有資源,是系統中擁有資源的一個基本單位,線程自己不擁有資源(也有一點必不可少的資源),但它可以訪問其隸屬進程的資源,即一個進程的代碼段,數據段以及擁有的系統資源。可以供該進程中的所有線程所共享。
    <4>系統開銷:在創建或者撤銷進程時, 系統都要有之創建和回收進程控制塊,分配或回收資源,如內存控件和I/O設備,操作系統所付出開銷明顯大於線程創建或撤銷的時的開銷,線程切換則僅需要保存和設置紹亮的寄存器內容。由於一個進程中的多個線程具有相同的地址空間,在同步和通信的實現方面線程也比較容易,在一些操作系統中,線程的切換、同步和通信都無須操作系統內核的干預。


三、調度與死鎖

  1. 高級調度(作業調度)是從外存後備隊列中選擇某個或某些作業優先調入內存。

  2. 低級調度(進程調度)是從內存就緒隊列中選擇某個進程使它優先獲得CPU進入執行態。

  3. 進程調度有搶佔式非搶佔式兩種方式。搶佔調度方式主要基於優先權原則短進程優先原則時間片原則

  4. 先來先服務調度算法:先來先服務(First Come First Served, FCFS)調度算法是一種最簡單的調度算法,既可以用於作業調度,也可以用於進程調度。有利於長作業(進程),不利於短作業(進程);有利於CPU繁忙型的作業,不利於I/O繁忙型的作業。

  5. 短作業(進程)優先調度算法:短作業優先(Shortest Job First, SJF)調度算法是從後備隊列中選擇一個或若干個估計運行時間最短的作業,將它們調入內存運行。類似的,短進程優先(SPF)算法從就緒隊列中選出一個估計運行時間最短的進程,將處理機分配給它,直到其執行至完成或阻塞時再重新調度。

  6. 短作業(進程)優先調度算法優點:相比於先來先服務調度算法,可改善平均週轉時間及平均帶權週轉時間,尤其是對短作業,會有明顯改善。從而有效降低作業的平均等待時間,提高系統吞吐量
    缺點:1)對長作業不利,會導致長作業(進程)長期不被調度(Starvation);2)完全未考慮作業的緊迫程度;3)作業(進程)的長短是預估的,不一定準確。

  7. 產生死鎖的原因可歸結爲競爭資源進程間推進順序不當

  8. 產生死鎖的四大必要條件,其中的互斥條件不僅不能摒棄,還必須保證
    1:互斥條件(訪問臨界資源)
    2:請求和保持條件。進程已保持了至少一個資源,又因提出新的資源請求而阻塞,阻塞期間對自己已獲得的資源保持不放。
    3:不剝奪條件
    4:環路等待條件。發生死鎖時,必然存在一個進程——資源的環鏈,即進程集合{P0,P1,…,Pn},P0正在等待P1佔用的資源,P1正在等待P2佔用的資源,…… ,Pn正在等待P0佔用的資源。

  9. 處理死鎖的四種方法預防死鎖(摒棄哪幾個必要條件?),避免死鎖,檢測死鎖,解除死鎖(剝奪資源、撤銷進程)。

  10. 預防死鎖摒棄哪幾個必要條件?)
    摒棄“請求與保持”條件
    摒棄“不剝奪”條件
    摒棄“環路等待”條件

  11. 避免死鎖( 系統的安全狀態與不安全狀態)
    安全狀態,是指系統能按某種進程順序,即安全序列〈P1,P2,… ,Pn〉,來爲每個進程Pi分配所需資源,直至滿足每個進程對資源的最大需求,使每個進程都可順利地完成。如果系統無法找到這樣一個安全序列,則稱系統處於不安全狀態
    當系統進入不安全狀態後,便有可能進而進入死鎖狀態。避免死鎖的實質在於:系統在進行資源分配時,如何避免系統進入不安全狀態

未完待續。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章