西工大计算机操作系统课程设计实验报告bh05xh2_工作集

合集下载

计算机操作系统实验课实验报告

计算机操作系统实验课实验报告

实验报告实验课程: 计算机操作系统学生姓名:XXX学号:XXXX专业班级:软件2014年12月25日目录实验一熟悉Windows XP中的进程和线程.. 3实验二进程调度 (7)实验三死锁避免—银行家算法的实现 (18)实验四存储管理 (24)实验一熟悉Windows XP中的进程和线程一、实验名称熟悉Windows XP中的进程和线程二、实验目的1、熟悉Windows中任务管理器的使用。

2、通过任务管理器识别操作系统中的进程和线程的相关信息。

3、掌握利用spy++.exe来察看Windows中各个任务的更详细信息。

三、实验结果分析1、启动操作系统自带的任务管理器:方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“taskmgr.exe”。

2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并完成下表:表一:统计进程的各项主要信息3、启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。

再从任务管理器中分别找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是任务管理器无法结束进程,原因是该系统是系统进程。

4、在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化桌面上图标菜单都消失了、得到的结论explorer.exe是管理桌面图标的文件(说出explorer.exe进程的作用)。

5、运行“spy++.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进程“explorer.exe”的各项信息,并填写下表:进程:explorer.exe 中的各个线程6、注意某些线程前有“+”,如图所示:,说明二者之间的差异前有“+”其器线程下有窗口。

四、心得体会通过本次实验,我了解到了windows系统中进程的管理与操作,我了解了如何切出任务管理器,任务管理器应用与其他与进程相关的知识,明白了有些系统程序不能够关闭,系统中的进程与线程虽然很多,但是其中有许多关联,只要弄清楚其中的关联那么就能够运用好进程与线程,达到我们的目的。

计算机操作系统课程设计报告

计算机操作系统课程设计报告

计算机操作系统课程设计学院:同济大学浙江学院系(部):机械与电气信息工程系专业:计算机科学与技术姓名:学号:指导教师:构建工具:Microsoft Visual C++ 6.0实习地点:学校实习时间:2011.7.23—2011.9.1C++课程设计报告目录1.引言 (3)1.1编写目的 (3)1.2 背景说明 (3)1.3 定义 (3)1.4 参考资料 (3)2.任务概述 (3)2.1 目标 (3)2.2用户的特点 (4)2.3假定和约束 (4)3.需求分析 (5)3.1.功能需求 (5)4.总体设计 (6)5.测试报告 (7)5.1测试时间.地点和人员 (7)5.2测试环境描述 (7)5.3测试结果 (7)6.结论与心得 (7)1.引言1.1编写目的本文档将对《模拟内存模拟》软件开发需求进行描述,使专业人员了解本程序的设计思想,实现功能,便于更好地使用和维护。

1.2 背景说明本项目作为操作系统课程设计的训练项目提出。

在这次项目的设计开发过程中掌握内存管理的基本策略和算法,了解软件文档的相关标准和编写原则,训练并掌握软件各类文档写作的技巧,同时提高开发应用程序的能力。

本项目的名称:模拟内存分配本项目的提出者:贺向东本项目的开发者:同济大学浙江学院08计算机-陈佳1.3 定义模拟内存分配:展示操作系统中内存的分配过程和页面淘汰过程的平台1.4 参考资料《计算机操作系统(第2版)》作者:张海藩《软件工程导论》作者:彭民德肖健宇《Visual C++ 图形程序设计》作者:许志闻2.任务概述2.1 目标1、定义一个输入的数据格式要求和前面的作业调度和进程调度结合进行总体设计,定义一个符合模拟系统中程序运行所需要的输入数据的格式,设计模拟系统所需的数据格式2、实现存储管理2.1 分区管理分区管理要实现固定分区、可变分区两种模拟实现要求分区的分配可以直观地通过图形化的方式展示2.2 段页管理段页管理要实现段式、页式和段页式的模拟实现要求自己定义段式、页式、段页式的数据区域,结果用表格的方式实现2.3 页面置换算法页面置换算法要实现FIFO、LRU两种不同的置换要求自己定义所需的各种参数,要对算法执行的结果用表格或者图表的方式进行显示软件开发的最终目标是理解内存管理的基本策略和算法、软件文档写作规范以及了解如何在开发简单的软件,同时也希望最终产品能满足用户了解计算机内存工作方式的需求。

