WINDOWS操作系统原理之内存管理精品PPT课件
合集下载
操作系统第12章页式内存管理PPT课件

页面号
求虚地址 7145: P=7145/2048 =3 W=7145 % 2048 =1001 查页表:3--〉5 MA=5*2048+1001=11241
页面号
练习:
某进程有4个页面,分别装入主存的3、4、 6、8块中,设页面大小为1024B。
(1)写出该进程的页表;
(2)求mov A,[3100]指令中操作数的物理地 址。
页长为1KB
【例】有一系统采用页式存储管理, 有一程序大小是8KB,页大小为2KB, 依次装入内存的第7、9、10、5块, 试将虚地址3412,7145转换成内存 地址。
解:
求虚地址 3412
页号P=3412/2048 =1
W= 3412 % 2048 = 1364
查页表1--〉9
则MA=9*2048+1364=19796
解决问题的思路:程序适应主存,将 程序分开存放——分页存储管理技术。
一、分页内存管理的基本原理
1、基本原理
程序的虚地址空间分成大小相等的块(如4KB,8KB),称为页。 内存也分成同样大小的块,称为内存页面等。以页面为内存
的最小分配单位。 当一个用户程序装入内存时,针对每一页分配一个内存页面。 程序的一个页面可以存放在任意一个内存页面,即分配的内
2.分配与回收(以位示图为例)
分配: (1)进程长度<=空闲页面长度?是则分配 (2)建立页表和请求表 (3)逐位查位示图,找出为0的位,计算出表示的页
号(字号×字长+位号),填入页表,将0->1。 (4)重复过程(3),直到分配完成,修改空闲页面
数。
回收
进程运行结束,释放它所占的内存页面 ① 根据释放的内存页面,计算出在第几字第几位,
第4章内存管理PPT课件

(2)链接。由链接程序将编译后形成的目标模块以 及它们所需要的库函数,链接在一起,形成一个 装入模块。
(3)装入。由装入程序将装入模块装入主存的过程。
2020/8/1
3
源程序的执行过程
通常要经过编译、链接和装入几个步骤
库
编 译程 序产 生 的目 标模 块
内存
链接 程序
装 入模 块
装入 程序
…
第 一步
第4章 存储器管理
计算机系统中的存储器可以分为两种:内存储器 和辅助存储器。前者可被CPU直接访问,后者不 能。辅助存储器与CPU之间只能够在输入输出控 制系统的管理下,进行信息交换。
既然内存储器可被CPU直接访问,因此它是计算 机系统中的一种极为重要的资源。在操作系统中, 把管理内存储器的部分称为“存储器管理”。能 否合理地使用内存,会在很大程度上影响到整个 计算机系统的性能。
第 二步
第 三步
2020/8/1
4
4.2.1 程序的装入
程序的装入就是把程序装入内存空间。
采用三种方式
(1)绝对装入方式:是由装入程序根据装入模块中 的地址,将程序和数据装入内存。 (2)可重定位方式 :是由装入程序根据内存当前的 实际使用情况,将装入模块装入到内存适当的地方。 (3)动态运行时装入方式:动态运行时的装入程序, 在把装入模块装入内存后,并不立即把装入模块中的 相对地址转换为绝对地址,而是把这种地址转换推迟 到程序要真正执行时才进行。
2020/8/1
5
程序的装入
绝对装入方式:是由装入程序根据装入模 块中的地址,将程序和数据装入主存
若知道程序在内存的位置,编译程序将产生 绝对地址目标模块 绝对地址一般由编译程序给出 程序被装入内存后,由于程序中的逻辑地址 与实际内存地址完全相同,所以不允许改变 程序和数据的地址 只适于单道环境
(3)装入。由装入程序将装入模块装入主存的过程。
2020/8/1
3
源程序的执行过程
通常要经过编译、链接和装入几个步骤
库
编 译程 序产 生 的目 标模 块
内存
链接 程序
装 入模 块
装入 程序
…
第 一步
第4章 存储器管理
计算机系统中的存储器可以分为两种:内存储器 和辅助存储器。前者可被CPU直接访问,后者不 能。辅助存储器与CPU之间只能够在输入输出控 制系统的管理下,进行信息交换。
既然内存储器可被CPU直接访问,因此它是计算 机系统中的一种极为重要的资源。在操作系统中, 把管理内存储器的部分称为“存储器管理”。能 否合理地使用内存,会在很大程度上影响到整个 计算机系统的性能。
第 二步
第 三步
2020/8/1
4
4.2.1 程序的装入
程序的装入就是把程序装入内存空间。
采用三种方式
(1)绝对装入方式:是由装入程序根据装入模块中 的地址,将程序和数据装入内存。 (2)可重定位方式 :是由装入程序根据内存当前的 实际使用情况,将装入模块装入到内存适当的地方。 (3)动态运行时装入方式:动态运行时的装入程序, 在把装入模块装入内存后,并不立即把装入模块中的 相对地址转换为绝对地址,而是把这种地址转换推迟 到程序要真正执行时才进行。
2020/8/1
5
程序的装入
绝对装入方式:是由装入程序根据装入模 块中的地址,将程序和数据装入主存
若知道程序在内存的位置,编译程序将产生 绝对地址目标模块 绝对地址一般由编译程序给出 程序被装入内存后,由于程序中的逻辑地址 与实际内存地址完全相同,所以不允许改变 程序和数据的地址 只适于单道环境
第3讲现在的操作系统怎么管理内存PPT课件

