问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Linux内存系统

发布网友 发布时间:2022-08-31 17:25

我来回答

1个回答

热心网友 时间:2024-11-12 04:32

维基百科——虚拟内存定义

All about Linux swap space

Linux将物理RAM (Random Access Memory) 划分为称为页面的内存块。交换是将一页内存复制到硬盘上的预配置空间(称为交换空间)以释放改内存页面上的过程。物理内存和交换空间的组合就是可用的虚拟内存量。

虚拟内存的那点事儿

进程是与其他进程共享CPU和内存资源的。为了有效的管理内存并减少出错,现代操作系统提供了一种对主存的抽象概念,即:虚拟内存( Virtual Memory )。虚拟内存为每个进程提供一个一致的,私有的地址空间,每个进程拥有一片连续完整的内存空间。

正如 维基百科 所说,虚拟内存不只是“使用硬盘空间来扩展内存”的技术。虚拟内存的重要意义是它定义了一个连续的虚拟地址空间,使得程序编写难度降低。并且,把内存扩展到硬盘空间只是使用虚拟内存的必然结果,虚拟内存空间会存在硬盘中,并且会被全部放入内存中缓冲(按需),有的操作系统还会在内存不够的情况下,将一进程的内存全部放入硬盘空间中,并在切换到进程时再从硬盘读取(这也是Windows会经常假死的原因...)。

虚拟内存主要提供了如下三个重要的能力:

内存通常被组织为一个由M个连续的字节大小的单元组成的数组。每个字节都有一个唯一的物理地址 (Physical Address PA) ,作为到数组的索引。

CPU访问内存最简单直接的方法就是使用物理地址,这种寻址方式称为物理寻址

现代计算机使用的是一种被称为虚拟寻址 (Virtual Addressing) 的寻址方式。使用虚拟寻址,CPU需要将虚拟地址翻译成物理地址,这样才能访问到真实的物理内存。

虚拟寻址需要硬件与操作系统之间相互合作。CPU中含有一个被称为内存管理单元 (Memory Management Unit,MMU) 的硬件,它的功能是将虚拟地址转换称为物理地址,MMU需要借助存放在内存中的 页表 来动态翻译虚拟地址,该页表由操作系统管理。

分页表是一种数据结构,它用于计算机操作系统中虚拟内存系统,其存储了虚拟地址到物理地址之间的映射。虚拟地址在访问进程中是唯一的,而物理地址在硬件(比如内存)中是唯一的。

在操作系统中使用虚拟内存,每个进程会认为使用一块大的连续的内存,事实上,每个进程的内存散布在物理内存的不同区域。或者可能被调出到备份存储中(一般是硬盘)。当一个进程请求自己的内存,操作系统负责把程序生成的虚拟地址,映射到实际存储的物理内存上。操作系统在分页表中存储虚拟地址到物理地址的映射。每个映射被称为分页表项(page table entry ,PTE)

在一个简单的地址空间方案中,由虚拟地址寻址的页与物理内存中的帧之间的关系。物理内存可以包含属于许多进程的页。如果不经常使用,或者物理内存已满,可以将页面分页到磁盘。在上图中,并非所有页面都在物理内存中。

虚拟地址到物理地址的转换(即虚拟内存的管理)、内存保护、CPU高速缓存的控制。

现代的内存管理单元是以的方式,分割虚拟地址空间(处理器使用的地址范围)的;页的大小是2的n次方,通常为几KB(字节)。地址尾部的n位(页大小的2的次方数)作为页内的偏移量保持不变。其余的地址位(address)为(虚拟)页号。

内存管理单元通常借助一种叫做转译旁观缓冲器(Translation Lookaside Buffer,TLB)和相联高速缓存来将虚拟页号转换为物理页号。当后备缓冲器中没有转换记录时,则使用一种较慢的机制,其中包括专用硬件的数据结构或软件辅助手段。这个数据结构称为分页表,页表中的数据叫做分页表项(page table entry PTE)。物理页号结合页偏移量便提供了完整的物理地址。

页表 或 转换后备缓冲器数据项应该包括的信息有:

有时候,TLB和PTE会禁止对虚拟页访问,这可能是因为没有RAM与虚拟页相关联。如果是这种情况,MMU将向CPU发出页错误的信号,操作系统将进行处理,也许会寻找RAM的空白帧,同时建立一个新的PTE将之映射到所请求的虚拟地址。如果没有空闲的RAM,可能必须关闭一个已经存在的页面,使用一些替换算法,将之保存到磁盘中(这被称为页面调度)。

