栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

操作系统——内存管理——虚拟内存

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

操作系统——内存管理——虚拟内存

考虑一种情况,如果需要运行一个程序,按照之前学习,应该是将该进程全部装入内存中,但是,如果进程所占内存过大,内存不够使用,怎么办?使用虚拟内存。

虚拟内存:每个程序拥有自己的地址空间,这个空间被分割成多块,每一块称作一页,或者页面,每一页有连续的地址范围。这些页被映射到物理地址空间中。如果运行程序时,没有在内存中找到该页,由操作系统负责将缺失的部分装入物理内存,并重新执行。

分页

程序产生的地址被称为虚拟地址,程序运行时,使用虚拟地址通过mmu映射到物理地址。

虚拟内存对应的物理单元被称为页框。

使用分页时,虚拟地址空间被分为固定大小的页面。

虚拟地址映射过程

通过进程给定的虚拟地址,将虚拟地址送给mmu,(假定虚拟地址是16位)mmu将地址前四位和后十二位进行分割,前四位在mmu中进行虚拟地址的查找,并将虚拟地址映射到物理地址,后十二位是偏移量,通过mmu将前四位虚拟地址映射后,将映射后的前四位地址和后十二位的地址进行拼接,得到的就是物理地址。

快表

当内存大,每个页面小时,就会导致页表项多,此时,如果在mmu中查找页面,就会更消耗时间。解决方案是使用转换检测缓冲区,将最近一些使用的页面映射关系进行缓存。可以更快的找到并映射。

页面置换算法

有时虚拟内存大于实际内存,所以进程有时会遇到缺页,操作系统会将页面从磁盘调入内存中,但是既然有调入磁盘的页面,一般就会有被覆盖的页面。所以出现了页面置换算法。

最优页面置换算法

最优页面置换算法规定应该置换标记最大的页面。如果一个页面在800万条指令内不会被使用,另一个页面在600万条指令内不会被使用,则置换前一个页面。

最近未使用页面置换算法

将一个页面增加两个标记,一个R标记,一个M标记,当被读时,R标记为1,当被写时,M被标记为1,所以有四种组合方式,最近未使用算法随机的从编号较小的页面中随机淘汰一个。也就是说淘汰一个没有被访问已修改的页面,比淘汰一个频繁使用的干净页面好。

先进先出页面置换算法

当发生缺页中断时,淘汰表头的页面,并添加一个页面在表尾。

第二次机会页面置换算法

在表中从头开始查找,检查最老页面的R位,如果R位为0,则该页面既早又没有被使用则替换该页面。

时钟页面置换算法

第二次机会页面置换算法要经常移动页面。所以使用环形链表,表针指向最老的页面,如果该页面的R位为0,则淘汰该页面,如果该页面R位为1,则表针前移一个位。

最近最少使用页面置换算法

在缺页中断发生时,置换未使用时间最长的页面。每执行一条指令所对应的页面加1,当置换页面时,找到值最小的页面。

分段

分段与分页不同的是,分页中,每一页的大小是相同的,并且是一维的,但是在分段中,每段大小不同,是二维的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/320547.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号