1. 程式人生 > >作業系統複習大綱

作業系統複習大綱

1.單道批處理系統
2.多道批處理系統:目的;提高資源利用率和系統吞吐量
3.分時系統:目的:為了滿足人機互動的需求
4.實時系統:特點就是及時性

並行和併發:
        並行性是指在兩個或者多個事件在同一時刻發生
        併發性是指兩個或者多個事件在同一時間間隔發生
程序:
        是指在系統中能獨立執行並作為資源分配的基本單位,它是由一組機器指令資料和堆疊等組成的,是一個獨立執行活動實體,多個程序之間可以併發執行和交換資訊
作業系統的基本特徵:
        1.並行和併發
        2.共享 互斥共享 同時訪問方式
        3.虛擬
        4.非同步
設計現代OS的主要目標是:有效性 方便性 可擴充性 開放性

程序:
        前趨圖:是一個有向無迴圈圖,在圖中一定是不允許有迴圈的
程序的特徵:
   動態性
   非同步性
   併發行
   獨立性
程序的三個基本狀態:
   就緒狀態
   執行狀態
   阻塞狀態
   三者之間的關係 就緒狀態獲得cpu(處理機)就會變成執行狀態
         執行狀態因為時間片用完就會暫停執行就會變成就緒狀態
         執行狀態因為I/O請求會變成阻塞狀態
         阻塞狀態因為I/O請求完成就會變成就緒狀態
PCB作為程序實體的一部分記錄了作業系統所需的,用於描述程序的當前情況以及管理程序執行的全部資訊
阻塞-->喚醒 掛起-->啟用

訊號量:p操作和v操作都必須是一個不可中斷的整體,除了p操作和v操作其他任何操作都不能改變訊號量
        p操作使用的情況:
            1.表示請求分配一個資源
            2.檢查能否做某事
            3.減1操作
            4.阻塞一個程序
        v操作的使用情況:
            1.表示釋放一個資源
            2.給合作者發訊號
            3.加1操作
            4.喚醒一個操作
        p操作的步驟
            1.減1
            2.如果>=0則程序繼續執行否則程序被阻塞,排入阻塞佇列
        v操作的步驟
            1.加1
            2.如果>0程序繼續執行否則表示程序正在等待佇列,第一個等待該訊號量的程序將被喚醒
執行緒:
    在os中引入程序的目的是為了能夠為了使多個程式併發執行,以提高資源利用率和系統的吞吐量
    引入執行緒的目的:為了減少程式在併發執行時所付出的時空開銷,使os具有更好的併發性
程序和執行緒的區別
    1.排程的基本單位:在傳統的os中程序是作為獨立排程和分派的基本單位,因而程序是獨立執行的基本單位,在引入執行緒的os中已把執行緒作為排程和分派的基本單位,因而執行緒是獨立執行的基本單位,執行緒的
        切換不會引起程序的切換,但從一個程序中的執行緒切換到另一個程序中的執行緒時,必然就會引起程序的切換。
    2.併發性:在引入執行緒的os中,不僅程序之間可以併發執行,而且一個程序中的多個執行緒之間也可以併發執行,甚至一個程序中所有執行緒都可以併發執行,同樣不同程序之間的執行緒也可以併發執行。
    3.擁有資源:程序是系統擁有資源的一個基本單位,執行緒並不擁有系統的資源
    4.獨立性:統一程序中的不同執行緒之間的獨立性要比不同程序之間的獨立性低得多。
    5.系統開銷:在建立程序時,系統要為之分配和回收程序pcb分配和回收其他資源,因此程序的開銷明顯大於執行緒的開銷
作業排程:
    1.先來先服務(first-come first-server FCFS)排程演算法 對長作業有利,不利於I/O
    2.短作業優先(short job first sjf)排程演算法 對短作業有利有利於吞吐量
    3.優先順序排程演算法(psa):是根據作業的緊迫程度,由外部賦予作業相應的優先順序。
    4.高響應比(hrrn)優先權 = (等待時間+要求服務的時間)/ 要求服務的時間 = 1+等待時間/要求服務的時間
