实验指导Word下载.docx
- 文档编号:19708678
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:11
- 大小:35.58KB
实验指导Word下载.docx
《实验指导Word下载.docx》由会员分享,可在线阅读,更多相关《实验指导Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
二、实验报告总体要求
每次实验完成后两周内,必须提交实验报告。
实验报告至少要求包含以下内容:
✓
1、引言:
概述本文所讨论的问题,工作步骤,结果,以及结果、发现的意义。
2、问题提出:
叙述本文要解决什么问题。
注意不可以抄写本实验报告中的表述,要用自己的话重新组织我们这里所提出的问题。
3、解决方案:
叙述如何解决自己上面提出的问题,可以用小标题3.1,3.2…等分开。
这是本文的关键部分,请尽量展开来写。
注意,这部分是本文的基本分的部分。
这部分不完成,本课程设计不会及格。
4、实验结果:
按照自己的解决方案,有哪些结果。
结果有异常吗?
能解释一下这些结果吗?
同别人的结果比较过吗?
注意,这部分是本文出彩的地方。
本课程设计要得高分,应该在这部分下功夫。
5、结束语:
小结并叙述本次课程设计的经验、教训、体会、难点、收获、为解决的问题、新的疑惑等。
附录:
加了注释的程序清单,注释行数目至少同源程序行数目比1:
2,即10行源程序,至少要给出5行注释。
实验一、进程间的通信
实验环境:
实验环境一:
实验时间:
6小时
实验目的:
初步了解windows环境下进程间通信的机制,了解消息通信和共享内存通信的原理,并利用win32API函数编写实例程序。
实验目标:
编制两个程序P1、P2。
当这程序P1运行后,它创建一个子进程P2(也就是在P1中调用P2),其中P1是父进程,P2由P1创建,是P1的子进程。
P1提供一个输入界面,读入用户输入的字符。
用户每输入一行字符,P1首先把这行字符存放到和P2共享的一个内存缓冲区中,然后通过消息通知P2(消息需要自己定义)。
P2则提供一个显示界面,在每接受到P1的一个消息后,首先从缓冲区中读入数据,然后进行显示,并发给P1一个消息,告诉P1数据已经处理完毕。
P1在接受到P2发送来的消息后,提示用户。
依次类推。
背景知识:
本实验需要用到的主要函数如下:
1.BOOLCreateProcess(
LPCTSTRlpApplicationName,
//nameofexecutablemodule
LPTSTRlpCommandLine,
//commandlinestring
LPSECURITY_ATTRIBUTESlpProcessAttributes,//SD
LPSECURITY_ATTRIBUTESlpThreadAttributes,
//SD
BOOLbInheritHandles,
//handleinheritanceoption
DWORDdwCreationFlags,
//creationflags
LPVOIDlpEnvironment,
//newenvironmentblock
LPCTSTRlpCurrentDirectory,
//currentdirectoryname
LPSTARTUPINFOlpStartupInfo,
//startupinformation
LPPROCESS_INFORMATIONlpProcessInformation//processinformation
);
2.HANDLECreateFileMapping(
HANDLEhFile,
//handletofile
LPSECURITY_ATTRIBUTESlpAttributes,//security
DWORDflProtect,
//protection
DWORDdwMaximumSizeHigh,
//high-orderDWORDofsize
DWORDdwMaximumSizeLow,
//low-orderDWORDofsize
LPCTSTRlpName
//objectname
3.HANDLEOpenFileMapping(
DWORDdwDesiredAccess,
//accessmode
BOOLbInheritHandle,
//inheritflag
//objectname
4.BOOLFlushViewOfFile(
LPCVOIDlpBaseAddress,
//startingaddress
SIZE_TdwNumberOfBytesToFlush
//numberofbytesinrange
5.BOOLUnmapViewOfFile(
LPCVOIDlpBaseAddress
6.LRESULTSendMessage(
HWNDhWnd,
//handletodestinationwindow
UINTMsg,
//message
WPARAMwParam,
//firstmessageparameter
LPARAMlParam
//secondmessageparameter
7.BOOLGetMessage(
LPMSGlpMsg,
//messageinformation
//handletowindow
UINTwMsgFilterMin,
//firstmessage
UINTwMsgFilterMax
//lastmessage
实验步骤:
1、查看MSDN,寻找相关函数的说明,学习使用方法。
2、如何编写代码实现程序P1和P2?
实验报告:
实验二、进程的调度(模拟)
4小时
初步了解进程的调度机制,掌握短作业优先算法、时间片轮转算法(RR)和优先数算法,并理解响应时间和周转时间的意义。
模拟短作业优先算法、时间片轮转算法(RR)和优先数算法的执行情况,并动态画出其进程执行的Grant图,计算以上算法的每个进程的响应时间和周转时间。
1、需要模拟执行的进程序列如下:
进程名
到达时间
运行时间
优先数
P1
7
5
P2
1
P3
3
4
P4
2
P5
假设:
优先数越小优先级越高;
所有进程都是纯CPU型进程。
请把上表的数据按照你自己设计的格式存为一个文本文件JOB1.TXT。
2、编写一个模拟程序,可以读入文本文件JOB1.TXT中描述的进程序列,然后模拟短作业优先算法、时间片轮转算法(RR)和优先数算法的执行情况,并动态画出其进程执行的Grant图,计算以上算法的每个进程的响应时间和周转时间。
3、读入文本文件JOB1.TXT中描述的进程序列,按照短作业优先算法执行程序。
4、按照时间片轮转算法执行程序时间片大小分布为1、2和3。
5、按照优先数算法执行程序。
实验结果:
实验步骤1:
文本文件的格式是:
实验步骤3的执行结果是:
实验步骤4的执行结果是:
实验步骤5的执行结果是:
思考题
1、根据实验步骤4的结果,谈谈时间片的大小对响应时间和周转时间的影响。
2、根据实验步骤3的结果,如果所有的进程不是纯CPU型进程,而是I/O型进程,那么调度会有什么不同?
实验三、访问一个进程的内存空间
Windows98平台
初步了解win98环境下内存的使用情况,通过使用win32下API函数编写系统程序。
编制一个程序实现对系统中一个进程(kernel32.dll)的内存空间访问。
在WIN32中,每个应用程序都可“看见”4GB的线性地址空间,其中最开始的4MB和最后的2GB由操作系统保留,剩下不足2GB的空间用于应用程序私有空间。
具体分配如下:
0xFFFFFFFF-0xC0000000的1GB用于VxD、存储器管理和文件系统;
0xBFFFFFFF-0x80000000的1GB用于共享的WIN32DLL、存储器映射文件和共享存储区;
0x7FFFFFFF-0x00400000为每个进程的WIN32专用地址;
0x003FFFFF-0x00001000为MS-DOS和WIN16应用程序;
0x00000FFF-0x00000000为防止使用空指针的4,096字节。
以上都是指逻辑地址,也就是虚拟内存。
在WIN32中每页大小为4,096字节。
通过使用硬件地址映射和页表,WIN32可使虚拟内存即有好的性能而且还提供保护。
操作系统为每个进程提供独立的从逻辑地址到物理地址的映射,使每个进程的地址空间对另一个进程完全不可见。
WIN32中也提供了一些访问进程内存空间的函数,但使用时要谨慎,一不小心就有可能破坏被访问的进程。
ReadProcessMemory读另一个进程的内存,原形如下:
BOOLReadProcessMemory(
HANDLEhProcess,
//被读取进程的句柄;
LPCVOIDlpBaseAddress,
//读的起始地址;
LPVOIDlpBuffer,
//存放读取数据缓冲区;
DWORDnSize,
//一次读取的字节数;
LPDWORDlpNumberOfBytesRead//实际读取的字节数;
);
hProcess进程句柄可由OpenProcess函数得到,原形如下:
HANDLEOpenProcess(
DWORDdwDesiredAccess,//访问标志;
//继承标志;
DWORDdwProcessId
//进程ID;
用完后使用CloseHandle关闭打开的句柄。
读另一个进程的内存dwDesiredAccess须指定为PROCESS_VM_READ,
写另一个进程的内存dwDesiredAccess须指定为PROCESS_VM_WRITE,
继承标志无所谓,进程ID可由Process32First和Process32Next得到,这两个函数可以枚举出所有开启的进程,这样进程的信息也就得到了。
Process32First和Process32Next是由TLHelp32单元提供的,需在uses里加上TLHelp32。
ToolsHelp32封装了一些访问堆、线程、进程等的函数,只适用于Win9x,原形如下:
BOOLWINAPIProcess32First(
HANDLEhSnapshot
//由CreateToolhelp32Snapshot返回的系统快照句柄;
LPPROCESSENTRY32lppe//指向一个PROCESSENTRY32结构;
);
BOOLWINAPIProcess32Next(
hSnapshot由CreateToolhelp32Snapshot返回的系统快照句柄;
CreateToolhelp32Snapshot原形如下:
HANDLEWINAPICreateToolhelp32Snapshot(
DWORDdwFlags,
//快照标志;
DWORDth32ProcessID//进程ID;
现在需要的是进程的信息,所以将dwFlags指定为TH32CS_SNAPPROCESS,th32ProcessID忽略;
PROCESSENTRY32结构如下:
typedefstructtagPROCESSENTRY32{
DWORDdwSize;
//结构大小;
DWORDcntUsage;
//此进程的引用计数;
DWORDth32ProcessID;
//进程ID;
DWORDth32DefaultHeapID;
//进程默认堆ID;
DWORDth32ModuleID;
//进程模块ID;
DWORDcntThreads;
//此进程开启的线程计数;
DWORDth32ParentProcessID;
//父进程ID;
LONG
pcPriClassBase;
//线程优先权;
DWORDdwFlags;
//保留;
charszExeFile[MAX_PATH];
//进程全名;
}PROCESSENTRY32;
查看MSDN,寻找相关函数的说明,学习使用方法。
4、
编写函数实现读取“Kernel32.dll”进程所属的内存空间信息。
实验步骤2的实现过程是:
实验步骤2的输出内容是什么?
思考题:
1.
该实验中编制的程序只能用于win98环境,能否将之应用于win2000中,需要修改哪些函数?
2.
现在的实验只是实现了读一个进程的内存空间,对写一个进程的内存空间应注意哪些问题,如何修改该程序?
实验四、读FAT32中的文件
了解FAT32文件系统的结构,了解主引导记录(MBR)、引导扇区、FAT表、FDT表的结构,并根据这个结构读取指定文件的内容。
通过实验理解文件的物理结构和逻辑结构的关系。
根据FAT32文件系统的结构,设计一个程序,不使用文件操作,列出C盘上某文本文件的内容。
INT13h扩展功能42h调用方法:
1、调用该功能之前需要填充下面的结构
structDISKADDPACKET{
charpacketsize;
/*本结构的长度*/
charreserved;
/*保留,这里必须为0*/
unsignedintblockcount;
/*要读的扇区数*/
unsignedintbufferaddr[2];
/*缓冲区偏移*/
unsignedlongblocknum[2];
/*缓冲区段地址*/
};
2、调用示例
getabssect(intdrive,unsignedlongsectnohi,unsignedlongsectnolo,char*buf){
structDISKADDPACKETdiskaddpacket;
unionREGS
inregs,outregs;
structSREGSsegregs;
segread(&
segregs);
diskaddpacket.packetsize=16;
diskaddpacket.reserved=0;
diskaddpacket.blockcount=1;
diskaddpacket.bufferaddr[0]=(unsigned)FP_OFF(buf);
diskaddpacket.bufferaddr[1]=(unsigned)FP_SEG(buf);
diskaddpacket.blocknum[1]=sectnohi;
diskaddpacket.blocknum[0]=sectnolo;
inregs.h.ah=0x42;
/*功能号*/
inregs.h.dl=drive;
/*磁盘号*/
inregs.x.si=(unsigned)MK_FP(segregs.ds,&
diskaddpacket);
int86x(0x13,&
inregs,&
outregs,&
}
1、分析FAT32文件系统的结构,画出示意图。
2、编写程序,从标准输入获得要读取文件的位置和名称,读取文件内容,并显示之。
注意:
本实验仅限文本文件,不考虑其他格式的文件;
本实验只考虑读取C盘上指定文件的内容,不考虑其他盘。
实验步骤1
FAT32文件系统结构示意
实验步骤2的流程是:
通过对FAT32文件系统结构的分析和本次实验,考虑FAT32文件系统的安全机制有何弊端?
尝试读取其他分区的文件内容。
尝试对其他的文件系统,如NTFS上指定文件的读取,比较NTFS和FAT32的安全机制。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 指导