当前位置: 首页 > news >正文

计算机基础-操作系统(2)

计算机基础-操作系统(2)

目录

计算机基础-操作系统(2)

解释下虚拟地址、逻辑地址、线性地址、物理地址、总线地址?

简述处理器在读内存过程中,CPU、MMU、cache、内存如何协同工作?

内存非连续分配管理的三种方式

什么是快表,你知道多少关于快表的知识?

虚拟内存是什么?

虚拟内存的目的是什么?


解释下虚拟地址、逻辑地址、线性地址、物理地址、总线地址?

alt text

一个由程序员给出的逻辑地址,要先经过分段机制的转化变成线性地址,再经过分页机制的转化变成物理地址。

虚拟地址是指由程序产生的由段选择符和段内偏移地址组成的地址。这两部分组成的地址并没有直接访问物理内存,而是通过分段地址的变换处理后才会对应到相应的物理内存地址。 由MMU虚拟出来的地址。

逻辑地址指由程序产生的段内偏移地址。有时直接把逻辑地址当成虚拟地址,两者并没有明确的界限。

线性地址是指虚拟地址到物理地址变换之间的中间层,是处理器可寻址的内存空间(称为线性地址空间)中的地址。程序代码会产生逻辑地址,或者说是段中的偏移地址,加上相应段基址就生成了一个线性地址,线性地址 = 逻辑地址 + 基地址。如果启用了分页机制,那么线性地址可以再经过变换产生物理地址。若没有采用分页机制,那么线性地址就是物理地址。

物理地址是指现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。虚拟地址到物理地址的转化方法是与体系结构相关的,一般有分段与分页两种方式。以x86CPU为例,分段、分页都是支持的。内存管理单元负责从虚拟地址到物理地址的转化。逻辑地址是段标识+段内偏移量的形式,MMU通过査询段表,可以把逻辑地址转化为线性地址。

如果CPU没有开启分页功能,那么线性地址就是物理地址;

如果CPU开启了分页功能,MMU还需要查询页表来将线性地址转化为物理地址:

逻辑地址(段表)→线性地址(页表)→物理地址。 映射是一种多对一的关系,即不同的逻辑地址可以映射到同一个线性地址上;不同的线性地址也可以映射到同一个物理地址上。而且,同一个线性地址在发生换页以后,也可能被重新装载到另外一个物理地址上,所以这种多对一的映射关系也会随时间发生变化。

总线地址是指在x86下的I/O地址,ARM下的物理地址。(在x86下,外设的I/O地址是独立的,即有专门的指令访问外设I/O,I/O地址就是“总线地址”,而RAM地址就是“物理地址”。在ARM下,I/O和RAM统一编址,但linux为了统一各个平台,仍然保留这个概念,总线地址其实就是物理地址。)

IO内存空间,统一编址,设备地址作为内存的扩展,一般嵌入式用这种 IO端口空间,独立编址,设备地址独立编制,一般用于x86,了解即可 逻辑地址:我们程序员写代码时给出的地址叫逻辑地址,其中包含段选择子和偏移地址两部分。

线性地址:通过分段机制,将逻辑地址转换后的地址,叫做线性地址。而这个线性地址是有个范围的,这个范围就叫做线性地址空间,32 位模式下,线性地址空间就是 4G。

物理地址:就是真正在内存中的地址,它也是有范围的,叫做物理地址空间。那这个范围的大小,就取决于你的内存有多大了。

虚拟地址:如果没有开启分页机制,那么线性地址就和物理地址是一一对应的,可以理解为相等。如果开启了分页机制,那么线性地址将被视为虚拟地址,这个虚拟地址将会通过分页机制的转换,最终转换成物理地址。

简述处理器在读内存过程中,CPU、MMU、cache、内存如何协同工作?

  • 1、首先,CPU发出一个读取内存的指令,并提供要读取的内存地址。
  • 2、MMU (Memory Management Unit) 接收到这个内存地址,并进行地址转换。因为CPU使用的是虚拟地址,而内存使用的是物理地址,所以MMU会将虚拟地址转换为物理地址。
  • 3、如果需要的内存数据已经在cache中,那么cache会将数据返回给CPU。否则,cache会向内存发出请求,请求读取需要的数据。
  • 4、内存将所需数据返回给cache,cache将数据返回给CPU。同时,cache还会将这些数据保存在自己的缓存中,以备将来使用。

