- 虚拟地址空间:
- 每个进程在运行时都有自己独立的虚拟地址空间,从逻辑上看,每个进程都拥有连续而私有的地址空间。
- 虚拟地址空间是一个抽象概念,它包含了进程可以访问的所有内存地址,但不需要实际的对应物理内存。通过虚拟地址空间,进程可以访问代码、数据、堆、栈以及操作系统内核提供的其他资源。
- 虚拟地址空间通常被分为几个部分,如代码段(text segment)、数据段(data segment)、堆(heap)和栈(stack)等,用于存放不同类型的数据和程序代码。
- 物理地址空间:
- 物理地址空间是实际存在于计算机硬件中的内存地址空间,用于存储进程的真实数据和程序代码。
- 当进程访问虚拟地址时,操作系统会将虚拟地址转换为对应的物理地址,从而找到数据或指令在内存中的真正位置。
- 物理地址空间是由计算机的物理内存组成,包括主存(RAM)、磁盘交换空间(swap space)等。
- 地址映射:
- 在操作系统中,虚拟地址到物理地址的映射是通过内存管理单元(MMU)来实现的。MMU负责将进程发出的虚拟地址转换为对应的物理地址,以实现内存的访问。
- 当进程访问某个虚拟地址时,如果该地址未映射到物理内存,则会触发缺页中断(page fault),操作系统负责将相应的页面加载到内存中,并更新页表进行地址映射。
- 地址空间的划分:
- 操作系统将地址空间划分为多个页面(page)或段(segment),以便更有效地管理内存。每个页面或段有固定大小,通常为4KB~8KB。
- 虚拟地址空间中的页面称为虚拟页面(virtual page),物理地址空间中的页面称为物理页面(physical page)。页面的映射关系由页表记录,操作系统负责维护和管理页表。
总的来说,进程的地址空间既包括虚拟地址空间(供进程使用的逻辑地址)也包