程序排程概述
程序排程是指計算機通過決策決定哪個程序優先使用就緒狀態的程序可以獲得cpu使用權,之所以有這個制度,也是因為在多道程式設計的環境下,計算機要對先讓哪個程序執行,後讓哪個程式執行作出選擇,要不然就程式就亂套了。程序排程有兩個步驟,第一步我們需要將舊程序的執行資訊保留,確保資訊不會丟失。然後將舊進城請出執行環境。第二步就是選擇好需要執行的程序,準備好他需要的執行那個環境並為他分配好cpu。
就緒佇列的排隊機制
將就緒佇列按照一定的順序排成佇列,以便程式可以用最短的時間找到就緒佇列。
選擇執行程序的委派機制
使程式以一定的策略選擇就緒程序,並將cpu分配給他,也就是不那麼機械的按照佇列先進先出的原則,可以按照依照某一標準制定的優先順序來決定下乙個要執行的程序是 什麼
新老程序的上下文切換機制
就是將目前執行的程序的上下文進行備份放入主存中,然後將即將執行的程序的上下文資訊裝好。
非搶占式的排程
也就是說一旦處理器分配給某一程序後,那麼這個程序就會一直使用這份分配給他的資源,即使是進行程式排程也不能停止這個程式,也就更不可能搶占他正在使用的處理器了,只有在程序完成了工作或成為了阻塞程序後才會讓出處理器資源。
搶占式排程
無論你這個程序執行到什麼程度我都可以把你叫停,在舊程序停止執行後,我們要儲存好舊程序的上下文資訊,並且將處理器資源分配給新程序。
搶占式排程切換頻繁,開銷大。相對公平,說白了就是誰都能上來執行幾分鐘,一般執行在通用系統中。非搶占式切換次數小,開銷也就小,但是公平性欠佳,如果有乙個需要很長時間的程序,那麼他就會霸佔處理器很長時間。公平性也就低。一般運用於專用系統中。
程序排程演算法
先來先服務演算法:按照先來先服務原則,優先排程在就緒佇列前面的程序。
短程序優先排程演算法:優先排程所有程序中預計執行時間最短的。但這個演算法不利於長程序的執行。
高優先權排程演算法:優先排程優先權高的程序,使得緊迫的任務得以執行。
時間片輪轉排程演算法:按照先來先服務的原則在就緒佇列排隊,按照一定時間依次執行。不管程序是否執行完,時間片用完就停止執行,換下乙個程式,直到再次輪到這個程式。每乙個時間片的時間都一樣,所以這種方法不利於程序的響應。
小白日記 程序管理之程序同步
為什麼需要程序間的同步 因為如果沒有程序間的同步,那麼程式在執行時就會變得混亂,比如說工廠生產出乙個手機,你取乙個沒問題,但是如果出現了連著取乙個的情況,就會出現問題了。因為程序不配套,整個生產線就亂套了。再比如說,有五個哲學家進餐,他們一人面前放著乙個碗,它們的右邊都放著一根筷子,乙個哲學家餓了就...
小白日記 執行緒同步之條件變數
條件變數是一種相對複雜的執行緒同步的方法 條件變數允許執行緒在資源不足時,進入睡眠狀態,直到所有資源都齊備的情況下再將執行緒喚醒。前面的生產者消費者故事,是有漏洞的,是因為前面的故事沒有考慮到緩衝區小於零,消費者必須等待生產者生產出產品的情況。以及緩衝區已經滿了的時候,生產者必須 等待緩衝區有乙個空...
小白日記 內部閘道器路由協議之RIP協議
距離向量 dv 演算法 每乙個節點使用兩個向量di和si di描述的是當前節點到別的節點之間的距離,si描述的是當前節點到別的節點的下一節點。每個節點都會與相鄰節點交換向量di和si的資訊。每乙個節點根據交換的資訊更新自己的節點的資訊。di di1,di2,di3,di4 di1表示從節點i到節點1...