操作系统实验er汇总_第1页
操作系统实验er汇总_第2页
操作系统实验er汇总_第3页
操作系统实验er汇总_第4页
操作系统实验er汇总_第5页
免费预览已结束,剩余29页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统实验指导书淮阴工学院计算机科学与工程学院2014.9实验实验实验三实验四实验五实验六实验七实验八实验九实验熟悉 Windows2000/XP 中的进程和线程编程实现进程的控制Windows中的线程与线程同步现象操作系统中的经典线程同步问题死锁避免 银行家算法的实现Windows 内存管理分页内存管理算法模拟页面置换算法的模拟实现磁盘调度中的电梯调度算法实现Windows中的消息机制实验熟悉 Windows2000/XP中的进程和线程、实验目的1、熟悉 Windows2000/XP中任务管理器的使用。2、通过任务管理器识别操作系统中的进程和线程的相关信息。3、掌握利用spy+.exe来察

2、看Windows中各个任务的更详细信息。二、实验理论基础及教材对应关系1 、实验理论基础:1) 操作系统中的进程和线程的概念;2) 进程 PCB 的各项指标含意;2、本实验内容主要对应于教材第 2 章。三、实验内容与步骤1、启动操作系统自带的任务管理器:方法:直接按组合键 Ctrl+Alt+Del ,或者是在点击任务条上的“开始”“运 行”,并输入“ taskmgr.exe ”。如下图所示:2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并完成下表(填满即可):表一:统计进程的各项主要信息序号进程名称进程ID线程数量占用内存优先级占CPL时间虚拟内存1Acrobat.ex

3、e3744685064k标准0: 00: 0099828k2WINWORD.EXE3272847180K标准0: 00: 2481224k3Taskmgr.exe263635348k高0: 00: 022136k4Csrss.exe756128856k高0: 00: 022164k5Vmoun t2.exe103235756k标准0: 00: 003504k6MATLAB.exe3281356772k标准0: 00: 0166580k7Sqlservr.exe284261128k标准0: 00: 0053308k8System483300k标准0: 00: 0428k3、从桌面启动办公软件“

4、Word',在任务管理器中找到该软件的登记,并将其结束掉。再从 任务管理器中分别找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是任务管理器无法结束进,原因是该进程是关键系统进程4、在任务管理器中找到进程“expl orer.exe ”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化桌面上的图标都不、得到的见了,Windows图形界面无法使用,电脑只剩下一张壁纸结论是 explorer.exe进程用于管理 Windows的图形界面,包括开始菜单、任务栏、桌面和文件管理,对系统的

5、稳定性有很大帮助。(说出explorer.exe 进程的作用)。运行 “ sp y+.exe” 应用软件点击按钮”,切换到进程显示栏上,查看进程“expIorer.exe ”的各项信息,并填写下表:表二:统计线程的各项信息进程:expIorer.exe中的各个线程序号进程ID线程ID基本优先级当前优先级CPU时间上下文开关1000006E8000006EC8100:00:00.43796642000006E8000006F48100:00:00.0001213000006E80000006FC9130:00:01.3281087954000006E8000007008100:00:00.000

6、85000006E8000007088100:00:00.000186000006E8000007148100:00:00.00011507000006E8000007C48100:00:00.07871138000006E8000007D015150:00:00.000129000006E8000008E88110:00:00.156387610000006E800000AC48100:00:00.0006211000006E800000D648100:00:00.00043121314注意某些线程前有 “+”如图所示,说明二者之间的差异是有无子讲程,“ +”表示有子进程四、实验材料的提交与

7、成绩评定1、本实验的实验报告一份(电子版或纸质版一份,具体形式由任课教师确定,格式参考学院统一实验报告)2、实验源程序一份,请表明题号(电子版)备注:做下一次实验之时提交上一次实验的材料,由各班学习委员以班为单位收集并上交任 课教师。3、实验成绩总分为 10 分,由指导老师根据学生实验表现和实验材料进行评定,本门 课程结束后实验平均成绩(实验总成绩 /实验次数)按照 10的比例记入期末考试总成绩。实验编程实现进程的控制、实验目的1、进一步掌握进程的相关概念 2、掌握Windows2000/XP有关进程操作的API函数的使用。3、了解进程的地址空间的含义。二、实验理论基础及教材对应关系1、实验理

