物理存储器与进程逻辑地址空间的管理
第3章 存储管理

中 换 出
峰值当接近物。理 内 存 不 足 时 , 说 页明需W 到出求i磁页,nd盘多即ow以是只s便因有会释为当将放有内页空进存面间写。回 中没有可分配空间,同
换
时又必须调入内存新的
进
页面时,才需要换出页
面。
WindowsXP的存储管理
可
用
物
理 内
Available MBytes 是计 算机上运行的进程的可
第2节 存储管理功能
• 用户实体与存储空间 • 分配、释放及分配原则 • 地址映射 • 虚拟存储器 • 存储保护与共享 • 存储区整理
用户实体与存储空间
1.用户实体与存储器的关系
• 任务在被激活之前存放在辅助存储器上。 • 当任务被激活时,它成为进程进入主存储器。 • 进程的描述部分及主程序部分始终存放于主存储器,其他 程序和数据部分视需要由操作系统在内存与外存之间交换。
第三章
存储管理
学习要点
• 存储管理概述 • 存储管理功能 • 分区管理 • 分页管理 • 分段管理和段页式管理 • 常用系统中的存储管理
第1节 概述 及实用系统中的存储管理方法
• 概述 • DOS的存储管理 • WindowsXP的存储管理 • Linux存储管理
存储管理概述
• 主存储器是计算机系统硬件中仅次于CPU的宝贵资 源。
连续的用
户逻辑地址空 作业空间
OS
间,经过装入
程序直接装入
用
分区的低地址
户
部分的单一的
区
连续的区域。
单一分区
2.分配与释放
入口(作业逻辑空间)
逻辑空间≤用户区?
是 装入作业
否
出错: 内存不够
存储管理

分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号, 从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页 框(frame),也同样为它们加以编号,如0#块、1#块等等。在为进程分配内存时,以块为单位将进程中的若干个 页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称 之为“页内碎片”。
共享物理页面的进程对应此页面的虚拟内存位置可以不同。
存储知识结构
1、系统管理:UNIX/Linux/Windows操作系统管理。 2、开发技术:C/C++,网络编程,多进程/多线程,进程间通信。 3、存储基础:磁盘、RAID阵列、文件系统等存储相关硬件和软件的安装、配置、调试。 4、存储系统:RAID, DAS, SAN, NAS, CAS等。 5、存储协议:TCP/IP, SCSI, iSCSI, NFS/CIFS等。 6、文件系统:VFS, EXTx/NTFS/FAT32等磁盘文件系统, NFS/CIFS网络文件系统, Lustre/GFS/AFS等分布 式文件系统。 7、存储技术:Deduplication, SSD, HSM, Virtualization, Snapshot, Replication, CDP, VTL, Thin Provision等等。 8、存储架构:掌握不同行业的存储需求,能够根据实际需求提出存储解决方案,并进行存储系统架构、设计 和实现 。
计算机操作系统(汤小丹第三版)第4章 存储器管理

10000
1000 2500
LOAD 1,2500
365
11000 12500 15000
LOAD 1,2500 365
LOAD 1,12500
5000
作业地址空间
内存空间
图 4-3 作业装入内存时的情况
11
第四章 存储器管理
3、动态运行时装入方式(Denamle Run-time Loading)
3)重定位分区分配算法:
4)优、缺点:
30
第四章 存储器管理
4.3.7 对换(Swapping)
1、 对换的引入 对换:把内存中暂时不能运行的进程或者暂时不用的 程序和数据,调出到外存上。
对换是提高内存利用率的有效措施。
* * 整体对换 部分对换 进程对换
页面对换
分段对换
31
第四章 存储器管理
4.3.7 对换(Swapping)
图 4-7 内存分配流程
25
第四章 存储器管理
(2)回收内存
空闲块合并
图 4-8 内存回收时的情况
26
第四章 存储器管理
4.3.6 可重定位分区分配
1、 动态重定位的引入
操作系统 用户程序1 10 KB 用户程序3 30 KB 用户程序6 14 KB 用户程序9 26 KB (a) 紧凑前 (b) 紧凑后
33
第四章 存储器管理
4.4.1 页面与页表
1、页面 (1)将一个进程的逻辑地址空间分成若干个大小相等
的片,称为页面或页,并加以编号。 (2)把内存空间分成与页面相同大小的若干个存储块, 称为(物理)块或页框(frame), 同样加以编号。 (3)分配内存时,以块为单位将进程中的若干个页分 别装入到多个可以不相邻接的物理块中。 (4)由于进程的最后一页经常装不满一块而形成了不 可利用的碎片,称之为“页内碎片”。
第4章4-5节基本分页、分段存储管理方式

