当前位置:  技术问答>linux和unix

x86上操作系统如何保证每个进程可以寻址4G空间且相互隔离?

    来源: 互联网  发布时间:2016-08-21

    本文导语:  在操作系统上,每个进程是可以寻址4G空间的而且相互隔离。但是分析CPU的寻址机制,有如下疑问: 对于 x86,考虑 CPU分段机制,寻址时先将逻辑地址转换为线性地址 1)逻辑地址为 段选择符:段内偏移. 段选择符对...

在操作系统上,每个进程是可以寻址4G空间的而且相互隔离。但是分析CPU的寻址机制,有如下疑问:

对于 x86,考虑 CPU分段机制,寻址时先将逻辑地址转换为线性地址

1)逻辑地址为 段选择符:段内偏移. 段选择符对应一个段描述符,对于每个段描述符而言,段限长最大可以设置为4G
考虑极端情况,也就是使用一个描述符就可以寻址4G空间。

2)x86上线性地址空间 为4G

这就意味着,使用一个描述符寻址,在最极端情况下可以映射满整个线性地址空间。 而一个任务如果想寻址4G空间的话,必定是段基址为0,段限长为4G

假设目前有3个任务,各自都使用自己的描述符来寻址。如果每个任务都能寻址4G空间的话,必定这三个任务的段基址都为0,段限长都为4G 这样的话,这3个任务映射的线性地址必定完全重合,无法隔离。

那如何保证每个任务可以寻址4G空间且相互隔离? 
貌似不太可能,但是实际系统中比如windows上的确可以运行多个进程,而每个进程寻址4G空间且相互隔离。
是理解有误?还是操作系统的进程地址空间根本就不是使用CPU分段机制来实现的?

PS:不管有没有启用分页机制都无关紧要,因为分页机制只是将线性地址进行变化,此时已经与描述符无关,也就是与任务无关。也就是即使是不同的任务,只要线性地址相同,经分页机制映射到的物理地址必定也是相同的。


|
发觉您概念很混乱。请先弄懂什么是物理内存?什么是虚拟内存?什么是物理地址?什么是虚拟地址?什么是逻辑地址?什么是线性地址?进程的4G地址空间到底是指4G物理地址空间还是4G虚拟地址空间?

|

你试试不就行了,估计还没到 3G 程序就被 Kill 了。

|
都映射到同一个地址也没有关系,只要进程切换的时候把它换到硬盘上去就行了,切换回来的时候再换回来,这样就算是映射到同一个物理地址也没有关系

|


现在的理解也不对!
没搞懂4G是什么东东
物理内存有多大没啥关系

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求 x86 架构下 Linux 的进程调度的实现分析文档
  • Solaris 9是否有x86版本?免费吗?
  • S8 for X86怎么安装呀?
  • solaris8 for x86的支持那些网卡?谢了!
  • X86下使用C、C++
  • 有没有AIX for x86虚拟机
  • X86引导启动程序 我的OS第一帖
  • 我可以在机器上同时装win98,2000,linux,freeBSD,solaris x86吗?
  • solaris9 x86如何安装?必须要从软盘启动吗?
  • 小声的问一句,有没有能装在x86上的unix操作系统
  • 极小的x86操作系统 KolibriOS
  • Solaris for X86 和Solaris for Sparc主要区别在哪?
  • MacOS有没有X86平台上的版本?
  • x86(大雪), 谢谢你指点wget, 请进!
  • 关于mac os x86的问题,如何进入图形界面。
  • solaris8 for x86(intel)那里有的下
  • 请问哪有solaris x86 下载
  • 我想装Solaris for X86 能用软盘引导吗?
  • solaris 8 for x86能用 u盘哇?
  • solarsi10(x86)中如何安装Sundance ST201网卡?
  • i386的和x86的盘还有什么区别么?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3