-- 总的来说,CPU发送内存读取请求时,MMU会负责地址转换,cache会负责缓存数据,内存会提供所需的数据。这些组件共同协作,使得处理器能够高效地读取内存中的数据。

内存非连续分配管理的三种方式

分页存储管理:优点是不需要连续的内存空间,且内存利用率高(只有很小的页内碎片);缺点是不易于实现内存共享与保护。

alt text

分段存储管理:优点是易于实现段内存共享和保护;缺点是每段都需要连续的内存空间,且内存利用率较低(会产生外部碎片)。

alt text

段页式存储管理(对每个段分页存储):优点是不需要连续的内存空间,内存利用率高(只有很小的页内碎片),且易于实现段内存共享和保护;缺点是管理软件复杂性较高,需要的硬件以及占用的内存也有所增加,使得执行速度下降。

什么是快表,你知道多少关于快表的知识?

快表,又称联想寄存器(TLB) ,是一种访问速度比内存快很多的高速缓冲存储器,用来存放当前访问的若干页表项,以加速地址变换的过程。与此对应,内存中的页表常称为慢表。

alt text

虚拟内存是什么?

虚拟内存是一种计算机内存管理技术,它可以将物理内存和磁盘空间结合起来,让操作系统可以在物理内存不足的情况下运行更多的应用程序。它通过将应用程序使用的内存分为虚拟页面(虚拟地址空间)和物理页面(物理地址空间),并使用分页机制将虚拟页面映射到物理页面上来实现。

当应用程序需要访问一个虚拟页面时,操作系统将根据页面映射表将虚拟页面映射到物理页面上,如果该页面不在物理内存中,操作系统将会将其中的一部分数据存储到磁盘中,并将该页面从物理内存中移除。当应用程序需要再次访问该页面时,操作系统会将该页面从磁盘中加载回物理内存中,这个过程称为页面调度或页面置换。

虚拟内存的目的是什么?

-- 虚拟地址的优点:

  • 扩大可用内存:虚拟内存可以将物理内存和磁盘空间结合起来,以实现更大的可用内存。在物理内存不足时,虚拟内存可以将不常用的页面从物理内存中移除,并将它们暂时保存在磁盘上。这样,系统就可以用磁盘空间来模拟更大的物理内存。
  • 保护内存:虚拟内存可以实现地址空间隔离,使每个应用程序都拥有自己独立的虚拟地址空间。这样,应用程序就无法访问其他应用程序的内存,从而增强了系统的安全性。
  • 简化内存管理:虚拟内存可以使内存管理更加灵活和高效。它可以将内存分为多个页面,并使用页面置换算法来管理内存。这样,操作系统就可以按需加载页面,并将不常用的页面从物理内存中移除,从而实现更高效的内存管理。

http://www.mrgr.cn/news/52862.html

相关文章:

  • 什么开放式耳机最好用?推荐开放式蓝牙耳机榜上耳机!
  • 二叉树的中序遍历
  • 基于STM32设计的实验室安全预警系统(OneNet)(246)
  • 如何快速部署一套智能化openGauss测试环境
  • 在MySQL中使用B+ 树索引如何查找连带表数据
  • DirectX 11 和 Direct3D 11 的关系
  • Java-关于Java的四种引用类型的理解
  • 大数据-178 Elasticsearch Query - Java API 索引操作 文档操作
  • 互联网摸鱼日报(2024-10-18)
  • Kafka 启用 JMX
  • arm64系统不支持32位的解决armel armhf
  • 数学对象常用方法,进制转换
  • 简记一段数据清洗项目经历
  • 二叉树算法之二叉树遍历(前序、中序、后序、层次遍历)
  • 线性可分支持向量机的原理推导 线性分隔超平面关于任意样本点 (x_i,y_i)的函数间隔 公式解析
  • 手写Spring IOC-简易版
  • 如何构建企业架构蓝图:从设计到落地,驱动数字化转型的核心路径
  • 深入探讨:人工智能大模型的分类与多样化发展
  • 07. 容器控件(一) - NSCollectionView 网格、NSTabView 卡片、NSPopover 弹出层
  • 一分钟学会MATLAB-数值计算