操作系统课程设计内存管理

发布 2022-10-05 13:15:28 阅读 2722

内存管理模拟。

实验目标:本实验的目的是从不同侧面了解 windows 2000/xp 对用户进程的虚拟内存空间的管理、分配方法。同时需要了解跟踪程序的编写方法(与被跟踪程序保持同步,使用 windows提供的信号量)。

对windows分配虚拟内存、改变内存状态,以及对物理内存(physical memory)和页面文件(pagefile)状态查询的 api 函数的功能、参数限制、使用规则要进一步了解。

默认情况下,32 位 windows 2000/xp 上每个用户进程可以占有 2gb 的私有地址空间,操作系统占有剩下的 2gb。windows 2000/xp 在 x86 体系结构上利用二级页表结构来实现虚拟地址向物理地址的变换。一个 32 位虚拟地址被解释为三个独立的分量——页目录索引、页表索引和字节索引——它们用于找出描述页面映射结构的索引。

页面大小及页表项的宽度决定了页目录和页表索引的宽度。

实验要求:使用 windows 2000/xp 的 api 函数,编写一个包含两个线程的进程,一个线程用于模拟内存分配活动,一个线程用于跟踪第一个线程的内存行为,而且要求两个线程之间通过信号量实现同步。模拟内存活动的线程可以从一个文件中读出要进行的内存操作,每个内存操作包括如下内容:

时间:操作等待时间。

块数:分配内存的粒度。

操作:包括保留(reserve)一个区域、提交(commit)一个区域、释放(release)一个区域、**(decommit)一个区域和加锁(lock)与解锁(unlock)一个区域,可以将这些操作编号存放于文件。保留是指保留进程的虚拟地址空间,而不分配物理存储空间。

提交在内存中分配物理存储空间。**是指释放物理内存空间,但在虚拟地址空间仍然保留,它与提交相对应,即可以**已经提交的内存块。释放是指将物理存储和虚拟地址空间全部释放,它与保留(reserve)相对应,即可以释放已经保留的内存块。

大小:块的大小。

访问权限 : 共五种 , 分别为 page_readonly,page_readwrite ,page_execute,page_execute_read 和 page exetute_readwrite。可以将这些权限编号存放于文件中跟踪线程将页面大小、已使用的地址范围、物理内存总量,以及虚拟内存总量等信息显示出来。

三、主要内容。

1. 设计思路。

windows 进程的虚拟地址空间中也有三种状态的页面:空闲页面、保留页面和提交页面。空闲(free)页面:

空闲页面是指那些可以保留或提交的可用页面。保留(reserved)页面:保留页面是逻辑页面已分配但没有分配物理存储的页面。

设置这种状态的效果是可以保留一部分虚拟地址,这样,如果不预先释放这些地址,就不能被其他应用程序(如 malloc,localalloc 等)的操作所使用。试图读或写空闲页面或保留页面将导致页面出错异常。保留页面可被释放或提交。

提交(committed)页面:提交页面是物理存储(在内存中或磁盘上)已被分配的页面。可对它加以保护,不许访问或允许只读访问,或允许读写访问。

提交也可以被**以释放存储空间,从而变成保留页面。

在本实验中,首先创建工程makefile生成随机输入文件,其中包含对内存要求作的各种操作;然后创建工程memoryallocation,实现输入文件所要求的各项内存管理操作。

2. 主要数据结构。

实现内存在管理的主要api函数有:

getsysteminfo

函数功能:返回当前系统信息,存放入 lpsysteminfo 中。

globalmemorystatus

函数功能:获得计算机系统中当前使用的物理内存和虚拟内存的信息。使用 globalmemorystatus 函数。

可以判断应用程序能够分配多少与其它应用程序不冲突的内存空间。但globalmemorystatus 函数返回的信息是不稳定的,我们不能保证两次调用该函数都能返回到相同的信息。

virtualquery

函数功能:提供有关调用进程虚拟窨中的页面信息。

virtualalloc

函数功能:在调用进程的虚拟地址中保留或提交页面。除非设置了 mem_reset 标志,否则被这个函。

数分配的内存单元被自动初始化为 0。

virtualallocex