操作系统实验报告范文bx

操作系统实验报告范文bx

操作系统实验报告范文bx目录1进程管理2线程的管理113利用信号量实现进程控制114基于消息队列和共享内存的进程间通信135一个进程启动另一个程序的执行5一个进程启动另一个程序的执行17196个人总结19实验二进程管理【实验目的】加深对进程概念的理解,明确进程与程序的区别;进一步认识并发执行的实质。

【实验内容】进程创建编写一段程序,是系统调用fork()创建两个子进程。

当此程序运行时,在系统中有一个父进程和两个子进程活动。

让每一个进程在屏幕上显示一个字符:父进程显示a;子进程分别显示b和c。

进程控制修改已编写的程序,将每一个进程输出一个字符改为每一个进程输出一句话,再观察程序执行时屏幕上出现的现象进程的管道通信编写程序实现进程的管道通信。

使系统调用pipe()建立一个管道,两个子进程P1和P2分别向管道各写一句话:child1iendingameage!child2iendingameage!父进程从管道中读出两个来自子进程的信息并显示【实验要求】按照要求编写程序,放在相应的口录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告【实验设计】⑴进程创建(JecondJL.c某#include<tdio.h>intmain(){intvail,val2;while((vall=fork())==-l);if(vall==0){printf(,,bH);}ele{while((val2=fork())==-!);if(val2==0) {printf(,,cH);}eleprintf("a");}return0;⑵进程控制econd2c(~ FileEditViewSearchToolDocument旦wlp 0□Q1勺1臨eNewOpenSavePrint...UndoRedo:opyF[Jecond2.c某#include<tdioh>intmain() intvail,vaL2;while((vall=fork())==-l); if(vall==0){printf(B,rmchildll;B,); }ele{while某(val2=fork())==-l); if(val2==0>{printfCTmchild2;T;}eleprintf("parent;M);}}⑶进程的管道通信econd3.c-gedit-D某£ileEditViewSearchloot Qocumenthelp甸HvftftIB NewOpenSavePrint PateFindReplace0econd3.c某#include<tdio.h>#include<unitd.h>#include<tring.h>intmain(){intintfile[2];charbuf[100];pipe(file);while((vall=fork()>==-1);if(vall==0){printf(某ch丄Id】iinproceI\n某);cloe(file[OJ);write(filejlL某Chil.dliendingameage!\n 某,trlen(MChildliendingameage!\nR));}ele{leep(2);while((val2=fork())==-l);if(val2==0){p「intf("child2iinproce!\nr);cloe(file[0]);v/rite(fileil]j"Child2iendingameage!\nB,t 「len("Child2iendingameage!\nu));}ele{printf("parentiinproce!\nH);cloe(file[l]);read(file[O],buf,izeof(buf));printf(%\n,buf);v/ait();read(Tile[0],buf,izeof(buf));pnntf(buf);}}}【实验测试结果及分析】⑴进程创建显示顺序为bee的原因:在创建两个子进程时分别在两个子进程中写入了需要显示的字符,但因为创建的顺序有先后所以显示顺序是be,父进程中的3是最后显示的。

计算机操作系统 综合设计实验报告

计算机操作系统 综合设计实验报告

西南科技大学计算机科学与技术学院实验报告课程名称:计算机操作系统综合设计实验项目名称:文件系统的实现班级:成员:目录一、概述 (3)二、背景 (3)(1)文件系统的整体发展 (3)(2)分布式存储的发展演变 (5)(3)不足及改进 (6)(3)发展情况 (7)三、实现概要 (8)四、实验步骤 (9)4.1、思路流程图 (9)1.整体流程图 (9)2.函数流程图 (10)4.2、代码实现 (15)4.3、函数说明 (17)五、成果展示 (19)六、实验总结 (25)一、概述文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。

操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。

从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。

具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

二、背景分成以下四个要点:(1)文件系统的整体发展在上个世纪八十年代中期,大多数开放系统文件系统都是标准Unix系统的一部分。

一些厂商如Cray和Amdahl编写了他们自己的文件系统。

这些厂商这么做的原因是标准unix操作系统文件不能满足日常工作的需求。

Solaris操作系统上的UFS来自另一个操作系统,即Multics系统。

现在,许多厂商如Convex、MultiFlow和Thinking Machines等开发出大量的高性能文件系统。

任何拥有大规模系统的厂商都有自己的文件系统,所有的这些文件系统都试图去解决同样的问题。

我认为它们的可扩展性从大到小依次排列是这样的:元数据性能、恢复性能、小模块性能、大模块性、存储管理这里的关键字是可扩展性。

操作系统课程设计报告

操作系统课程设计报告

操作系统课程设计报告1. 引言操作系统是计算机系统中最核心的软件之一,它负责管理和优化计算机资源的分配和调度,为用户和应用程序提供一个可靠、高效的执行环境。

在操作系统课程设计中,我们通过设计一个简单的操作系统,深入理解操作系统的原理和功能,提升对操作系统的理解和实践能力。

本报告将详细介绍我们小组在操作系统课程设计过程中所完成的工作和实现的目标。

2. 设计目标在本次操作系统课程设计中,我们的设计目标包括:•实现一个基本的中断处理、进程调度和内存管理机制;•设计一个简单的文件系统;•确保操作系统的稳定性和可靠性;•实现用户命令解析和执行功能。

3. 系统架构我们的操作系统设计采用了经典的分层结构,主要由硬件抽象层、内核和用户接口层组成。

1.硬件抽象层:负责与硬件进行交互,提供基本的底层硬件接口,如处理器管理、中断处理、设备控制等。

2.内核:实现操作系统的核心功能,包括进程管理、内存管理、文件系统管理等。

这一层是操作系统的核心,负责管理和调度系统资源。

3.用户接口层:为用户提供简单友好的界面,解析用户输入的命令并调用内核功能进行处理。

用户可以通过命令行或图形界面与操作系统进行交互。

4. 功能实现4.1 中断处理中断是操作系统与外部设备通信的重要机制,我们的操作系统设计中实现了基本的中断处理功能。

通过在硬件抽象层中捕获和处理硬件的中断信号,内核可以对中断进行相应的处理,保证系统的响应能力和稳定性。

4.2 进程调度进程调度是操作系统中的重要任务之一,它决定了系统如何分配和调度上下文切换。

我们的操作系统设计中实现了一个简单的进程调度算法,通过时间片轮转算法和优先级调度算法来管理多个进程的执行顺序,以提高系统的吞吐量和响应性能。

4.3 内存管理内存管理是操作系统中必不可少的功能,它负责对系统内存的分配和回收。

我们的操作系统设计中实现了基本的内存管理功能,包括内存分区、内存空闲管理和地址映射等。

通过合理的内存管理,可以提高系统的内存利用率和性能。

计算机操作系统实验报告

计算机操作系统实验报告

计算机操作系统实验报告实验⼀ Windows XP 系统管理⼀、实验⽬的1) 了解和学习Windows系统管理⼯具及其使⽤;2) 熟悉Windows系统⼯具的内容和应⽤;3)熟悉Windows操作系统的应⽤环境。

