Content: Virtual Memory

Introduction

virtual memory 是 OS 分配給每個 process 的一段連續記憶體,雖然說是連續,但這個連續是抽象概念,在 physical device 上還是碎片化的,靠 memory mapping 來達成軟體層面上的連續

Relation with PCB

PCB 上的 register 和 program counter 會指向 virtual memory ,其中會記錄 process 的執行狀態

Component

Text Segment

他是我們要跑的 program 編譯完的程式碼,program counter 會指向這裡的某一部分,代表我們的程式碼已經跑到哪裡了,並且他是 read only

Initialized Data

這裡存的是我們已經明確給予初始值的 global 或 static variable,因為他們會持續存在在整個 process 執行時間,所以我們可以一開始就分配給他們一些位置

Un-initialized Data

這裡存在是未初始化的 global 或 static variable

Heap

動態記憶體,我們呼叫 newmalloc 分配的記憶體就放在這

Stack

這裡放的是我們在函式中宣告的 local variable 或 function parameter 之類的