函数功能:使用该函数可以保留、提交或者保留和提交进程虚拟空间的页面的基址,否则返回 null。

virtualfree

函数功能:可以释放或注销调用进程虚拟空间中的页面。成功则返回一个非零值,否则返回零值。

virtualfreeex

函数功能:该函数可以释放或注销指定进程虚拟空间中的页面。virtualfreeex 函数和 virtualfree 函数区别是:

virtualfree 函数释放调用进程的地址空间,而 virtualfreeex 函数可以释放任意指定的进程的地址空间。如果函数调用成功则返回非零值,否则返回零值。

virtuallock

功能:该函数可以将进程虚拟空间中的内存加锁。以确保后面的对该区域的存取操作不会失败。成功则返回一个非零值,否则返回一个零值。

virtualunlock

功能:该函数可以将进程虚拟空间指定范围内的页面解锁,从以系统在必要时可以将这些页面换出。

到页面文件中。函数调用成功则返回一个非零值,否则返回零值。

3. 主要**段。

首先,定义两个结构体struct operation和struct trace,分别记录对内存的操作信息和跟踪每一次分配活动,并为之分别定义信号量allo和rac,以实现对内存操作的互斥。具体实现用函数waitforsingleobject (trac,infinite)和releasesemaphore (allo,1,null)来实现。

函数dword tracker (lpdword lpdwparm) 用以跟踪allocator线程的内存行为,并输出必要信息。

函数void allocator ()用以模拟内存分配活动的线程。

4. 主要**结构。

/文件生成程序。

# include <>

# include <>

# include <>

# include <>

struct operation

int time起始时间。

int block; /内存页数。

int oper操作。

int protection; /权限。

int main ()

file* file;

file=fopen ("opfile","wb");opfile"为二进制文件用以确定内存操作。

operation op;

for (int j=0;j<6;j++)0--保留,1--提交,2--锁,3--解锁,4--**,5--释放。

for (int i=0;i<5;i++)

0-page_readonly;

1-page_readwrite;

2-page_execute;

3-page_execute_read;

4-page_execute_readwrite;

return 0;

2) memory_

/从文件读入每次的操作,并将结果输出到文件中。

# include <>

# include <>

# include <>

# include <>

# include <>

struct operation

int time; /起始时间。

int block; /内存页数。

int oper; /操作。

int protection; /权限。

struct trace //跟踪每一次分配活动的数据结构。

lpvoid start; /起始地址。

long size; /分配的大小。

handle allo,trac; /信号量句柄。

dword tracker (lpdword lpdwparm) /跟踪allocator线程的内存行为,并输出必要信息。

ofstream outfile; /输出文件。

for (int i=0;i<=30;i++)

waitforsingleobject (trac,infinite); 等待allocator一次内存分配活动结束。

//打印内存状况和系统状况。

outfile< /以下一段显示系统信息,每次执行操作后系统信息不变。

system_info info; /系统消息。

getsysteminfo (&info);

outfile<<"dwactiveprocessormask"<

操作系统课程设计文件管理系统

目录。一 课程设计题目和目的 1 二 开发工具及环境 1 三 课程设计要求 1 四 程序设计思想 1 五 文件系统的实现 2 六 操作说明 5 七 程序运行结果 10 八 参考文献 15 九 心得体会 15 一 课程设计题目和目的。本设计的目的是通过设计和调试一个简单的文件系统,主要是模拟文件操作命...

操作系统课程设计文件管理系统

目录。一 课程设计题目和目的 1 二 开发工具及环境 1 三 课程设计要求 1 四 程序设计思想 1 五 文件系统的实现 2 六 操作说明 5 七 程序运行结果 10 八 参考文献 15 九 心得体会 15 目录。一 课程设计题目和目的 1 二 开发工具及环境 1 三 课程设计要求 1 四 程序设计...

操作系统课程设计 进程管理

操作系统。课程设计报告。题目 专业 班级 姓名 学号 指导老师 年月日。操作系统 课程设计任务书。一 课程设计题目 任选一个题目 1.模拟进程管理。2.模拟处理机调度。3.模拟存储器管理。4.模拟文件系统。5.模拟磁盘调度。二 设计目的和要求。1.设计目的。操作系统原理 课程设计是计算机科学与技术专...