2-4小时突击操作系统(4)

本节内容:分页介绍、快速地址转换、超越物理内存的机制、超越物理内存的策略

分页:介绍

       不是将一个进程的地址空间分割成几个不同长度的逻辑段(即代码、堆、段),而是分割成固定大小的单元,每个单元成为一页。

       为了记录地址空间的每个虚拟页放在物理内存中的位置,操作系统通常为每个进程保存一个数据结构,称为页表。主要作用是为地址空间的每个虚拟页面保存地址转换,从而让我们知道每个页在物理内存中的位置。例如(虚拟页0→物理帧3)

       虚拟地址分为两个组件:虚拟页面号(VPN)和页内的偏移量。(2^6=64)

例如虚拟地址为21,二进制“010101”。在虚拟页“01(或1)”的第5个(“0101”)字节处。

找到虚拟页所在的物理页,物理帧号PFN是7(二进制111),通过用PFN替换VPN来转换此虚拟地址,然后将载入发送给物理内存。

       页表

       页表是一种数据结构,用于将虚拟地址映射到物理地址。线性页表:操作系统通过虚拟页号VPN检索该数组,并在该索引出查找页表项PTE,以便找到期望的物理帧号PFN。

分页:快速地址转换

       增加地址转换旁路缓冲存储器TLB,它就是频繁发生的虚拟到物理地址转换的硬件缓存。

       首先从虚拟地址中提取页号VPN,然后检查TLB是否有该VPN的转换映射,有,TLB命中,从TLB项中取出页帧号PFN,与原来虚拟地址中的偏移量组合形成期望的物理地址PA,并访问内存。

       没有,硬件访问页表来寻找转换映射,并用该转换映射更新TLB。然后执行上述流程。

       TLB未命中处理:硬件或软件(操作系统)

旧:硬件必须知道页表在内存中的确切位置,以及页表的确切格式,发生未命中时,硬件会“遍历”页表,找到正确的页表项,取出想要的转换映射,用它更新TLB。

软件:发生未命中,硬件系统抛出一个异常,这会暂停当前的指令流,将特权级提升至内核模式,跳转至陷阱处理程序,用于处理TLB未命中,这段代码在运行时,会查找页表中的转换映射,然后用特别的“特权”指令更新TLB,并从陷阱返回。这个陷阱返回跟之前的不同,从该指令从新执行。

       TLB的内容:VPN | PFN |其他位

       上下文切换时对TLB的处理

VPN

PFN

有效位

保护位

10

100

1

rwx

-

-

0

-

10

170

1

rwx

-

-

0

-

       如果两个进程的地址映射都在TLB中。一种方法:在上下文切换时,清空TLB。但是有一定的开销:每次进程运行,当它访问数据和代码页时,都会触发TLB未命中。

在TLB中添加一个地址空间标识符ASID,可以把A

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要是介绍嵌入式软件开发岗位的相关知识和学习攻略,为大家提供一份笔试与面试手册。包括有嵌入式软件开发岗位介绍与学习攻略;校园招聘和offer疑惑问题的介绍;在笔试方面,如何刷题为笔试作准备,提供往年笔试真题;在面试方面,提供相关知识的复习重点,提供面试真题。包括有:华为、蔚来、文远、大疆、三一、深信服、亚马逊、Intel、百度、科大讯飞、OPPO、京东、中兴、比特大陆|算能、美团等等

全部评论

相关推荐

小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
1 5 评论
分享
牛客网
牛客企业服务