大家好,欢迎来到IT知识分享网。
目录
建议全文阅读!!!
建议全文阅读!!!
建议全文阅读!!!
一、什么是地址空间
1、概念
进程地址空间是指:操作系统为每个正在运行的进程分配的虚拟内存空间。每个进程都有自己的独立地址空间,使得每个进程在运行时都感觉自己拥有整个计算机的内存和资源。
2、主要组成部分
| 组成部分 | 描述 | 功能 |
|---|---|---|
| 代码区(Text Segment) | 存放执行代码的机器语言指令。 | 执行程序的实际指令,通常是只读的。 |
| 数据区(Data Segment) | 存放已初始化的全局变量和静态变量。 | 存储全局变量和静态变量的数据。 |
| 堆区(Heap Segment) | 用于动态分配内存,大小可动态调整。 | 通过 malloc、calloc 等函数分配的动态内存。 |
| 栈区(Stack Segment) | 存放函数的参数值、局部变量值、返回地址等。 | 支持函数调用、参数传递及局部变量的存储。 |
| 内存映射区域(Memory-mapped Segment) | 映射文件或设备,如共享库、动态链接库等。 | 将文件或设备映射到进程的地址空间,使得它们可以像内存一样访问。 |
| 内核空间(Kernel Space) | 保留给操作系统及其内核模块使用的地址空间。 | 只能通过系统调用访问,用于操作系统内部功能和服务。 |
3、特点和作用
(1)虚拟化:
每个进程认为自己拥有整个计算机的内存空间,实际上操作系统通过虚拟内存管理机制将其映射到物理内存或者磁盘上。(这是因为一般情况下,一个进程是很难占用掉整个物理内存)
(2)隔离性:
不同进程的地址空间是独立的,这意味着一个进程无法直接访问另一个进程的地址空间,从而增强了系统的安全性和稳定性。(确保进程的独立性)
(3)动态分配:
进程可以动态地在堆区分配和释放内存,使得程序可以根据需要动态调整内存使用,提高了内存的利用率。(具体的表现为写时拷贝)
(4)管理和保护:
操作系统负责管理和保护进程的地址空间,确保各个进程之间不会相互干扰或者篡改对方的数据。(具体的表现如写时拷贝)
二、如何理解地址空间?(建议全文阅读)
程序地址不是物理地址,而是虚拟地址
1、为什么要有地址空间
(1)理由一
(2)理由二
(3)理由三
拦截非法请求
进程和实际的物理内存中间,对内存的申请,多了一层地址空间
当进程的代码 / 数据访问越界时,操作系统在地址空间层就可以识别
这样,就可以对非法请求进行拦截,而不是直接到物理内存中申请 / 访问非法的地址
这样做的目的,是对物理内存进行保护
2、如何理解页表?
3、如何理解虚拟空间
虚拟空间(Virtual Memory)使得每个进程都拥有独立的、连续的内存空间,称为虚拟地址空间。这种独立的空间使得每个进程都认为自己在独占系统的所有内存,而实际上,物理内存是被多个进程共享的。
对虚拟空间的理解,需要认识和理解一些关键概念,建立起一个整体的初步认识和理解。
| 概念 | 描述 |
|---|---|
| 虚拟地址空间 | 每个进程看到的内存空间,是虚拟的、连续的地址范围。在32位系统中通常是0x00000000到0xFFFFFFFF(4GB空间)。 |
| 物理内存 | 系统中实际存在的内存,由硬件管理。物理内存大小有限,虚拟地址空间可以比物理内存大得多。 |
| 地址映射 | 虚拟地址空间中的地址通过地址映射机制映射到物理内存中的实际地址。这种映射关系由内存管理单元(MMU)负责管理和维护。 |
| 分页机制 | 虚拟地址空间和物理内存之间的映射通常通过分页机制实现。操作系统将虚拟地址空间分成页面,大小通常为4KB或更大,并映射到物理内存的页面帧上。 |
| 虚拟内存 | 操作系统对虚拟地址空间的抽象,允许进程访问未分配的物理内存部分,通过将不常用的内存页换出到磁盘上的交换空间释放物理内存。 |
| 内存保护和隔离 | 虚拟空间使得每个进程相互隔离,一个进程无法直接访问另一个进程的虚拟地址空间,通过地址映射和访问权限机制实现。 |
| 更高的内存利用率 | 多个进程可以共享物理内存,不需要各自拥有独立的物理内存空间。 |
| 简化编程模型 | 程序员可以使用连续的内存地址编写程序,而不必关心物理内存的具体分布和限制。 |
| 更好的安全性 | 虚拟空间提供内存隔离和保护,防止进程越界访问其他进程或操作系统内核的内存空间。 |
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/117114.html
