OS实习-编写一个简单的内核模块

编写一个简单的内核模块

1)实验目的

Linux 操作系统的内核是单一体系结构(monolithic kernel)的,也就是说,整个内核是一

个单独的非常大的程序。这样,系统的速度和性能都很好,但是可扩展性和维护性就相对比

较差。为了弥补单一体系结构的这种缺陷,Linux操作系统使用了一种全新的机制-—模块

机制,用户可以根据需要,在不需要对内核重新编译的情况下,模块能动态地载入内核或从

内核移出。

本实验通过分析代码,学习Linux 是如何实现模块机制的;通过一个实例,掌握如何编

写模块程序并进一步掌握内核模块的机理。

2)实验内容

编写一个内核模块helloworld。当用insmod命令加载模块后,会显示HelloWorld

#include <linux/module.h>

#include <linux/init.h>

 

MODULE_LICENSE("GPL");

MODULE_AUTHOR("weipeng jing");

MODULE_DESCRIPTION("Hello World Module");

MODULE_ALIAS("a simplest module");

 

static int __init hello_init()

{

    printk(KERN_EMERG"Hello World!\n");

    return 0;

}

 

static void __exit hello_exit()

{

    printk("<6>hello exit\n");

    printk(KERN_EMERG"good bye!\n");

}

 

module_init(hello_init);

module_exit(hello_exit);

Makefile规则

ifneq ($(KERNELRELEASE),)

 

obj-m := hello.o

 

else

KDIR := /lib/modules/2.6.18-53.el5xen/build

all:

make -C $(KDIR) M=$(PWD) modules

clean:

rm -f *.ko *.o *.mod.o *.mod.c *.symvers

 

endif

 

编写一个包含2.c文件的内核模块程序,进行编译,掌握多文件模块编译的方法及Makefile书写规则!

Home目录下建立test2,

建立hello.c编写上述程序

Vim Makefile,上述拷贝

Make

找到hello.ko

Insmod hello.ko 会出现hello Word

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值