页号
计算公式:物理地址 块号 页面大小+块内地址 块号*页面大小 计算公式:物理地址=块号 页面大小 块内地址
0 1
块 号 2 4 6 7
逻辑地址3500:
页号:3500/1024=3 对应物理块号:7 页内地址:428
2 3
故物理地址为: 7*1024+428=7596
逻辑地址4500:
页号:4500/1024=4
第四章 存 储 器 管 理
问题:
在分页系统中,内存的利用率是不是就 可以达到100%了? 由于进程的最后一页经常装不满一块 而形成了不可利用的碎片,称之为“页内 页内 碎片”。 碎片
第四章 存 储 器 管 理
2) 页面大小 在分页系统中的页面其大小应适中: 页面 太小 太大 页面数 分配时间 多 少 长 短 内存碎片 减小 变大 内存利 用率 高 低
n
1742 外部页表
1023 0 1 2 第n页页表 1468
图 4-4 两级页表结构 1023
… … … 内存空间
114 1151468第四章 存 Nhomakorabea 器 管 理
(2)地址变换机构
外部页号 P1 外部页内地址 页内地址 P2 d
逻辑地址
外部页表寄存器
+
… 外部页表
+
… 页表
b d 物理地址
图 4-5 具有两级页表的地址变换机构
第四章 存 储 器 管 理
4.4.2 地址变换机构
假设页面大小为1K 假设页面大小为
1. 基本的地址变换机构
越界中断 逻辑地址 3100 页表寄存器
页表始址 页表长度
≥
页号 3
页内地址 28
块号 页号 0 1 2 3 … 页表 物理地址 9244 1 3 4 9
计算机操作系统(习题集)第四章 答案

第四章存储器管理一、单项选择题1、存储管理的目的是(C )。
A.方便用户B.提高内存利用率C.方便用户和提高内存利用率D.增加内存实际容量2、在( A)中,不可能产生系统抖动的现象。
A.固定分区管理B.请求页式管理C.段式管理D.机器中不存在病毒时3、当程序经过编译或者汇编以后,形成了一种由机器指令组成的集合,被称为(B )。
A.源程序B.目标程序C.可执行程序D.非执行程序4、可由CPU调用执行的程序所对应的地址空间为(D )。
A.符号名空间B.虚拟地址空间C.相对地址空间D.物理地址空间5、存储分配解决多道作业[1C]划分问题。
为了实现静态和动态存储分配,需采用地址重定位,即把[2C]变成[3D],静态重定位由[4D]实现,动态重定位由[5A]实现。
供选择的答案:[1]:A 地址空间 B 符号名空间 C 主存空间 D 虚存空间[2]、[3]: A 页面地址 B 段地址 C 逻辑地址 D 物理地址 E 外存地址 F 设备地址[4]、[5]: A 硬件地址变换机构 B 执行程序 C 汇编程序D 连接装入程序E 调试程序F 编译程序G 解释程序6、分区管理要求对每一个作业都分配(A )的内存单元。
A.地址连续B.若干地址不连续C.若干连续的帧D.若干不连续的帧7、(C )存储管理支持多道程序设计,算法简单,但存储碎片多。
A.段式B.页式C.固定分区D.段页式8、处理器有32位地址,则它的虚拟地址空间为( B)字节。
A.2GBB.4GBC.100KBD.640KB9、虚拟存储技术是( A)。
A.补充内存物理空间的技术B.补充相对地址空间的技术C.扩充外存空间的技术D.扩充输入输出缓冲区的技术10、虚拟内存的容量只受( D)的限制。
A.物理内存的大小B.磁盘空间的大小C.数据存放的实际地址D.计算机地址字长11、虚拟存储技术与(A )不能配合使用。
A.分区管理B.动态分页管理C.段式管理D.段页式管理12、(B )是指将作业不需要或暂时不需要的部分移到外存,让出内存空间以调入其他所需数据。
《操作系统》习题集:第3章存储管理

