操作系统系列学习——多级页表与快表

2024-03-28 22:52

本文主要是介绍操作系统系列学习——多级页表与快表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 多级页表与快表


前言

一个本硕双非的小菜鸡,备战24年秋招,计划学习操作系统并完成6.0S81,加油!
本文总结自B站【哈工大】操作系统 李治军(全32讲)
老师课程讲的非常好,感谢
【哈工大】操作系统 李治军(全32讲)

多级页表与快表

在这里插入图片描述
在这里插入图片描述多级页表和块表,以及前面的分页机制合起来成为一套比较完善的内存访问机制

为了提高内存利用率,页应该小,页小了,页表项就多了,页表就大了;(页是4K,每个段最多浪费4K)

CPU执行指令关键花的时间就在于通过总线访问内存,这个速度是慢的
在这里插入图片描述
页号必须要连续,这样才可以立即定位到页表项
在这里插入图片描述
用多级页表既实现连续,又让页表占的内存变少

页目录表(章)+页表(节)

多级页表优点:

多级页表既保证了页表表项的连续性,使得查找起来非常快(时间复杂度O(1));
又保证了内存中存储的页表少了,减少了内存浪费,提高了内存使用率;

多级页表缺点

多级页表增加了访存速度,特别64位系统(因为64位系统的多级页表有5,6级);

多级页表,每增加一级,访存次数就会加1; 所以 64位系统的多级页表访存次数约为5,6次;
多级页表的级数越多,访存越多,效率越低(级数越多,类比书的多层目录),这会造成指令执行效率低;
在这里插入图片描述
快表:

  • 也叫TLB,TLB是一组相联快速存储,是寄存器;
  • TLB,即Translation lookaside buffer,又称为翻译后备缓冲区寄存器;
  • 通过TLB可以快速找到最近使用的逻辑页映射的物理页号;

基于快表的地址翻译步骤

步骤1: 根据逻辑地址的页号,查询一次TLB寄存器就可以得到页框号(物理页号);
步骤2: 若快表TLB不存在页框号(未命中),则查询多级页表,并把查询结果送入TLB存储作为缓冲用于后续地址翻译;
小结:快表+多级页表合在一起形成的结构,保证了查询(翻译物理地址)时间快,页表项连续,减少了内存资源浪费;

这也充分体现了操作系统折中思想;通过把一些技术组合在一起,使得访问时间不错,空间利用也不错;具体是:

多级页表是减少了空间浪费,降低了空间复杂度,访问时间还可以,但还想提高页表查询速度;
TLB是提高了页表查询速度,降低了时间复杂度;
TLB可以弥补多级页表(特别64位系统)访存耗时,慢的缺点;

在这里插入图片描述
TLB越大越好, 但TLB很贵,折中处理是 TLB可以存储的页表项数量范围是 [64,1024];

原因:

  • 程序的地址访问存在局部性
  • 因为访问局部性,所以程序用的是固定的那几个逻辑页号;
  • 最近访问的逻辑页与物理页映射关系会送入TLB存储,所以TLB的命中率会很高;
  • 补充:程序多体现在循环,顺序结构;

这篇关于操作系统系列学习——多级页表与快表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856916

相关文章

Linux操作系统 初识

在认识操作系统之前,我们首先来了解一下计算机的发展: 计算机的发展 世界上第一台计算机名叫埃尼阿克,诞生在1945年2月14日,用于军事用途。 后来因为计算机的优势和潜力巨大,计算机开始飞速发展,并产生了一个当时一直有效的定律:摩尔定律--当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 那么相应的,计算机就会变得越来越快,越来越小型化。

1、简述linux操作系统启动流程

1、简述linux操作系统启动流程 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。开机时将ROM中的指令映射到RAM的低地址空间,CPU读取到这些指令,硬件的健康状况进行检查,按照BIOS中设置的启

C++11/14系列学习

