1.什么是物理地址? 什么是逻辑地址?
物理地址:
- 物理地址是指计算机内存中的实际地址,是硬件能够直接访问的内存地址。
- 物理地址由内存管理单元(MMU)生成,指向具体的物理内存单元。
逻辑地址:
- 逻辑地址也称为虚拟地址,是程序在运行过程中生成的地址,是程序员和操作系统认为的内存地址。
- 逻辑地址通过内存管理单元映射到物理地址,允许程序使用比实际物理内存更大的地址空间。
2.什么是虚拟内存? 为什么需要虚拟内存?
虚拟内存:
- 虚拟内存是一种内存管理技术,它使得操作系统可以使用硬盘作为扩展内存,使得程序能够运行时看似拥有更多内存空间。
- 它通过将部分内存内容(例如不常用的程序部分)保存到硬盘上,从而释放物理内存供其他程序使用。
为什么需要虚拟内存:
- 提高内存利用率:虚拟内存允许多个程序同时运行,即使它们所需的物理内存总量超出了系统的实际内存。
- 简化内存管理:程序员可以编写使用大量内存的程序,而不必担心实际可用的物理内存。
- 增强安全性:每个进程都有自己的虚拟地址空间,防止不同进程之间的内存干扰。
3.什么是栈空间? 什么是堆空间?
栈空间:
- 栈空间是一种用于存储局部变量和函数调用的内存区域,遵循先进后出(LIFO)的原则。
- 每当一个函数被调用时,栈会为该函数的局部变量分配空间,函数结束后,这部分空间会被释放。
- 栈的大小通常是固定的,由操作系统决定。
堆空间:
- 堆空间是用于动态分配内存的区域,内存分配和释放是程序员手动控制的。
- 堆内存的大小可以根据需求动态变化,适用于存储生命周期不确定的数据。
- 与栈相比,堆的分配和释放速度较慢,且可能导致内存碎片。