3 有效位为0表示页不在内存,产生 缺页中断,中断处理完后返回产 生缺页中断的指令重新执行,设 有虚地址访问序列:
2362H、1565H、25A5H,请问
页页有 号框效
号位
0
101H 1
1
---- 0
2
254H 1
1、依次访问上述3个 地址,各需要多少时 间? 2、基于上述访问序 列,1565H的物理地 址是多少?说明理由
-
页框是硬性划分,逻辑地址空间怎么分页
• 保留段,段中分页(段页式) • 将二维的段地址变为一维的地址后再分页(页式)
0
1
3 2
这时,需要段表和页表
-
段\页
• 保留段,段中分页(段页式) • 将二维的段地址变为一维的地址后再分页(页式)
-
段、页同时存在:段面向用户/页面向硬件
4G 用户栈段
cs:ip 逻辑地址
0
用户代码段 用户数据段 操作系统段
虚拟内存
物理地址
0x7008
0x00345008
虚拟地址 对用户是 透明的
-
内存
第3单元 主存管理
第3节 分页存储管理
什么是页 分页管理方案 举例
-
分页管理方案要解决的问题
✓ 地址映射 ✓ 多级页表/快表 ✓ 虚存
-
分页重定位
页中的逻辑地址
Page#
Offset
R=0
R=0
R=0
R=1
用来选择淘汰页,移动速度慢! 更像Clock吧!
R=1
R=1
R=0 R=0 R=1
-
总结:请求分页过程
页表 缺页中断处理
磁盘
load [addr]
重新执行
2362H、1565H、25A5H,请问
页页有 号框效
号位
0
101H 1
1
---- 0
2
254H 1
1、依次访问上述3个 地址,各需要多少时 间? 2、基于上述访问序 列,1565H的物理地 址是多少?说明理由
-
页框是硬性划分,逻辑地址空间怎么分页
• 保留段,段中分页(段页式) • 将二维的段地址变为一维的地址后再分页(页式)
0
1
3 2
这时,需要段表和页表
-
段\页
• 保留段,段中分页(段页式) • 将二维的段地址变为一维的地址后再分页(页式)
-
段、页同时存在:段面向用户/页面向硬件
4G 用户栈段
cs:ip 逻辑地址
0
用户代码段 用户数据段 操作系统段
虚拟内存
物理地址
0x7008
0x00345008
虚拟地址 对用户是 透明的
-
内存
第3单元 主存管理
第3节 分页存储管理
什么是页 分页管理方案 举例
-
分页管理方案要解决的问题
✓ 地址映射 ✓ 多级页表/快表 ✓ 虚存
-
分页重定位
页中的逻辑地址
Page#
Offset
R=0
R=0
R=0
R=1
用来选择淘汰页,移动速度慢! 更像Clock吧!
R=1
R=1
R=0 R=0 R=1
-
总结:请求分页过程
页表 缺页中断处理
磁盘
load [addr]
重新执行
061windows操作系统原理ppt

