操作系统实验er要点Word下载.docx

上传人:b****5 文档编号:19483643 上传时间:2023-01-06 格式:DOCX 页数:27 大小:1.23MB
下载 相关 举报
操作系统实验er要点Word下载.docx_第1页
第1页 / 共27页
操作系统实验er要点Word下载.docx_第2页
第2页 / 共27页
操作系统实验er要点Word下载.docx_第3页
第3页 / 共27页
操作系统实验er要点Word下载.docx_第4页
第4页 / 共27页
操作系统实验er要点Word下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

操作系统实验er要点Word下载.docx

《操作系统实验er要点Word下载.docx》由会员分享,可在线阅读,更多相关《操作系统实验er要点Word下载.docx(27页珍藏版)》请在冰豆网上搜索。

操作系统实验er要点Word下载.docx

优先级

占CPU时间

虚拟内存

1

Acrobat.exe

3744

6

85064k

标准

0:

00:

00

99828k

2

WINWORD.EXE

3272

8

47180K

24

81224k

3

Taskmgr.exe

2636

5348k

02

2136k

4

Csrss.exe

756

12

8856k

2164k

5

Vmount2.exe

1032

5756k

3504k

MATLAB.exe

328

13

56772k

01

66580k

7

Sqlservr.exe

284

26

1128k

53308k

System

83

300k

04

28k

3、从桌面启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。

再从任务管理器中分别找到下列程序:

winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是任务管理器无法结束进程,原因是该进程是关键系统进程。

4、在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化桌面上的图标都不见了,Windows图形界面无法使用,电脑只剩下一张壁纸、得到的结论是explorer.exe进程用于管理Windows的图形界面,包括开始菜单、任务栏、桌面和文件管理,对系统的稳定性有很大帮助。

(说出explorer.exe进程的作用)。

5、运行“spy++.exe”应用软件,点击按钮“

”,切换到进程显示栏上,查看进程“explorer.exe”的各项信息,并填写下表:

表二:

统计线程的各项信息

进程:

explorer.exe中的各个线程

线程ID

基本优先级

当前优先级

CPU时间

上下文开关

000006E8

000006EC

10

0:

00:

00.437

9664

000006F4

00.000

121

0000006FC

9

01.328

108795

00000700

00000708

18

00000714

1150

000007C4

00.078

7113

000007D0

15

000008E8

11

00.156

3876

00000AC4

62

00000D64

43

14

6、注意某些线程前有“+”,如图所示:

,说明二者之间的差异是有无子进程,“+”表示有子进程。

四、实验材料的提交与成绩评定

1、本实验的实验报告一份(电子版或纸质版一份,具体形式由任课教师确定,格式参考学院统一实验报告)

2、实验源程序一份,请表明题号(电子版)

备注:

做下一次实验之时提交上一次实验的材料,由各班学习委员以班为单位收集并上交任课教师。

3、实验成绩总分为10分,由指导老师根据学生实验表现和实验材料进行评定,本门课程结束后实验平均成绩(实验总成绩/实验次数)按照10%的比例记入期末考试总成绩。

1、进一步掌握进程的相关概念

2、掌握Windows2000/XP有关进程操作的API函数的使用。

3、了解进程的地址空间的含义。

(1)操作系统中的进程和线程的概念;

(2)进程的各种控制;

2、本实验内容主要对应于教材第2章和第3章的内容。

1、启动应用程序“ProcessInformation.exe”,应出现下面的界面:

2、依次改变上图中“下拉组合框”的选项,读出界面中显示的各项信息,并完成下表(填满即可):

(统计中要包含winlogon.exe、lsass.exe、csrss.exe、smss.exe等应用程序)

统计进程的一些信息

父进程ID

线程数

Heaps数量

模块数量

winlogon.exe

516

00000204

lsass.exe

580

00000244

普通

csrss.exe

428

000001AC

468

000001D4

smss.exe

272

00000110

Spoolsv.exe

1316

00000524

Devenv.exe

5900

0000170C

21

Lsm.exe

588

0000024C

3、从上表中观察“进程ID”和“父进程ID”两栏,总结并画出下列程序间的亲缘关系:

winlogon.exe、lsass.exe、csrss.exe、smss.exe。

4、打开“ProcessInfo”工程文件,打开文件“ProcessInfo.cpp”,找到函数:

CreateProcess()的使用方法。

按下列步骤建立一个工程项目,将记事本应用程序运行起来,即创建了一个新的进程。

步骤1、创建一个基于MFC的应用程序。

步骤2、在应用程序类型中选取“基于对话框”的选项。

步骤3、直接点击完成,系统将为你创建一个工程项目。