8、论基础:1)操作系统中的进程和线程的概念;2)进程的各种控制; 2、本实验内容主要对应于教材第 2 章和第 3 章的内容。三、实验内容与步骤1、启动应用程序“ Process Information.exe ”,应出现下面的界面:2、依次改变上图中“下拉组合框”的选项,读出界面中显示的各项信息,并完成下表(填满即可):(统计中要包含 winlogon.exe 、 lsass.exe 、 csrss.exe 、 smss.exe等应用程序)表一:统计进程的一些信息序号进程名称进程ID父进程ID优先级线程数Heaps数量模块数量1wini ogo n. exe51600000204高32lsass

9、.exe58000000244普通83csrss.exe428000001AC普通94csrss.exe468000001D4普通125smss.exe27200000110普通26Spo olsv.exe131600000524普通127Deven v.exe59000000170C普通218Lsm.exe5880000024C普通103、从上表中观察“进程ID ”和“父进程ID ”两栏,总结并画出下列程序间的亲缘关 系: winlogon.exe、lsass.exe、csrss.exe、smss.exe。4、打开“ ProcessInfo ”工程文件,打开文件“ProcessInfo.cp

10、p ”,找到函数:Create Process ()的使用方法。按下列步骤建立一个工程项目,将记事本应用程序 运行起来,即创建了一个新的进程。步骤1、创建一个基于MFC勺应用程序。步骤 2、在应用程序类型中选取“基于对话框”的选项。步骤 3、直接点击完成,系统将为你创建一个工程项目。步骤4、然后在“资源视图”中,打开对话框“IDD_MY_DIALOG,将出现以下对话框:步骤 5、打开界面上的“工具箱”,放置一个“按钮”,如下图:步骤 6、双击上面的“ Button1 ”按钮,切换到代码的编写处:输入以下语句:步骤 7、编译并运行此工程项目,看看运行的结果。四、实验材料的提交与成绩评定1、本实验

11、的实验报告一份(电子版或纸质版一份,具体形式由任课教师确定,格式参考学院统一实验报告)2、实验源程序一份,请表明题号(电子版)备注:做下一次实验之时提交上一次实验的材料,由各班学习委员以班为单位收集并上交任 课教师。3、实验成绩总分为 10 分,由指导老师根据学生实验表现和实验材料进行评定,本门课程结束后实验平均成绩(实验总成绩 /实验次数)按照 10的比例记入期末考试总成绩。实验三 Windows中的线程与线程同步现象、实验目的1、掌握Windows中线程的操作。2、熟悉线程不同步时的现象及环境因素。3、掌握一种同步对象的使用。二、实验理论基础及教材对应关系1、线程和线程不同步的认识。2、线

12、程间的同步和通信。3、本实验内容主要对应于教材第 2章中关于线程的各节。三、实验内容与步骤1 、定义全局变量 int i = 0; 初始值置为 0。2、创建两个线程,一个对 i 执行加 1 操作,另一个对 i 执行减 1 操作。两个线程 执行相同的次数。显然,正常情况下, i 的仍然保持为 0。#include <stdio.h>#include <windows.h>#define MaxCount 9000000 / 循环次数要很大,可多次尝试一些值DWORD _stdcall fun1( LPVOID p1)for( int j =0 ;j < MaxCou

