我正在研究操作系统和x86体系结构,当我阅读有关分段和分页的内容时,我自然地很好奇现代OS如何处理内存管理。从我的发现中,Linux和大多数其他操作系统从本质上回避了分段,而支持分页。我发现这样做的一些原因是简单性和可移植性。
分段(x86或其他方式)有什么实际用途,我们是否会看到使用它的健壮操作系统,或者它们将继续支持基于分页的系统。
现在,我知道这是一个加载的问题,但是我很好奇如何使用新开发的操作系统来处理分段。支持分页是否有意义,以至于没有人会考虑采用一种“分段”的方法?如果是这样,为什么?
当我说“避免”分割时,我的意思是Linux仅在需要时使用它。用户和内核代码/数据段只有4个段。在阅读英特尔文档时,我感觉到细分的设计考虑了更强大的解决方案。然后我又在很多场合被告知x86可能过于复杂。
在链接到Linux Torvald最初针对Linux的“公告”后,我发现了这个有趣的轶事。他稍后在几篇文章中说:
简而言之,我想说移植是不可能的。它主要是用C语言编写的,但是大多数人不会称呼我写C语言。它使用了我能找到的386的所有可能的功能,因为它也是一个向我传授386的项目。如上所述,它使用了MMU ,用于分页(尚未到磁盘)和分段。正是这种细分使其真正依赖386(每个任务都有一个64Mb的代码和数据段-4Gb中最多64个任务。任何需要超过64Mb /任务的人-坚韧的cookie)。
我想我自己对x86的试验使我提出了这个问题。Linus没有StackOverflow,因此他只是实现了它来进行尝试。