操作系统—内存管理

内容会持续更新,有错误的地方欢迎指正,谢谢!

内存管理

问题

1、什么是局部性原理?

  1. 时间上的局部性:最近被访问的页在不久的将来还会被访问,例如:循环语句;
  2. 空间上的局部性:内存中被访问的页周围的页也很可能被访问,例如:使用数组。

2、什么是虚拟内存?

1).内存的发展历程(了解)

  1. 没有内存抽象(单进程,除去操作系统所用的内存之外,全部给用户的一个程序使用)
  2. 有内存抽象(多进程,进程独立的地址空间,交换技术(内存大小不可能容纳下所有并发执行的进程))
  3. 连续内存分配(固定大小分区,可变分区(首次适应(空闲区表按地址递增排),最佳适应(空闲区表按大小递增排),最差适应(空闲区表按大小递减排)),碎片)
  4. 不连续内存分配(分页、分段、段页式)

2).虚拟内存——内存管理的核心
  虚拟内存是将硬盘的一部分作为内存(又叫主存)来使用。在程序装入时,可将程序的一部分装入内存,就可启动程序执行;在程序执行过程中,当所访需要的信息不在内存时,就将这部分从虚拟内存调入内存,然后继续执行程序;最后,将内存中暂时不用的信息换出到虚拟内存。

3、内存管理有哪几种方式

页式管理、段式和段页式管理。

4、说说页式存储管理实现虚拟内存的原理?

是实现虚拟内存的一种常用方式(还有段式、段页式)。需要页表、地址映射、缺页中断机制。

先来了解一些名词:
1.页(又叫页面):将进程分为等大的小片,这些小片就是页。一个页的大小一般为4KB。
2.页框(又叫物理块号):将内存分为等大的小片,这些小片就是页框。
3.页号:页的编号;页框号:页框的编号。
4.页表:一个进程就对应一个页表(如下表),用于记录页号和页框号等对应的信息 以 显示一个页和一个页框的对应的关系。页表放在Cache(快速缓冲区Cache位于主存和CPU之间,作用是解决主存和CPU速率匹配问题)中就叫快表;放在内存中就叫慢表。

页号页框号中断位辅存地址
1
0

5.地址映射:地址映射时优先访问快表。若在快表中找到所需数据的页号,则“命中”,也就是所需的页在内存里的;若没有在快表中找到,则访问慢表同时更新快表。
6.缺页中断:经常发生,缺页中断就是要访问的页不在内存,需要操作系统将其调入内存后再进行访问,并更新页表中该页对应的页框号以及修改中断位为0。

页式存储管理的基本思想:在进程执行前,仅装入当前执行所需的页;在执行时,调入要访问但又不在内存的页(即缺页中断);当内存空间已满,而又需要装入新的页时,则根据合理的页面调度策略适当调出某个页,以便腾出空间而装入新的页。

5、介绍下常见的页面调度策略(又叫淘汰策略,又叫Cache替换算法)?

  1. FIFO先进先出算法:淘汰最先进来的;
  2. LRU最久未使用算法:淘汰距离上次使用时间最长的;
  3. LFU(Least frequently use)最不经常使用算法:淘汰使用次数最少的(用计数器对每页进行计数);
  4. OPT最优置换算法:淘汰将来不再需要或在最遥远的将来才会使用的页。

6、什么是页面颠簸(又叫页面抖动)?

  颠簸本质上是指频繁的页调度行为。页面在内存和辅存间频繁交换的现象。会导致整个系统的效率急剧下降,这种现象称为颠簸(抖动)。

内存颠簸的解决策略包括:

  1. 如果是因为页面替换策略失误,可以修改替换算法来解决这个问题;
  2. 如果是因为进程太多,无法同时将所有频繁访问的页面调入内存,则要降低进程的数量;
  3. 否则,增加物理内存容量。

7、分页和分段有什么区别?

两者的区别:

  1. 目的不同:分页是信息的物理单位,由于系统管理的需要而不是用户的需要;分段(如下图)是信息的逻辑单位,目的是为了能更好地满足用户的需要;
  2. 大小不同:页的大小固定且由系统决定,而段的长度可变,由其所完成的功能来决定长度;
  3. 地址空间不同: 段向用户提供二维地址空间(段号+偏移);页向用户提供一维地址空间;
  4. 信息共享:段便于存储保护和信息的共享,页的存储保护和信息的共享受到限制;
  5. 内存碎片:页式存储管理的优点是没有外碎片(因为页的大小固定),但会产生内碎片(一个页可能填充不满);而段式管理的优点是没有内碎片(因为段可以改变段大小来消除内碎片),但段会产生外碎片(比如4k的段换5k的段,会产生1k的外碎片)。

8、Windows内存管理的方式(页式、段式、段页式)

页式能有效地提高内存的利用率,而段式系统能反映程序的逻辑结构,便于段的共享与保护。将分页与分段两种存储方式结合起来,就形成了段页式存储管理方式。
段页式存储管理系统中,作业的地址空间首先被分成若干个逻辑分段,每段都有自己的段号,每个进程设置一个段表;再将每段分成若干个大小相等的页,每个段有自己的页表。段页式调度综合了段式和页式的优点,大型通用计算机系统多数采用段页式调度。
PS:Linux只用了页式虚拟存储管理的方式。

9、段页式管理每取一数据,要访问()次内存。

3次
在段页式存储管理方式中,取一次数据:首先要从内存中查找段表;再查找该段对应的页表;最后通过得到的物理地址访问内存获得数据。

参考

【1】操作系统面试问题集锦
http://blog.csdn.net/justloveyou_/article/details/78304294
【2】操作系统基础知识梳理
https://www.nowcoder.com/discuss/62723

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值