處理機
處理機在計算機系統裡算作系統資源,他是用來執行不同程序的不可獲缺的一種資源,每乙個程序都要處理機才能從活動就緒態變成執行態,在對稱的多處理機的系統中,程序中的執行緒也是需要處理機才能從就緒狀態進入執行狀態的
1. 處理機排程的層次
1> 高階排程:排程的單位是作業(作業包含了乙個或者多個程序),主要用於多道批處理系統中,而在實時系統和分時系統不設定,作業也有相應的後備佇列
2> 低階排程:又稱為程序排程和短程排程,主要排程的是程序或者核心級執行緒,決定就緒佇列中哪個程序獲得處理機,多道批處理、分時、和實時系統中,必須有這種排程
3> 中級排程:記憶體排程,主要做的是何時把暫時不進行的程序調入外存,有何時把具備條件的程序調入記憶體,一般放入外訓的是掛起狀態的程序。
2. 處理機排程有不同的演算法,但是演算法都有著共同的目標
1> 各處理機排程演算法的共同目標 1 提高資源利用率:盡可能的使處理機和其他資源保持忙碌狀態 2 公平性:程序都合理的獲得cpu時間 3平衡性:盡可能保持系統資源利用的平衡性 4 策略強制執行:為系統所定製的策略(安全策略)只要需要,必須準確的強制執行
2> 批處理os的目標:平均周轉時間短、系統吞吐量高、處理機利用率高
3> 分時os的目標:響應時間快、均衡性
4> 實時os的目標:截止時間的保證:任務開始執行或完成的最遲時間、可**性
3. 作業和作業排程(高階排程)
1> 作業:job,是比程式更為廣泛的概念,不僅包含了程式和資料,還配有乙份作業說明書
2> 作業步:作業中的乙個過程
3> 作業也有作業所要的資源:jcb作業控制塊(有作業的標識、作業的狀態、使用者名稱、使用者賬號、作業型別、排程資訊、資源需求、資源使用情況)。作業進入系統時,先申請jcb,然後放入作業後備佇列等待排程
4> 作業也有三種狀態和三個階段:
1 收容階段:申請jcb放入後備佇列的階段,此時的狀態為後備狀態
2 執行階段:從後備佇列取出,申請程序,申請程序pcb等,作業從有程序就緒到整個作業完成都是執行狀態
3 完成階段:作業完成或異常提前結束的狀態,這是的狀態為完成狀態,沒有jcb,作業相應的程序也沒有了資源,都反壞給系統了
5> 作業排程的任務:能接納多少個作業,接納哪些作業
6> 作業排程的演算法:
1 先來先服務fcfs:利用的是後備佇列
2 短作業優先sjf:因為短作業佔作業中大多數
3 優先順序排程演算法:基於靜態優先順序
4 高響應比的優先順序排程演算法:基於動態優先順序,作業的優先順序是要求服務時間和等待時間決定的
4. 程序排程(低階排程)
1> 程序排程的任務:
1儲存現場資訊:計數器和暫存器的內容
2按某種演算法選取程序:一旦演算法選取程序,程序就獲得處理機
3 把處理機分配給程序
2> 程序排程的機制:
1 排隊器 2分派器 3 上下文切換器 都是硬體
3> 程序排程的方式:
1 非搶占方式:一旦把處理機分配給某乙個程序,就一直要到執行完才釋放
2 搶占方式:按照某種原則來搶處理機(如:優先權原則、短程序優先原則、時間片原則)
4> 程序排程的各種演算法:
1 輪轉排程演算法:基於時間片和中斷程式以及排程程式
2 優先順序排程演算法:非搶占的優先順序排程演算法(優先順序為靜態的,程序一旦獲得就能一直到完成)和搶占式優先順序排程演算法(優先順序為動態的:隨著等 待的時間增加而增加,這樣的低優先順序的程序在等待足夠長的時間也能獲得處理機)
3 多佇列的排程演算法:把就緒佇列分為若干個佇列,每個對列可以設定不同的演算法,這種演算法適合於多處理機系統,可以每乙個處理機安排乙個就緒隊 列,而對於乙個程序有多個執行緒而言,可以把所有執行緒放在乙個就緒佇列。
4 多級反饋佇列:設定多個就緒佇列,每個佇列採用fcfs演算法,按佇列優先順序進行排程
5 公平排程的演算法:每個使用者的獲得的cpu時間公平
6 實時排程:實時排程是要由條件的,首先使用者要提供就緒事件和開始截止時間和完成截止時間的必要的資訊,當然實時排程的系統處理能力要極強, 還得採用搶占的排程機制和具有快速切換的機制。
7 最早截止時間優先的演算法:根據截止時間來判定優先順序,最早截止的在就緒佇列的隊首,他機可以用於非搶占方式中,也可以用於搶占方式中。最低 鬆弛度優先演算法:根據緊急程度來確定優先順序,鬆弛度(乙個任務必須在200ms時完成,本身執行時間為100ms,則鬆弛都為100),鬆弛度越低越緊 急,緊急任務優先。
8 優先順序倒置:優先順序繼承,乙個正在使用臨界資源的程序,如果來了乙個比它優先順序高的程序,一方面阻塞優先順序高的程序,另一方面低優先順序程序 繼承高優先順序程序的優先順序
5. 程序死鎖
1> 資源的種類:
1可以重用:數目固定程序執行期間不能刪除和建立(處理機)
2> 死鎖原因:
1 競爭不可搶占式資源死鎖:兩個程序或多個程序都在迴圈的等待釋放資源
2 競爭可消耗資源引起的死鎖
3 程序推進不當產生的死鎖
3> 死鎖的定義:一組程序中,沒乙個程序都在等其他程序觸發事件按,則程序死鎖
4> 產生條件:1互斥 2請求和保持條件 3不可搶占條件 4迴圈等待條件
5> 處理死鎖的方法:1預防 2避免 3檢測 4解除
6> 預防死鎖:
1破環請求和保持的條件:一次性的申請全部資源或在執行過程中釋放自己已經用過的資源
2 破環不可搶占條件:當請求未被滿足時,釋放持有的資源
3 破壞迴圈等待條件
7> 避免死鎖:保持系統安全狀態,找出乙個程序執行的安全序列,程序按安全序列進行執行
8> 死鎖的檢測:首先要儲存有關資源的請求和分配資訊,在提供一種演算法檢測系統是否已經進入死鎖,常用到的檢測有資源分配圖,當且僅當系統s狀態資源分配圖是不可簡化的,則有死鎖存在。
9> 死鎖的解除:
1 搶占資源:從乙個或者多個程序中搶資源分配給死鎖程序
2 終止程序:一般是逐個結束程序或者按付出的代價最小來終止程序
作業系統學習筆記3
1 快取最快,快取未命中,記憶體,記憶體找不到,缺頁,外存 2 儲存管理單元將虛擬邏輯位址轉換為實際實體地址 3 抽象 保護 共享 虛擬化 4 管理方式 重定位 分段 分頁 虛擬儲存 5 位址生成時機 編譯時 載入時 執行時 6 動態分割槽分配 當程式被載入執行時,分配乙個程序指定大小可變的分割槽 ...
作業系統學習
看了幾天的資料,今天終於有時間把測試環境搭建起來。模擬機bochs nasm ultraiso 模擬機bochs的設定不難,在網上搜了些資料和參考了bochs的說明檔案,基本上就可以組建並執行起來。在網上下了個dos的映象,執行bochs從a盤啟動,之後把硬碟分割槽格式化,乙個最基礎的測試環境就完成...
作業系統學習
1 處理器硬體故障中斷事件 由處理器,記憶體儲器,匯流排等故障引起 程式性中斷事件 2 處理器執行機器指令引起 1.1 除數為零,運算元溢位等算術異常 1.3 終止程序指令 終止程序 3 自願性中斷事件 1.1 處理器執行陷入指令請求os服務引起 1.2 請求分配外設,請求io等 1.3 處理流程是...