⼆、实验环境需要准备⼀台运⾏Windows XP操作系统的计算机。

三、背景知识Windows XP的“管理⼯具”中集成了许多系统管理⼯具,利⽤这些⼯具,管理员可以⽅便地实现各种系统维护和管理功能。

这些⼯具都集中在“控制⾯板”的“管理⼯具”选项下,⽤户和管理员可以很容易地对它们操作和使⽤。

在默认情况下,只有⼀些常⽤⼯具——如服务、计算机管理、事件查看器、数据源 (ODBC) 、性能和组件服务等——随Windows XP 系统的安装⽽安装。

四、实验内容与步骤为了帮助⽤户管理和监视系统,Windows XP提供了多种系统管理⼯具,其中最主要的有计算机管理、事件查看器和性能监视等。

步骤1:登录进⼊Windows XP。

步骤2:在“开始”菜单中单击“设置”-“控制⾯板”命令,双击“管理⼯具”图标。

在本地计算机“管理⼯具”组中,有哪些系统管理⼯具,基本功能是什么:1) 本地安全策略:⽤于配置本地计算机的安全设置。

这些设置包括密码策略、帐户锁定策略、审核策略、IP 安全策略、⽤户权利指派、加密数据的恢复代理以及其他安全选项。

“本地安全策略”只有在⾮域控制器的计算机上才可⽤。

