操作系统之分页式内存管理1

1.分页内存管理的核心就是:页面的翻译。

对于任何一个虚拟页面,系统要知道该页面是否在物理内存中?如果在的话,对应的物理页面是哪一个?如果不在,就会产生一个缺页中断,并将该虚页从磁盘转到内存,然后将分配给它的物理页面号返回。虚拟页面到物理页面的映射,这个翻译过程由内存管理单元MMU完成。MMU接收CPU发出的虚拟地址,将其翻译为物理地址后发给内存。MMU对虚拟地址的翻译只是对页面号的翻译,而对于偏移值则不进行任何操作,这是因为虚拟页表和物理页表大小完全一样,虚拟页面里的偏移值和物理页面里的偏移值完全一样,因此无需翻译。

2.页表在分页管理系统中的地位?

页表记录的条数与虚拟页面数相同。对于32位寻址的虚拟地址,如果页面大小为4KB,则页表的记录条数最多可以达到1048576条。内存管理单元依赖页表来进行一切与页面有关的管理活动,例如,判断某一页面号是否在内存中,页面是否受保护,页面是否非法空间。

3.页表记录了那些内容?

4.页面翻译过程?

5.分页内存管理的缺点与解决方法?

页表会很大,占用大量的内存空间,如1048576个页面的记录,每个记录又会占用多个字节,这样一个页表所占的内存空间就很大了。

1)多级页表

2) 反转页表

6.如何提高翻译效率?

如果使用单级页表,则每次内存访问变为两次内存访问,先访问页表,在访问实际的物理内存,如果使用多级页表或反转页表,则每次内存访问变为更多次的内存访问,这样效率会越来越低。为了提高这种内存翻译的效率,我们想出了一些方法。

在一段时间内,程序所要访问的地址空间有一点的空间局限性,如果一个页面被访问,则有些页面被访问的可能性很大,这样我们可以将这些页面的翻译结果存在缓存里,如是可以大大提高系统效率。

TLB通常由CPU制造商提供,但TLB的更换算法则有可能由操作系统提高。

7.缺页中断处理?

8.锁住页面:如果一个页面非常重要,可以把它锁住,从而防止不必要的页面替换。

9.一个进程内的碎片空间称为内部空间,页面越大,内部碎片就可能越大。而页面越小,则页表尺寸将越大,所以页面尺寸的大小要在内部碎片和页表大小之间平衡。

10.内存抖动的概念?

在更换页面时,如果更换的页面是一个很快就会被访问的页面,则在此次缺页中断后很快又会发生新的缺页中断,最坏的情况是,每次新的访问都是对一个不在内存的页面进行访问,即每次内存访问都会产生缺页中断,这样每次的内存访问其实变成可磁盘访问,磁盘的访问速度可能会比内存慢几百万倍,因此整个系统的效率急剧下降,这种现象称为内存抖动。发生内存抖动是,系统几乎看不到任何进展的现象,CPU的资源绝大部分将消耗在缺页中断上。

时间: 2024-11-05 16:11:40

操作系统之分页式内存管理1的相关文章

操作系统之分页式内存管理2

1.分页的内存管理克服了交换系统的缺点:外部碎片,程序不能大于物理内存等.但付出的代价是页面更换.在交换系统下,一个程序作为一个整体加载到内存,这样,在程序运行时,无须在从磁盘上加载任何东西,而分页系统下,一个程序的所有页面不一定都在内存中,所以可能会产生缺页中断,缺页中断的服务程序负责把位于磁盘上的数据加载到物理内存中来,如果物理内存中有空闲的页面,那就直接使用空闲的页面,但如果物理内存已满,就需要挑选某个已经使用过的页面进行替换.这里就出现一个问题,如何挑选? 2.如果挑选的页面是之后很快又

操作系统概念学习笔记 15 内存管理(一)

