欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    操作系统课设报告北京信息科技大学.docx

    • 资源ID:12118515       资源大小:92.31KB        全文页数:13页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统课设报告北京信息科技大学.docx

    1、操作系统课设报告北京信息科技大学北京信息科技大学操作系统课程设计报告题 目: Windows内存管理与文件管理 学 院: 专 业: 学生姓名: 指导老师: 赵 宇 起止时间:一. 课程设计任务本次课程设计的任务包括以下内容:1) 将自选的一到两个函数封装为,并成功调用。2) 设计使用Malloc()函数和ViertualAlloc()函数分配内存的程序,查询分配内存和虚拟存储空间前后的情况。3) 设计从键盘上输入文本,并将所输入的文本采用无缓冲方式存入硬盘的程序。4) 设计将硬盘上的文本文件采用无缓冲方式读入内存的程序。5) 设计采用无缓冲方式将磁盘上一个文本文件另存为另一文件的程序。选做:1

    2、) 将硬盘上两个文本文件合并为一个文件。2) 将无缓冲方式读文件操作和写文件操作分别封装成动态链接库,并成功调用。二. 课程设计1. 设计要求(以下写实验教材中动态链接库、查询分配内存和虚拟存储空间前后的情况、文件读写的“实验内容”和“实验要求”,可补充内容)1. 掌握动态链接库的调用和方法。在WindowsXP+Microsoft VisualC+6.0环境下建立一个动态链接库,并分别用隐式和显式的方式将其调用,从而体会动态链接库的有点;2. 能正确使用系统函数GlobalMemeryStatus()和数据结构MEMERYSTATUS了解系统内存和虚拟内存空间的使用情况,会使用Virtual

    3、Alloc()函数和VirtualFree()函数分配和和释放存储空间;3. 采用无缓冲方式完成文件的读写;2. 工作原理(以下写:采用无缓冲方式实现文件读写的工作原理。实验讲义上有。可以补充自己的理解或体会)首先,文件创建函数CreatFile()用于创建一个新文件,如果文件已存在,则得到该文件的句柄。该函数的参数dwFlagsAndAttribute决定了文件的传输方式,对于普通的文件传输,可将参数设置为FILE_ATTRIBUTE_NORMAL;其次,进行读文件操作函数READFile()从文件指针指示的位置开始读取文件的数据;再次,还有写文件操作函数WriteFile()将数据写入文件

    4、。函数在文件所指的位置完成写操作,写操作完成后。、,文件指针按实际写入的字节数来调整;最后对文件操作完成后,利用函数CloseHandle()关闭与文件相关的句柄,其作用与释放动态申请的内存空间类似,这样可以释放系统资源,使进程安全进行。3. 程序流程设计(如果完成了选做,实验的流程图,并给予必要的解释)将硬盘上两个文本文件合并为一个文件输入“Cmd”并回车打开命令提示符窗口,然后输入“D:”回车切换到D盘,输入“CD txt”这样回车后即可把当前目录变成D:txt,再输入“copy /b 1.txt+2.txt+3.txt hebing.txt”,回车后即会在当前目录生成一个名为hebing

    5、.txt(的)文件,它里面(的)内容(就是)合并后(的)文件内容流程图将无缓冲方式读文件操作和写文件操作分别封装成动态链接库,并成功调用。流程图4. 相关API函数(以下写出课程设计中调用过的API函数,在调用时你所选择的参数是什么,你选择参数的考虑)1.动态链接库入口函数(1)DllMain()函数动态连接数据库的入口函数,当Windows加载动态链接库时调用该函数。DllMain()函数不仅在将动态链接库加载到进程地址空间时被调用,在动态链接库与进程分离时也被调用。(2)动态链接库导入导出函数_declspec(dllexport) add(int x,int y); 导出_declspe

    6、c(dllimport) sub(int x,int y);导入(3)动态链接库的两种链接接方式一是应用程序的源代码只用动态链接库中包含的符号,当应用程序运行时,加载程序隐式地将动态链接库装入到进程的地址空间中,成为饮食链接;另一种方法是应用运行时使用LoadLibary()显式地加载所需要的动态链接库,并显式地链接需要的输出符号表。2.(1)获取系统物理内存和虚拟内存的使用信息VOID GlobalMemeryStatus(LAPMEMERYSTATUS lpBuffer);MEMERYSTATUS 存储内存当前的物理信息;(2)保留或提交平某一段虚拟内存空间 函数VitualAllco()

    7、可以在调用进程的虚拟地址空间中保留或提交若干页面。保留意味着这段虚拟地址不能被使用,当提交时,这段虚拟地址才能真正的被分配到该进程。(3)释放或注销某一段虚拟地址空间函数VitualFree()用于释放或注销某一段虚拟地址空间3.(1)文件创建 函数CreatFile()用于创建一个新文件,如果文件已存在,则得到该文件的句柄。该函数的参数dwFlagsAndAttribute决定了文件的传输方式,对于普通的文件传输,可将参数设置为FILE_ATTRIBUTE_NORMAL/(2)读文件函数READFile()从文件指针指示的位置开始读取文件的数据(3)写文件函数WriteFile()将数据写入

    8、文件。函数在文件所指的位置完成写操作,写操作完成后。、,文件指针按实际写入的字节数来调整。(4)函数CloseHandle()关闭与文件相关的句柄,其作用与释放动态申请的内存空间类似,这样可以释放系统资源,使进程安全进行。三. 实验过程与结果(以下写出本次试验使用的源程序代码和必要的注释)(以下写出本次试验所调用的各个API函数的返回值)(以下粘贴代码运行结果界面采集)程序代码如下;1. 动态链接库的调用和方法/ t3.cpp : Defines the entry point for the console application./#include stdafx.h#include t3.

    9、h#pragma comment(lib,t1.lib) #pragma comment(lib,t2.lib) /告诉编译器与DLL相对应的.lib文件所在的路径及文件名。/需要将编译SimpleDll工程所生成的.lib和.dll文件拷入本工程所在的路径。extern C _declspec(dllimport) add(int x,int y); extern C _declspec(dllimport) sub(int x,int y);/声明SimpleDll.dll中的add(int x,int y)函数为本工程的导入函数。void main()int result = add(1

    10、12,3); printf(112+3=%dn,result);int result0 = sub(112,3); printf(112-3=%dn,result0);/ t4.cpp : Defines the entry point for the console application./#include stdafx.h#include t4.htypedef int(*lpAddFun)(int, int); /宏定义函数指针类型typedef int(*lpSubFun)(int, int);void main( )HINSTANCE hDll; HINSTANCE hDll0;

    11、/定义一个调用DLL的句柄 lpAddFun addFun; /定义DLL中要调用的函数的指针lpSubFun subFun;int result,result0; /开辟一个临时变量hDll = LoadLibrary(t1.dll); /显式载入SimpleDll.dlladdFun = (lpAddFun)GetProcAddress(hDll, add); /获取SimpleDll.dll中add()函数的地址指针result = addFun(212, 33);printf(%dn, result);FreeLibrary(hDll);hDll0 = LoadLibrary(t2.d

    12、ll);subFun = (lpSubFun)GetProcAddress(hDll0, sub); /获取SimpleDll.dll中add()函数的地址指针result0 = subFun(212, 33);printf(%dn, result0);FreeLibrary(hDll0);return ;2. 系统内存和虚拟内存空间的使用情况/ a4.cpp : Defines the entry point for the console application./#include stdafx.h#include a4.hint _tmain(int argc, TCHAR* argv,

    13、 TCHAR* envp) int nRetCode = 0;MEMORYSTATUS mm; while(true) GlobalMemoryStatus(&mm); printf( %dnn ,mm.dwMemoryLoad); printf( %dnn ,mm.dwTotalPhys/(1024*1024); printf( %dnn ,mm.dwAvailPhys/(1024*1024); Sleep(1000); return nRetCode;/ a4.cpp : Defines the entry point for the console application./#inclu

    14、de stdafx.h#include a4.hint _tmain(int argc, TCHAR* argv, TCHAR* envp) int nRetCode = 0;MEMORYSTATUS mm; while(true) GlobalMemoryStatus(&mm); printf( 当前内存利用率:%d%nn ,mm.dwMemoryLoad); printf( 物理内存的总字节数:%dnn ,mm.dwTotalPhys/(1024*1024); printf( 可用物理内存的字节数:%dnn ,mm.dwAvailPhys/(1024*1024); printf( 页文件的

    15、总字节数:%dnn ,mm.dwTotalPageFile/(1024*1024); printf( 页文件的可用字节数:%dnn ,mm.dwAvailPageFile/(1024*1024); printf( 用户模式下调用进程可以访问的虚拟空间总字节数:%dnn ,mm.dwTotalVirtual/(1024*1024); printf( 用户模式下调用进程可用虚拟空间的大小:%dnn ,mm.dwAvailVirtual/(1024*1024); Sleep(3000); return nRetCode;1. 无缓冲方式完成文件的读/ 1.cpp : Defines the entr

    16、y point for the console application./#include stdafx.h#include 1.hvoid main( )CHAR *pBuffer; DWORD RSize; int fileSize = 0; HANDLE hFile;hFile = CreateFile( d:a.txt, / file name GENERIC_READ, / open for reading 0, / do not share NULL, / default security OPEN_EXISTING, / only open an existing file NU

    17、LL, / normal file NULL / no template ); fileSize = GetFileSize(hFile, NULL); pBuffer = (CHAR *) malloc(fileSize); ReadFile(hFile, pBuffer, fileSize, &RSize, NULL); printf(%s, pBuffer);free(pBuffer); CloseHandle(hFile);无缓冲方式完成文件的写/ 2.cpp : Defines the entry point for the console application./#include

    18、 stdafx.h#include 2.hvoid main( )DWORD BytesToWrite; DWORD szBuffer4;int fileSize = 0; HANDLE hFile;char szText = a simple text for test;hFile = CreateFile( d:123.txt, / file name GENERIC_WRITE, / open for writing 0, / do not share NULL, / default security OPEN_ALWAYS, / if file not exist, create it

    19、 NULL, / normal file NULL / no template ); BytesToWrite = lstrlen(szText); WriteFile(hFile, szText, BytesToWrite, szBuffer, NULL);CloseHandle(hFile);四. 课程设计总结通过对动态链接库的的学习,基本上掌握了Windows系统链接库的建立方法,和使用显式和隐式两种方法来调用动态链接库,同时在实验中调用相关的API函数来查看系统物理内存和虚拟内存的有关使用情况和变化。通过实验大体上了解了Windows内存管理机制及其数据结构。了解了有关文件的读写操作的原理,明白了文件读写的相关API函数的的基本思想和应用。这次实验仍有很多不足之处,但是在老师和同学的帮助下基本上全部攻克,希望在以后的实验里自己可以做的越来越好


    注意事项

    本文(操作系统课设报告北京信息科技大学.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开