如果计算机是域的成员,这些设置将被从域接收到的策略覆盖。

2) 服务:⽤于管理计算机上的服务,设置要发⽣的恢复操作(如果服务失败)以及为服务创建⾃定义名字和描述从⽽能够⽅便地识别它们。

3)计算机管理:⽤于从单个的统⼀桌⾯实⽤程序管理本地或远程计算机。

“计算机管理”将⼏个 Windows XP 管理⼯具合并为⼀个单独的控制台树,从⽽更容易访问特定的计算机管理属性。

1. 计算机管理使⽤“计算机管理”可通过⼀个合并的桌⾯⼯具来管理本地或远程计算机,它将⼏个Windows XP管理实⽤程序合并到⼀个控制台⽬录树中,使管理员可以轻松地访问特定计算机的管理属性和⼯具。

计算机操作系统实验报告

计算机操作系统实验报告一、实验目的本次实验旨在深入了解计算机操作系统的基本原理和功能,通过实际操作和观察,掌握操作系统的进程管理、内存管理、文件系统管理等核心内容,提高对计算机系统的整体认识和实践能力。

二、实验环境操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容与步骤(一)进程管理实验1、创建进程使用 C++中的`CreateProcess`函数创建一个新的进程。

在代码中指定要执行的程序路径和相关参数,并观察新进程的创建和运行情况。

```cppinclude <windowsh>include <iostream>int main(){STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory(&si, sizeof(si));sicb = sizeof(si);ZeroMemory(&pi, sizeof(pi));//要执行的程序路径LPCWSTR path = L"C:\\Windows\\System32\\notepadexe";if (!CreateProcess(path, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)){std::cout <<"CreateProcess failed Error code: "<<GetLastError()<< std::endl;return 1;}//等待进程结束WaitForSingleObject(pihProcess, INFINITE);CloseHandle(pihProcess);CloseHandle(pihThread);}```2、进程同步与互斥通过编写代码实现生产者消费者问题,使用信号量来实现进程之间的同步与互斥。