13、nt;j+)i+;return 0;DWORD _stdcall fun2( LPVOID p1)for( int j =0 ;j < MaxCount;j+)i-;return 0;3、观察两个线程执行后的情况,可以发觉最后i 的值不一定是 0, 有时是很大的正 数,有时是很大的负数,这就是多个线程在操作同一个变量 i 时,未同步时带来的严 重问题。还应该了解,在多个线程操作共享的变量时,才需要考虑同步问题。5、给这两个线程加上同步代码,再来观察对 i 值的影响。步骤 2 的函数稍微改动即可:CRITICAL_SECTION cs;DWORD _stdcall fun1( LPVOID

14、 p1)for( int j =0 ;j < MaxCount;j+):EnterCriticalSection(&cs);:LeaveCriticalSection(&cs);i+;DWORD _stdcall fun2( LPVOID p1)for( int j =0 ;j < MaxCount;j+):EnterCriticalSection(&cs);i-;:LeaveCriticalSection(&cs);加入的同步代码的两个线程,无论如何执行, i 的值总是 0 ,结果是正确的。6、主函数的写法 int main()DWORD id1,

15、id2;HANDLE hThread2;:InitializeCriticalSection(&cs);hThread0 = :CreateThread(0,0,fun1,0,0,&id1);hThread1 = :CreateThread(0,0,fun2,0,0,&id2);:WaitForMultipleObjects(2,hThread,1,INFINITE);printf("i = %dn",i);:DeleteCriticalSection(&cs);getchar();return 0;四、实验材料的提交与成绩评定1、本实验的实

16、验报告一份(电子版或纸质版一份,具体形式由任课教师确定,格式参考学院统一实验报告)2、实验源程序一份,请表明题号(电子版)备注:做下一次实验之时提交上一次实验的材料,由各班学习委员以班为单位收集并上交任 课教师。3、实验成绩总分为 10 分,由指导老师根据学生实验表现和实验材料进行评定,本门 课程结束后实验平均成绩(实验总成绩 /实验次数)按照 10的比例记入期末考试总成绩。实验四 操作系统中的经典线程同步问题一、实验目的1、加深对线程的理解、掌握 Win dows中线程的操作。2、掌握死锁产生的原因。3、掌握信号量、互斥量、事件、临界区等同步对象的使用。二、实验理论基础及教材对应关系1、进程

17、和线程的关系。2、线程间的同步和通信。3、本实验内容主要对应于教材第 2 章中关于线程的各节、第 3 章中关于死锁的各 节。三、实验内容与步骤1 、运行实验程序“ Reader_Writer.exe ”,出现如下界面:2、交替点击“创建读者线程”和“创建写者线程”按钮,出现如下界面:3、观察第二步的实验现象,多次试验,可总结为:(1) 、当有“读者”的绿灯亮时,其余的“读者”灯的状态、其余的“写者”灯的状态是、当有“写者”的绿灯亮时,其余的“写者”灯的状态、其余的“读者”灯的状态是这说明“读者”间的关系是、“读者”之间的关系是者一写者”之间的关系是。(填相容、互斥)4、打开工程文件“ Read

18、er_Writer ”,查找下列函数的用法:(1) AfxBeginThread();创建线程。ResumeThread();让线程恢复运行。(2) CreateMutexO ;创建互斥量。ReleaseMutex();删除互斥量。(3) CreateSemaphore();创建信号量。ReleaseSemaphore()删除信号量。 WaitForSi ngleObject();等待同步对象。CloseHa ndle();关闭内核对象的句柄。5、运行“ Dining.exe ”应用程序,观察线程间“死锁”时的状态。6、创建一个“ Con sole ”应用程序,在 ma in()函数中创建4个

19、线程,线程的工作就是 向屏幕输出几个字符后,就自己结束掉。四、实验材料的提交与成绩评定1、本实验的实验报告一份(电子版或纸质版一份,具体形式由任课教师确定,格式 参考学院统一实验报告)2、实验源程序一份,请表明题号(电子版)备注:做下一次实验之时提交上一次实验的材料,由各班学习委员以班为单位收集并上交任 课教师。3、实验成绩总分为 10 分,由指导老师根据学生实验表现和实验材料进行评定,本门 课程结束后实验平均成绩(实验总成绩 /实验次数)按照 10的比例记入期末考试总成绩。实验五死锁避免 银行家算法的实现、实验目的1、掌握死锁产生的原因和必要条件。2、掌握银行家算法的实现二、实验理论基础及教