步骤4、然后在“资源视图”中,打开对话框“IDD_MY_DIALOG”,将出现以下对话框:

步骤5、打开界面上的“工具箱”,放置一个“按钮”,如下图:

步骤6、双击上面的“Button1”按钮,切换到代码的编写处:

输入以下语句:

步骤7、编译并运行此工程项目,看看运行的结果。

1、掌握Windows中线程的操作。

2、熟悉线程不同步时的现象及环境因素。

3、掌握一种同步对象的使用。

1、线程和线程不同步的认识。

2、线程间的同步和通信。

3、本实验内容主要对应于教材第2章中关于线程的各节。

1、定义全局变量inti=0;

初始值置为0。

2、创建两个线程,一个对i执行加1操作,另一个对i执行减1操作。

两个线程执行相同的次数。

显然,正常情况下,i的仍然保持为0。

#include<

stdio.h>

windows.h>

#defineMaxCount9000000//循环次数要很大,可多次尝试一些值

DWORD__stdcallfun1(LPVOIDp1)

{

for(intj=0;

j<

MaxCount;

j++){

i++;

}

return0;

}

DWORD__stdcallfun2(LPVOIDp1)

i--;

3、观察两个线程执行后的情况,可以发觉最后i的值不一定是0,有时是很大的正数,有时是很大的负数,这就是多个线程在操作同一个变量i时,未同步时带来的严重问题。

还应该了解,在多个线程操作共享的变量时,才需要考虑同步问题。

5、给这两个线程加上同步代码,再来观察对i值的影响。

步骤2的函数稍微改动即可:

CRITICAL_SECTIONcs;

:

:

EnterCriticalSection(&

cs);