```cppinclude <windowsh>include <iostream>include <queue>const int BUFFER_SIZE = 5;std::queue<int> buffer;HANDLE fullSemaphore;HANDLE emptySemaphore;HANDLE mutex;DWORD WINAPI Producer(LPVOID lpParam) {int item = 0;while (true) {WaitForSingleObject(emptySemaphore, INFINITE);WaitForSingleObject(mutex, INFINITE);if (buffersize()< BUFFER_SIZE) {bufferpush(item);std::cout <<"Producer produced: "<< item << std::endl;}ReleaseMutex(mutex);ReleaseSemaphore(fullSemaphore, 1, NULL);}return 0;}DWORD WINAPI Consumer(LPVOID lpParam) {int item = 0;while (true) {WaitForSingleObject(fullSemaphore, INFINITE);WaitForSingleObject(mutex, INFINITE);if (!bufferempty()){item = bufferfront();bufferpop();std::cout <<"Consumer consumed: "<< item << std::endl;}ReleaseMutex(mutex);ReleaseSemaphore(emptySemaphore, 1, NULL);}return 0;}int main(){fullSemaphore = CreateSemaphore(NULL, 0, BUFFER_SIZE, NULL);emptySemaphore = CreateSemaphore(NULL, BUFFER_SIZE, BUFFER_SIZE, NULL);mutex = CreateMutex(NULL, FALSE, NULL);HANDLE hProducerThread = CreateThread(NULL, 0, Producer, NULL, 0, NULL);HANDLE hConsumerThread = CreateThread(NULL, 0, Consumer, NULL, 0, NULL);WaitForSingleObject(hProducerThread, INFINITE);WaitForSingleObject(hConsumerThread, INFINITE);CloseHandle(fullSemaphore);CloseHandle(emptySemaphore);CloseHandle(mutex);CloseHandle(hProducerThread);CloseHandle(hConsumerThread);return 0;}```(二)内存管理实验1、内存分配与释放使用 C++中的`new`和`delete`操作符进行内存的动态分配和释放,并观察内存使用情况。

操作系统原理实验报告

操作系统原理实验报告一、实验目的操作系统是计算机系统中最为关键的软件之一,它负责管理和控制计算机的硬件和软件资源,为用户和应用程序提供一个方便、高效、稳定的运行环境。

本次实验的目的在于通过实际操作和观察,深入理解操作系统的核心原理和关键机制,包括进程管理、内存管理、文件系统管理、设备管理等方面,提高对操作系统的认识和应用能力。

二、实验环境本次实验使用的操作系统为 Windows 10 专业版,开发工具为Visual Studio 2019,编程语言为 C++。

三、实验内容及步骤(一)进程管理实验1、进程创建与终止编写程序,使用系统调用创建一个新的进程,并在新进程中执行特定的任务,如打印一段文本。

观察新进程的创建过程和资源分配情况。

编写程序,实现父进程等待子进程终止,并获取子进程的退出状态。

2、进程调度编写程序,模拟多个进程的并发执行,设置不同的优先级和时间片。

观察进程的调度顺序和执行时间,分析调度算法的效果。

(二)内存管理实验1、内存分配与释放编写程序,使用动态内存分配函数(如 malloc、new 等)申请一定大小的内存空间,并进行读写操作。

观察内存的分配和释放过程,检查是否存在内存泄漏。

2、内存分页与分段了解操作系统的内存分页和分段机制。

编写程序,模拟内存分页和分段的过程,展示地址转换和页面置换算法的效果。

(三)文件系统管理实验1、文件创建与读写编写程序,创建一个新文件,并向文件中写入一定的数据。

读取文件中的数据,并进行验证。

2、文件目录操作编写程序,实现对文件目录的创建、删除、遍历等操作。

观察文件目录的结构和变化。

(四)设备管理实验1、设备驱动程序了解设备驱动程序的基本概念和工作原理。

编写一个简单的设备驱动程序,实现对特定设备的控制和数据传输。

2、设备中断处理模拟设备中断的产生和处理过程。

编写中断处理程序,处理设备中断事件。

四、实验结果与分析(一)进程管理实验结果与分析1、进程创建与终止成功创建了新进程,并在新进程中打印出指定的文本。

(完整word版)操作系统课程设计实验报告