Two-Level Paging Example
A logical address (on 32-bit machine with 4K page size) is divided into: a page number consisting of 20 bits. a page offset consisting of 12 bits. Since the page table is paged, the page number is further divided into: a 10-bit page number. a 10-bit page offset. Thus, a logical address is as follows:
速度问题
反置页表查找
– 由表头起始,平均为表长度的一半 – 速度慢
解决方案
– 在反置页表前增加一级杂凑表
– 查找杂凑表与反置页表需要两次访问内存
– 为进一步提高速度,快表缓冲
6.3.3 分段式存储管理(segmentation)
– 字位映象图 – 空闲页面表
– 空闲页面链
动态异长分区的分配
– 最先适应 (First Fit)
– 最佳适应 (Best Fit) – 最坏适应 (Worst Fit)
字位映象图(bit map)
用一个bit代表一页状态,0表空闲,1表占用。( 多单元) … ... ... ...
1 0
0
1 第 k 页
6.3.2.2 多级页表
提出背景
– 进程虚拟空间大幅度增加
单级页表需要很大连续内存空间 页表所占内存空间浪费
– 多线程设计导致进程虚拟空间不连续性
计算机操作系统-存储器管理 ppt课件

只适合于单道程序环境
ppt课件
10
4.1 程序的装入和链接
2. 可重定位装入方式 在多道程序环境下,目标模块的起始地址通常从 0开始,程序中的其他地址都是相对于起始地址 计算的。因此应采用可重定位装入方式,根据内 存的当前情况,将装入模块装入到内存的适当位 置。
注意:在采用可重定位装入方式将装入模块装入 内存后,会使装入模块中的所有逻辑地址与实际 装入内存的物理地址不同。
系统区(OS)
用户区 内存
ppt课件
21
4.2 连续分配方式
连续分配方式,是指为一个用户程序分配一个连 续的内存空间。
单一连续分配
固定分区分配
动态分区分配
可重定位分区分配
ppt课件
22
4.2.2 固定分区分配
1. 原理 将内存用户空间划分为若干个固定大小的区域,在每个分区中 只装入一道作业,便可以有多道作业并发执行。当有一空闲分 区时,便可以再从外存的后备作业队列中,选择一个适当大小 的作业装入该分区,当该作业结束时,可再从后备作业队列中 找出另一作业调入该分区。
ppt课件
13
4.1 程序的装入和链接
4.1.2 程序的链接
程序经过编译后得到一组目标模块,再利用链接程序 将目标模块链接,形成装入模块。 根据链接时间的不同,把链接分成三种: 1、静态链接:在程序运行前,将目标模块及所需的库 函数链接成一个完整的装配模块,以后不再拆开。 2、装入时动态链接:指将用户源程序编译后所得的一 组目标模块,在装入内存时,采用边装入边链接的链 接方式。 3、运行时动态链接:指对某些目标模块的链接,是在
分区分配中的数据结构 分区分配算法 分区分配及回收操作
ppt课件
26
4.2.3 动态分区分配
ppt课件
10
4.1 程序的装入和链接
2. 可重定位装入方式 在多道程序环境下,目标模块的起始地址通常从 0开始,程序中的其他地址都是相对于起始地址 计算的。因此应采用可重定位装入方式,根据内 存的当前情况,将装入模块装入到内存的适当位 置。
注意:在采用可重定位装入方式将装入模块装入 内存后,会使装入模块中的所有逻辑地址与实际 装入内存的物理地址不同。
系统区(OS)
用户区 内存
ppt课件
21
4.2 连续分配方式
连续分配方式,是指为一个用户程序分配一个连 续的内存空间。
单一连续分配
固定分区分配
动态分区分配
可重定位分区分配
ppt课件
22
4.2.2 固定分区分配
1. 原理 将内存用户空间划分为若干个固定大小的区域,在每个分区中 只装入一道作业,便可以有多道作业并发执行。当有一空闲分 区时,便可以再从外存的后备作业队列中,选择一个适当大小 的作业装入该分区,当该作业结束时,可再从后备作业队列中 找出另一作业调入该分区。
ppt课件
13
4.1 程序的装入和链接
4.1.2 程序的链接
程序经过编译后得到一组目标模块,再利用链接程序 将目标模块链接,形成装入模块。 根据链接时间的不同,把链接分成三种: 1、静态链接:在程序运行前,将目标模块及所需的库 函数链接成一个完整的装配模块,以后不再拆开。 2、装入时动态链接:指将用户源程序编译后所得的一 组目标模块,在装入内存时,采用边装入边链接的链 接方式。 3、运行时动态链接:指对某些目标模块的链接,是在
分区分配中的数据结构 分区分配算法 分区分配及回收操作
ppt课件
26
4.2.3 动态分区分配
操作系统内存管理PPT课件

