国学经典,永久流传《诗经朗诵全集》
《诗经朗诵全集》带你领略国学经典,永久咏传。...
2023-07-31
基址寄存器:存储进程访问的内存的起始地址。
极限寄存器:存储进程的内存长度。
第一个程序运行时,基址寄存器和极限寄存器的值分别为0,16384,第二个程序运行时,这些值分别为16384和32768。如果第三个16KB的程序进来,基址寄存器的值是32768和16384。如下图所示
每个进程的内存地址被发送到物理内存之前。将自动添加基址寄存器的值。这样每个进程都会在固定的内存范围内活动,可以解决多个进程同时在内存的问题。为了避免用户进程任意改变寄存器中的值而导致的内存访问错误,在许多系统中,基址寄存器和极限寄存器只能由操作系统访问。
这种模式看似完美解决了多程序运行的问题,但问题是每次访问内存都要做加法和比较,加法速度太慢。而且进程的内存是动态变化的,所以这种方法不是最优解。
我们先来看另一个问题——内存过载。每个程序员都希望拥有无限的内存,但这并不现实。就像你想拥有无限的金钱一样。软件膨胀的速度和人的欲望一样,永远不会满足。
交换内存(Swap memory):一个进程在运行一段时间后,被完全装入内存并存储在磁盘中。然后将另一个进程加载到内存中,继续运行。周期性交替空空闲进程主要存储在磁盘上。
这种方案不仅可以解决同时运行多个进程的问题,还可以解决内存过载的问题。由于数据频繁写入磁盘,硬盘的写入速度远不及内存。所以这个方案不是我们要找的最优方案。值得一提的是,虽然这种方案不能作为主流的内存管理方案,但是交换内存的概念却被保留了下来,并在实际应用中发挥了很大的作用,这一点后面会讲到。
以解决同时运行多个程序和内存过载的问题。所有操作系统的终极解决方案——虚拟内存。虚拟内存概念的强大之处在于,只有当程序的一部分被加载到内存中时,程序才能运行。您不必像上面描述的那些模型那样,加载所有的内存来运行该进程。
虚拟内存:每个程序都有自己的虚拟地址空,这个空又被分成几个块,每个块称为一个页面。每页都有连续的地址空。这些也映射到物理内存。但不是所有的页面都必须在内存中才能运行程序。当程序引用的页面在物理内存中时,映射由操作系统完成。当程序访问的页面不在物理内存中时(缺页中断),操作系统负责将所需页面加载到内存中。当一个程序等待一些内容读入内存时,它可以把CPU让给其他进程。
上一段有几个重点。让我给你整理一下。
程序能寻址的最大空房间,所谓的虚拟地址,逻辑上是虚的,实际没那么大。32位操作系统的最大虚拟地址空为2 ^ 32空约为4G,64位操作系统的最大虚拟地址空为2 ^ 64。抱歉,我想不出有多大。
虚拟地址空按照固定的大小分成若干个单元,称为页面。
物理内存中对应虚拟页面的单位称为页帧。页面和框架通常大小相同。
将虚拟地址发送到内存管理单元,MMU包含在CPU中),然后通过页表将虚拟地址映射到物理地址。页面的本质是一个函数,输入一个虚拟地址,输出一个真实的物理地址。
我们知道进程的虚拟地址空很大,但是物理内存肯定没有那么大,也就是不可能把所有的虚拟地址都映射到物理内存。当被访问的页面不在物理内存中时,就会发生页面中断。此时,需要页面调度算法将暂时不需要的页面替换到交换区,并将需要的页面加载到内存中。在等待页面切换时,CPU将处理其他进程。Linux会在磁盘中设置一个专门的区域作为内存的交换区域,这个区域不同于IO系统的disk 空。
让我们简单看一下如何将虚拟内存地址映射到真实的物理内存地址。假设有一台可以生成16位地址的计算机,最大寻址范围是0到64k(2 ^ 16),这台计算机的实际物理内存是32K。虽然我们可以编写64K的程序,但是不能完全加载到内存中。磁盘上必须有64K 空的空间,保证需要的时候可以把程序片段加载到内存中。如下图
为了更有效地使用内存,我们希望共享更多的内存。
多进程共享页面
实际上,指令空和数据空通常是分开的。指令空之间的页面很容易共享,因为指令空之间的内容是只读的。如果该页在data 空之间共享,请确保该数据是只读的,或者在data 空之间写入时制作一个副本。比如fork调用,只要一个进程写,就会复制一个副本,让每个进程都能读写。这个过程称为写入时复制。
多进程共享库
这是共享内存的另一个方面。共享页面是根据页面维度共享的,这是基于库维度的。很多进程会使用相同的底层库,比如windows的动态链接库(DLL)。这样内存中只加载一个副本就可以了,大大节省了内存空。
以上内容大概介绍了操作系统内存管理的基础知识,但是还有很多细节没有涉及到,比如页面置换算法,如何更快的将虚拟地址映射到物理地址。如何处理过程中动态内存增长等问题?有兴趣可以私信我或者查阅相关书籍。
以上内容就是为大家推荐的内存管理(操作系统是如何管理内存的)最佳回答,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题
内容来源于网络仅供参考版权声明:所有来源标注为小樱知识网www.xiaoyin02.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可。
本文标题:内存管理(操作系统是如何管理内存的)
本文地址:https://www.xiaoyin02.com/shcs/304327.html
相关文章
热点文章
2021年独生子女补贴新政策是真的吗(独生子女证有有效期吗)
2021年国庆节阅兵仪式几点开始几点结束(2021年国庆节还有阅兵吗)
鼠目寸光一点红是什么生肖动物(鼠目寸光一点红)指什么生肖,紧密
k0到k9的玩法大全(强制gc的玩法和注意事项)
入土为安是什么生肖《入土为安》打一个生肖动物,词语解释
浙江12月底全面停工是真的吗(浙江什么时候放假停工)
如何做t(t怎么把p做哭)
北京口碑最差的三甲医院(北京301医院最擅长什么)