十一假期一直在看C++11新特性,比较出名的书《C++ Primer Plus》专门有一个章节来讲解,《C++ Primer》则将C++11的新特性融入到各个章节来学习。在假期的最后一天无意中发现实验楼有一个专门的教程来讲解,算是念念不忘,必有回响吧,特此整理出来,和大家一起学习。 作者网址:https://www.shiyanlou.com/courses/605,非常感谢! 注:本文并没有智

操作系统是怎么为不同的程序分配所需的内存空间的

操作系统为不同的程序分配内存空间的过程涉及多个关键步骤,确保每个程序都有其所需的内存资源,同时避免程序之间的冲突。以下是操作系统如何为程序分配内存空间的详细过程: 1. 内存管理的基础概念 虚拟内存:现代操作系统使用虚拟内存机制来为程序提供隔离的内存空间。每个程序运行在其独立的虚拟地址空间中,这使得程序间的内存互不干扰。物理内存:实际的 RAM(随机存取存储器),由操作系统和硬件共同管理。虚拟

操作系统安全保护

操作系统安全概述 概念:满足安全策略要求,具有响应安全机制及安全功符合特定安全标准,在一定约束条件下 能抵御常见网络安全威胁,保障自身安全运行及资源安全 安全等级:根据安全功能和安全保障要求分为 用户自主保护级  系统审计保护级 安全标记保护级 结构化保护级 访问验证保护级 操作系统作用: 负责计算系统的资源管理、支撑和控制各种应用程序运行,为用户提供计算机系统管理接口 是构成网络信息

Linux操作系统命令集(一)

最近开了操作系统的课,弄着虚拟机的linux系统命令学学 文件和目录操作命令: ls:列出目录内容 示例:ls -l 以长格式列出目录内容cd:切换目录 示例:cd /home/user 切换到 /home/user 目录mkdir:创建目录 示例:mkdir new_directory 创建名为 new_directory 的目录rmdir:删除空目录touch:创建空文件或更新文件的时间戳

操作系统分页式存储管理

每次输入地址后,计算出页号,若页号越界,则给出错误提示。否则依次调用FIFO和LRU算法,这里值得注意的是,由于我们的FIFO算法先于LRU算法被调用,那么当在处理FIFO算法时,我们暂且不将位视图相应位置做变化,留到处理LRU算法再做处理。 对于FIFO、LRU算法的缺页,我们分两种情况考虑,第一种是模拟栈内还有空间,那么直接将其入栈。第二种是模拟栈内无空间,要发生置换。发生置换时把模拟栈最底

linux定时监听ssh服务是否启动-------麒麟操作系统永久关闭swap

linux监听ssh服务是否启动 1、监听脚本2、定时任务3、麒麟操作系统,永久关闭swap 1、监听脚本 #在/usr/local/bin目录下新建脚本文件 cd /usr/local/bintouch check_sshd.sh#给可执行权限chmod +x /usr/local/bin/check_sshd.sh 脚本内容如下: #!/bin/bashs

Spring Boot + Vue 多级目录的构建详解

1. 背景介绍 1.1 为何选择 Spring Boot + Vue? 在现代 Web 开发中,前后端分离已成为一种标准实践。Spring Boot 提供了强大的后端开发能力,尤其在构建企业级应用时,其轻量级、高效性和丰富的生态系统让开发者如虎添翼。而 Vue.js 则以其简单易学的语法和灵活的组件系统,成为前端开发的热门选择。结合这两个技术栈,我们可以轻松实现复杂的业务逻辑与优秀的用户体验。

【银河麒麟高级服务器操作系统实例】虚拟化平台系统服务中断现象分析及处理建议

服务器环境以及配置 【机型】虚机 处理器: Kunpeng-920 内存: 40G 【内核版本】 4.19.90-23.8.v2101.ky10.aarch64 【OS镜像版本】 银河麒麟操作系统 Kylin-Server-10-SP1-Release-Build20-20210518-arm64 【第三方软件】 智能运维系统、mysql数据集群 现象描述 环境描