挑戰408 作業系統(17) 程式的執行過程

2021-09-01 11:41:16 字數 1833 閱讀 4917

進入了儲存管理的部分了。也是作業系統中的一大難題。這部分接在組成原理複習完儲存器部分來複習,會對儲存器和儲存系統會有個更深入的感觸。

記憶體管理的物件是記憶體,記憶體管理的方案有很多,從簡單的單一連續分配到頁式端式儲存方案,各有優點。為作業系統選擇儲存方案,依賴於很多因素,特別是硬體的支援。下面先來看看乙個程式執行的過程。

程式的執行過程

程式要執行,首先必須裝入記憶體,使用者源程式要變成乙個可以在記憶體執行的程式,通常要經過編譯,鏈結,裝入3個步驟。

編譯。使用者源程式經過編譯產生目標模組,目標模組以「0」作為開始位址,而目標模組的位址稱為邏輯位址。

鏈結。將編譯後的多個目標模組以及它們所需要的庫函式鏈結在一起,形成裝入模組,裝入模組具有統一的位址空間,此階段,形成了程式的邏輯位址

裝入。將裝入模組裝載入記憶體的實際物理空間,並修改程式中與位址有關的**,這個過程叫做位址的重定位。實現邏輯位址到實體地址的轉換。此階段形成了程式的實體地址

程式的裝入

程式的裝入的過程,實際上就是將邏輯位址轉換成實體地址的過程,又稱為位址重定位或者位址對映。根據重定位時機的不同,又分為靜態重定位和動態重定位。

靜態重定位。所謂靜態重定位,是指在程式執行之前進行重定位。它根據裝入模組將要裝入的記憶體起始位址,修改裝入模組中有關使用位址**。這種修改是在程式執行之前,程式裝入時一次完成,以後不再改變。

靜態重定位無需硬體支援,但是卻存在一些缺點:程式在重定位後不能再記憶體中移動,並且要求儲存空間是連續的。

動態重定位。動態重定位,是指程式在執行的過程中進行位址重定位。即指令在每次訪問每個位址單元前再進行位址變換。這種方式需要硬體——重定位暫存器的支援。

當程式執行的時候,cpu每取一條訪存指令,位址變換硬體邏輯會自動將指令中的相對位址與重定位暫存器的位址相加,所得的值為絕對位址,然後根據絕對位址訪問。(這個過程就像組成原理中的指令系統中的基址定址和變址定址)。

所以,實體地址 = 首位址 + 偏移位址

優點:在裝入模組裝入記憶體時,無需修改。儲存區域不一定就要順序儲存

程式的鏈結

編譯後得到的一組目標模組以及它們所需要的庫函式裝配成乙個完整的裝入模組。這個過程稱為鏈結。同樣的,根據鏈結方式的不同,又分為靜態鏈結跟動態鏈結。

靜態鏈結。即在程式執行之前事先進行的鏈結,鏈結以後的檔案通常不會再拆開,要執行的時候,可直接將它裝入記憶體。

動態鏈結。根據動態鏈結時機的不同,又分為裝入時動態鏈結和執行時動態鏈結。

執行時動態鏈結。即將目標模組的鏈結推遲到程式執行的時候再進行,在執行過程中會發現被呼叫的模組還未裝入記憶體,再去找出模組,並將其裝入記憶體。(在現實軟體中,我們會看到一些vip功能的軟體,當你賬號登入後,是會員身份,那麼才允許你裝入相應的dll)。

記憶體保護

內存在分配前,需要保護作業系統不收使用者的影響,同時保護使用者程序不受其他使用者程序的影響,所以對於給出的邏輯位址,首先判斷是否越界,再進行重定位。原理如圖:

交換基本思想為:將處於等待狀態下的程序,從記憶體中移動到輔存,從而將記憶體的空間騰出來,這個過程稱為換出。相反,將準備好競爭cpu執行的程式從輔存轉移到記憶體,這一過程稱為換入。這個過程其實就是中級排程的過程。這個過程在虛擬儲存器中應用的相當廣泛。

挑戰408 作業系統(10) 訊號量與PV操作

處理同步和互斥的問題,除了用到之前的軟體和硬體的方法,用的最多的還是訊號量機制。訊號量機制是通過定義表示共享資源使用的特殊變數以及兩個標準的原語 p操作和v操作 來實現同步和互斥的。根據訊號量的資料型別不同,我們將訊號量分為整型訊號量和記錄型訊號量。整型訊號量 整型訊號量是一種被定義為用來表示資源數...

挑戰408 作業系統(2) 使用者態與核心態

作業系統的核心是指在計算機硬體上擴充的第一層軟體。通常是一些與硬體緊密相關的模組。核心的實現是通過原語實現的,而原語又是由原子操作構成的。原語是由若干指令構成的,用於完成一定功能的過程。而原子操作是指在這過程中的行為 要麼全做,要麼不做,不可中斷 以保證操作的完整性 作業系統主要包含以下功能 在說這...

作業系統概述 考研 408

作業系統基本特徵 併發 共享 虛擬和非同步 併發和共享互為存在條件 併發 同一時間間隔 並行 同一時刻 共享 互斥共享 比如臨界資源要互斥共享 印表機 同時訪問 巨集觀上同時,微觀上是交替的 作業系統的兩種方式 1.命令介面 互動式 2.程式介面 系統呼叫 廣義指令 作業系統管理cpu 記憶體 外存...