操作系统实验及代码全Windows.docx
《操作系统实验及代码全Windows.docx》由会员分享,可在线阅读,更多相关《操作系统实验及代码全Windows.docx(59页珍藏版)》请在冰点文库上搜索。
操作系统实验及代码全Windows
操作系统实验及代码(全)
题目1:
基本操作命令实践
实验目的:
配合操作系统课程的学习,加深操作系统提供命令接口的功能的理解。
内容及要求:
一、验证如下命令,并且将每条命令的具体格式,记录在实验报告中。
最常见的操作系统管理的一些命令。
其中包括:
1、最基本、最常用的测试物理网络连通性的命令ping。
ping命令用于确定本地主机是否与网络上另外一台主机相连。
2、查看DNS、IP地址、MAC地址的命令ipconfig。
3、网络信使命令netsend。
4、显示计算机当前所开放的所有端口的命令netstat,并了解端口的具体意义。
5、了解net系列命令的使用。
例如netview, netuser, netshare等。
6、路由跟踪命令tracert及pathping。
7、远程桌面连接命令mstsc。
二、借助网络,再列举一些操作系统管理命令,不少于5个并且将每条命令的具体格式,记录在实验报告中。
1.appwiz.cpl:
程序和功能
2.calc:
启动计算器
3.certmgr.msc:
证书管理实用程序
4.charmap:
启动字符映射表
5.chkdsk.exe:
Chkdsk磁盘检查(管理员身份运行命令提示符)
6.cleanmgr:
打开磁盘清理工具
7.cliconfg:
SQLSERVER客户端网络实用工具
8.cmstp:
连接管理器配置文件安装程序
9.cmd.exe:
CMD命令提示符
10.自动关机命令
Shutdown-s-t600:
表示600秒后自动关机
shutdown-a:
可取消定时关机
Shutdown-r-t600:
表示600秒后自动重启
rundll32user32.dll,LockWorkStation:
表示锁定计算机
11.colorcpl:
颜色管理,配置显示器和打印机等中的色彩
12.CompMgmtLauncher:
计算机管理
pmgmt.msc:
计算机管理
14.credwiz:
备份或还原储存的用户名和密码
exp.msc:
打开系统组件服务
16.control:
控制面版
17.dcomcnfg:
打开系统组件服务
18.Dccw:
显示颜色校准
19.devmgmt.msc:
设备管理器
20.desk.cpl:
屏幕分辨率
21.dfrgui:
优化驱动器Windows7→dfrg.msc:
磁盘碎片整理程序
22.dialer:
电话拨号程序
23.diskmgmt.msc:
磁盘管理
24.dvdplay:
DVD播放器
25.dxdiag:
检查DirectX信息
26.eudcedit:
造字程序
27.eventvwr:
事件查看器
28.explorer:
打开资源管理器
29.Firewall.cpl:
Windows防火墙
30.FXSCOVER:
传真封面编辑器
31.fsmgmt.msc:
共享文件夹管理器
32.gpedit.msc:
组策略
33.hdwwiz.cpl:
设备管理器
34.inetcpl.cpl:
Internet属性
35.intl.cpl:
区域
36.iexpress:
木马捆绑工具,系统自带
37.joy.cpl:
游戏控制器
38.logoff:
注销命令
39.lusrmgr.msc:
本地用户和组
40.lpksetup:
语言包安装/删除向导,安装向导会提示下载语言包
41.lusrmgr.msc:
本机用户和组
42.main.cpl:
鼠标属性
43.mmsys.cpl:
声音
44.magnify:
放大镜实用程序
45.mem.exe:
显示内存使用情况(如果直接运行无效,可以先管理员身份运行命令提示符,在命令提示符里输入mem.exe>d:
a.txt即可打开d盘查看a.txt,里面的就是内存使用情况了。
当然什么盘什么文件名可自己决定。
)
46.MdSched:
Windows内存诊断程序
47.mmc:
打开控制台
48.mobsync:
同步命令
49.mplayer2:
简易widnowsmediaplayer
50.Msconfig.exe:
系统配置实用程序
51.msdt:
微软支持诊断工具
52.msinfo32:
系统信息
53.mspaint:
画图
54.Msra:
Windows远程协助
55.mstsc:
远程桌面连接
56.NAPCLCFG.MSC:
客户端配置
57.ncpa.cpl:
网络连接
58.narrator:
屏幕“讲述人”
59.Netplwiz:
高级用户帐户控制面板,设置登陆安全相关的选项
stat:
an(TC)命令检查接口
61.notepad:
打开记事本
62.Nslookup:
IP地址侦测器
63.odbcad32:
ODBC数据源管理器
64.OptionalFeatures:
打开“打开或关闭Windows功能”对话框
65.osk:
打开屏幕键盘
66.perfmon.msc:
计算机性能监测器
67.perfmon:
计算机性能监测器
68.PowerShell:
提供强大远程处理能力
69.printmanagement.msc:
打印管理
70.powercfg.cpl:
电源选项
71.psr:
问题步骤记录器
72.Rasphone:
网络连接
73.Recdisc:
创建系统修复光盘
74.Resmon:
资源监视器
75.Rstrui:
系统还原
76.regedit.exe:
注册表
77.regedt32:
注册表编辑器
78.rsop.msc:
组策略结果集
79.sdclt:
备份状态与配置,就是查看系统是否已备份
80.secpol.msc:
本地安全策略
81.services.msc:
本地服务设置
82.sfc/scannow:
扫描错误并复原/windows文件保护
83.sfc.exe:
系统文件检查器
84.shrpubw:
创建共享文件夹
85.sigverif:
文件签名验证程序
86.slui:
Windows激活,查看系统激活信息
87.slmgr.vbs-dlv:
显示详细的许可证信息
slmgr.vbs-dli:
显示许可证信息
slmgr.vbs-xpr:
当前许可证截止日期
slmgr.vbs-dti:
显示安装ID以进行脱机激活
slmgr.vbs-ipk:
(ProductKey)安装产品密钥
slmgr.vbs-ato:
激活Windows
slmgr.vbs-cpky:
从注册表中清除产品密钥(防止泄露引起的攻击)
slmgr.vbs-ilc:
(Licensefile)安装许可证
slmgr.vbs-upk:
卸载产品密钥
slmgr.vbs-skms:
(name[ort])批量授权
88.snippingtool:
截图工具,支持无规则截图
89.soundrecorder:
录音机,没有录音时间的限制
90.StikyNot:
便笺
91.sysdm.cpl:
系统属性
92.sysedit:
系统配置编辑器
93.syskey:
系统加密,一旦加密就不能解开,保护系统的双重密码
94.taskmgr:
任务管理器(旧版)
95.TM任务管理器(新版)
96.taskschd.msc:
任务计划程序
97.timedate.cpl:
日期和时间
98.UserAccountControlSettings用户账户控制设置
99.utilman:
辅助工具管理器
100.wf.msc:
高级安全Windows防火墙
101.WFS:
Windows传真和扫描
102.wiaacmgr:
扫描仪和照相机向导
103.winver:
关于Windows
104.wmimgmt.msc:
打开windows管理体系结构(WMI)
105.write:
写字板
106.wscui.cpl:
操作中心
107.wscript:
windows脚本宿主设置
108.wuapp:
Windows更新
题目2:
进程的使用
内容及要求:
①掌握Windows进程的创建和销毁API的调用方法;编程代码,在程序中创建和销毁一个Word进程;
②能够挂起和激活被创建进程的主线程;
③通过Windows进程管理器查看系统进程列表的变化。
实验指导:
①创建进程的API
BOOLCreateProcess(
LPCTSTRlpApplicationName,
LPTSTRlpCommandLine,
LPSECURITY_ATTRIBUTESlpProcessAttributes,
LPSECURITY_ATTRIBUTESlpThreadAttributes,
BOOLbInheritHandles,
DWORDdwCreationFlags,
LPVOIDlpEnvironment,
LPCTSTRlpCurrentDirectory,
LPSTARTUPINFOlpStartupInfo,
LPPROCESS_INFORMATIONlpProcessInformation
);
例程:
voidmain(VOID){
STARTUPINFOsi;
PROCESS_INFORMATIONpi;
ZeroMemory(&si,sizeof(si));
si.cb=sizeof(si);
ZeroMemory(&pi,sizeof(pi));
//Startthechildprocess.
if(!
CreateProcess(NULL,//Nomodulename(usecommandline).
"MyChildProcess",//Commandline.
NULL, //Processhandlenotinheritable.
NULL, //Threadhandlenotinheritable.
FALSE, //SethandleinheritancetoFALSE.
0, //Nocreationflags.
NULL, //Useparent'senvironmentblock.
NULL, //Useparent'sstartingdirectory.
&si, //PointertoSTARTUPINFOstructure.
&pi) //PointertoPROCESS_INFORMATIONstructure.
){
ErrorExit("CreateProcessfailed.");
}
//Waituntilchildprocessexits.
WaitForSingleObject(pi.hProcess,INFINITE);
//Closeprocessandthreadhandles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
②销毁进程API
BOOLTerminateProcess(
HANDLEhProcess,
UINTuExitCode
);
③挂起进程的主线程API
DWORDSuspendThread(
HANDLEhThread
);
④激活进程的主线程API
DWORDResumeThread(
HANDLEhThread
);
⑤进程查看器
#include"iostream"
#include"windows.h"
usingnamespacestd;
voidmain(VOID){
STARTUPINFOsi;
PROCESS_INFORMATIONpi;
TCHARszCommandLine[]=TEXT("NOTEPAD");
ZeroMemory(&si,sizeof(si));
si.cb=sizeof(si);
ZeroMemory(&pi,sizeof(pi));
if(!
CreateProcess(NULL,szCommandLine,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
{
fprintf(stderr,"CreateprocessFailed");
}
intx;
while(true){
cout<<"请输入要选择的操作:
\n0:
销毁进程\n1:
挂起进程\n2:
激活进程\n3:
退出\n";
cin>>x;
switch(x){
case0:
if(TerminateProcess(pi.hProcess,0))
cout<<"销毁进程成功"<else
cout<<"销毁失败"<break;
case1:
if(SuspendThread(pi.hThread))
cout<<"挂起进程成功"<else
cout<<"挂起失败"<break;
case2:
if(ResumeThread(pi.hThread))
cout<<"激活进程成功"<else
cout<<"激活失败"<break;
case3:
exit(0);
default:
cout<<"选项不正确"<}
}
}
题目3 作业调度
一、实验目的
1、 对作业调度的相关内容作进一步的理解。
2、 明白作业调度的主要任务。
3、 通过编程掌握作业调度的主要算法。
二、实验内容及要求
1、对于给定的一组作业,给出其到达时间和运行时间,例如下表所示:
作业名
A
B
C
D
E
F
到达时间
0
2
5
5
12
15
服务时间
6
50
20
10
40
8
2、分别用先来先服务算法、短作业优先和响应比高者优先三种算法给出作业的调度顺序。
3、计算每一种算法的平均周转时间及平均带权周转时间并比较不同算法的优劣。
三、实验报告
1、程序中使用的数据结构及符号说明。
2、给出主要算法的流程图。
3、给出程序清单并附上注释。
4、给出测试数据和运行结果。
#include
usingnamespacestd;
#defineMAX10
structtask_struct{
charname[10];//进程名称
intnumber;//进程编号
floatcome_time;//到达时间
floatrun_begin_time;//开始运行时间
floatrun_time;//运行时间
floatrun_end_time;//运行结束时间
intorder;//运行次序
intrun_flag;//调度标志
}tasks[MAX];
intcounter;//实际进程个数
intfcfs();//先来先服务
intsjf();//短作业优先
inthrrn();//响应比高优先
intpinput();//进程参数输入
intpoutput();//调度结果输出
voidmain(){
intoption;
pinput();
while(true){
printf("请选择调度算法(0~4):
\n");
printf("1.先来先服务\n");
printf("2.短作业优先\n");
printf("3.响应比高优先\n");
printf("0.退出\n");
scanf("%d",&option);
switch(option){
case0:
printf("运行结束。
\n");
exit(0);
break;
case1:
printf("对进程按先来先服务调度。
\n\n");
fcfs();
poutput();
break;
case2:
printf("对进程按短作业优先调度。
\n\n");
sjf();
poutput();
break;
case3:
printf("对进程按响应比高优先调度。
\n\n");
hrrn();
poutput();
break;
}
}
}
intfcfs()//先来先服务
{
floattime_temp=0;
inti;
intnumber_schedul;
time_temp=tasks[0].come_time;
for(i=0;itasks[i].run_begin_time=time_temp;
tasks[i].run_end_time=tasks[i].run_begin_time+tasks[i].run_time;
tasks[i].run_flag=1;
time_temp=tasks[i].run_end_time;
number_schedul=i;
tasks[number_schedul].order=i+1;
}
return0;
}
intsjf(){//短作业优先
floattemp_time=0;
inti=0,j;
intnumber_schedul,temp_counter;
floatrun_time;
run_time=tasks[i].run_time;
j=1;
while((jif(tasks[j].run_timerun_time=tasks[j].run_time;
i=j;
}
j++;
}
//查找第一个被调度的进程
//对第一个被调度的进程求相应的参数
number_schedul=i;
tasks[number_schedul].run_begin_time=tasks[number_schedul].come_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time;
tasks[number_schedul].run_flag=1;
temp_time=tasks[number_schedul].run_end_time;
tasks[number_schedul].order=1;temp_counter=1;
while(temp_counterfor(j=0;jif((tasks[j].come_time<=temp_time)&&(!
tasks[j].run_flag)){
run_time=tasks[j].run_time;
number_schedul=j;
break;
}
}
for(j=0;jif((tasks[j].come_time<=temp_time)&&(!
tasks[j].run_flag))
if(tasks[j].run_timerun_time=tasks[j].run_time;
number_schedul=j;
}
}
//查找下一个被调度的进程
//对找到的下一个被调度的进程求相应的参数
tasks[number_schedul].run_begin_time=temp_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time;
tasks[number_schedul].run_flag=1;
temp_time=tasks[number_schedul].run_end_time;
temp_counter++;
tasks[number_schedul].order=temp_counter;
}
return0;
}
inthrrn()/*响应比高优先*/
{
intj,number_schedul,temp_counter;
floattemp_time,respond_rate,max_respond_rate;
//第一个进程被调度
tasks[0].run_begin_time=tasks[0].come_time;
tasks[0].run_end_time=tasks[0].run_begin_time+tasks[0].run_time;
temp_time=tasks[0].run_end_time;
tasks[0].run_flag=1;
tasks[0].order=1;
temp_counter=1;//调度其他进程
while(temp_countermax_respond_rate=0;
for(j=1;jif((tasks[j].come_time<=temp_time)&&(!
tasks[j].run_flag))
{
respond_rate=(temp_time-tasks[j].come_time)/tasks[j].run_time;
if(respond_rate>max_respond_rate){
max_respond_rate=respond_rate;
number_schedul=j;
}
}
}
//找响应比高的进程
tasks[number_schedul].run_begin_time=temp_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begi