1操作系统实验指导信息工程学院赵玉兰2011-02-252目录实验1操作系统基本配置与资源管理...................................2实验2WindowsXP编程...............................................5实验3进程的创建和控制.............................................9实验4存储管理....................................................173实验1操作系统基本配置与资源管理实验目的(1)了解和学习Windows系统管理工具及其使用(2)熟悉Windows系统工具的内容和应用(3)掌握操作系统最新理论和实例的发展实验内容【实验1任务一】Windows操作系统的系统管理【实验步骤】(1)登录进入WindowsXPProfessional。在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么?(2)使用“计算机管理”可通过一个合并的桌面工具来管理本地或远程计算机,它将几个WindowsXP管理实用程序合并到一个控制台目录树中,使管理员可以轻松地访问特定计算机的管理属性和工具。在“管理工具”窗口中,双击“计算机管理”图标。“计算机管理”使用的窗口与“Windows资源管理器”相似。在用于导航和工具选择的控制台目录树中有“系统工具”、“存储”及“服务和应用程序”等节点,窗口右侧“名称”窗格中显示了工具的名称、类型或可用的子工具等。(3)事件查看器不但可以记录各种应用程序错误、损坏的文件、丢失的数据以及其他问题,而且还可以把系统和网络的问题作为事件记录下来。管理员通过查看在事件查看器中显示的系统信息,可以迅速诊断和纠正可能发生的错误和问题。在“管理工具”窗口中,双击“事件查看器”图标,查看本地事件日志。在事件查看器中观察“应用程序日志”。本地计算机中,共有几个应用程序日志事件?单击“查看”菜单中的“筛选”命令,系统日志包括的事件类型有哪些?(4)“性能”监视工具通过图表、日志和报告,使管理员可以看到特定的组件和应用进程的资源使用情况。利用性能监视器,可以测量计算机的性能,识别以及诊断计算机可能发生的错误,并且可以为某应用程序或者附加硬件制作计划。另外,当资源使用达到某一限定值时,也可以使用警报来通知管理员。在“管理工具”窗口中,双击“性能”图标。“性能”窗口的控制台目录树中包括的节点有哪些?(5)在“管理工具”窗口中,双击“服务”图标。在你的本地计算机中,管理着多少个系统服务项目?通过观察,重点描述你所感兴趣的5个系统服务项目。(6)ODBC即开放数据库连接,通过ODBC可以访问来自多种数据库管理系统的数据。例如,ODBC数据源会允许一个访问SQL数据库中数据的程序,同时访问VisualFoxPro数4据库中的数据。为此,必须为系统添加称为“驱动程序”软件组件。在“管理工具”窗口中,双击“数据源(ODBC)”图标,打开“ODBC数据源管理器”对话框,请描述其中各选项卡的功能。单击“驱动程序”选项卡,试分析,系统为哪些数据源缺省安装了ODBC驱动程序。【实验1任务二】操作系统理论搜索【实验步骤】(1)启动浏览器。(2)搜索分布式操作系统理论的理论模型。【实验1任务三】操作系统实例发展概况【实验步骤】(1)启动浏览器。(2)搜索Windows系列、UNIX和Linux系列、MAC操作系统系列的版本发展情况。5实验2WindowsXP编程实验目的(1)掌握WindowsXP程序设计方法(2)理解WindowsXP的结构。实验内容【实验2任务一】简单的控制台应用程序【实验步骤】(1)登录进入WindowsXPProfessional。(2)在“开始”菜单中单击“程序”-“附件”-“记事本”命令,将以下程序键入记事本中,并把代码保存为Hello.cpp。#includeiostreamvoidmain(){std::coutHello,WindowsXPstd::endl;}(3)在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,并利用简单的标准命令行:C:\CLHello.cpp来创建可执行的Hello.EXE。操作能否正常进行?如果不行,则可能的原因是什么?(4)运行Hello.EXE程序,产生用户键入的一行文字。记录运行结果(如果运行不成功,则可能的原因是什么?)【实验2任务二】GUI应用程序【实验步骤】(1)在“开始”菜单中单击“程序”-“附件”-“记事本”命令,将以下程序键入记事本中,并把代码保存。//msgbox项目#includewindows.h//告诉连接器与包括MessageBoxAPI函数的user32库进行连接#pragmacomment(lib,user32.lib)intAPIENTRYWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)6{::MessageBox(NULL,//没有父窗口HelloWindowsXP,//消息框中的文本GREET,//消息框的标题MB_OK);//其中只有一个ok按钮//返回0以便通知系统不进入消息循环return0;}(2)编译、运行。【实验2任务三】进程对象设计【实验步骤】(1)将以下程序键入记事本中,并保存。//prochandle项目#includewindows.h#includeiostream//确定自己的优先权的简单应用程序voidmain(){//从当前过程中提取句柄HANDLEhProcessThis=::GetCurrentProcess();//请求内核提供该过程所属的优先权类DWORDdwPriority=::GetPriorityClass(hProcessThis);//发出消息,为用户描述该类std::coutcurrentprocesspriority:;switch(dwPriority){caseHIGH_PRIORITY_CLASS:std::coutHigh;break;caseNORMAL_PRIORITY_CLASS:std::coutNormal;break;caseIDLE_PRIORITY_CLASS:std::coutIdle;break;caseREALTIME_PRIORITY_CLASS:std::coutRealtime;break;7default:std::coutunknow;break;}std::coutstd::endl;}(2)在命令提示符窗口中编译、运行2-3.cpp文件,运行结果为:_______________【实验2任务四】找出系统中正在运行的所有进程【实验步骤】(1)将以下程序键入记事本中,并保存。//proclist项目#includewindows.h#includetlhelp32.h#includeiostream.h//当在用户模式机内核模式下都提供所耗时间时,在内核模式下进行所耗时间的64位计算的帮助方法DWORDGetKernelModePercentage(constFILETIME&ftKernel,constFILETIME&ftUser){//将FILETIME结构转化为64位整数ULONGLONGqwKernel=(((ULONGLONG)ftKernel.dwHighDateTime)32)+ftKernel.dwLowDateTime;ULONGLONGqwUser=(((ULONGLONG)ftUser.dwHighDateTime)32)+ftUser.dwLowDateTime;//将消耗时间相加,然后计算消耗在内核模式下的时间百分比ULONGLONGqwTotal=qwKernel+qwUser;DWORDdwPct=(DWORD)(((ULONGLONG)100*qwKernel)/qwTotal);return(dwPct);}//以下是将当前运行过程名和消耗在内核模式下的时间百分数都显示出来的应用程序voidmain(){//对当前系统中运行的过程拍取“快照”HANDLEhSnapshot=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//初始化进程入口PROCESSENTRY32pe;::ZeroMemory(&pe,sizeof(pe));pe.dwSize=sizeof(pe);8BOOLbMore=::Process32First(hSnapshot,&pe);while(bMore){//打开用于读取的进程HANDLEhProcess=::OpenProcess(PROCESS_QUERY_INFORMATION,//指明要得到信息FALSE,//不必继承这一句柄pe.th32ProcessID);//要打开的进程if(hProcess!=NULL){//找出进程的时间FILETIMEftCreation,ftKernelMode,ftUserMode,ftExit;::GetProcessTimes(hProcess,//所感兴趣的进程&ftCreation,//进程的启动时间&ftExit,//结束时间(如果有的话)&ftKernelMode,//在内核模式下消耗的时间&ftUserMode);//在用户模式下消耗的时间//计算内核模式消耗的时间百分比DWORDdwPctKernel=::GetKernelModePercentage(ftKernelMode,//在内核模式上消耗的时间ftUserMode);//在用户模式下消耗的时间//向用户显示进程的某些信息coutprocessID:pe.th32ProcessID,EXEfile:pe.szExeFile,%inKernelmode:dwPctKernelendl;//消除句柄::CloseHandle(hProcess);}//转向下一个进程bMore=::Process32Next(hSnapshot,&pe);}}(2)编译、运行,记录运行结果。9实验3进程的创建和控制实验目的(1)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念。(2)通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。实验内容【实验3任务一】进程创建【实验步骤】(1)登录进入WindowsXPProfessional。(2)在“开始”菜单中单击“程序”-“附件”-“记事本”命令,将以下程序键入记事本中,并保存。//proccreate项目#includewindows.h#includeiostream#includestdio.h//创建传递过来的进程的克隆过程并赋于其ID值voidStartClone(intnCloneID){//提取用于当前可执行文件的文件名TCHARszFilename[MAX_PATH];::GetModuleFileName(NULL,szFilename,MAX_PATH);//格式化用于子进程的命令行并通知其EXE文件名和克隆IDTCHARszCmdLine[MAX_PATH];::sprintf(szCmdLine,\%s\d%,szFilename,nCloneID);//用于子进程的STARTUPINFO结构STARTUPINFOsi;::ZeroMemory(reinterpret_castvoid*(&si),sizeof(si));si.cb=sizeof(si);//必须是本结构的大小//返回的用于子进程