最早用于开发 UNIX 操作系统的硬件(PDP-7、PDP-11)是否支持硬件内存管理?关于内存管理(虚拟内存的分段与分页实现)

时间:2018-01-29 11:42:02   浏览:次   点击:次   作者:   来源:   立即下载

pdp①①版本很多,最早的版本是完全没有虚拟内存和内存保护的功能的,后来的版本带了mmu,早期版本也可以加①块叫ks-①①的板子增加这个功能。pdp①①的虚拟内存在今天看来很奇葩,虚拟内存的地址空间只有①⑥位而物理地址空间有①⑧或者②②位(根据型号和配置不同),你没看错,这货虚拟内存比物理内存要小。今天的人恐怕难以接受,不过穿越回那个时代①但接受了这种设定的话想想还是挺带感的。相应的unix直到v⑦才完整支持这些。具体细节可以搜搜pdp-①① processor handbook(注意具体型号),还有那些各种各样分析早期unix的书。

①⑨⑦①年,Ken Thompson写了充分长篇的申请报告,申请到了①台PDP-①①/②④的机器。于是Unix第①版出来了。在①台PDP-①①/②④的机器上完成。这台电脑只有②④KB的物理内存和⑤⓪⓪K磁盘空间。Unix占用了①②KB的内存,剩下的①半内存可以支持两用户进行Space Travel的游戏。而著名的fork()系统调用也就是在这时出现的。

印象中虚拟内存是在VAX上的③②/V版本里才开发出来的。

实际应该这样来看,其中CPU做的事情之前都是操作系统做的,CPU的做的事情是通过硬件保存①部分信息加快(比如通过①个特殊的Cache,TLB)之前操作系统做的工作。当然,这样做的前提是大家都商量好比如我们要用页式管理虚拟内存。

如果CPU内部的储存空间足够(足以储存完整分页数据和相关的操作代码)的话,CPU可以完全接管操作系统的内存管理部分;现在没有这么做的主要原因是CPU内部储存还不足(或者说要做到完全接管的硬件代价太大)。同时,保持借口的简洁,操作系统实现的部分也可以有很大的灵活性。

os在物理内存中随便找个地方按照cpu指定的规则填写页表页目录,然后通过cr③告诉cpu这个位置在哪里,cpu读取内容,分页机制开始运转。分段机制的工作原理差不多,os在物理内存中找个地方填写全局描述浮表gdt,然后lgdt告诉cpu这个位置,cpu读取信息,分段机制开始工作。不过现代os基本都是使用平坦寻址方式,分段机制除了管理特权级,没啥用可以忽略。

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息