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

访客5年前关于黑客接单1341
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]黑客接单网

相关文章

24小时接单的黑客真的假的_网上找黑客都需要先付费后做事

StartUpdate(int32 host_id) => (bool success);高档要挟活动触及方针的国家和地域散布状况计算如下图(摘录自揭露陈述中说到的受害方针所属国家或地域),可以...

怎样入侵别人的电脑,黑客手机号码联系,百度黑客找删掉的图片

本年央视3.15晚会曝光了道有道科技公司经过推送歹意程序,使手机用户被莫名扣费的问题,引起了广阔手机用户的高度重视。 ASP.NET --------------------------------...

专业接单黑客联系方电话,找网上黑客帮忙,找黑客帮我找人

③.重新启动服务sudo /etc/init.d/dhcp3-server restartBBSXP: admin_fso.asp  图片5和图片6给咱们介绍的是一切有关受感染服务器IP地址的整体概略...

老公赌博被关半年回来了,被关了我才知道他欠了信

DC* when it's safe in the single Listen case.9、2019年9月7日https://portal.msrc.microsoft.com/en-US/secu...

怎么绕过并使用Bucket的上传战略和URL签名

简介 Bucket上传战略是一种直接从客户端向Bucket(存储空间)上传数据的快捷办法。经过上传战略中的规矩以及与拜访某些文件的相关逻辑,咱们将展现怎么拿到完好的Bucket目标列表,一起能够修正或...

根据Web方法的数据包捕获实践

抓包是运维的必备技术,许多网络毛病需求靠抓包来处理,如常见的ARP诈骗和播送风暴。别的还有一些网线或光纤触摸欠好的毛病,不抓包也很难剖析出来,例如两个公司之间互联,网线测验都没问题,但一直不通。经过抓...