20、材对应关系1、处理机调度与死锁。2、死锁的产生与预防。3、银行家算法。1、创建 C 语言工程项目, int AllocMatrix54 int RequestMatrix54 int AvailResource4 int TryProcess5三、实验内容与步骤按照教材上的有关说明,定义相应的数据结构。/ 已经分配资源矩阵/ 需求矩阵/ 可用资源向量/ 尝试序列2、给各个数据结构设定合适的初始值。按照教材课后习题 22 的内容给上述数据结构设定初始值。如:int AllocMatrix54=/已经分配资源矩阵0,0,3,2,1,0,0,0,1,3,5,4,0,3,3,2,0,0,1,4;注意:

21、步骤 1、 2 可同时进行,即利用 C 语言中的定义变量就可同时初始化的方式 进行数值初设。3、依据银行家算法的描述依次进行资源的试探性分配,直至成功或失败,成功则说明当前状态是安全的;失败后,还应该将资源回到初始状态,并进行另一次试探; 只有所有的试探都失败了,才能说明当前状态是不安全的。通常,这种试探性算法采用递归的方法是很合适的,程序也是很简洁的。代码片段:if( AvailResource0 >= RequestMatrixk0&& AvailResource1 >= RequestMatrixk1&& AvailResource2 >

22、= RequestMatrixk2&& AvailResource3 >= RequestMatrixk3)/ 若资源能使进程 ProcessID 结束/ 恢复资源for(int i=0;i<4;i+)AvailResourcei -= AllocMatrixki;int SearchSecurity(int level) /递归函数if(level = 4) elseSearchSecurity(level+1); / 有条件递归调用自己 其余由大家自行完成。四、实验材料的提交与成绩评定1、本实验的实验报告一份(电子版或纸质版一份,具体形式由任课教师确定,格式参考

23、学院统一实验报告)2、实验源程序一份,请表明题号(电子版)备注:做下一次实验之时提交上一次实验的材料,由各班学习委员以班为单位收集并上交任 课教师。3、实验成绩总分为 10 分,由指导老师根据学生实验表现和实验材料进行评定,本门 课程结束后实验平均成绩(实验总成绩 /实验次数)按照 10的比例记入期末考试总成绩。实验六 Windows 内存管理、实验目的1、熟悉程序的运行时动态链接。2、熟悉Windows中内存的分页管理方式。3、了解虚拟内存的用法,熟悉 Windows中相应的API函数。二、实验理论基础及教材对应关系1、应用程序的动态链接。2、内存的分页管理、虚拟内存的技术。3、本实验内容主

24、要对应于教材第 4章。三、实验内容与步骤1、运行“ SystemInfo.exe ”应用程序,出现如下界面:从该界面上可以看到 Windows2000/XP系统中的分页大小(Page Size )是:4,096,即4K字节,也可以看到本机所安装的处理器的个数是:1个。打开工程文件,熟悉信息获取函数的使用:SYSTEM_INFO sinf;GetSystemInfo(&sinf);2、运行“ VMSTATE.ex”e 应用程序,出现如下界面:从界面上可以看到,本计算机中所安装的物理内存的大小“Total Phys”,可用物理内存的大小“ AvailPhys”。 打开源文件,熟悉或者信息函

