- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内存管理机制操作系统课程设计
《操作系统》课程设计
课内存管理机制实践
系 院:计算机科学系
学生姓名: 王会娟
学 号:0734130132
专 业: 软件工程
年 级: 0701B
完成日期:2009年12月
指导教师: 刘栓
一、课程设计的性质与任务 二、课程设计的内容及其要求
时间片轮转法可选择进程 三、课程设计的时间安排
四、课程设计的 五、
2、数据结构及信号量定义的说明;
LPVOID lpAddress, 分配内存区域的地址。当你使用VirtualAlloc来提交一块以前保留的内存块的时候,lpAddress参数可以用来识别以前保留的内存块。如果这个参数是NULL,系统将会决定分配内存区域的位置,并且围绕64-KB的范围
SIZE_T dwSize, 要分配或者保留的区域的大小。这个参数以字节为单位,而不是页,系统会根据这个大小一直分配到下页的边界DWORD
flAllocationType, 分配类型 ,你可以指定或者合并以下标志:MEM_COMMIT,MEM_AUTO_COMMIT,MEM_RESERVE和MEM_TOP_DOWN。
DWORD flProtect 指定了被分配区域的访问保护方式
分配类型 功能
MEM_COMMIT 在内存或者指定的磁盘页文件(虚拟内存文件)中分配一物理存储区域 函数初始化这个区域为0
MEM_PHYSICAL 该类型必须和MEM_RESERVE一起使用 分配一块具有读写功能的物理内存区
MEM_RESERVE 保留虚拟地址空间以便以后提交。
MEM_RESET
MEM_TOP_DOWN 告诉系统从最高可允许的虚拟地址开始映射应用程序。
MEM_WRITE_WATCH
访问类型
PAGE_READONLY 该区域为只读。如果应用程序试图访问区域中的页的时候,将会被拒绝访问PAGE_READWRITE 区域可被应用程序读写
PAGE_EXECUTE 区域包含可被系统执行的代码。试图读写该区域的操作将被拒绝。
PAGE_EXECUTE_READ 区域包含可执行代码,应用程序可以读该区域。
PAGE_EXECUTE_READWRITE 区域包含可执行代码,应用程序可以读写该区域。
PAGE_GUARD 区域第一次被访问时进入一个STATUS_GUARD_PAGE异常,这个标志要和其他保护标志合并使用,表明区域被第一次访问的权限
PAGE_NOACCESS 任何访问该区域的操作将被拒绝
PAGE_NOCACHE RAM中的页映射到该区域时将不会被微处理器缓存(cached)string的成员变量m_Name、m_avaiMem、m_phyMem、m_virtualMem、m_virtualTotal。
(4)双击“刷新”,代码如下:
void CMemoryDlg::OnRefresh()
{
TCHAR namebuffer[256];
DWORD dwSize=256;
GetComputerName(namrbuffer,dwSize);
m_Name=namebuffer;
MEMORYSTATUS mem_dail;
GlobalMemoryStatus(mem_dail);
m_avaiMem.Format(%ld MB,mem_dail.dwAvailPhys/(1024*1024));
m_phyMem.Format(%ld MB,mem_dail.dwTotalPhys/(1024*1024));
m_virtualMem.Format(%ld MB,mem_dail.dwAvailVirtual/(1024*1024));
m_virtualTotal.Format(%ld MB,mem_dail.dwTotalVirtual/(1024*1024));
UpdateData(FALSE);
}
(5)双击“申请内存”,添加代码如下:
void CMemoryDlg::OnAllowmem()
{
bBuffer=(LPBYTE)VirtualAlloc(NULL,1024*128000,MEM_RESERVE,PAGE_READWRITE);
if(bBuffer==NULL)
{
AfxMessageBos(失败!);
}
else AfxMessageBos(成功!);
}
在MemoryDlg.cpp文件前定义全局变量:
#define BASE_PTR 0x6000000000
LPBYTE bBuffer;
(6)双击“提交”,添加代码如下:
void CMemoryDlg::OnCommit()
{
您可能关注的文档
最近下载
- 办公用品订购合同范本.docx VIP
- WORD版本刻度尺-A4纸打印可用.doc
- 90nm逻辑产品Peeling缺陷的解决方案.pdf
- 神经系统的分级调节.pptx VIP
- 中建施工总平面布置图设计(69页).pdf
- 2024年公共卫生与预防医学继续教育平台“大学习”活动线上培训栏目考试题库(1392题).docx
- 北师大版(2023)必修第一册 Unit 2 Sports and Fitness单元教学设计.pdf VIP
- 2016-2023年长沙民政职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析.docx
- 农业经济学-农业资金.ppt VIP
- 齐鲁医学神经系统疾病的辅助检查.ppt VIP
文档评论(0)