Linux内核实验(一):proc文件系统

本文详细介绍了Linux内核的proc文件系统,它提供了查看系统当前状态的途径。实验内容包括获取CPU类型、内核版本、系统运行时间、CPU使用详情、磁盘请求次数、上下文切换数、进程启动次数以及内存和系统负载信息。通过实验代码和运行结果,读者可以深入理解proc文件系统的功能。
摘要由CSDN通过智能技术生成

一、引言

Proc文件系统,以文件系统的形式向用户提供系统当前状态,动态地从同内核中读出所需的信息,只存在内存中,不占用外存空间。

二、实验内容

问题A:
1、cpu类型
2、内核版本

问题B:
1、系统启动以来的时间,以dd:hh:mm:ss报告

问题C:
1、cpu执行用户态、系统态、空闲态所用时间
2、多少次磁盘请求
3、多少次上下文切换
4、启动了多少次进程

问题D:
1、内存总量
2、可用内存
3、系统平均负荷

三、实验代码

/*****************************************
*
* Proc 文件系统
*
* Copyright: (C) 2018.3.31 by shaomingshan
*
* Compile: gcc -o main main.c
*
* Execute: ./main -a
*
*****************************************/
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#define LB_SIZE 80

enum TYPE{STANDARD,SHORT,LONG};
FILE *thisProcFile; //Proc 打开文件指针
struct timeval now; //系统时间日期
enum TYPE reportType; //观察报告类型
char repTypeName[16];
char *lineBuf; //proc 文件读出行缓冲
int interval; //系统负荷监测时间间隔
int duration; //系统负荷监测时段
int iteration;
char c1,c2; //字符处理单元

void sampleLoadAvg() { //观察系统负荷
    int i=0;
    //打开负荷文件
    if ((thisProcFile = fopen("/proc/loadavg", "r")) == NULL)
    {
        printf("Open Failed\n");
        return;
    }
    //读出、处理读出行,如去除前导空格和无用空格
    fgets(lineBuf, LB_SIZE+1, thisProcFile);
    char * c3 = strtok(lineBuf, " ");
    //将读出行分出不同字段,按照字段的不同含义处理为可阅读格式
    //打印处理好的信息内容
    while (c3 != NULL) {
        i ++;
        switch (i) {
            case 1:
                printf("1分钟内平均负载: ");
                break;
            case 2:
                printf("5分钟内平均负载: ");
                break;
            ca
  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值