25、数的使用:MEMORYSTATUS ms = sizeof(ms) ;GlobalMemoryStatus(&ms);3、运行“ VMAlloc.exe ”应用程序,掌握其用法和功能:打开源文件,熟悉以下操作虚拟存储空间函数的使用:VirtualAlloc( ) 、VirtualQuery( ) 、Virtua lFree( )。4、运行“ VMMap.exe应用程序,了解程序的功能,读懂其显示的每一行信息的含义:从上面显示的信息中,谈谈自己对虚拟储存空间的认识(100字以内)。四、实验材料的提交与成绩评定1、本实验的实验报告一份(电子版或纸质版一份,具体形式由任课教师确定,格式参考学

26、院统一实验报告)2、实验源程序一份,请表明题号(电子版)备注:做下一次实验之时提交上一次实验的材料,由各班学习委员以班为单位收集并上交任 课教师。3、实验成绩总分为10分,由指导老师根据学生实验表现和实验材料进行评定,本门 课程结束后实验平均成绩(实验总成绩 /实验次数)按照10 %的比例记入期末考试总 成绩。实验七分页内存管理算法模拟、实验目的1、熟悉基本分页存储管理。2、建立描述分页内存管理中的页目录表、页表结构。3、实现进行虚拟内存到物理内存的映射算法。二、实验理论基础及教材对应关系1、操作系统中内存管理。2、基本分页内存、分段内存管理。3、页目录表、页表的作用,以及虚拟地址到物理地址的

27、映射关系。三、实验内容与步骤题目:分页存储管理的设计与实现。某系统采用了两级页表机制,可使页表所占用内存尽量少,分页地址变换机构如下图所示:3122 310分页地址变换机构12 11页目录表共1024项,每个页表1024项,每页的大小是 4K个字节。地址转换时,先由分段部件生成线性地址,再由上面所述的分页部件,根据线性地址中的页目 录索引在页目录表中找相应的项,该项值为所需页表在内存的块号,找到该页表后,然后按第21 12位的页表索引找到所需页的物理内存起始地址,把它与12位偏移直接相加得到32位的物理地址。设系统有如表1中所示的10个段,已知:1 8段从内存的200000H处开始由低地址到高

28、地址连续存放,映射到 3G + 4M开始的线性地址空间;9段(缓冲区)放在 400000H开始的内存,映射的线性地址同物理地址;显存从 B8000H开始,映射到3G开始的线性地址空间。表1畑1L中断萄DT5EG北4k金局担谨苻GDTSEjG4K4、贞目SPOT4K5* 画 PTO址仏 T0$f七码 TOS/OMgEG4K7. rOSlTOS STACK5E04K3s 載SSD就4K播冲区4K10.垦存3K(1)、请设计并填写页目录表和页表(需说明每张表的内存地址)(2)、线性地址为:C0401010H、C0404010H、C0414010H,则物理地址是多少,所在段的段名是什么?(需写出计算的

29、详细步骤) 实验步骤:页面大小本题定义的总的页面个数1、定义页目录表、页表的数据结构,以及必要的数据。#defi ne P age_Size 4096 /#defi ne P ages 26/#defi ne FirstL in earAddr #defi ne SecondLin earAddr #defi ne ThirdL in earAddr0xC0000000+0x400000/ 线性地址 3G + 4M 0x400000/ 线性地址 0x4000000xC0000000/ 线性地址 3G #defi ne IDT 0#defi ne TSS 1#defi ne GDT 2#defi

30、ne PDT 3#define PT1 4#define PT2 5#define PT3 6#define PT4 7/ / / / /页目录表的下标 第 1 个页表的下标 第 2 个页表的下标 第 3 个页表的下标 第 4 个页表的下标/ 省略其它页表#define CODE 20#define STACK 21#define DATA 22#define BUFFER 23#define DISPLAYMEM 242、初始化页目录表、页表中的数据p = (unsigned int *)PysicalMemAddrPDT; / p 指向页目录表 pFirstLinearAddr>&g

31、t;22 = (unsigned int)PysicalMemAddrPT1;/ 将第 1 个页表的地 址填入页目录表中p = (unsigned int *)PysicalMemAddrPT1; / p 指向第 1 个页表 p(FirstLinearAddr+4096*IDT)>>12 & 0x3FF = (unsigned int)PysicalMemAddrIDT;/ 将 IDT 页的起始地址填入页表p(FirstLinearAddr+4096*TSS)>>12 & 0x3FF int)PysicalMemAddrTSS;/ 将 TSS 页的起始地

