天天看點

處理器管理

處理器管理

   對處理器的管理是作業系統的一個功能。

   其中,對處理器的管理感覺一直都是圍繞在程序上面。

   從宏觀上看,程式的執行可以是順序執行的,可以是并發執行的,也可以是多道執行。處理器通過兩級排程來确定到底該處理哪個程序。處理器選擇要處理的程序時分為兩步:一,作業排程,通過作業排程,決定将哪些程序裝入主存中進行等待,而第二步,程序排程,則是宣布哪個程序獲得了處理器的占用權。

   在微觀上,若幹個就緒的隊列通過對程序塊的連結來形成程序隊列,一旦有程序讓出處理器,就會有新的程序得到處理器的占用權,這時,程序的狀态會改變。另外,當産生中斷時,也會有程序狀态的改變。那麼,如何對衆多程序進行管理?這時,就用到了程序控制塊。在程序控制塊中,包含着程序的辨別資訊,說明資訊,線程資訊,管理資訊,記錄着程序的狀态。

    但是随着程序的增多,就會增加程序排程的次數,這會給排程和控制帶來複雜性。是以,引入了線程。把程序中可以并發執行的個部分分别作為一個線程,将線程作為程序中可獨立執行的子任務。

     有3個詞在這裡要做區分下,它們是:程式,程序,線程。

     程式是一種靜态實體,程式可作為軟體資料長期儲存。而程序是程式在一個資料集上的執行過程,可看做是一種動态實體。程序是一個動态的實體,它有自己的生命周期。它因建立而産生,因排程而運作,因等待資源或事件而被處于等待狀态,因完成任務而被撤消。反映了一個程式在一定的資料集上運作的全部動态過程;程序和程式并不是一一對應的,一個程式執行在不同的資料集上就成為不同的程序,可以用程序控制塊來唯一地辨別每個程序。而這一點是程式無法做到的,由于程式沒有和資料産生直接的聯系,既使是執行不同的資料的程式,他們的指令的集合依然是一樣的,是以無法唯一地辨別出這些運作于不同資料集上的程式。一般來說,一個程序肯定有一個與之對應的程式,而且隻有一個。而一個程式有可能沒有與之對應的程序(因為它沒有執行),也有可能有多個程序與之對應(運作在幾個不同的資料集上)。

    對于程序和線程,在現代作業系統中,把使用者一個計算問題或一個應用問題作為一個程序,把該程序中可以并發執行的各部分分别作為線程。線程是程序中可以獨立執行的子任務。個人了解是,程序是 作業系統進行資源配置設定的最小機關,而線程是比程序更小的能獨立運作的最小單元,線程占用所屬程序的資源,因而多線程能減小資源的浪費,替代多程序帶來的缺點。

繼續閱讀