5
静态链接是由链接器在链接时将库的内容加入 到可执行程序中的做法。链接器是一个独立程 序,将一个或多个库或目标文件(先前由编译 器或汇编器生成)链接到一块生成可执行程序。
静态链接的最大缺点是生成的可执行文件太大, 需要更多的系统资源,在装入内存时也会消耗 更多的时间。
6
动态链接,在可执行文件装载时或运行时,由 操作系统的装载程序加载库。大多数操作系统 将解析外部引用(比如库)作为加载过程的一 部分。
虚拟页号与链表中的每 一个元素的第一个域 相比较。如果匹配,那么对应的帧码就用来形 成位置地址。如果不匹配,那么就对链表中的 下一个域进行页码比较。
40
Hash页表实例
41
反向页表
反向页表对于每个真正的内存页或帧才有一个 条目。
每个条目包含保存在真正内存位置的页的虚拟 地址,以及拥有该页的进程的信息。
(称为关联内存或翻译后备缓冲器)来解决。
29
关联存储
关联内存 - 并行搜索
– 当关联内存根据给定值查找 时,它会同时与所有键进行 比较。如果找到条目,那么 就得到相应的值域
地址转换(A’, A’’)
– 如果A’在关联寄存器中,则 直接取出其对应的frame #
– 否则从内存中的页表当中得 到frame #
– 该位有效时表示相关的页在进程的逻辑地址空间内,因此是 合法的页。
– 该位无效时表示相关的页不在进程的逻辑地址空间内。
32
页表中的有效-无效位
33
页表结构
层次化分页 Hash页表 反向页表
34
层次化分页
将逻辑地址空间分成多个页表 一种简单的方法是两层分页法
35
两层分页方法实例
逻辑地址(32位机器,页大小为4K)分成以 下两部分:
静态链接是由链接器在链接时将库的内容加入 到可执行程序中的做法。链接器是一个独立程 序,将一个或多个库或目标文件(先前由编译 器或汇编器生成)链接到一块生成可执行程序。
静态链接的最大缺点是生成的可执行文件太大, 需要更多的系统资源,在装入内存时也会消耗 更多的时间。
6
动态链接,在可执行文件装载时或运行时,由 操作系统的装载程序加载库。大多数操作系统 将解析外部引用(比如库)作为加载过程的一 部分。
虚拟页号与链表中的每 一个元素的第一个域 相比较。如果匹配,那么对应的帧码就用来形 成位置地址。如果不匹配,那么就对链表中的 下一个域进行页码比较。
40
Hash页表实例
41
反向页表
反向页表对于每个真正的内存页或帧才有一个 条目。
每个条目包含保存在真正内存位置的页的虚拟 地址,以及拥有该页的进程的信息。
(称为关联内存或翻译后备缓冲器)来解决。
29
关联存储
关联内存 - 并行搜索
– 当关联内存根据给定值查找 时,它会同时与所有键进行 比较。如果找到条目,那么 就得到相应的值域
地址转换(A’, A’’)
– 如果A’在关联寄存器中,则 直接取出其对应的frame #
– 否则从内存中的页表当中得 到frame #
– 该位有效时表示相关的页在进程的逻辑地址空间内,因此是 合法的页。
– 该位无效时表示相关的页不在进程的逻辑地址空间内。
32
页表中的有效-无效位
33
页表结构
层次化分页 Hash页表 反向页表
34
层次化分页
将逻辑地址空间分成多个页表 一种简单的方法是两层分页法
35
两层分页方法实例
逻辑地址(32位机器,页大小为4K)分成以 下两部分:
操作系统内存管理课件