操作系统课程设计报告时间:2015-12-28~2013-1-8地点:信息技术实验中心计算机科学与技术专业2013级2班07号2015-12-28目录一.课程设计的目的和意义 (3)二进程调度算法模拟 (4)1 设计目的 (4)2 设计要求 (4)3 使用动态优先权的进程调度算法的模拟 (6)4.程序流程图 (10)5.实验结果 (11)6.实验代码 (14)7.实验总结 (20)三动态分区分配方式模拟 (21)1 设计目的 (21)2 设计要求 (21)3 模拟算法的实现 (21)4程序流程图 (24)5实验结果 (24)6实验代码 (25)7.实验总结 (30)四请求调页存储管理方式模拟 (31)1 设计目的 (31)2 设计要求 (31)3 模拟算法的实现 (32)4程序流程图 (37)5.实验结果 (38)6.实验代码 (39)7.实验总结 (42)五简单文件系统的实现 (43)1 设计目的 (43)2 设计要求 (43)3 算法的实现 (44)4.程序流程图 (46)5.实验结果 (46)6实验代码 (47)7.实验总结 (61)操作系统课程设计总结 (62)一.课程设计的目的和意义目的:1. 根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容。

2. 通过调试典型例题或习题积累调试程序的经验。

3. 通过完成辅导教材中的编程题,逐渐培养学生的编程能力,用计算机解决实际问题的能力。

意义:1. 有助于加深我们对操作系统这门课程的理解,我们在课堂上学的都是基础理论知识,对于如何用程序语言来描述所学知识还是有一定难度。

通过课程设计,我们可以真正理解其内涵。

2. 有利于我们逻辑思维的锻炼,程序设计能直接有效地训练学生的创新思维、培养分析问题、解决问题能力。

即使是一个简单的程序,依然需要学生有条不理的构思。

3. 有利于培养严谨认真的学习态度,在程序设计过程里,当我们输入程序代码的时候,如果不够认真或细心,那么可能就导致语法错误,从而无法得出运行结果。

操作系统课程设计总结报告范文

5.1目的
5.2内容
5.3数据结构
5.4算法设计及流程图
5.5小结
六、银行家算法
6.1目的
6.2内容
6.3数据结构
6.4算法设计及流程图
6.5小结
七、课程总结
操作系统课程设计总结报告
《操作系统课程设计》
总结报告
学期- 第二学期
学院软件学院
ห้องสมุดไป่ตู้学号1
姓名
年 6月 28日
本学期开设了操作系统课程,为了更好的理解操作系统理论,掌握其应用,特设此操作系统实验课程,在该操作系统实验中包括进程管理、存储管理、设备管理和文件管理四个实验部分。
一、进程控制
1.1目的
利用简单的结构和控制方法模拟进程结构、进程状态转换和进程控制。
1.2内容
1、利用简单的结构和控制方法模拟进程结构、进程状态和进程控制,使学生掌握作为操作系统分配资源的基本单位的进程相关的概念。定义PCB(能够采用静态结构或动态结构),在实验中只需建立PCB,用它代表完整的进程。
2、定义进程状态转换方式:进程的状态转换是由进程内部操作或操作系统的控制引起,由于无法实现这些功能,学生能够采用随机数方法或键盘控制方法模拟,并实现对应的控制程序。随机方法指产生1-6的随机数,分别代表创立进程(c)、结束进程(e)、进程阻塞(b)、激活进程(w)、调度进程(p)、时间片到(t)等事件;键盘模拟方法指定义6种按键代表以上6种事件。
3、创立进程的过程中加入连续存储管理的可变分区的分配算法,可采用最佳适应算法,在结束进程的同时完成内存分区的回收算法,保证连接成一个连续空闲区。
1.3数据结构
建立三个队列,分别是就绪队列,执行队列,阻塞队列。并写出相应的出队入队及初始化函数。三个结构体,分别是链队结构体,进程结构体,空闲表结构体。有一个表,一个空余表。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

