观察linux行为 实验报告

观察linux行为 实验报告

ID:6429102

大小:82.50 KB

页数:11页

时间:2018-01-13

观察linux行为 实验报告_第1页
观察linux行为 实验报告_第2页
观察linux行为 实验报告_第3页
观察linux行为 实验报告_第4页
观察linux行为 实验报告_第5页
资源描述:

《观察linux行为 实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验二 观察Linux行为实验时间  6小时实验目的  学习Linux内核、进程、存储和其他资源的一些重要特征。实验目标  编写一个程序使用/proc机制检查反映机器平均负载、进程资源利用等方面的各种内核值。在得到内核状态之后,将所观察到的行为在屏幕上输出。背景知识  Linux、Solaris和其他版本的UNIX提供了一种非常有用的检查内核状态机制,叫做/proc文件系统。这是可以用来完成本练习的关键机制。1./proc文件系统  /proc文件系统是一种操作系统机制,它的接口就像传统UNIX文件系统的一个目录(在根目录中)。可以改变到/proc正如改变到任何其他目录

2、,例如,bash$cd/proc  使/proc作为当前目录。一旦把/proc作为当前目录,就可以用ls命令列出它的内容。其内容看起来像普通的文件和目录。但是,/proc或者其子目录中的文件实际上是读取内核变量并以ASCII字符串方式报告它们的程序。这些例程中的一些仅在伪文件打开时读取内核表,而其他例程在每次文件被访问时读表。因此各种读函数的工作方式可能与预期的有所不同,因为它们并没有在真正操作文件。  Linux提供的/proc实现可以读取很多不同的内核表。/proc中包含一些目录和文件,每个文件读取一个或多个内核变量。而具有数字名称的子目录包括更多的伪文件读取其进程

3、ID和目录名相同的进程的有关信息。self目录包含了正在使用/proc进程的特定进程信息。/proc目录树的确切内容随Linux的版本而不同,所以必须对伪文件进行实验查看所提示的信息。  /proc中的文件可以像普通的ASCII文件一样进行读取。例如,向shell敲入以下命令:bash$cat/proc/version  将得到打印到stdout的类似下面的信息:Linuxversion2.2.12(gccversionegcs-2.91.6619990314/Linux(egcs-1.1.2release))#1MonSep2710:40:35EDT1999  为了读

4、取一个伪文件的内容,可以打开文件然后使用stdio程序库中的例程如fgets()或者fscanf()来读取文件。所读的确切文件(和表)依赖于所使用的特定Linux版本。想要知道到底有些什么文件接口通过/proc对你可用,请查看系统上的proc使用手册页。2.使用argc和argv  在程序的B部分和C部分,需要从shell向程序传递参数。Linux中,C主程序依然可以采用argc和argv来传递参数。具体用法这里不再赘述。问题陈述1.编写一个程序,通过检查内核状态报告Linux内核行为。程序在stdout上打印以下信息:lCPU类型和型号。l内核版本l从系统最后一次启动

5、以来的时间,形式为dd:hh:mm:ss(例如,3天13小时46分32秒应该写出03:13:46:32)。2.改写A部分程序,加入命令行参数,在stdout上再打印以下信息:lCPU花费在用户态、系统态和空闲态的时间。l系统接收到的磁盘请求。l内核执行的上下文转换的次数。l系统最后启动的时间。l从系统启动开始创建的进程数。3.改写B部分程序,根据不同的命令行参数,在stdout上再打印以下信息:l计算机配置的内存数量。l当前可用的内存数量。l平均负载列表(至上一分钟的平均数)。  该信息将使另外的程序可以查看各个时间的这些值,因此用户可以了解平均负载如何随时间间隔而变化

6、。对于本程序,提供两个命令行参数:(1)一个表明应该以什么样的频率从内核读取平均负载。(2)一个表明应该以多长的时间间隔读取平均负载。  A部分程序可以叫做ksamp,B部分程序ksamp–s,C部分程序ksamp–l260,表示平均负载观察将运行60秒,每隔2秒取样一次。为了观察系统上的负载,需要确保计算机正在做一些其他的工作而不是仅仅运行你的程序。例如,打开和关闭窗口、移动窗口,甚至在其他窗口运行一些程序。组织方案  对于B部分和C部分,程序必须在命令行上有不同的参数。因此最先的动作之一应该是解析调用程序的命令行以确定通过argv数组传递到它的shell参数。可参考

7、如下代码:  intmain(intargc,char*argv[]){    charrepTypeName[16];    …    //决定报告类型    reportType=STANDARD;    strcpy(repTypeName,“Standard”);    if(argc>1){      sscanf(argv[1],“%c%c”,&c1,&c2);      if(c1!=“-“){        fprintf(stderr,“usage:observer[-s][-lintdur]”);        e

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。