04
根据访问速度分类
高速缓存:一种快速访问的内存,用于临 时存储经常访问的数据。
05
06
主存:计算机的主要内存,用于存储程序 和数据。
内存管理的基本功能
01
02
03
04
பைடு நூலகம்
内存分配
根据程序的需求,为其分配所 需的内存空间。
内存保护
确保每个程序只能访问其分配 的内存空间,防止数据冲突和
破坏。
内存回收
当程序不再需要使用分配的内 存空间时,将其释放以供其他
操作系统内存管理 课件
contents
目录
• 内存管理概述 • 物理内存管理 • 虚拟内存管理 • 内存优化和管理策略 • 内存管理实例分析 • 未来内存管理技术和发展趋势
01
CATALOGUE
内存管理概述
内存的定义和作用
内存:也被称为随机访问存储器(RAM),是计算机 的存储设备之一,用于临时存储程序和数据。
THANKS
感谢观看
将内存空间划分为若干段,分 别分配给不同的程序。
内存映射
逻辑地址
程序使用的地址,由编译器产生。
地址映射
将逻辑地址转换为物理地址的过程。
物理地址
内存条上的实际地址,由操作系统管理。
地址重定位
在程序运行时,根据需要改变地址映射关系 。
内存保护
保护键
越界保护
设置保护键可以控制对内存的访问权限。
当程序访问超出其分配的内存空间时,系 统会中断程序并报告错误。
内存分配
Linux使用伙伴系统进行内存分 配,将可用内存块组织成一对伙
伴,根据大小进行分配。
内存回收
当进程释放内存块时,伙伴系统 会检查该块是否与其相邻的块相 邻,如果相邻,则合并这些块。
操作系统 5内存PPT课件

