第4章 抽象 程序

2021-10-06 17:07:42 字數 1977 閱讀 3813

背景

程序的定義:執行中的程式

當有許多程序需要執行時,由於它們都要cpu,所以我們需要提供一種假象:每個程序都獨佔cpu。作業系統通過虛擬化(virtualizing)cpu來實現這種假象,於是就有了時分共享(time sharing)cpu技術

乙個程序執行只執行在乙個時間片,然後切換到其他程序

為了更好地實現cpu的虛擬化,作業系統需要一些低階機制以及一些高階智慧型

低階機制->機制(mechanism)

一些實現了所需功能的 低階方法或協議

高階智慧型->策略(policy)

在作業系統內做出某種決定的演算法

排程策略(scheduling policy)

分離 策略和機制

機制:how解決問題

策略:解決which問題

程序(process):作業系統為正在執行的程式提供的抽象

程序的機器狀態(machine state)

暫存器作業系統提供給程序的介面api

建立(create)

作業系統必須包含一些建立新程序的方法

銷毀(destroy)

由於存在建立程序的介面,因此系統還提供了乙個強制銷毀程序的介面

等待(wait)

有時等待程序停止執行是有用的,因此經常提供某種等待介面

其他控制(miscellaneous control)

除了殺死或等待程序外,有時還可能有其他控制

狀態(statu)

通常也有一些介面可以獲得有關程序的狀態資訊,例如執行了多長時間,或者處於什麼狀態

程式如何轉換為程序?

作業系統如何啟動並執行乙個程式?

程序建立實際如何進行?

作業系統將**和所有靜態資料載入(load)到記憶體中,載入到程序的位址空間中

接著作業系統建立初始化棧&執行i/o設定相關的其他工作

最後啟動程式執行(running):

在執行狀態下,程序正在處理器上執行。這意味著它正在執行指令。

就緒(ready):

在就緒狀態下,程序已準備好執行,但由於某種原因,作業系統選擇不在此時執行。

阻塞(blocked):

在阻塞狀態下,乙個程序執行了某種操作,直到發生其他事件時才會準備執行。

排程(scheduled)vs 取消排程(descheduled)

更多的狀態

作業系統是乙個程式,它用關鍵的資料結構;來追蹤各種相關的訊息。

程序列表(process list):

裡面有所有執行的程序

程序控制塊(process control block pcb)

第4章 程序 I

4.1.1 程序例項控制代碼 載入到程序位址空間的每乙個可執行檔案或者dll檔案都被賦予了乙個獨一無二的例項控制代碼。可執行檔案的例項被昂做 w winmain函式的第乙個引數hinstanceexe傳入。在需要載入資源的函式呼叫中,一般都要提供此控制代碼的值。例如,為了從可執行檔案的映像中能夠載入...

第4章 程序管理

第四章 程序管理 入門學習 什麼是程序?程序的生命週期?程序的狀態?程序 乙個程式執行起來就是程式 生命週期 這個程式從啟動到結束的時間 程序的狀態 程序狀態有,正在執行,暫停執行,殭屍 卡機了 這個圖大家都很熟悉吧 沒錯就是我們電腦上的 任務管理器 可以在這裡面 看到我們所開啟的程式 和系統程式 ...

第4章 程序和程式

程序是由正文段 text 資料段 data segment 和系統段 system segment 共同組成的乙個執行環境。程式是乙個儲存在硬碟上的普通檔案,裡面包含 指令和資料的集合,這寫 指令和資料儲存在磁碟上的乙個可執行映像 executale image 中。linux中每個程序都是由乙個t...