[关闭]
@1405010304geshuaishuai 2016-04-10T14:27:41.000000Z 字数 959 阅读 535

Linux 系统分析实验报告

实验三 ---- Linux系统进程树
姓名 学号 班级
葛帅帅 1405010304 三班

一、 实验题目

打印Linux系统进程树

二、 实验目的

  • 理解task_struct结构及进程管理机制
  • 了解内核链表遍历机制

三、 实验平台

基于32位的Linux Mint 17.3的计算机

cmd-markdown-logo

图2-1 Linux Mint 17.3桌面环境

除了您现在看到的这个 Linux系统版本,您还可以前往以下网址下载:

Linux 系统官网

四、 试验要求

  • 独立完成

五、 实验过程记录

1.通过/proc目录:用户空间编程

2./proc目录下有一组以进程号pid为目录名的文件

3. 每个目录中包含相应进程的信息

4.通过/proc文件系统获得各种进程的父进程ppid(从进程树根节点开始,将每层父节点转换成左孩子右兄弟表示按中序遍历二叉树,并按输出二叉树的节点)

5.void print_pstree(info *file,int count,int ppid,int rec)

main()函数调用printf_pstree(),其中ppid=0,即从0号进程开始打印;对于每层递归,检验所有进程,若该进程父进程号与调用该函数的进程号相同,则表明该进程为父进程的子进程,同时将该进程递归数加1,调用print_pstree()打印出该进程的子进程。

6.代码框架

  1. void print_pstree(info *file,int count,int ppid,int rec)
  2. int i,j,k;
  3. for(i=0;i<count;i++){
  4. if(file[i].flag==0&&file[i].ppid==ppid){
  5. file[i].rec=rec+1;
  6. file[i].flag=1;
  7. for(k=0;k<rec;k++)
  8. printf(" ");
  9. printf("%s\n",file[i].name);
  10. printf_pstree(file,count,file[i],pid,file[i].rec);
  11. }
  12. }
  13. }

7.执行命令如下:

  1. gcc -o pstree1 pstree1.c
  2. ./pstree1

成功打印系统进程树如图3-2
well-done

图3-2 进程树

六、 实验体会

1.了解task_struct的结构以及进程管理机制

2.对内核链表遍历机制右移个初步的了解

3.掌握了Linux内核模块基本编程技术

七、 实验评价

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注