處理器管理——作業系統概述與程序管理
計算機作業系統發展史
第一階段,硬體昂貴,人力便宜,一個人寫程式碼,手工裝入與裝出紙帶,一次一個作業
第二階段,硬體昂貴,人力便宜,一個人寫程式碼,一個人手工裝入裝出紙帶,一次多個作業,即單批道處理但是慢的輸入輸出還是由CPU控制,於是產生了通道和中斷技術,通道即能讓CPU與輸入輸出操作並行,中斷即能讓剛才做輸入輸出的作業完成後,使CPU收到中斷訊號停止現在工作,重新來處理完成輸入輸出後的作業硬體不斷髮展,為了充分利用,出現多批道處理
第三個階段,硬體便宜一些,人力開始昂貴,便出現了分時系統,於是做到了人工人員人手一機,
第四個階段,硬體很便宜了,於是有了個人作業系統
第五個階段,線代作業系統,規模大,早已進入網際網路
作業系統分類
批處理作業系統 | 分時作業系統 | 實時作業系統 | 嵌入式作業系統 | 分散式作業系統 | 個人作業系統 |
---|---|---|---|---|---|
作業成批的輸入計算機 | 多個使用者同時享用一臺計算機 | 規定的嚴格時間內完成事情的處理 | 能嵌入 | 大量計算機通過網路連線在一起 | 單使用者多工 |
火箭發射,核電站控制 | MP3 ,手機,機器人 | 私人電腦呀 |
引入
- 為什麼使用多道程式(multi-programming)?
提高計算機的各種資源使用效率 - 如何實現多道?
引進程序(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排程
阻塞到就緒:等待的事情完成了,條件成熟
程序死鎖
參考資料:諶衛軍 王浩娟《作業系統》