memory-segmentation

    2热度

    1回答

    当用户模式下运行程序时,x86中是否可以使用分段内存?如果是这样,是否有任何工具(例如C/C++编译器)来实现这一点?它似乎是一个非常强大的机制,允许程序内运行程序。 我听说Chromium在Native Client中使用分段来实现沙箱化,但我不确定它是如何实现的,或者它是否使用汇编或内置编译器支持。

    2热度

    3回答

    大多数操作系统使用虚拟内存分页。为什么是这样?为什么不使用分割?仅仅是因为硬件问题?在某些情况下,一个比另一个好吗?基本上,如果你必须选择一个,你想使用哪一个,为什么? 让我们假设它是一个x86的参数。

    3热度

    2回答

    我在OSDev wiki上读到,x86架构的受保护模式允许您为代码和数据创建单独的段,而无法写入代码段。 Windows(是的,这是平台)将新代码加载到代码段中,并在数据段中创建数据。但是,如果是这种情况,程序如何知道它必须将段切换到数据段?如果我理解正确,那么所有的地址说明都指向您运行代码的段,除非您切换描述符。但是我也读过,这种扁平内存模型允许你在一个段内运行代码和数据。但是,我仅在汇编程序方

    4热度

    1回答

    快速概要:在x86-64模式下,远远落后于x86-32模式? 在x86处理器,跳跃分为三类: 短,与PC偏移的+/- 127个字节(2字节指令) 附近,具有+/- 32K偏移“辊上”当前段(3字节指令) 远,这可以在任何地方跳(5字节的指令) 短和靠近跳跃需要1-2个时钟周期,而远跳取50 -80个时钟周期,具体取决于处理器。从我阅读文档的时候,这是因为他们“脱离目前的代码段CS”。 在x86-6

    3热度

    1回答

    看了这个问题问了很多次。但找不到合理的答案。实际上虚拟内存的限制是什么? 它是CPU的最大可寻址大小吗?例如,如果CPU是32位,最大值是4G? 另外一些文本将其与硬盘区域相关联。但我找不到这是一个很好的解释。有人说它的CPU生成地址。 我们看到的所有地址都是虚拟地址?例如我们在使用GDB调试程序时看到的内存位置。 CPU产生虚拟地址背后的历史原因是什么?一些文本可以互换使用虚拟地址和逻辑地址。它

    0热度

    3回答

    我最近被问到一个问题,即在计算机系统中,如果主存储器(RAM)与次存储器(HDD)具有可比性,那么是否需要在这样的计算机系统中实现虚拟存储器? 由于分页和分段需要纯粹处理开销的上下文切换,虚拟内存的好处会超过它所需的处理开销吗? 有人可以帮我解决这个问题吗? Thanku

    2热度

    2回答

    我对纯粹的分割有点困惑,因为在我的脑海中总是存在虚拟内存的想法。 但据我所知,纯粹的分割也想象一个虚拟地址空间,划分为所有加载到RAM中的段。 与分割虚拟内存的区别在于,可能存在某些段不在RAM中。 这是正确的吗? 我加了一个问题: 分段结合分页和双层分页是否存在实际区别?除了段方法的“极限”保护外,其他方面是相同的。或者还有其他的区别?