Linux 七 程序和虛擬位址空間

2021-10-09 08:22:46 字數 1326 閱讀 4236

1.程序的概念

程序就是程式的一次動態執行過程,也就是執行中的程式。

程序有三種基本狀態:就緒狀態、執行狀態、阻塞狀態

三種狀態之間的關係:

作業系統是通過管理程序,讓程序執行來完成使用者指定的任務。程序是在記憶體上執行的,而程式是儲存在磁碟上的二進位制可執行檔案。

2.程序和程式的區別

(1)程式是永存的,而程序是暫時的

(2)程式是靜態的,程序是動態的

(3)程序具有併發性,而程式沒有

(4)程序是競爭計算機資源的基本單位,而程式不是

(5)程序和程式不是一一對應的。乙個程式可以由多個程序執行,乙個程序也可以執行乙個或多個程式。

(6)程式:指令+資料 程序:pcb結構+程序實體

3.程序pcb

作業系統是通過pcb(程序控制塊)描述程序。

pcb也就是程序控制塊,它是記錄程序執行過程中的相關資訊,包括pid(程序識別符號)、程式計數器、程序狀態、程式上下文、優先順序…

4.linux系統上的程序管理命令

(1)檢視程序 —>ps

ps -f 顯示程序更詳細的屬性資訊

ps -e 顯示系統上所有的程序

ps -l 顯示lwp(執行緒號)

示例:

ppid:父程序號

pstree–>以樹狀圖的形式顯示程序的建立關係

top–>動態顯示程序的執**況和系統資源,和windows上的任務管理器相似。如下圖所示:

作業系統為每乙個程序都分配了乙個4g大小的空間,實際上這塊空間是給程序提供了乙個假象,每個程序獨佔地使用主存。每個程序看到的是一致的儲存器,稱為虛擬位址空間。在linux中,位址空間最上面的1g大小的空間為核心空間,是為作業系統中的**和資料保留的,所有程序都是一樣的。位址空間的底部區域存放使用者程序定義的**和資料。下圖為虛擬位址空間的布局:

參考檔案

[1]深入理解計算機系統(原書第 2 版)

[2]linux核心設計與實現(第三版)

Linux虛擬位址空間

在多工作業系統中,每個程序都執行在屬於自己的記憶體沙盤中。這個沙盤就是虛擬位址空間 virtual address space 在32位模式下它是乙個4gb的記憶體位址塊,這篇部落格均是x86架構的 1.位址空間分布 2.核心位址空間 從pkmap base 到 fixaddr start用於對映高...

Linux虛擬位址空間

為了防止不同程序同一時刻在物理記憶體中執行而對物理記憶體的爭奪和踐踏,採用了虛擬記憶體。虛擬記憶體技術使得不同程序在執行過程中,它所看得到的是自己獨自占有了當前系統的4g記憶體。所有程序共享同一物理記憶體,每個程序只把自己目前需要的虛擬記憶體空間對映並儲存到物理記憶體上。事實上,在每個程序建立載入時...

程序的虛擬位址空間

linux程序虛擬位址空間是linux記憶體管理的乙個重要部分。總的虛擬位址空間通常按3 1的比例劃分,其中1g分給核心,3g分給使用者。由低位址到高位址分別為 唯讀段 該部分空間 只能讀,不可寫 包括 段 rodata 段 c常量字串和 define定義的常量 資料段 儲存全域性變數 靜態變數 的...