蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > DOC文档下载
 

观察linux行为 实验报告.doc

  • 资源ID:397570       资源大小:82.50KB        全文页数:11页
  • 资源格式: DOC        下载权限:游客/注册会员    下载费用:10积分 【人民币10元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要10积分 【人民币10元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

观察linux行为 实验报告.doc

实验二观察Linux行为实验时间6小时实验目的学习Linux内核、进程、存储和其他资源的一些重要特征。实验目标编写一个程序使用/proc机制检查反映机器平均负载、进程资源利用等方面的各种内核值。在得到内核状态之后,将所观察到的行为在屏幕上输出。背景知识Linux、Solaris和其他版本的UNIX提供了一种非常有用的检查内核状态机制,叫做/proc文件系统。这是可以用来完成本练习的关键机制。1./proc文件系统/proc文件系统是一种操作系统机制,它的接口就像传统UNIX文件系统的一个目录(在根目录中)。可以改变到/proc正如改变到任何其他目录,例如,bashcd/proc使/proc作为当前目录。一旦把/proc作为当前目录,就可以用ls命令列出它的内容。其内容看起来像普通的文件和目录。但是,/proc或者其子目录中的文件实际上是读取内核变量并以ASCII字符串方式报告它们的程序。这些例程中的一些仅在伪文件打开时读取内核表,而其他例程在每次文件被访问时读表。因此各种读函数的工作方式可能与预期的有所不同,因为它们并没有在真正操作文件。Linux提供的/proc实现可以读取很多不同的内核表。/proc中包含一些目录和文件,每个文件读取一个或多个内核变量。而具有数字名称的子目录包括更多的伪文件读取其进程ID和目录名相同的进程的有关信息。self目录包含了正在使用/proc进程的特定进程信息。/proc目录树的确切内容随Linux的版本而不同,所以必须对伪文件进行实验查看所提示的信息。/proc中的文件可以像普通的ASCII文件一样进行读取。例如,向shell敲入以下命令bashcat/proc/version将得到打印到stdout的类似下面的信息Linuxversion2.2.12gccversionegcs-2.91.6619990314/Linuxegcs-1.1.2release1MonSep27104035EDT1999为了读取一个伪文件的内容,可以打开文件然后使用stdio程序库中的例程如fgets或者fscanf来读取文件。所读的确切文件(和表)依赖于所使用的特定Linux版本。想要知道到底有些什么文件接口通过/proc对你可用,请查看系统上的proc使用手册页。2.使用argc和argv在程序的B部分和C部分,需要从shell向程序传递参数。Linux中,C主程序依然可以采用argc和argv来传递参数。具体用法这里不再赘述。问题陈述1.编写一个程序,通过检查内核状态报告Linux内核行为。程序在stdout上打印以下信息CPU类型和型号。内核版本从系统最后一次启动以来的时间,形式为ddhhmmss(例如,3天13小时46分32秒应该写出03134632)。2.改写A部分程序,加入命令行参数,在stdout上再打印以下信息CPU花费在用户态、系统态和空闲态的时间。系统接收到的磁盘请求。内核执行的上下文转换的次数。系统最后启动的时间。从系统启动开始创建的进程数。3.改写B部分程序,根据不同的命令行参数,在stdout上再打印以下信息计算机配置的内存数量。当前可用的内存数量。平均负载列表(至上一分钟的平均数)。该信息将使另外的程序可以查看各个时间的这些值,因此用户可以了解平均负载如何随时间间隔而变化。对于本程序,提供两个命令行参数1一个表明应该以什么样的频率从内核读取平均负载。2一个表明应该以多长的时间间隔读取平均负载。A部分程序可以叫做ksamp,B部分程序ksamp–s,C部分程序ksamp–l260,表示平均负载观察将运行60秒,每隔2秒取样一次。为了观察系统上的负载,需要确保计算机正在做一些其他的工作而不是仅仅运行你的程序。例如,打开和关闭窗口、移动窗口,甚至在其他窗口运行一些程序。组织方案对于B部分和C部分,程序必须在命令行上有不同的参数。因此最先的动作之一应该是解析调用程序的命令行以确定通过argv数组传递到它的shell参数。可参考如下代码intmainintargc,char*argv[]{charrepTypeName[16];//决定报告类型reportTypeSTANDARD;strcpyrepTypeName,“Standard”;ifargc1{sscanfargv[1],“cc”,ifc1“-“{fprintfstderr,“usageobserver[-s][-lintdur]\n”;exit1;}ifc2‘s’{reportTypeSHORT;strcpyrepTypeName,“Short”;}ifc2‘l’{reportTypeLONG;strcpyrepTypeName,“Long”;internalatoiargv[2];durationatoiargv[3];}}}在得到今天的当前时间并打印出一个包含你所检查机器名字的问候之后,就完成了初始化工作。include//完成初始化gettimeofday//得到当天时间printf“Statusreporttypesats\n”,repTypeName,ctimenow.tv_sec;//得到主机文件名并打印它thisPorcFile“/proc/sys/kernel/hostname”,“r”;fgetslineBuf,LB_SIZE1,thisPorcFile;printf“Machinehostnames”,lineBuf;fclosethisPorcFile;现在可以准备开始工作,也就是说,通过使用各种/proc文件开始读取内核变量。上述代码段包含一个如何读取/proc/sys/kernel/hostname文件的例子。可以用它作为原型通过读取其他的伪文件来完成练习,这需要对/proc进行一些探索以及在研究不同的目录时对各种伪文件进行检查。在C部分中将要计算平均负载。对于这个问题,代码需要睡眠一段时间,醒来后采样当前平均负载,然后再返回睡眠状态。这里是一段可以完成该工作的代码whileiterationtm_year1900,tp-tm_mon1,tp-tm_mday,tp-tm_hour,tp-tm_min,tp-tm_sec;//显示系统最后启动时间给用户in1/proc/stat,r;in2/proc/diskstats,r;//打开文件fscanfin1,sdddd,//获取所需信息量printf用户态时间d0.01秒系统态时间d0.01秒空闲态时间d0.01秒\n,m,o,p;//显示用户态时间、系统态时间、空闲态时间whilefgetsc,512,in2NULL{sscanfc,ddsddddd,ifd[0]s{printf系统接收到的磁盘请求s读d,

注意事项

本文(观察linux行为 实验报告.doc)为本站会员(芳华再现)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开