Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似,但是设计者想要在保证性能的同时提供更好的内存安全。 Rust最初是由Mozilla研究院的Graydon Hoare设计创造,然后在Dave Herman, Brendan Eich以及很多其他人的贡献下逐步完善的。 Rust的设计者们通过在研发Servo网站浏览器布局引擎过程中积累的经验优化了Rust语言和Rust编译器。
Rust编译器是在MIT License 和 Apache License 2.0双重协议声明下的免费开源软件。 Rust已经连续三年(2016,2017,2018)在Stack Overflow开发者调查的“最受喜爱编程语言”评选项目中折取桂冠。
本文介绍了内存分页技术,这是一种非常常见的内存管理方案,我们也将该技术用于通过 Rust 编写操作系统中。内存分页技术解释了为什么需要内存隔离、分段如何工作、虚拟内存是什么以及分页如何解决内存碎片(memory fragmentation)问题。另外,本文还探讨了x86_64体系结构上的多级页表布局情况,本文的完整源代码可以在GitHub 的post-08主题中找到。
内存保护
操作系统的一个主要任务是将程序彼此隔离。例如,web浏览器不应该干扰文本编辑器。为了实现这个目标,操作系统利用硬件功能来确保一个进程的内存区域不被其他进程访问。根据硬件和操作系统实现的不同,有不同的方法。PHP大马
例如,一些ARM Cortex-M处理器(用于嵌入式系统)有一个内存保护单元(MPU),它允许你定义少量具有不同访问权限(例如无访问权限、只读限、写入权限)的内存区域。在每次内存访问时,MPU都会确保该地址位于具有正确访问权限的区域,否则发出异常警报。通过更改每个进程切换(process switch)上的区域和访问权限,操作系统可以确保每个进程只访问自己的内存,从而将进程彼此隔离。
分段
分段技术早在1978年就已经被开发出来了,最初是为了增加可寻址内存的数量。当时的情况是cpu只使用16位地址,这将可寻址内存的数量限制为64KiB。为了使更多的64KiB可访问&#