虚拟内存

发布时间 2023-05-30 16:12:51作者: nick_qiu

引用:

https://www.bilibili.com/video/BV1KD4y1U7Rr/?spm_id_from=333.999.0.0&vd_source=e05f4a55dd5d8e27f74472aa7fd97ace

1. 内存映射机制:如在32bit下

实模式下的进程映射:进程直接使用物理地址

 

保护模式的进程映射:保护模式提供内存分页机制

操作系统会以链表的形式记录各个进程的链表信息。

进程控制块PCB==Linux下的task_struct:

每个进程的task_struct都有一个指针指向页目录的物理地址

 

页目录也是一个内存页

 

2.内存分配:

每个task_struct都会记录一个内存分配的链表,每个链表项都是一个vma(virtual memory area)结构体, 记录该进程已经申请的一段连续内存地址区间。

真正的映射要到内存访问时才会进行,映射需要花费的时间比较多。所以进程的虚拟地址空间仅仅是它可以申请的地址范围。

TLB是内存地址映射缓存,进程切换时会被清空。