操作系统实验报告1.docx
《操作系统实验报告1.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告1.docx(78页珍藏版)》请在冰豆网上搜索。
![操作系统实验报告1.docx](https://file1.bdocx.com/fileroot1/2022-12/11/2cdacd68-2ff0-4967-a119-e3df5f67ff55/2cdacd68-2ff0-4967-a119-e3df5f67ff551.gif)
操作系统实验报告1
常州大学
操作系统课程实验报告
姓名金苗
专业班级信息与计算科学
学号13434104
指导老师张英丽
实验时间2015年10月23日——2015年12月15日
实验一WindowsXP系统管理
一实验目的
1)了解和学习Windows系统管理工具及其使用;
2)熟悉Windows系统工具的内容和应用;
3)熟悉Windows操作系统的应用环境。
二实验环境
需要准备一台运行WindowsXP操作系统的计算机。
三背景知识
WindowsXP的“管理工具”中集成了许多系统管理工具,利用这些工具,管理员可以方便地实现各种系统维护和管理功能。
这些工具都集中在“控制面板”的“管理工具”选项下,用户和管理员可以很容易地对它们操作和使用。
在默认情况下,只有一些常用工具——如服务、计算机管理、事件查看器、数据源(ODBC)、性能和组件服务等——随WindowsXP系统的安装而安装。
四实验内容与步骤
为了帮助用户管理和监视系统,WindowsXP提供了多种系统管理工具,其中最主要的有计算机管理、事件查看器和性能监视等。
步骤1:
登录进入WindowsXP。
步骤2:
在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。
在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么:
1)本地安全策略:
查看和修改本地安全策略,如用户权限和审核策略
2)Internet信息服务:
管理IIS,Internet和Intranet站点的WEB服务器
3)服务:
启动和停止服务
4)计算机管理:
管理磁盘以及使用其他系统工具来管理本地或远程的计算机
5)事件查看器:
显示来自于Windows和其他程序的监视与排错消息
6)数据源ODBC:
添加、删除、以及配置ODBC数据源和驱动程序
7)性能:
显示系统性能图表以及配置数据日志和警报
8)组件服务:
配置和管理COM+应用程序
1.计算机管理
使用“计算机管理”可通过一个合并的桌面工具来管理本地或远程计算机,它将几个WindowsXP管理实用程序合并到一个控制台目录树中,使管理员可以轻松地访问特定计算机的管理属性和工具。
步骤3:
在“管理工具”窗口中,双击“计算机管理”图标。
“计算机管理”使用的窗口与“Windows资源管理器”相似。
在用于导航和工具选择的控制台目录树中有“系统工具”、“存储”及“服务和应用程序”等节点,窗口右侧“名称”窗格中显示了工具的名称、类型或可用的子工具等。
它们是:
1)系统工具,填入表1-3中。
表1-3实验记录
名称
类型
描述
事件查看器
扩展管理单元
显示事件日志
共享文件夹
显示共享文件夹,目前回话及打开文件
本地用户和组
扩展管理单元
管理本地用户和组
性能日志和警报
扩展管理单元
配置数据性能日志和警报
设备管理器
设备管理器
2)存储,填入表1-4中。
表1-4实验记录
名称
类型
描述
可移动存储
扩展管理单元
编录可移动媒体并管理自动库
磁盘碎片整理程序
扩展名管理单元
对本地卷上的文件和文件夹进行碎片整理
磁盘管理
管理单元
逻辑磁盘管理器
3)服务和应用程序,填入表1-5中。
表1-5实验记录
名称
性能
描述
MicrosoftSQLServer
服务
启动,控制并设置Windows服务
WMI控件
扩展管理单元
配置和控制WindowsManagementInstrumentation(WMI)服务
索引服务
扩展管理单元
提供快速和灵活的文件内容和属性搜索
Internet信息服务
2.事件查看器
事件查看器不但可以记录各种应用程序错误、损坏的文件、丢失的数据以及其他问题,而且还可以把系统和网络的问题作为事件记录下来。
管理员通过查看在事件查看器中显示的系统信息,可以迅速诊断和纠正可能发生的错误和问题。
步骤4:
在“管理工具”窗口中,双击“事件查看器”图标。
在WindowsXP事件查看器中,管理员可以查看到三种类型的本地事件日志,请填入表1-6中。
表1-6实验记录
名称
类型
描述
当前大小
应用程序
日志
应用程序错误记录
128.0KB
安全性
日志
安全审核记录
64.0KB
系统
日志
系统错误记录
128.0KB
步骤5:
在事件查看器中观察“应用程序日志”:
本地计算机中,共有367个应用程序日志事件。
步骤6:
单击“查看”菜单中的“筛选”命令,系统日志包括的事件类型有:
1)信息(I)
2)警告(W)
3)错误(O)
4)成功审核(S)
5)失败审核(L)
3.性能监视
“性能”监视工具通过图表、日志和报告,使管理员可以看到特定的组件和应用进程的资源使用情况。
利用性能监视器,可以测量计算机的性能,识别以及诊断计算机可能发生的错误,并且可以为某应用程序或者附加硬件制作计划。
另外,当资源使用达到某一限定值时,也可以使用警报来通知管理员。
步骤7:
在“管理工具”窗口中,双击“性能”图标。
“性能”窗口的控制台目录树中包括的节点有:
1)性能监视器
2)性能日志和警报,其中的子节点填入表1-7中。
表1-7实验记录
名称
描述
计数器日志
配置性能数据和监视器日志
跟踪日志
配置跟踪事件日志
警报
配置性能警报
4.服务
步骤8:
在“管理工具”窗口中,双击“服务”图标。
在你的本地计算机中,管理着100个系统服务项目。
通过观察,重点描述你所感兴趣的5个系统服务项目:
1)WorldWideWebPublishing:
通过Internet信息服务管理单元提供Web连接和管理
2)WindowsImageAcquisition:
为扫描仪和照相机提供图像捕获
3)SecurityAccountsManager:
存储本地用户账号的安全信息
4)SecurityCenter:
监视系统安全设置和配置
5)ShellHardwareDetection:
为自动提供硬件事件提供通知
5.数据源(ODBC)
ODBC,即开放数据库连接。
通过ODBC可以访问来自多种数据库管理系统的数据。
例如,ODBC数据源会允许一个访问SQL数据库中数据的程序,同时访问VisualFoxPro数据库中的数据。
为此,必须为系统添加称为“驱动程序”软件组件。
步骤9:
在“管理工具”窗口中,双击“数据源(ODBC)”图标,打开“ODBC数据源管理器”对话框,请描述其中各选项卡的功能,填入表1-8中。
表1-8实验记录
选项卡
功能描述
用户DSN
ODBC用户数据源存储了如何与指定数据提供程序连接的信息。
用户数据只对当前用户可见,而且只能用于当前机器上。
系统DSN
ODBC用户数据源存储了如何与指定数据提供程序连接的信息。
用户数据只对当前用户可见,包括NT服务。
文件DSN
ODBC 文件数据源允许用户连接到数据提供程序。
文件DSN可以由安装了相同驱动程序的用户共享。
驱动程序
ODBC驱动程序允许支持ODBC的程序从ODBC数据源获取信息。
要安装新的驱动程序,请使用其安装程序。
跟踪
ODBC跟踪允许创建调用驱动程序的日志,以供技术支持人员查看,也有助于您调试应用程序。
VisualStudio跟踪启用MicrosoftVisualStudio的ODBC跟踪。
连接池
连接池允许应用程序重用打开连接句柄,此操作将节省到服务器的往返过程。
步骤10:
单击“驱动程序”选项卡,试分析,系统为哪些数据源缺省安装了ODBC驱动程序:
1)MSORCL32.DLL
2)SQLSRV32.DLL
实验二Windows任务管理器的进程管理
一实验目的
1)在Windows任务管理器中对程序进程进行响应的管理操作;
2)熟悉操作系统进程管理的概念;
3)学习观察操作系统运行的动态性能。
二实验环境
需要准备一台运行WindowsXP操作系统的计算机。
三背景知识
WindowsXP的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位。
使用任务管理器,可以打开监视计算机性能的关键指示器,快速查看正在运行的程序的状态,或者终止已停止响应的程序。
也可以使用多个参数评估正在运行的进程的活动,以及查看CPU和内存使用情况的图形和数据。
四实验内容与步骤
启动并进入Windows环境,单击Ctrl+Alt+Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口。
当前机器中由你打开,正在运行的应用程序有:
1)实验二Windows任务管理器的进程管理
2)管理工具
Windows“任务管理器”的窗口由5个选项卡组成,分别是:
1)应用程序
2)进程
3)性能
4)联网
5)用户
当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察):
1)映像名称
2)用户名
3)CPU
4)内存使用
1.使用任务管理器终止进程
步骤1:
单击“进程”选项卡,一共显示33个进程。
请试着区分一下,其中:
系统(SYSTEM)进程有19个,填入表2-1中。
表2-1实验记录
映像名称
用户名
作用
内存使用
Svchost.exe
SYSTEM
Windows服务主进程
4416K
Service.exe
SYSTEM
服务和控制器应用程序
3272K
sqlservr.exe
SYSTEM
SQL基础服务
9580K
LMS.exe
SYSTEM
LocalManageabilityservice
2912K
MDM.EXE
SYSTEM
针对应用软件进行排错
3424K
Inetinfo.exe
SYSTEM
支持微软WindowsIIS网络服务的除错
9780K
Spoolsv.exe
SYSTEM
管理所有本地和网络打印队列及控制所有打印工作
5612K
ati2evxx.exe
SYSTEM
管理ATIHotkey特性
4024K
Svchost.exe
SYSTEM
Windows服务主进程
24912K
Svchost.exe
SYSTEM
Windows服务主进程
5084K
service.exe
SYSTEM
服务和控制器应用程序
3476K
lsass.exe
SYSTEM
LocalSecurityAuthorityProcess
1736K
Services.exe
SYSTEM
服务和控制器应用程序
5904K
Winlogon.exe
SYSTEM
Windows登录应用程序
1820K
Csrss.exe
SYSTEM
ClientServerRuntimeProcess
9492K
lsm.exe
SYSTEM
本地会话管理器服务
1156K
Smss.exe
SYSTEM
Windows会话管理器
408K
System
SYSTEM
NTKernel&System
2196K
SystemIdleProcess
SYSTEM
处理器空闲时间百分比
16K
服务(SERVICE)进程有4个,填入表2-2中。
表2-2实验记录
映像名称
用户名
作用
内存使用
Svchost.exe
LOCALSERVICE
Windows服务主进程
4212K
alg.exe
LOCALSERVICE
处理微软Windows网络连接共享和网络连接防火墙
3808K
Svchost.exe
NETWORKSERVICE
Windows服务主进程
3848K
Svchost.exe
NETWORKSERVICE
Windows服务主进程
4660K
用户进程有9个,填入表2-3中。
表2-3实验记录
映像名称
用户名
作用
内存使用
Taskmgr.exe
Administrator
任务管理器
2596K
TXPplatform.exe
Administrator
TXPplatform
620K
Safecenter.exe
Administrator
安全中心
12728K
sogouflash.exe
Administrator
搜狗拼音输入法-Flash皮肤引擎
10976K
Sqlmangr.exe
Administrator
构建和管理用于业务的高可用和高性能的数据应用程序
5548K
Ctfmon.exe
Administrator
供语音识别、手写识别、键盘、翻译和其它用户输入技术的支持
3512K
RTHDCPL.EXE
Administrator
声卡特性设置软件相关程序
6268K
Explorer.exe
Administrator
Windows资源管理器
34760K
Wscntfy.exe
Administrator
Windows安全相关策略
2544K
WINWORD.EXE
Administrator
MicrosoftOfficeWord
28844K
步骤2:
单击要终止的进程,然后单击“结束进程”按钮。
终止进程,将结束它直接或间接创建的所有子进程。
例如,如果终止了电子邮件程序(如Outlook98)的进程树,那么同时也终止了相关的进程,如MAPI后台处理程序mapisp32.exe。
请将终止某进程后的操作结果与原记录数据对比,发生了什么:
终止后,原窗口被关闭,进程不再运行,未经保持的数据都将失去。
2.显示其他进程记数器
在“进程”选项卡上单击“查看”菜单,然后单击“选择列”命令。
单击要增加显示为列标题的项目,然后单击“确定”。
为对进程列表进行排序,可在“进程”选项卡上单击要根据其进行排序的列标题。
而为了要反转排序顺序,可再次单击列标题。
经过调整,“进程”选项卡现在显示的项目分别是:
映像名称,用户名,CPU,内存使用。
通过对“查看”菜单的选择操作,可以在“任务管理器”中更改显示选项:
·在“应用程序”选项卡上,可以按详细信息、大图标或小图标查看。
·在“性能”选项卡上,可以更改CPU记录图,并显示内核时间。
“显示内核时间”选项在“CPU使用”和“CPU使用记录”图表上添加红线。
红线指示内核操作占用的CPU资源数量。
3.更改正在运行的程序的优先级
要查看正在运行的程序的优先级,可单击“进程”选项卡,单击“查看”菜单,单击“选择列”-“基本优先级”命令,然后单击“确定”按钮。
为更改正在运行的程序的优先级,可在“进程”选项卡上右键单击您要更改的程序,指向“设置优先级”,然后单击所需的选项。
更改进程的优先级可以使其运行更快或更慢(取决于是提升还是降低了优先级),但也可能对其他进程的性能有相反的影响。
记录操作后所体会的结果
当进程的优先级提高后,该进程的执行速度比其他进程的速度快了,操作起来不卡,优先级被降低的进程,运行速度明显变慢。
在多处理器计算机上,用户还可以给处理器指派进程,将程序或进程的执行限制在选定的处理器上,但这有可能导致总体性能的下降。
实验三:
进程调度
一、实验内容
1.模拟批处理多道操作系统的进程调度;
2.模拟实现同步机构避免并发进程执行时可能与时间相关的错误;
二、实验目的
进程调度时进程管理的主要内容之一,通过设计,编制,调试一个简单的进程调度模拟系统,对进程调度,进程运行状态变换及PV操作加深理解和掌握。
三、实验题目
采用剥夺式优先算法,对三个进程进行模拟调度
模拟PV操作同步机构,用PV操作解决进程进入临界区的问题。
【提示】
(1)对三个进程进行模拟调度,对各进程的优先数静态设置,P1,P2,P3三个进程的优先数为1,2,3,并指定P1的优先数最高,P3的优先数最低,每个进程都处于执行态“e”,就绪态“r”,等待态“w”三种状态之一,并假定初始态为“r”。
(2)每一个进程用一个PCB表,PCB表的内容根据具体情况设置,该系统在运行过程中能显示或打印各进程和参数的变化情况,以便观察各进程的调度。
(3)在完成必要的初始化后,便进入进程调度程序,首先由P1进入执行,当执行进程因等待某各事件被阻塞或唤醒某个进程等待进程时,转进程调度。
(4)在进入临界区前后,调PV操作。
(5)如果被唤醒的进程优先数高于现有执行的进程,则剥夺现行进程的执行权。
(6)当三个进程都处于等待状态时,本模拟系统退出执行。
四、实验要求
1、仔细阅读程序,然后调试该程序;
2、将程序中进程的优先数改为随机数或者改为动态优先数,重新调试该程序;
3、将p1先执行改为p2或者p3先执行,并与p1先执行时的结果进行比较;
4、写好书面实验报告,于下次实验课时提交实验报告。
五、示例
1.数据结构:
(1)进程控制块PCB
struct{
intid;
charstatus;
intpriority;
intwaiter1;
}
(2)信号量
struct{
intvalue;
intwaiter2;
}sem[2]
(3)现场保护栈stack
charstack[11][4]
每个进程都有一个大小为10个字的现场保护栈,用来保护被中断时的断点地址等信息。
(4)全局变量
inti;用以模拟一个通用寄存器
charaddr;用以模拟程序计数器
intm1,m2;为系统设置的公用数据被三个进程共享使用。
六、程序框图:
略
七、程序说明:
本程序是用C语言编写,模拟三个进程的运行情况,过程在运行中要调用P操作申请信号量,如果该过程得到其申请的信号量,就继续运行,否则P操作阻塞该申请过程的运行,并将过程置为所申请信号量的等待者,如果已有其它过程在等待同一信号量则将该申请过程排在所有等待进程之后。
过程运行中除了调用P操作申请信号量外,还要调用V操作释放信号量,V操作在释放信号量之后,还将唤醒因申请此信号量而被阻塞的过程。
在程序运行的三个过程(PROCESS1,PROCESS2,PROCESS3),其中过程运行中通过P操作申请信号量1,过程2通过V操作释放信号量2,然后做一次操作申请信号量2。
三个过程之间存在这样一种关系:
过程1消耗的信号量1由过程2通过V操作产生,而过程3即释放信号量2也消耗信号量2。
三个过程的运行通过进程调度模块同意安排,调度模块通过FIND()函数找到第一个就绪过程,如果当前没有过程已在运行,就直接运行此过程,如果有,则比较两者的优先数,然后运行优先权高者。
七、源程序:
#include
intm1;
intm2;
struct{
intid;
intwaiter1;
intpriority;
charstatus;
}pcb[4];
struct{
intvalue;
intwaiter2;
}sem[3];
charstack[11][4];
inti,ep;
charaddr;
voidinit();
intfind();
intw2();
intprocess1();
intprocess2();
intprocess3();
intp(int,int,char);
intv(int,int,char);
main(){
init();
printf("系统程序开始执行\n");
for(;;){
if(find()!
=0)w2();
elsebreak;
}
printf("系统程序结束\n");
}
voidinit(){
intj,k;
pcb[0].status='w';
pcb[0].priority=4;
for(j=1;j<=3;j++){
pcb[j].id=j;
pcb[j].status='r';
pcb[j].waiter1=0;
pcb[j].priority=j;
}
for(j=1;j<=2;j++){
sem[j].value=1;
sem[j].waiter2=0;
}
i=0;
ep=0;
addr='0';
m1=0;
m2=0;
for(j=1;j<=10;j++){
for(k=1;k<=3;k++)
stack[j][k]='0';
}
}
intfind(){
intj;
for(j=1;j<=3;j++)
if(pcb[j].status=='r')return(j);
return(0);
}
intw2(){
intpd;
pd=find();
if(pd==0)return(0);
elseif(ep==0){
pcb[pd].status='e';
ep=pd;
printf("进程%d正在执行\n",ep);
}
elseif(pcb[pd].prioritypcb[ep].status='r';
printf("读取进程%d\n",pcb[pd].id);
pcb[pd].status='e';
ep=pd;
}
printf("运行进程%d\n",ep);
i=stack[1][ep];
addr=stack[2][ep];
switch(ep){
case1:
process1();
break;
case2:
process2();
break;
case3:
process3();
break;
default:
printf("当前进程出现错误%d\n",ep);
break;
}
}
intprocess1(){
if(addr=='m')gotom;
i=1;
a:
printf("进程1在信号量sem[1]上调用P操作\n");
if(p(1,1,'m')==0)return(0);
elsegotom;
m:
printf("打印进程1...m1=%d\n",m1);
printf("打印进程1...i=%d\n",i);
i+=5;
gotoa;
}
intprocess2(){
if(addr=='m')gotom;
if(addr=='n')goton;
i=1;
a:
printf("进程2在信号量sem[2]上调用P操作\n");
if(p(2,2,'m')==0)return(0);
m:
m1=2*m2;
printf("进程2在信号量sem[1]上调用V操作m1=%d\n",m1);