LeaveCriticalSection(&

加入的同步代码的两个线程,无论如何执行,i的值总是0,结果是正确的。

6、主函数的写法

intmain()

DWORDid1,id2;

HANDLEhThread[2];

:

InitializeCriticalSection(&

hThread[0]=:

CreateThread(0,0,fun1,0,0,&

id1);

hThread[1]=:

CreateThread(0,0,fun2,0,0,&

id2);

WaitForMultipleObjects(2,hThread,1,INFINITE);

printf("

i=%d\n"

i);

DeleteCriticalSection(&

getchar();

1、加深对线程的理解、掌握Windows中线程的操作。

2、掌握死锁产生的原因。

3、掌握信号量、互斥量、事件、临界区等同步对象的使用。

1、进程和线程的关系。

3、本实验内容主要对应于教材第2章中关于线程的各节、第3章中关于死锁的各节。

1、运行实验程序“Reader_Writer.exe”,出现如下界面:

2、交替点击“创建读者线程”和“创建写者线程”按钮,出现如下界面:

3、观察第二步的实验现象,多次试验,可总结为:

(1)、当有“读者”的绿灯亮时,其余的“读者”灯的状态是、其余的“写者”灯的状态是。

(2)、当有“写者”的绿灯亮时,其余的“写者”灯的状态是、其余的“读者”灯的状态是。

这说明“读者”间的关系是、“读者”之间的关系是、“读者-写者”之间的关系是。

(填相容、互斥)

4、打开工程文件“Reader_Writer”,查找下列函数的用法:

(1)AfxBeginThread();

创建线程。

ResumeThread();

让线程恢复运行。

(2)CreateMutex();

创建互斥量。

ReleaseMutex();

删除互斥量。

(3)CreateSemaphore();

创建信号量。

ReleaseSemaphore()删除信号量。

(4)WaitForSingleObject();

等待同步对象。

(5)CloseHandle();

关闭内核对象的句柄。

5、运行“Dining.exe”应用程序,观察线程间“死锁”时的状态。

6、创建一个“Console”应用程序,在main()函数中创建4个线程,线程的工作就是向屏幕输出几个字符后,就自己结束掉。

1、掌握死锁产生的原因和必要条件。

2、掌握银行家算法的实现

1、处理机调度与死锁。

2、死锁的产生与预防。

3、银行家算法。

1、创建C语言工程项目,按照教材上的有关说明,定义相应的数据结构。

intAllocMatrix[5][4]//已经分配资源矩阵

intRequestMatrix[5][4]//需求矩阵

intAvailResource[4]//可用资源向量

intTryProcess[5]//尝试序列

2、给各个数据结构设定合适的初始值。

按照教材课后习题22的内容给上述数据结构设定初始值。

如:

intAllocMatrix[5][4]={//已经分配资源矩阵

{0,0,3,2},

{1,0,0,0},

{1,3,5,4},

{0,3,3,2},

{0,0,1,4}

};

注意:

步骤1、2可同时进行,即利用C语言中的定义变量就可同时初始化的方式进行数值初设。

3、依据银行家算法的描述依次进行资源的试探性分配,直至成功或失败,成功则说明当前状态是安全的;

失败后,还应该将资源回到初始状态,并进行另一次试探;

只有所有的试探都失败了,才能说明当前状态是不安全的。

通常,这种试探性算法采用递归的方法是很合适的,程序也是很简洁的。

代码片段:

if(AvailResource[0]>

=RequestMatrix[k][0]

&

&

AvailResource[1]>

=RequestMatrix[k][1]

AvailResource[2]>

=RequestMatrix[k][2]

AvailResource[3]>

=RequestMatrix[k][3])//若资源能使进程ProcessID结束

for(inti=0;

i<

4;

i++)

AvailResource[i]-=AllocMatrix[k][i];

//恢复资源

intSearchSecurity(intlevel)//递归函数

{

if(level==4){

……

}

else{

SearchSecurity(level+1);

//有条件递归调用自己

……

}其余由大家自行完成。

1、熟悉程序的运行时动态链接。

2、熟悉Windows中内存的分页管理方式。

3、了解虚拟内存的用法,熟悉Windows中相应的API函数。

1、应用程序的动态链接。

2、内存的分页管理、虚拟内存的技术。

3、本实验内容主要对应于教材第4章。

1、运行“SystemInfo.exe”应用程序,出现如下界面:

从该界面上可以看到Windows2000/XP系统中的分页大小(PageSize)是:

4,096,即4K字节,也可以看到本机所安装的处理器的个数是:

1个。

打开工程文件,熟悉信息获取函数的使用:

SYSTEM_INFOsinf;

GetSystemInfo(&

sinf);

2、运行“VMSTATE.exe”应用程序,出现如下界面:

从界面上可以看到,本计算机中所安装的物理内存的大小“TotalPhys”,可用物理内存的大小“AvailPhys”。

打开源文件,熟悉或者信息函数的使用:

MEMORYSTATUSms={sizeof(ms)};

GlobalMemoryStatus(&

ms);

3、运行“VMAlloc.exe”应用程序,掌握其用法和功能:

打开源文件,熟悉以下操作虚拟存储空间函数的使用:

VirtualAlloc()、VirtualQuery()、VirtualFree()。

4、运行“VMMap.exe”应用程序,了解程序的功能,读懂其显示的每一行信息的含义:

从上面显示的信息中,谈谈自己对虚拟储存空间的认识(100字以内)。

1、熟悉基本分页存储管理。

2、建立描述分页内存管理中的页目录表、页表结构。

3、实现进行虚拟内存到物理内存的映射算法。

1、操作系统中内存管理。

2、基本分页内存、分段内存管理。

3、页目录表、页表的作用,以及虚拟地址到物理地址的映射关系。

题目:

分页存储管理的设计与实现。

某系统采用了两级页表机制,可使页表所占用内存尽量少,分页地址变换机构如下图所示:

分页地址变换机构

页目录表共1024项,每个页表1024项,每页的大小是4K个字节。

地址转换时,先由分段部件生成线性地址,再由上面所述的分页部件,根据线性地址中的页目录索引在页目录表中找相应的项,该项值为所需页表在内存的块号,找到该页表后,然后按第21-12位的页表索引找到所需页的物理内存起始地址,把它与12位偏移直接相加得到32位的物理地址。

设系统有如表1中所示的10个段,已知:

1-8段从内存的200000H处开始由低地址到高地址连续存放,映射到3G+4M开始的线性地址空间;

9段(缓冲区)放在400000H开始的内存,映射的线性地址同物理地址;

显存从B8000H开始,映射到3G开始的线性地址空间。

表1

(1)、请设计并填写页目录表和页表(需说明每张表的内存地址)

(2)、线性地址为:

C0401010H、C0404010H、C0414010H,则物理地址是多少,所在段的段名是什么?

(需写出计算的详细步骤)

实验步骤:

1、定义页目录表、页表的数据结构,以及必要的数据。

#definePage_Size4096//页面大小

#definePages26//本题定义的总的页面个数

#defineFirstLinearAddr0xC0000000+0x400000//线性地址3G+4M

#defineSecondLinearAddr0x400000//线性地址0x400000

#defineThirdLinearAddr0xC0000000//线性地址3G

#defineIDT0

#defineTSS1

#defineGDT2

#definePDT3//页目录表的下标

#definePT14//第1个页表的下标

#definePT25//第2个页表的下标

#definePT36//第3个页表的下标

#definePT47//第4个页表的下标

//......省略其它页表

#defineCODE20

#defineSTACK21

#defineDATA22

#defineBUFF

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1