通过Rust编写操作系统之内存的分页与管理介绍(上)-黑客接单平台

访客5年前关于黑客接单1291
Rust是一门体系编程言语,专心于安全,尤其是并发安全,支撑函数式和指令式以及泛型等编程范式的多范式言语。Rust在语法上和C++相似,可是规划者想要在保证功用的一起供给更好的内存安全。 Rust开始是由Mozilla研究院的Graydon Hoare规划发明,然后在Dave Herman, Brendan Eich以及许多其他人的奉献下逐步完善的。 Rust的规划者们通过在研制Servo网站浏览器布局引擎过程中堆集的经历优化了Rust言语和Rust编译器。 Rust编译器是在MIT License 和 Apache License 2.0两层协议声明下的免费开源软件。 Rust现已接连三年(2019,2019,2019)在Stack Overflow开发者查询的“最受喜欢编程言语”评选项目中折取桂冠。 本文介绍了内存分页技能,这是一种十分常见的内存办理计划,咱们也将该技能用于通过 Rust 编写操作体系中。内存分页技能解说了为什么需求内存阻隔、分段怎么作业、虚拟内存是什么以及分页怎么处理内存碎片(memory fragmentation)问题。别的,本文还探讨了x86_64体系结构上的多级页表布局状况,本文的完好源代码能够在GitHub 的post-08主题中找到。 内存保护 操作体系的一个主要任务是将程序互相阻隔。例如,web浏览器不应该搅扰文本编辑器。为了完成这个方针,操作体系运用硬件功用来保证一个进程的内存区域不被其他进程拜访。依据硬件和操作体系完成的不同,有不同的办法。 例如,一些ARM Cortex-M处理器(用于嵌入式体系)有一个内存保护单元(MPU),它答应你界说少数具有不同拜访权限(例如无拜访权限、只读限、写入权限)的内存区域。在每次内存拜访时,MPU都会保证该地址坐落具有正确拜访权限的区域,不然宣布反常警报。通过更改每个进程切换(process switch)上的区域和拜访权限,操作体系能够保证每个进程只拜访自己的内存,从而将进程互相阻隔。 在x86上,硬件支撑两种不同的内存保护办法:分段和分页。 分段 分段技能早在1978年就现已被开宣布来了,开始是为了增加可寻址内存的数量。其时的状况是cpu只运用16位地址,这将可寻址内存的数量约束为64KiB。为了使更多的64KiB可拜访,就需求引进额定的段寄存器,每个段寄存器包括一个偏移地址。CPU会在每次内存拜访时主动增加这个偏移量,以便可拜访高达1MiB的内存。 段寄存器由CPU依据内存拜访的类型主动挑选,比方获取指令运用代码段CS,而仓库操作(push/pop)则运用仓库段SS。其他指令运用数据段DS或额定段ES。后来,又增加了两个能够自在运用的段寄存器FS和GS。 在之一版的分段技能中,段寄存器直接包括偏移量,不履行拜访操控。后来,跟着保护形式的引进,这种状况发生了改动。当CPU以此形式运转时,段描述符包括本地或大局描述符表的索引,该表除了包括偏移地址外,还包括段巨细和拜访权限。通过为每个进程加载独自的大局或本地描述符表,将内存拜访约束在进程自己的内存区域,操作体系能够将进程互相阻隔。 通过在实践拜访之前修正内存地址,分段技能现已运用了一种简直无处不在的技能——虚拟内存。 虚拟内存 虚拟内存是计算机体系内存办理的一种技能。它使得应用程序以为它具有接连的可用的内存(一个接连完好的地址空间),而实践上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需求时进行数据交流。现在,大多数操作体系都运用了虚拟内存,如Windows宗族的“虚拟内存”;Linux的“交流空间”等。 Windows 8/8.1 操作体系如呈现开机时卡在Windows徽标页面,无法进入体系,有必要强制关机再重启才干翻开时,可适当调整虚拟内存设置处理。 归根到底,虚拟内存背面的思维是从底层物理存储设备笼统出内存地址。首要履行转化过程,而不是直接拜访存储设备。关于分段来说,转化过程是增加活动段的偏移地址。假定一个程序在偏移量0x1111000的段中拜访内存地址0x1234000,则通过转化,实践拜访的地址是0x2345000。 为了区别这两种地址类型,转化前的地址称为虚拟地址,转化后的地址称为物理地址。这两种地址的一个重要区别是,物理地址是专一的,而且总是指向相同的、不同的内存方位。另一方面,虚拟地址依赖于转化功用。所以很有或许,两个不同的虚拟地址彻底有或许指向同一个物理地址。相同,相同的虚拟地址在运用不同的转化功用时能够引证不同的物理地址。 如下所示,运用这个特点的一个示例是,并行运转相同的程序两次: 在这个示例中,相同的程序运转两次,但却运用了不同的转化功用。之一个示例的段偏移量为100,因而它的虚拟地址0-150被转化为物理地址100 – 250。第二个示例的段偏移量为300,因而它的虚拟地址0-150被转化为物理地址300 – 450。这答应两个程序运转相同的代码并运用相同的虚拟地址,但不会彼此搅扰。 另一个长处是,程序现在能够放在恣意物理内存方位,即便它们运用彻底不同的虚拟地址。因而,操作体系[1][2][3]黑客接单网

相关文章

我在网上被人骗着赌钱输了多万能找到他们人有

Oracle WebLogic Server10.3.6.0.0在一小时内,类似的规则(Sigma #2)由Roman Ranskyi在SOC Prime TDM上发布,并提供给社区免费使用,该检测逻...

广州黑客公司有接单的_找黑客回本

陈述显现,政府、交际、戎行、国防仍然是 APT 进犯者的首要方针,动力、电力、医疗、工业等国家基础设施性职业也正面对着APT进犯的危险。 而金融职业首要面对一些老练的网络违法团伙的进犯要挟,如Mage...

什么是黑客-黑客精神(1)

黑客是什么?没有多少自称黑客的人能解答。     在这些浮于世的黑客眼中,黑客就是那一个个被D死的服务器、被挂上姓名的主页、被篡改了版权的程序、被植入木马的软件……在这些人没有注意...

笔记本杀毒软件哪个好,电影升级为什么找黑客,黑客宝宝找爹地

第三章 该安排运用的C&C 22 $this->db->query("DELETE FROM ".DB_PREFIX."comment WHERE ip='$ip'");[1][2...

黑客接单菠菜_武汉的黑客怎么找

· 俄罗斯联邦核中心的科学家将核武器实验室用于模仿聚变反应的计算机用于加密钱银挖矿而被捕。 for (int i = 0; i git clone https://github.com/aflsma...

赌博的赌资报警是否可以拿回来

12.1.3版本:再来看看struct _t2cCtx的大小/models/repo_mirror.go赌博的赌资报警是否可以拿回来, 0x01 漏洞细节在本文中,我分析了CVE-2019-1821的...