我是靠谱客的博主 愉快短靴,最近开发中收集的这篇文章主要介绍操作系统面经总结—虚拟内存、内存分页、内存交换与覆盖等,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前几天更新了C++面经总结,后续几天将陆续更新操作系统的面经总结及面试中常问的一些操作系统的问题

三、操作系统

1、虚拟内存

在这里插入图片描述

1.1、虚拟内存意义

​ 虚拟内存:将不同进程的虚拟地址和不同内存的物理地址映射起来,让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。

​ 为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一(内存分段和内存分页)

​ 这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。

​ 从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。

​ 例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。

1.2、内存分段

​ 程序是由若⼲个逻辑分段组成的,如可由代码分段、数据分段、栈段、堆段组成。不同的段是有不同的属性的,所以就⽤分段(Segmentation)的形式把这些段分离出来。

1、分段机制下,如何映射呢?

​ 分段机制下的虚拟地址由两部分组成,段选择子 + 段内偏移量

在这里插入图片描述

  • 段选择⼦就保存在段寄存器⾥⾯。段选择⼦⾥⾯最重要的是段号,⽤作段表的索引。段表⾥⾯保存的是这个段的基地址、段的界限和特权等级等。

  • 虚拟地址中的段内偏移量应该位于 0 和段界限之间,如果段内偏移量是合法的,就将段基地址加上段内偏移量得到物理内存地址。

虚拟地址是通过段表与物理地址进⾏映射的,分段机制会把程序的虚拟地址分成 4 个段,每个段在段表中有⼀个项,在这⼀项找到段的基地址,再加上偏移量,于是就能找到物理内存中的地址。

2、分段的缺点

    最后

    以上就是愉快短靴为你收集整理的操作系统面经总结—虚拟内存、内存分页、内存交换与覆盖等的全部内容,希望文章能够帮你解决操作系统面经总结—虚拟内存、内存分页、内存交换与覆盖等所遇到的程序开发问题。

    如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

    本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
    点赞(37)

    评论列表共有 0 条评论

    立即
    投稿
    返回
    顶部