首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最初的unix内核是如何嵌入内存的?

最初的unix内核是如何嵌入内存的?
EN

Unix & Linux用户
提问于 2016-12-25 15:30:35
回答 1查看 928关注 0票数 5

今天,几乎所有内核都使用MMU提供的虚拟内存。它们使用全局页表(其地址位于CPU寄存器中)和页监控器/页映射程序来实现这一点。例如,vmlinuz中的"vm“意味着linux内核支持虚拟内存。

这一切都是可能的,因为MMU将连续的内存地址映射到x86体系结构所理解的内存段。

最初的UNIX内核确实有一个vmunix版本,我相信它一定使用了类似的技术。然而,最初的UNIX内核是在MMU可用之前编写的。如果我没有弄错的话,最初的UNIX内核(简称unix)是在x86体系结构存在之前编写的。从历史上看,它确实运行在PDP-9和PDP-11上。

内核是如何执行内存寻址和管理的?是基于段的寻址(两个数字)还是全内存寻址(一个数字)?它是如何在处理之间分离内存的?

EN

回答 1

Unix & Linux用户

发布于 2016-12-25 19:25:55

您不需要分页MMU来获得内存保护。

分页MMU解决了许多更高级的问题,如内存碎片(大块不可用)和mmap (仅保留内存中最近使用的文件部分)。分页MMU是实现“统一页面缓存”以缓存跨所有进程的文件访问所必需的。

但是,简单的“分段”就可以完成基本的内存保护,这可能对早期的Unix实现是可用的。例如,在执行用户模式代码时,可以将受保护的内核内存放置在一个设置为“无访问”的段中。即使在现代分页操作系统Linux上,系统调用brk()sbrk()也是在分段实现的日子里作为兼容性保持存在的。

本质上,分段有点像一个分页的MMU,除了你只得到一个固定数量的可变大小的“页面”(实际上称为段),而不是一个可变数量的固定大小的页面。

即使在今天,分割仍然存在于低成本的微控制器中,这些微控制器可能只有几千字节的SRAM,这使得实现一个带有保护内存的小操作系统成为可能,尽管没有真正的分页MMU。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/332699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档