-1-
西北工业大学操作系统实验报告
实验日期: 2013.11.27 实验名称: 工作集
一、实验目的
了解工作集的数据结构,熟悉WinDbg的用法。
二、实验要求
结合WinDbg的调试功能,分析一个进程的工作集页面的数据结构。
三、实验过程及结果
1) 启动WinDbg 到内核调试模式。
以第一次的实验为基础,进入虚拟机WRK 1.2 [debugger enabled]。
2) 使用参考代码,在本机上编译组建,得到wrk.Memtest.exe文件,将此
文件拷贝到宿主机和虚拟机的共享目录中。
在虚拟机上运行此EXE文件,待运行到for 循环的位置,用WinDbg 中断它
的执行,并观察。

图1
3) 观察步骤如下:
a) 用!process 命令查找到当前正在运行的进程
-2-

图2
b) 用dt命令进入此进程的EPROCESS 结构中,查看相关信息

图3
-3-

c) 找到偏移量为+0x1e8 处的Vm 变量,用dt 命令进入mmsuport结构
查看相关信息

图4
d) 在偏移量为+0x020 和+0x024 处便保存了进程工作集页面个数的最
小值和最大值,在+0x018 处的PeakingWorkingSetSize 的值。它们是用16 进
制形式表示的,将这些值和1)中的结果进行比较。
+0x020 MinimumWorkingSetSize : 0x32
+0x024 MaximumWorkingSetSize : 0x159
e) 查看在+0x028 偏移处的变量VmWorkingSetList的值即是内存管理
的工作集的地址,使用dt命令查看该地址的信息
-4-

图5
f) 在+0x014 处的LastInitializedWsle 变量保存了工作集页面的最
大下标。在+0x010 处的Wsle便保存了此进程(当前正在运行进程)的工作集的
页面的虚拟地址。用dd 命令查看此处地址的内容,这里是所有页面的地址。
+0x014 LastInitializedWsle : 0x259
+0x010 Wsle : 0xc0502698 _MMWSLE
g) 用dd 命令查看此处地址的内容:

图6
h) 方框内便是页面地址,取一个地址(比如这里取第一个地址),查
看它的内容:

图7
i) 现在用 dd 命令显示更多的页面地址信息:(如下所示,是打印了
0x25a 个页面地址;注意:这个值要小于前面得到的LastInitializedWsle 的
值才可以得到正确的工作集页面信息,否则,超过了这个范围的页面,一般其中
的内容是 " ??? "):
-5-
图8
j) 我们可以发现,工作集页面的总共个数是0x25a,如果超出了它的范
围,比如0x25b 的位置得到了 ???????? ,这便是不可访问的地址我们获得前面
得到的_mmwsl 结构中FirstFree 的值:0xf
接着用如下的命令:“dd 0xc0502698 l0xf”
-6-

图9
k) 找到该程序的最后一个页面的地址,并查看该页面的内容,对照源
程序,对结果进行分析。

图10
l) 我们继续,找这个地址之后的那个地址,它是属于自由队列页面中
的地址:

图11
四、实验分析
与工作集相关的数据结构主要有MMSUPPORT、MMWSL、MMWSLE MMWSLENTRY、MMPTE、
PMMWSLE_HASH,其主要关系如下错误!未找到引用源。
-7-

图12
五、所遇问题及解决方法
在操作系统课程中学习了段式管理和页式管理,但对于在具体的操作系统中
是如何实现管理不太清楚。一开始,由于没有在宿主机上设置symbols的环境变
量,所以用windbg观察时,出现error。后来通过仔细阅读文档,发现并解决
了这一错误。
利用各种命令查看了运行进程wrkMemTest.exe时的_MMSUPPORT、_MMWSL等
数据结构中的内容并且分析里面的参数意义,以及它们前后之间的对应关系,明
白了结构中的一些主要的参数要表达的信息,这些数据结构在工作集页面管理中
的作用。
本次实验让我们更加了解操作系统的工作流程。

相关文档
最新文档