1. 动态分区分配中的数据结构 2. 动态分区分配算法 3. 分区分配操作
23
动态分区分配
1. 动态分区分配 中的数据结构
空闲分区表或 空闲分区链
24
动态分区分配
2. 动态分区分配算法
传统的顺序式搜索算法 索引式搜索算法
25
动态分区分配
3. 分区分配操作
分配内存:根据分配算法,从空闲分区表中找 到合适的分区。若分区大小比请求空间大(超 过分区最小极限值),则对分区进行分割。
适用于多道程序环境 地址转换在程序装入
时一次完成,不再改 变
10
动态重定位装入方式
静态装入不适用于进程切换,每次换入的 内存位置可能不同
程序装入时保留相对地址,程序执行时进 行地址转换
需要重定位寄存器加速地址转换
11
程序的静态链接方式
在程序运行之前,先将各目标模块及它们 所需的库函数,链接成一个完整的装配模 块,以后不再拆开。
7
对用户程序的处理步骤
8
绝对装入方式
程序中的逻辑地址和实际内存地址一致 适用于仅能运行单道程序的小系统 程序中的绝对地址可由程序员直接给出
要求熟悉内存使用 数据结构或程序修改后可能要改程序中的很多
处地址
绝对地址也可由程序编译器转换得出
9
静态重定位装入方式
程序中的逻辑地址从0 地址开始
5、内存
1
整体概述
概况一
点击此处输入相关文本内容 点击此处输入相关文本内容
概况二
点击此处输入相关文本内容 点击此处输入相关文本内容
概况三
点击此处输入相关文本内容 点击此处输入相关文本内容
2
内存
存储器的层次结构 程序的装入和链接 连续分配存储管理方式 对换 分页存储管理方式 分段存储管理方式 虚拟存储器概述 请求分页存储管理方式 页面置换算法 “抖动”与工作集 请求分段存储管理方式
23
动态分区分配
1. 动态分区分配 中的数据结构
空闲分区表或 空闲分区链
24
动态分区分配
2. 动态分区分配算法
传统的顺序式搜索算法 索引式搜索算法
25
动态分区分配
3. 分区分配操作
分配内存:根据分配算法,从空闲分区表中找 到合适的分区。若分区大小比请求空间大(超 过分区最小极限值),则对分区进行分割。
适用于多道程序环境 地址转换在程序装入
时一次完成,不再改 变
10
动态重定位装入方式
静态装入不适用于进程切换,每次换入的 内存位置可能不同
程序装入时保留相对地址,程序执行时进 行地址转换
需要重定位寄存器加速地址转换
11
程序的静态链接方式
在程序运行之前,先将各目标模块及它们 所需的库函数,链接成一个完整的装配模 块,以后不再拆开。
7
对用户程序的处理步骤
8
绝对装入方式
程序中的逻辑地址和实际内存地址一致 适用于仅能运行单道程序的小系统 程序中的绝对地址可由程序员直接给出
要求熟悉内存使用 数据结构或程序修改后可能要改程序中的很多
处地址
绝对地址也可由程序编译器转换得出
9
静态重定位装入方式
程序中的逻辑地址从0 地址开始
5、内存
1
整体概述
概况一
点击此处输入相关文本内容 点击此处输入相关文本内容
概况二
点击此处输入相关文本内容 点击此处输入相关文本内容
概况三
点击此处输入相关文本内容 点击此处输入相关文本内容
2
内存
存储器的层次结构 程序的装入和链接 连续分配存储管理方式 对换 分页存储管理方式 分段存储管理方式 虚拟存储器概述 请求分页存储管理方式 页面置换算法 “抖动”与工作集 请求分段存储管理方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 在此1 M大小的映射表中,有相当数量的表项其实并没有 用,所以,为这部分表项分配存储空间是浪费。Intel x86 采用了分级页表的方式来管理这一映射关系。32位虚拟地 址中的页索引部分又被分成页目录索引(10位)和页表索 引(10位)两部分,所以,一个32位虚拟地址的实际构成
如图3中最上边的虚拟地址结构所示。
页式内存管理
• 下面我们以Intel x86为例来介绍从虚拟内存页面到物理内存页面 的映射。
首先,寻址系统必须确定页面的大小,标准的大小为4 KB,32 位地址值的最后12位是页内偏移,而前20位则是页索引部分, 用于找到一个实际的物理页面。因此,在这样的系统上,页面映 射表是一个1 048 576(即1 M)大小的表。
访问内存时必须要通过段描述符,这意味 着Windows将所有的段描述符都构造成了 从基地址0开始,且段的大小设置为 0x80000000、0xc0000000或0xffffffff,具 体取决于段的用途和系统设置。
所以,Windows系统中的代码,包括 操作系统本身的代码和应用程序代码,所 面对的地址空间都是线性地址空间。这种 做法相当于屏蔽了处理器中的逻辑地址概 念,段只被用于访问控制和内存保护。
Windows操作系统的存储管理
内存管理
• 指软件运行的时候对计算机内存资源进行 分配和使用的技术,主要目的是如何高效、 快速的分配,并且在适当时候释放和回收 内存资源。
• 内存可以通过许多媒介实现,例如磁带或 者是硬盘,或者是小阵列容量的微芯片。
两个内存
• 物理内存——就是插在主板上的内存条,它是固定的,内 存条的容量多大,物理内存就有多大(集成显卡系统除 外),但是如果程序运行很多或者程序本身很大的话,就 会导致大量的物理内存占用,甚至导致物理内存消耗殆尽。
三个地址
• 线性地址(linear address)/虚拟地址(virtual address)——与逻辑地址类似。它也是一个不真实的地 址。
• 如果逻辑地址是对应的硬件平台段式管理转换前地址,那 么线性地址就对应了硬件页式内存的转换前地址。
• Windows 2000/xp有如下三种管理应用程 序内存的方法:
页式内存管理
• 在页式内存管理中,虚拟地址空间是按页(page)来管理 的,对应于物理内存也按页来管理,物理内存中的页面有 时候称为页帧(page frame),其大小与虚拟空间中的页 面相同。因此,映射关系是在内存页面的基础上进行的。 •在虚拟地址空间中连续的页面对应于在物理内存中的 页面可以不必连续,并且,通过小心地维护好虚拟地址 空间的页面与物理内存页面之间的映射关系,物理页面 可以被动态地分配给特定的虚拟页面,从而只有当真正 有必要的时候才把物理页面分配给虚拟页面,毕竟物理 页面相对来说是稀缺资源。
•如图1所示,物理地址空间(其地址范围取决于系统中 物理内存的数量,图中假设为1 GB物理内存)中有一 部分页面被映射到了左侧的虚拟地址空间(在32位平台 上,其地址范围为0x0~0xffffffff)。
图1
页式内存管理
• 注意,在一个系统中,物理地址空间只有一个,但虚拟地址空间可以 有多个。每个虚拟地址空间都必须有一个映射关系,而且,虚拟地址 空间中有相当一部分页面并没有对应的物理页面(在图1中标记为 “不使用”的页面)。
•实际上,每个虚拟地址空间往往只能映射到很少一部分物理页面。反 过来,每个物理页面往往只被映射到一个虚拟地址空间中。如果有一 个物理页面被映射至两个或两个以上的虚拟地址空间,那么,这些地 址空间将共享此页面,若在一个虚拟地址空间中改写了此页面中的数 据,则在其他的虚拟地址空间中将可以看到这样的变化。
三个地址
• 逻辑地址——是指由程序产生的与段相关的偏移地址部分。 只有在Intel实模式下,逻辑地址才和物理地址相等(因为 实模式没有分段或者分页,cpu不进行自动地址转换), 逻辑地址也就是在Intel保护模式下程序执行代码段限长内 的偏移地址,(假定代码段、数据段完全一样)。应用程 序员仅仅需要与逻辑地址打交道,而分段和分页是对程序 员完全透明的,仅仅由系统编程人员涉及。应用程序员虽 然自己可以直接操作内存,也只能在操作系统给你分配的 那段内存来操作。
ቤተ መጻሕፍቲ ባይዱ
图3
• 基于这样的虚拟地址构成,每个虚拟地址空间对 应有一个页目录,其中包含210=1 024个目录项 (PDE,Page Directory Entry);每一个目录 项指向一张包含1 024项的页表。
两个内存
• 虚拟内存——虚拟内存就是在硬盘上面划分一块页面文件, 充当内存。当程序在运行的时候,有一部分资源还没有用 上或者同时打开几个程序却只能操作其中一个程序时,系 统没必要将程序所有的资源都塞在物理内存中,所以暂时 将这些不用的资源放在虚拟内存里面,等到需要的时候再 调用。
三个地址
• 物理地址——用于内存芯片级的单元寻址,与处理器和 CPU连接的地址总线相对应。内存并不是通过物理地址的 方式来寻址的,(虽然可以直接把物理地址理解成插在机 器上的内存本身,把内存看成一个从0一直到最大空间逐 字节编号的大数组,然后把这个数组叫做物理地址),说 它是“与地址总线相对应”还更贴切一些。
• 1)以页为单位的虚拟内存分配方法:适用 于比较大的对象或结构
• 2)内存映射文件方法:将磁盘上文件加载 到内存,适用于大文件和单机的进程间内 存共享
• 3)内存堆方法:动态的分配内存,适用于 小对象的创建
• Windows采用了页式内存管理方案,在 Intel x86处理器上,Windows不使用段来 管理虚拟内存,但是,Intel x86处理器在
有了页面划分的机制以后,我们可以想象,每个虚拟地址32位信息中, 其中一部分位信息指定了一个物理页面,其余的位信息则指定了页内 的偏移量。也就是说,虚拟地址分成了两部分:页索引+页内偏移,其 结构如图2所示。页索引是指该虚拟地址在映射关系中的索引编号,页 内偏移则指定了该地址在页面内部的具体位置。
图2