当需要将虚拟地址转换为物理地址时,首先搜索TLB,如果找到匹配(TLB)命中,则返回物理地址并继续存储器访问。然而,如果没有匹配(称为TLB未命中),则MMU或操作系统TLB未命中处理器通常会查找页表中的地址映射以查看是否存在映射(页面遍历),如果存在,则将其写回TLB(这必须完成,因为硬件通过虚拟存储器系统中的TLB访问存储器),并且重启错误指令(这也可以并行发生)。此后续转换找到TLB命中,并且内存访问将继续。

虚拟地址到物理地址的转换过程,如果虚拟内存不存在与TLB,转换会被重置并通过分页表和硬件寻找。

通常情况下,用于处理此中断的程序是操作系统的一部分。如果操作系统判断此次访问有效,那么操作系统会尝试将相关的分页从硬盘上的虚拟内存文件调入内存。而如果访问是不被允许的,那么操作系统通常会结束相关的进程。

虽然叫做“页缺失”错误,但实际上这并不一定是一种错误。而且这一机制是利用虚拟内存来增加程序可用内存空间。

发生这种情况的可能性:

当原程序再次需要该页内的数据时,如果这一页确实没有被分配出去,那么系统只需要重新为该页在MMU内注册映射即可。

操作系统需要:

硬性页缺失导致的性能损失是很大的。
另外,有些操作系统会将程序的一部分延迟到需要使用的时候再加载入内存执行,以此提升性能。这一特性也是通过捕获硬性页缺失达到的。

当硬性页缺失过于频繁发生时,称发生系统颠簸。

具体动作与所使用的操作系统有关,比如Windows会使用异常机制向程序报告,而类Unix系统则使用信号机制。

尽管在整个运行过程中,程序引用不同的页面总数(也就是虚拟内存大小)可能超出了物理存储器(DRAM)总大小,但是程序常常在较小的活动页面上活动,这个集合叫做工作集或者常驻集。在工作集被缓存后,对它的反复调用会使程序命中提高,从而提高性能。

大部分的程序都可以在存储器获取数据和读取中达到稳定的状态,当程序达到稳定状态时,存储器的使用量通常都不会太大。虚拟内存虽然可以有效率控制存储器的使用,但是大量的页缺失还是造成了系统迟缓的主要因素。当工作集的大小超过物理存储器大小,程序将会发生一种不幸的情况,这种情况称为“颠簸”,页面将不停的写入、释放、读取,由于大量的丢失(而非命中)而损失极大性能。用户可以增加随机存取存储器的大小或是减少同时在系统里运行程序的数量来降低系统颠簸的记录。

推荐阅读:

操作系统--分页(一)

操作系统实现(二):分页和物理内存管理

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 怀孕梦见鱼 活动宣传方案精选宣传方案范本 如果9800GT+G4400搭配500W的电源,那么是否耗电就是500W? 被誉为中国文言短篇小说之王的是啥 配置丰富性价比高 最高优惠3.5万的现代名图了解一下 高效记忆单词的十大基本方法 十大英语单词背诵方法 烧烤店新开张想做啤酒免费喝的活动 朋友圈该怎么写 谢谢大神们_百度知 ... 面包需要醒发几次以及注意事项 面包需要醒发几次 皇帝和小栗帽是什么关系 男生减肥吃什么中药有效 水煎包容易溜清是什么原因 请问我有一张中央银行壹仟圆的中华民国三十四年卯的纸币值多少钱,有孙... 用暴字组词_基本定义_详细解释_造句 女生绿色修身迷彩服,什么鞋子最搭配 迷彩服配什么样鞋子如题 谢谢了 迷彩服搭配什么鞋子好看 徒弟的拼音 优酷怎么小窗口播放 男生喜欢酒红色,说明什么? 求高人解答啊!!谢谢,急求!! 霍金写过时间简史,主要内容是什么? 巴厘岛的这些景点你都去过了吗? 燃气壁挂炉,为什么显示器调18度,家里的温度计却显示22度呢?是怎么 时间简史 写的是什么内容? 同花顺是骗子吗? 同花顺大战略软件是骗子 “短篇小说之王”是? 霍金的《时间简史》写的如何? 莫泊桑是“短篇小说之王”;季羡林被誉为“学界泰斗”,是吗? 白蚁可以治病吗 平安普惠业务员UM号码是撒 苹果135g手机怎么用5g网络 css如何实现不规则图片墙布局如图 人工取消QQ财付通电话是多少? ...的步骤在地址栏输入了192.168.1.1,可怎么也进不去,提示找不到服务... 微信诈骗到底是通过什么方法,盗取他人的? 日本警方公布安倍死因,如何从医学角度分析这一死亡原因? 火龙果的营养之处 一个最多能加多少个好友?