《操作系统》习题集:第3章存储管理第3章存储管理-习题集⼀、选择题1.把作业空间中使⽤的逻辑地址变为内存中物理地址称为()。
【*,★,联考】A. 加载B. 重定位C. 物理化D. 逻辑化2.为了保证⼀个程序在主存中改变了存放位置之后仍能正确执⾏,则对主存空间应采⽤()技术。
【*,★,联考】A. 静态重定位B. 动态重定位C. 动态分配D. 静态分配3.分区分配内存管理⽅式的主要保护措施是()。
(注:分区包括“固定分区”和“可变分区”)【**,09考研】A. 界地址保护B. 程序代码保护C. 数据保护D. 栈保护4.分区管理要求对每⼀个作业都分配()的内存单元。
【*,★,联考】A. 地址连续B. 若⼲地址不连续C. 若⼲连续的块D. 若⼲不连续的块5.在固定分区分配中,每个分区的⼤⼩是()。
【*,联考】A. 相同B. 随作业长度变化C. 可以不同但预先固定D. 可以不同但根据作业长度固定6.在可变式分区存储管理中的拼接技术可以()。
(注:拼接是指通过移动将多个分散的⼩分区合并成⼀个⼤分区。
)【*,★,联考】A. 集中空闲分区B. 增加内存容量C. 缩短访问周期D. 加速地址转换7.可变式分区存储管理中,采⽤拼接技术的⽬的是()。
【*,联考】A. 合并空闲分区B. 合并分配区C. 增加主存容量D. 便于地址转换8.某基于动态分区存储管理的计算机,其主存容量为55MB(初始为空),采⽤最佳适配算法,分配和释放的顺序为:分配15MB,分配30MB,释放15MB,分配8MB,分配6MB,此时主存中最⼤空闲分区的⼤⼩是()。
【**,★,10考研】A. 7MBB. 9MBC. 10MBD. 15MB9.在分页存储管理中,主存的分配是()。
【*,联考】A. 以块为单位进⾏B. 以作业的⼤⼩分配C. 以物理段进⾏分配D. 以逻辑记录⼤⼩进⾏分配10.⾸次适应算法的空闲分区是()。
【**,★,联考】A. 按⼤⼩递减顺序连在⼀起B. 按⼤⼩递增顺序连在⼀起C. 按地址由⼩到⼤排列D. 按地址由⼤到⼩排列11.最佳适应算法的空闲分区是()。
操作系统概论:内存管理
03
在最高层(L0层),是少量的快速 CPU寄存器,CPU可以在一个时钟
周期内访问他们
05
L3层是一个大的基于DRAM的主存, 可以再几十或几百个时钟周期内访
问他们
02
在这个层次系统中,从高层到底层 (L0-L5),较低层的存储设备访
问慢,容量更大、价格更便宜
L1、L2层是一个或多个小型或中
04
型的基于SRAM的高速缓存存储器,
两级和多级页表
将页表再进行分页
反置页表
为每个页框设一个表项,表项中存 放进程号和页号
空闲页框的管理
使用位图管理空闲页框 使用空闲页框的链表
内存管理
基于分页的虚拟存储系统
虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统 在虚拟存储器系统中,进程无需全部装入,只需要装入一部分即可运行 虚拟存储技术实现的思想是,只把进程的一部分装入内存。进程执行过程中,CPU访问内存时如果发现所访问
动态分区分配
动态分区分配的流程
内存分配有内存分配程序完成。 内存不再被应用程序需要时,由系 统调用内存回收程序回收原来被占
用的内存分区
内存分配流程
内存管理
基本分页存储管理方式
01
把进程离散的 存储在内存中 物理地址不连 续的区域中, 这种内存管理 方式称为离散 内存管理方式
02
分页存储管理 的基本原理
3.程序中存在很多循环结构,他们虽然 由少数指令构成,但多次执行
4.程序中往往包括许多对数据结构的处 理,如对数组的操作,他们往往都局限 在很小的范围内。 总的来说,局部性 原理表现为时间和空间的局部性
局部性
时间局部性 如果程序中的某条指令一旦执行,
(第5章操作系统的资源管理)习题五答案
(第5章操作系统的资源管理)习题五答案习题五参考答案(P132)5-1什么是虚拟资源?对主存储器⽽⾔,⽤户使⽤的虚拟资源是什么?答:虚拟资源是⽤户使⽤的逻辑资源,是操作系统将物理资源改造后,呈现给⽤户的可供使⽤的资源。
对主存储器⽽⾔,⽤户使⽤的虚拟资源是虚拟存储器。
提供给⽤户使⽤虚拟存储器的⼿段是逻辑地址空间,⽤户在编程时使⽤的是逻辑地址,空间⼤⼩不受限制(也就是说逻辑地址空间可以⽐物理地址空间⼩也可以⽐物理地址空间⼤)。
5-2常⽤的资源分配策略有哪两种?在每⼀种策略中,资源请求队列的排序原则是什么?答:常⽤的资源分配策略有先来先服务策略和优先调度策略。
在先来先服务策略中资源请求队列的排序原则是按照提出请求的先后次序排序;在优先调度策略中资源请求队列的排序原则是按照提出请求的紧迫程度(即优先级)从⾼到底排序。
5-3什么是移臂调度?什么是旋转调度?答:移臂调度是指在满⾜⼀个磁盘请求时,总是选取与当前移臂前进⽅向上最近的那个请求,使移臂距离最短。
旋转调度是指在满⾜⼀个磁盘请求时,总是选取与当前读写磁头旋转⽅向上最近的那个请求,使旋转圈数最少。
5-4什么是死锁?试举例说明。
答:⼀组进程中,每个进程都⽆限等待被该组进程中另⼀进程所占有的资源,因⽽永远⽆法得到资源,这种现象称为进程死锁,这⼀组进程就称为死锁进程。
设某系统拥有⼀台输⼊机和⼀台打印机,并为进程P1和P2所共享。
在t1时刻,进程P1和P2分别占⽤了输⼊机和打印机。
在t2(t2 > t1)时刻,进程P1请求打印机,P1将被阻塞,进⼊等待打印机的等待队列中,等待P2释放打印机。
在t3(t3 > t2)时刻,进程P2请求输⼊机,P2将被阻塞,进⼊等待输⼊机的等待队列中,等待P1释放输⼊机。
此时,P1和P2进⼊了永久的互等状态,即P1和P2成为死锁进程,出现了死锁现象。
5-5产⽣死锁的原因是什么?产⽣死锁的必要条件是什么?答:产⽣死锁的原因主要有:(1)竞争有限的系统资源。
14存储管理3分段段页式管理
段号 状态 页表大小 页表始址 0 1 1 1 2 1 3 0 4 1 段表
页表 主存
图4-22 利用段表和页表实现地址映射
2.地址变换过程
在段页式系统中,为了便于实现地址变换,须配 置一个段表寄存器,其中存放段表始址和段表长TL。 进行地址变换时,首先利用段号S,将它与段表长TL进 行比较。若S<TL,表示未越界,于是利用段表始址和 段号来求出该段所对应的段表项在段表中的位置,从 中得到该段的页表始址,并利用逻辑地址中的段内页 号P来获得对应页的页表项位置,从中读出该页所在的 物理块号b,再利用块号b和页内地址来构成物理地址。 图4-23示出了段页式系统中的地址变换机构。
2.页表
列出了作业的逻辑地址与其在主存中的 物理地址间的对应关系。 一个页表中包含若干个表目,表目的自 然序号对应于用户程序中的页号,表目 中的块号是该页对应的物理块号。 页表的每一个表目除了包含指向页框的 指针外,还包括一个存取控制字段。 表目也称为页描述子。
分页管理中页与页框的对应 关系示意图
段表寄存器 段表始址 + 段表 0 1 2 3 页表长度 + 0 1 2 3 b 块号 b 块内地址 页表 段表长度 > 段超长 段号S 页号P 页内地址
页表始址
图4-23
段页式系统中的地址变换机构
在段页式系统中,为了获得一条指令或数据,须 三次访问内存。第一次访问是访问内存中的段表,从 中取得页表始址;第二次访问是访问内存中的页表, 从中取出该页所在的物理块号,并将该块号与页内地 址一起形成指令或数据的物理地址;第三次访问才是 真正从第二次访问所得的地址中,取出指令或数据。 显然,这使访问内存的次数增加了近两倍。为了 提高执行速度,在地址变换机构中增设一个高速缓冲 寄存器。每次访问它时,都须同时利用段号和页号去 检索高速缓存,若找到匹配的表项,便可从中得到相 应页的物理块号,用来与页内地址一起形成物理地址; 若未找到匹配表项,则仍须再三次访问内存。
操作系统第4章练习题
操作系统第4章练习题第4章存储器管理4.1 典型例题解析【例1】某系统采用动态分区分配方式管理内存,内存空间为640K,高端40K用来存放操作系统。
在内存分配时,系统优先使用空闲区低端的空间。
对下列的请求序列:作业1申请130K、作业2申请60K、作业3申请100K、作业2释放60K、作业4申请200K、作业3释放100K、作业1释放130K、作业5申请140K、作业6申请60K、作业7申请50K、作业6释放60K,请分别画图表示出使用首次适应算法和最佳适应算法进行内存分配和回收后内存的实际使用情况。
答:使用首次适应算法和最佳适应算法进行上述内存的分配和回收后,内存的实际使用情况分别如图(a)和(b)所示。
(a)(b)【例2】对一个将页表存放在内存中的分页系统: (1)如访问内存需要0.2μs,有效访问时间为多少?(2)如果加一快表,且假定在快表中找到页表项的机率高达90%,则有效访问时间又是多少(假定查快表需花的时间为0)?答:(1)有效访问时间为:2×0.2=0.4μs (2)有效访问时间为:0.9×0.2+(1—0.9)×2×0.2=0.22 ps。
【例3】某系统采用页式存储管理策略,拥有逻辑空间32页,每页2K,拥有物理空间1M。
(1)写出逻辑地址的格式。
(2)若不考虑访问权限等,进程的页表有多少项?每项至少有多少位?(3)如果物理空间减少一半,页表结构应相应作怎样的改变?答:(1)该系统拥有逻辑空间32页,故逻辑地址中页号必须用5位来描述:而每页为2K,因此,页内地址必须用11位来描述,这样可得到它的逻辑地址格式如下:15 11 10 0(2)每个进程最多有32个页面,因此,进程的页表项最多为32项;若不考虑访问权限等,则页表项中只需给出页所对应的物理块块号,1M的物理空间可分成29个内存块,故每个页表项至少有9位(3)如果物理空间减少一半,则页表中页表项数仍不变,但每项的长度可减少1位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统 实 验 报 告 课程名称 操作系统实验 课程编号 0906553 实验项目名称 物理存储器与进程逻辑地址空间的管理 学号 2012061216 年级 2012级 姓名 吕梦瑶 专业 计算机科学与技术
学生所在学院 计算机科学与技术 指导教师 王勇 实验室名称地点 21#427
哈尔滨工程大学 计算机科学与技术学院 第七讲 物理存储器与进程逻辑地址空间的管理 一、实验概述 1. 实验名称 物理存储器与进程逻辑地址空间的管理 2. 实验目的 (1) 通过查看物理存储器的使用情况,并练习分配和回收物理内存,从而掌握物理存储器的管理方法。 (2) 通过查看进程逻辑地址空间的使用情况,并练习分配和回收虚拟内存,从而掌握进程逻辑地址空间的管理方法。 3. 实验类型 验证型 4. 实验内容 (1)准备实验 (2)阅读控制台命令“pm”相关的源代码,并查看其执行的结果 (3)阅读控制台命令“vm”相关的源代码,并查看其执行的结果 (4)在系统进程中分配虚拟页和释放虚拟页 (5)在应用程序进程中分配虚拟页和释放虚拟页 二、实验环境 WinXP OS Lab c语言 三、实验过程 1.实验流程图 绘制MiAllocateAnyPages函数的流程图 绘制 MiFreePages函数的流程图 2. 需要解决的问题及解答案。 (1)按F10单步调试MiAllocateAnyPages函数的执行过程,尝试回答下面的问题: ①本次分配的物理页的数量是多少?分配的物理页的页框号是多少? 答:本次分配的物理页的数量是1,分配的物理页的页框号是0x409. ② 物理页是从空闲页链表中分配的?还是从零页链表中分配的? 答:物理页是从空闲页链表中分配的. ③哪一行语句减少了空闲页的数量?哪一行语句将刚刚分配的物理页由空闲状态修改为忙状态? 答:第226行MiFreePageListHead = MiGetPfnDatabaseEntry(Pfn)->Next;和第227MiFreePageCount--;减少了空闲页的数量,第229行将刚刚分配的物理页由空闲状态修改为忙状态. ④绘制MiAllocateAnyPages函数的流程图。 见实验流程图 (2)按F10单步调试MiFreePages函数的执行过程,尝试回答下面的问题: ① 本次释放的物理页的数量是多少?释放的物理页的页框号是多少?释放的物理页是之前分配的物理页吗? 答:本次释放的物理页的数量是1,释放的物理页的页框号0x409,释放的物理页是之前分配的物理页. ② 释放的物理页是被放入了空闲页链表中?还是零页链表中? 答:释放的物理页被放入了空闲页链表中。 ③绘制 MiFreePages函数的流程图。 见实验流程图
(3)按F10单步调试MmAllocateVirtualMemory函数的执行过程,尝试回答下面的问题: ① 分配的虚拟页的起始地址是多少?分配的虚拟页的数量是多少?它们和参数BaseAddress和RegionSize初始化的值有什么样的关系? 答:分配的虚拟页的起始地址是0xa0003000,分配的虚拟页的数量是1,BaseAddress和RegionSize初始化的值是期望保留或者提交的地址区域的起始地址和大小。 ② 分配虚拟页的同时有为虚拟页映射实际的物理页吗?这是由哪个参数决定的? 答:分配虚拟页的同时有为虚拟页映射实际的物理页,这是由第三个参数AllocationType决定的。 ③ 分配的虚拟页是在系统地址空间(高2G)还是在用户地址空间(低2G)?这是由哪个参数决定的? 答:分配的虚拟页是在系统地址空间(高2G),这是由第四参数SystemVirtual决定的。 ④ 参考MiReserveAddressRegion函数的定义和注释,说明该函数的功能。 答: MiReserveAddressRegion函数的功能是保留一段虚拟地址区域。 (4)按F10单步调试MmFreeVirtualMemory函数的执行过程,尝试回答下面的问题: ① 本次释放的虚拟地址是多少?释放的虚拟页是之前分配的虚拟页吗? 答:本次释放的虚拟地址是0xa0003000,是之前分配的虚拟页。 ② 参考MiFindReservedAddressRegion函数、MiFreeAddressRegion函数和MiDecommitPages函数的定义和注释,说明这些函数的功能。 答: MiFindReservedAddressRegion函数用于查找已保留地址区域,如果目标区域非已保留区域则返回失败,MiFreeAddressRegion函数用于释放已保留地址区域和MiDecommitPages 函数用于释放映射在连续虚拟页框上的物理页框。 (5)按F10单步调试MmAllocateVirtualMemory函数的执行过程,要求给出监视窗口BaseAddress和RegionSize个变量前后变化截图界面。
(6)按F10单步调试MmFreeVirtualMemory函数的执行过程,要求给出监视窗口BaseAddress和RegionSize个变量前后变化截图界面。 3. 程序运行时的初值和运行结果 (1)阅读控制台命令“pm”相关的源代码,并查看其执行的结果 创建的EOS Kernel项目,生成后调试。输入命令“pm”。
(2)分配物理页和释放物理页 使用pm.c文件中ConsoleCmdPhysicalMemory函数的函数体替换ke/sysproc.c文件中ConsoleCmdPhysicalMemory函数的函数体。 生成后调试。输入命令“pm”。
调试分配物理页和释放物理页: (3)阅读控制台命令“vm”相关的源代码,并查看其执行的结果
在EOS控制台中输入命令“pt”后按回车。“pt”命令可以输出当前系统中的进程列表,其中系统进程的ID为1。
在EOS控制台中输入命令“vm 1”后按回车
执行控制台命令“vm”,查看当创建了一个应用程序进程后,系统进程和应用程序进程中虚拟地址描述符的信息: 将本实验文件夹中的LoopApp.exe文件添加到软盘镜像的根目录中,在EOS控制台中输入命令“A:\LoopApp.exe”后按回车。 按Ctrl+F2切换到“Console-2”,然后输入命令“pt”后按回车 输入命令“vm 1”后按回车 输入命令“vm 31”后按回车 (4)在系统进程中分配虚拟页和释放虚拟页 使用vm.c文件中ConsoleCmdVM函数的函数体替换ke/sysproc.c文件中ConsoleCmdVM函数的函数体。生成后调试。 在EOS控制台中输入命令“vm 1”后按回车。命令执行的结果会同时转储在“输出”窗口中.
骤调试分配虚拟页和释放虚拟页的过程: 在EOS控制台中输入命令“vm 1”后按回车。 (5)在应用程序进程中分配虚拟页和释放虚拟页 修改代码。运行10s内执行命令“vm 31”,10s后再次执行命令“vm 31”。
4.原代码及注释 #include "EOSApp.h" #define N 10000 //定义等待时间 10S=100000ms INT *d; int main() { /* 调用API函数VirtualAlloc,分配一个整型变量所需的空间,并使用一个整型变量的指针指向这个空间。*/ if(d = VirtualAlloc(0,sizeof(int),MEM_RESERVE|MEM_COMMIT)) { printf("Allocated %d bytes virtual memory of 0x%x\n",sizeof(int),d); printf("\n"); /* 修改整型变量的值为0xFFFFFFFF。在修改前输出整型变量的值,在修改后再输出整型变量的值*/ printf("virtual memory original value:0x%x\n",*d); *d = 0xFFFFFFFF; printf("\n"); printf("virtual memory new value:0x%x\n",*d); printf("\n"); printf("Wait for 10 seconds"); printf("\n"); Sleep(N); /* 调用API函数Sleep,等待10秒钟。*/ if(VirtualFree(d,0,MEM_RELEASE)) //调用API函数VirtualFree,释放之前分配的整型变量的空间。 { printf("\n"); printf("Realease virtual memory success!"); } else { printf("\n"); printf("realease error"); } printf("\n"); printf("\nEndless loop!"); while(1) /* 进入死循环,这样应用程序就不会结束。 */ { }; } else { printf("Error!\n"); return 0; } printf("Success!\n"); return 1; } 四.实验体会 本次试验通过查看物理存储器的使用情况,练习分配和回收物理内存,我掌握物理存储器的管理方法。并且查看进程逻辑地址空间的使用情况,练习分配和回收虚拟内存,使我掌握进程逻辑地址空间的管理方法。在亲自动手过程中,我学会了如何在系统进程以及在应用程序进程中分配虚拟页和释放虚拟页,促进了我对课本中知识的理解。