32、址填入页表p(FirstLinearAddr+4096*GDT)>>12&0x3FFint)PysicalMemAddrGDT;/ 将 GDT 页的起始地址填入页表p(FirstLinearAddr+4096*PDT)>>12&0x3FFint)PysicalMemAddrPDT;/ 将 PDT 页的起始地址填入页表p(FirstLinearAddr+4096*PT1)>>12&0x3FFint)PysicalMemAddrPT1;/ 将 PT1 页的起始地址填入页表p(FirstLinearAddr+4096*PT2)>>

33、;12&0x3FFint)PysicalMemAddrPT2;/ 将 PT2 页的起始地址填入页表p(FirstLinearAddr+4096*PT3)>>12&0x3FFint)PysicalMemAddrPT3;/ 将 PT3 页的起始地址填入页表p(FirstLinearAddr+4096*PT4)>>12&0x3FFint)PysicalMemAddrPT4;/ 将 PT4 页的起始地址填入页表(unsigned(unsigned(unsigned(unsigned(unsigned(unsigned(unsigned/ p 指向页目录表

34、/ pTable 指向页表/ pChar 指向物理内存3、虚拟地址到物理地址的变换 linear = 0xC0401010;p = (unsigned int *)PysicalMemAddrPDT; pTable = (unsigned int *)plinear>>22; pChar = (char *)pTablelinear>>12 & 0x3FF; printf("Linear: 0x%X is in %sn",linear,pChar); 自行变换线性地址: C0404010H、 C0414010H四、实验材料的提交与成绩评定1、

35、本实验的实验报告一份(电子版或纸质版一份,具体形式由任课教师确定,格式参考学院统一实验报告)2、实验源程序一份,请表明题号(电子版)备注:做下一次实验之时提交上一次实验的材料,由各班学习委员以班为单位收集并上交任 课教师。3、实验成绩总分为 10 分,由指导老师根据学生实验表现和实验材料进行评定,本门 课程结束后实验平均成绩(实验总成绩 /实验次数)按照 10的比例记入期末考试总成绩。实验八 页面置换算法的模拟实现、实验目的1、熟悉基本分页存储管理。2、掌握 FIFO 页面置换算法。3、掌握LRU页面置换算法。二、实验理论基础及教材对应关系1、操作系统中内存管理。2、基本分页内存、分段内存管理

36、。3、常用页面置换算法的实现。三、实验内容与步骤1、定义相关数据 #define InitPysiBlocks 4 #define MaxPages 16 :unsigned int PysicalBlocksInitPysiBlocks = 0 ;unsigned int PageSequence30 = 1,2,3,6,4,7,3,2,1,4,7,5,6,5,2,1;2、按照教材中FIFO、LRU算法描述进行算法设计 unsigned FIFO(unsigned *py,unsigned *pg) unsigned LRU(unsigned *py,unsigned *pg) 3、查看运行

37、结果是否与手工计算一致。四、实验材料的提交与成绩评定1、本实验的实验报告一份(电子版或纸质版一份,具体形式由任课教师确定,格式参考学院统一实验报告)2、实验源程序一份,请表明题号(电子版)备注:做下一次实验之时提交上一次实验的材料,由各班学习委员以班为单位收集并上交任 课教师。3、实验成绩总分为 10 分,由指导老师根据学生实验表现和实验材料进行评定,本门 课程结束后实验平均成绩(实验总成绩 /实验次数)按照 10的比例记入期末考试总成绩。实验九 磁盘调度中的电梯调度算法实现、实验目的1、掌握操作系统中 I/O 管理。2、理解磁盘的工作原理与各种调用算法。3、掌握SCAN(电梯调度)算法的实现。二、实验理论基础及教材对应关系1、操作系统中 IO 管理。2、操作系统的磁盘调度算法。三、实验内容与步骤1、参照教材第 5 章第 6 节的相关描述和图 5-27 的具体数据,进行算法设计并验证是 否与手工计算相一致。其余步骤前述实验(略)。四、实验材料的提交与成绩评定1 、本实验的实验报告一份(电子版或纸质版一份,具体形式由任课教师确定,格式 参考学院统一实验报

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论