程序排程:
    程序排程的方式:
        非搶佔式:一旦把處理機分配給某個程序後,就一直讓它執行下去,絕不會因為始終中斷或其他原因去搶佔正在執行程序的處理機。
        搶佔式:允許排程程式根據某種原則,去暫停某個正在執行的程序,將已分配程序的處理機分配給另一個程序
            搶佔的方式:
                1.優先順序原則:允許優先順序高的新到的程序搶佔當前正在執行的程序
                2.短程序優先原則:允許新到的短程序可以搶佔當前長程序的處理機
                3.時間片原則:各程序按時間片輪轉執行時,當前執行的程序時間片用完時,便執行該程序的執行重新進行排程。
    時間片輪轉: 原理:當該程序的時間片耗盡或者執行完畢時,系統再次將cpu分配給新的隊首程序。
                程序切換時機:1.在一個時間片尚未用完,正在執行的程序便已經完成。2.在一個時間片用完。
                時間片大小的確定:
                週轉週期:作業從被提交到系統時 到作業完成為止這段時間間隔
                帶權週轉時間:週轉時間和系統為他提供服務時間之比
死鎖:
    原因:
        1.競爭不可搶佔性資源引起死鎖(如果是可搶佔資源不會發生死鎖,因為既然是可搶佔資源,你來搶咱們比一下優先順序如果你比我高,我就給你了,所以不會引起死鎖)
        2.競爭可消耗資源引起死鎖
        3.程序推進順序不當引起死鎖
    定義:多個程序在執行時因為爭奪資源而造成的一種僵持,當程序處於這種僵持狀態,如果沒有外力作用都不能向前推進。
    死鎖產生的必要條件:
        1.互斥條件
        2.請求和保持條件
        3.不可搶佔資源條件
        4.迴圈等待條件
    處理死鎖的方法
        1.預防死鎖
        2.避免死鎖
        3.檢測死鎖
        4.解除死鎖
程式執行時,必須先將它裝入記憶體
    1.編譯:由編譯程式對使用者源程式進行編譯,形成若干個目標模組
    2.連結:由連結程式將編譯後形成的一組目標模組以及它們所需的庫函式連結在一起,形成一個完成裝入模組
    3.裝入:由撞入程式將裝入模組裝入記憶體
程式的裝入:
    1.絕對裝入方式
    2.可重定位裝入方式
    3.動態執行時的裝入方式
連續分配儲存管理方式
    1.單一連續分配:使用者區中,僅裝有一道使用者程式,即整個記憶體的使用者空間有該程式獨佔。
    2.固定分割槽分配:(產生內部碎片)
        1.分割槽大小相等
        2.分割槽大小不等
    3.動態分割槽分配:根據程序的需要分配響應的記憶體的大小
        1.基於順序搜尋的動態分割槽分配演算法
            1.首次適應(first fit ff)演算法 在分配記憶體時,從鏈首開始順序查詢,知道找到一個大小能滿足要求的空閒分割槽為止,然後再按照作業的大小,從該分割槽裡劃出一塊記憶體空間,分配給請求者。餘下的空閒分割槽仍留在空閒鏈裡。
                該演算法傾向於優先利用記憶體中低地址的空閒分割槽,從而保留了高地址部分的大空閒區,這為以後到達大作業分配大作業分配大的記憶體空間創造了條件。該演算法低地址不斷的分配,會產生不能利用的空間,即產生外部碎片,每次
                從低地址查詢這會增加開銷
            2.迴圈首次適應(next fit nf)演算法 為程序分配空間時,不是每次都從首部查詢,而是從上次找到空閒分割槽的下一個空閒分割槽開始查詢。
                記憶體的空閒分割槽比較均勻,減少了查詢空閒分割槽的開銷,但這樣會缺乏大的空閒分割槽。
            3.最佳適應(best fit bf)演算法 每次分配時,總是能把滿足要求又是最小的空閒分割槽分配給作業,該演算法要求將所有的空閒分割槽按其容量以從小到大的順序形成一空閒分割槽鏈
                該演算法會產生很難利用碎片(外部碎片) 有利於滿足長作業的要求
            4.最壞使用(worst fit wf)演算法 每次分配時正好和最佳適應相反,每次都選擇最大的空閒分割槽分配給作業
                查詢時,只要看第一個分割槽能否滿足作業要求即可 對中小作業有利
        2.緊湊:
            通過移動記憶體作業的位置,把原來多個分散的小區拼接成一個大分割槽的方法。

分頁儲存管理方式(離散分配儲存管理方式)
    1.分頁儲存管理方式 (頁面大小和物理塊的大小一樣,兩次訪問記憶體,第一次訪問頁表,第二次訪問記憶體中的實體地址 )
    2.分段儲存管理方式 (地址空間是二維的,程式設計師在標識地址時,既要給出段名又要給你段內地址)
    3.段葉式儲存管理方式
檔案邏輯結構:
    1.檔案邏輯結構
    2.檔案物理結構