1. 程式人生 > >處理器管理——作業系統概述與程序管理

處理器管理——作業系統概述與程序管理

計算機作業系統發展史

第一階段,硬體昂貴,人力便宜,一個人寫程式碼,手工裝入與裝出紙帶,一次一個作業
第二階段,硬體昂貴,人力便宜,一個人寫程式碼,一個人手工裝入裝出紙帶,一次多個作業,即單批道處理但是慢的輸入輸出還是由CPU控制,於是產生了通道和中斷技術,通道即能讓CPU與輸入輸出操作並行,中斷即能讓剛才做輸入輸出的作業完成後,使CPU收到中斷訊號停止現在工作,重新來處理完成輸入輸出後的作業硬體不斷髮展,為了充分利用,出現多批道處理
第三個階段,硬體便宜一些,人力開始昂貴,便出現了分時系統,於是做到了人工人員人手一機,
第四個階段,硬體很便宜了,於是有了個人作業系統
第五個階段,線代作業系統,規模大,早已進入網際網路

作業系統分類

批處理作業系統 分時作業系統 實時作業系統 嵌入式作業系統 分散式作業系統 個人作業系統
作業成批的輸入計算機 多個使用者同時享用一臺計算機 規定的嚴格時間內完成事情的處理 能嵌入 大量計算機通過網路連線在一起 單使用者多工
火箭發射,核電站控制 MP3 ,手機,機器人 私人電腦呀

引入

  1. 為什麼使用多道程式(multi-programming)?
    提高計算機的各種資源使用效率
  2. 如何實現多道?
    引進程序(process)

程序是什麼?

1.程式的程式碼
2.程式的資料
3.CPU暫存器
4.堆(heap):儲存程序執行時動態分配的記憶體空間
5.棧(stack):儲存執行的上下文資訊;函式呼叫時,儲存函式的形參和區域性變數
6.程序所佔用的一組系統資源,開啟的檔案
資源角度:一組相關的資源構成資源環境 以上6點
執行角度:一個正在執行的程式(動態)

程序的特性

1.併發性
2.動態性:通用暫存器的資料變換;IP暫存器的指令變換;堆的空間的釋放與分配;棧的出棧與進棧等等,都在變化;
3.獨立性:擁有自己的一套邏輯暫存器(就是一個個記憶體變數)
程序執行邏輯暫存器的值裝入物理暫存器中(物理暫存器只有一套),暫時不執行物理暫存器值儲存入邏輯暫存器
在這裡插入圖片描述

程式是什麼?

程式碼和資料(靜態)

程序的建立與終止

程序建立 程序的終止
系統初始化 正常退出
正在執行的程式需要去建立程序 錯誤退出
使用者發出請求,建立程序 致命錯誤
初始化批處理作業,建立程序 被其他程序終止

為什麼引入執行緒?

程序可以併發執行,但程序的獨立性讓程序之間很難實現資料共享,程序通訊,因此提出執行緒實體來代替程序

什麼是執行緒?

執行緒:程式碼在這個資源環境的一條執行流程
程序=執行緒+資源平臺

一個程序可以有多個執行緒
執行緒可以併發
相同的資源平臺,共享相同的地址空間

共享的資源:
管理方面的大部分 如ID優先順序
狀態儲存方面 程式碼,資料,堆等(一級資源,可以執行緒間共享,只有一份)
獨享資源:棧和邏輯暫存器,N個程序N份

程序與執行緒的比較

程序 執行緒
執行緒出來之後 資源的分配單位 CPU的排程單位
資源情況 擁有完整的資源平臺 共享一部分,獨享一部分
三種基本狀態 都有 都有
建立時間 短(通常快100倍)
終止時間
切換時間 短(同一程序裡的執行緒切換)
使用資源通訊開銷 經由核心,開銷多 不經由核心,開銷少

執行緒必須依附於程序,而且執行緒獨佔資源少,稱為輕量級的程序

執行緒實現

使用者執行緒:不依賴作業系統的核心,由一組執行緒庫函式完成執行緒的建立,終止,和管理
核心執行緒:由作業系統核心完成執行緒的建立,終止,和管理

程序通訊

程序關係

獨立與關聯
關聯需要通訊
在這裡插入圖片描述

低階通訊:程序之間只傳遞少量的控制資訊,一般來說只有一個位元組或者一個整形變數 ,訊號量與訊號

高階通訊:任意數量的資料

          1. 共享記憶體:作業系統管理的

          2.訊息傳遞

          3.管道

程序排程

三個狀態

執行:佔有CPU
就緒:萬事俱備,只欠東風
阻塞:等待,等待輸入輸出操作,與其他程序存在同步等

執行到阻塞:正在執行時,需要輸入資料

就緒到執行:CPU排程

執行到就緒:CPU排程

阻塞到就緒:等待的事情完成了,條件成熟

在這裡插入圖片描述

程序死鎖

在這裡插入圖片描述

參考資料:諶衛軍 王浩娟《作業系統》