创建进程和进程通信
实验目的
学习
Linux
是如何实现模块机制的,掌握如何编写模块程序并进一步掌握内核模块的
机理。
通过对
Linux
系统中进程的遍历,进一步理解操作系统进程概念和进程结构。
实验内容
1.
编写一个
Linux
的内核模块,其功能是遍历进程,要求输出系统中:每个进程的名字、
进程
pid
、进程的状态、父进程的名字;统计系统中进程个数,统计系统中
TASK_RUNNING
、
TASK_INTERRUPTIBLE
、
TASK_UNINTERRUPTIBLE
、
TASK_ZOM
BIE
、
TASK_STOPPED
等状态进程的个数。
实验指导
1
. 如何编写内核模块程序及编译、安装内核模块,可以参考“边干边学—
Linux
内核指
导”教材第
13
章。
2
. 每个进程的进程名字、
pid
、进程状态、父进程的指针等在
task-struct
结构的字段中。在内
核中使用
printk
函数打印有关变量的值。遍历进程可以使用
next_task
宏,
init_task
进程为
0
号进程。
task-struct
结构参阅“边干边学—
Linux
内核指导”教材
11.2
节;遍历进程方法可以参阅“边干边学—
Linux
内核指导”教材
11.6
节。
Makefile
文件:
TARGET = helloworld //
程序文件名
KDIR = /lib/modules/$(shell uname -r)/build
PWD = $(shell pwd)
obj-m += $(TARGET).o
default:
make -C $(KDIR) M=$(PWD) modules
评论0