操作系统概念学习笔记 15 内存管理(一) 背景 内存是现代计算机运行的中心.内存有很大一组字或字节组成,每个字或字节都有它们自己的地址.CPU根据程序计数器(PC)的值从内存中提取指令,这些指令可能会引起进一步对特定内存地址的读取和写入. 一个典型指令执行周期,首先从内存中读取指令.接着该指令被解码,且可能需要从内存中读取操作数.在指令对操作数执行后,其结果可能被存回到内存.内存单元只看到地址流,而并不直到这些地址是如何产生的(由指令计数器.索引.间接寻址.实地址等)或它们是什么地址(指令或数

操作系统概念学习笔记 16 内存管理(二) 段页

操作系统概念学习笔记 16 内存管理 (二) 分页(paging) 分页(paging)内存管理方案允许进程的物理地址空间可以使非连续的.分页避免了将不同大小的内存块匹配到交换空间上(前面叙述的内存管理方案都有这个问题,当位于内存中的代码和数据需要换出时,必须现在备份存储上找到空间,这是问题就产生了.备份存储也有前面所述的与内存相关的碎片问题,只不过访问更慢). 传统上,分页支持一直是由硬件来处理的.最近的设计是通过将硬件和操作系统相配合来实现分页. 基本方法 实现分页的基本方法设计将物理内存分

操作系统之分段式内存管理1

1.分页操作系统的缺点? 1)页表太大,我们用多级页表克服了. 2)多级页表速度慢,我们用TLB翻译快表解决了绝大部分. 3)页面来回更换所带来的缺页中断的问题,我们用各类页面更换算法解决了大部分. 4)内部碎片相对于交换系统的外部碎片,还是可以忍受的. 最大的缺陷是:共享困难. 2.分段管理系统? 3.逻辑分段的优缺点? 1)每个逻辑单元可以单独占用一个虚拟地址空间,使得编写程序的空间大为增加. 2)段是按逻辑关系分的,共享变的方便. 3)不同的逻辑段使用不同的基址和极限,我们可以对不同的段采

《30天自制操作系统》笔记(07)——内存管理

<30天自制操作系统>笔记(07)--内存管理 进度回顾 上一篇中处理掉了绝大部分与CPU配置相关的东西.本篇介绍内存管理的思路和算法. 现在想想,从软件工程师的角度看,CPU也只是一个软件而已:它的功能就是加载指令.执行指令和响应中断,而响应中断也是在加载指令.执行指令.就像火车沿着一条环形铁轨前进:当中断发生时,就好像铁轨岔口处变轨了,火车就顺着另一条轨迹走了:走完之后又绕回来重新开始.决定CPU是否变轨的,就是CPU里的特定寄存器. 这是题外话,就此为止. 什么是内存管理 假设内存大小是

计算机操作系统学习笔记_8_内存管理 --虚拟内存管理

td p { margin-bottom: 0cm; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-botto

计算机操作系统学习笔记_7_内存管理 --内存管理基础

h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-bottom: 0.21cm; }h1.western { fon

linux 段页式内存管理

http://blog.chinaunix.net/uid-24227137-id-3723898.html 页是信息的物理单位,分页是为了实现离散分配方式,以消减内存的外零头,提高内存的利用率从:或者说,分页是由于系统管理的需要,而不是用户的需求.短是信息的逻辑单位,它含有一组其意义相对完整的信息.分段的目的是为了能更好的满足用户的需求. 进程是如何使用内存的 对于任意一个普通的进程都会涉及到5种不同的数据段, 代码段:存放代码 数据段:存放程序静态分配的变量和全局变量 BSS:未初始化的全局

[转载]linux段页式内存管理技术

原始博客地址: http://blog.csdn.net/qq_26626709/article/details/52742470 一.概述 1.虚拟地址空间 内存是通过指针寻址的,因而CPU的字长决定了CPU所能管理的地址空间的大小,该地址空间就被称为虚拟地址空间,因此32位CPU的虚拟地址空间大小为4G,这和实际的物理内存数量无关.Linux内核将虚拟地址空间分成了两部分: 一部分是用户进程可用的,这部分地址是地址空间的低地址部分,从0到TASK_SIZE,称为用户空间 一部分是由内核保留使