进程虚拟地址空间划分

大体概括当一个程序跑起来时,我们的操作系统会主动的分配此程序的虚拟地址空间,每个进程的虚拟地址空间会被划分成为多个区间,当然,地址空间的划分因为其依赖于操作系统而实现的,所以划分方式会随着内核的不同而不同,可以肯定的是其分为两大部分,内核空间和用户空间。提问:为什么会有这么个东西?至于为什么需要划分虚拟地址空间我们提一嘴,是因为操作系统对进程地址空间的管理以及物理地址的隐蔽,我们所运行的程序代码是无法直接访问物理内存的。早期的内存管理机制呢是在运行一个程序的时候将程序全部一股脑儿的加载到内存,这样的操
摘要由CSDN通过智能技术生成

大体概括
当一个程序跑起来时,我们的操作系统会主动的分配此程序的虚拟地址空间,每个进程的虚拟地址空间会被划分成为多个区间,当然,地址空间的划分因为其依赖于操作系统而实现的,所以划分方式会随着内核的不同而不同,可以肯定的是其分为两大部分,内核空间和用户空间。

提问:为什么会有这么个东西?
至于为什么需要划分虚拟地址空间我们提一嘴,是因为操作系统对进程地址空间的管理以及物理地址的隐蔽,我们所运行的程序代码是无法直接访问物理内存的。早期的内存管理机制呢是在运行一个程序的时候将程序全部一股脑儿的加载到内存,这样的操作对计算机的内存来说是一个挑战,他需要足够大,而且还不能同时运行多个程序,需要挂掉一个再补充一个,数据在磁盘和内存之间来回拷贝,费时费力,这伴随着相当多的问题:
1.进程地址空间没有明确的隔离,不安全;
2.内存的使用效率极大地降低;
3.程序跑起来时数据地址不明确,因为是随机分配;

分段
首先我们明确一点就是编程在计算机上展示的行为就是指令+数据,操作系统为了更人性化更科学,改进后通过分段分页的行为来进行内存地址管理;将内存通过CPU由段寄存器分割,这样就解决了程序见的空间隔离,如果发生越界行为,就容易判断,而且最妙的是通过首地址+地址偏移量来确定实际地址(虚拟地址),达到操作数据,这就说明实际代码和数据的地址其实本质上是地址偏移量。

分页
分段解决了一部分问题,之后又出现了一个分页,用它来解决内

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值