实验编号

课程设计专题三

题目

内核模块

实验目的

1.概念

2.相关命令

3.编写

4.编译

5.安装、传参、调试

实验内容

题目一

编写一个内核模块;

编译该模块;

加载、卸载该模块;

题目二

用内核模块的方式为系统添加一个系统调用

具体要求同专题一

报告内容要求

(1) 程序实现方法和思路

(2) 测试及结果

报  告  正  文

(1)内核模块实现的几个步骤:

新建模块目录

用编辑器(vi)编辑源文件

用编辑器编辑Makefile

编译模块

内核模块的加载

#insmod  module_name

内核模块的卸载

#rmmod  module_name

或者

#modprobe –r module_name

查看系统已经加载的模块

#lsmod

查看系统已经加载的模块信息

#modinfo

 1 //hello.c
 2 #include <linux/init.h>                      // for module_init()
 3 #include <linux/module.h>              // must be include
 4 #include <linux/kernel.h>                // for printk()
 5
 6 static int hello_init(void) {               // 模块入口函数
 7     printk("Hello world\n");
 8     return 0;
 9 }
10
11 static void hello_exit(void) {           // 模块退出函数
12     printk("Hello module exit\n");
13 }
14
15 module_init(hello_init);
16 module_exit(hello_exit);
17 MODULE_LICENSE("GPL");
18 MODULE_AUTHOR("kuy");
19 MODULE_DESCRIPTION("hello");

说明:

模块入口函数为hello_init(),由module_init()宏指定,在模块被加载的时候被调用向系统注册。

入口函数的返回值:0表示成功,非0表示失败。

模块的退出函数为hello_exit(),由module_exit()宏指定,在模块被卸载时被调用向系统注销,主要来完成资源的清理工作。它被调用完毕后,就模块就被内核清除了。

一个模块最少需要有入口和退出函数。

printk( )函数

printk 函数在Linux内核中定义并且对模块可用,为内核提供日志功能,记录内核信息或用来给出警告。与标准C 库函数 printf 的行为相似。

每个printk()声明都会带一个优先级。内核总共定义了八个优先级的宏, 在linux/kernel.h中定义。若不指明优先级,DEFAULT_MESSAGE_LOGLEVEL这个默认优先级将被采用。

信息添加到文件/var/log/kern.log,可直接查看,或者用命令dmesg查看。在X-windows下的终端insmod一个模块,日志信息只会记录在日志文件中,而不在终端打印。

内核模块的Makefile

obj-m := hello.o

KERNELDIR := /lib/modules/$(shell uname –r)/build

PWD := $(shell pwd)

modules:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:

rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

(2)

转载于:https://www.cnblogs.com/ku1274755259/p/11108895.html

操作系统课程设计 内核模块相关推荐

  1. 华南理工大学计算机操作系统课程设计大作业银行家死锁避免算法模拟,2016春操作系统大作业银行家死锁避免算法模拟.doc...

    文档介绍: 2016春操作系统大作业银行家死锁避免算法模拟20160501华南理工大学"计算机操作系统"课程设计大作业计算机科学与技术专业:春2015班级:号:2015047420 ...

  2. linux课程设计死锁避免,linux操作系统课程设计—车辆死锁.doc

    linux操作系统课程设计-车辆死锁.doc 键入文字"操作系统原理"课程设计BX090709吴沛儒操作系统原理课程设计报告姓名吴沛儒班级BX0907学号9指导老师胡静二〇一一年十 ...

  3. 操作系统课程设计--使用多线程模拟时间片轮转法调度

    本篇博文分享操作系统课程设计–使用多线程模拟时间片轮转法调度的思路及代码. 实验环境:虚拟机ubuntu18.04 ,VS Code 博主分享仅为互相学习之用,不懂的地方可以留言提问,谨防抄袭!!!谢 ...

  4. 计算机操作系统课设总结,计算机操作系统课程设计

    <计算机操作系统课程设计>由会员分享,可在线阅读,更多相关<计算机操作系统课程设计(36页珍藏版)>请在人人文库网上搜索. 1.操作系统课程设计实验报告姓 名: 李文孝 班 级 ...

  5. python枪战项目计划书_燕山大学操作系统课程设计计划书

    燕山大学操作系统课程设计计划书 燕山大学课程设计计划书 课程设计名称:操作系统 题目:多道程序缓冲区协同操作 年级:2016级 开发小组名称:WWW. 小组负责人: 课题组成员: 姓名 学号 班级 分 ...

  6. 华科计算机课程设计,华中科大操作系统课程设计报告(附源码).doc

    华中科技大学计算机学院 操作系统课程设计报告 班级: 学号: 姓名:彭博 时间:2010年3月 设计内容一:熟悉和理解Linux编程环境 编写一个C程序,实现文件拷贝功能. 2)编写一个C程序,使用下 ...

  7. 操作系统分区分配java算法_合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc...

    合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc 1课程设计动态分区分配存储管理设计题目学号专业班级学生姓名号指导教师22010年12月合肥工业大学课程设计任务书设计题目动态分区分 ...

  8. Linux并发程序课程设计报告,网络操作系统课程设计--进程机制与并发程序设计-linux下生产者与消费者的问题实现.doc...

    网 络 操 作 系 统 课 程 设 计 网络操作系统课程设计 设计内容:进程机制与并发程序设计inux下生产者与消费者的问题实现进程机制与并发程序设计inux下生产者与消费者的问题实现 (1)掌握基本 ...

  9. python操作系统课程设计_操作系统课程设计.pdf

    计算机科学与通信工程学院 操作系统课程设计报告 题目:linux系统下实现PV 操作 班级: 软件工程1401 姓名: 吴帅帅 学号: 3140608020 指导老师: 牛德姣 2016 年12 月2 ...

最新文章

  1. 安全函数不安全-多线程慎用List.h
  2. 马云自嘲只会用电脑收发邮件,网友:马老师的话,听听就行了
  3. linux nexus端口配置,Linux下安装Nexus-3.15私服
  4. JAVA里面main找不到符号_java – 带有NBAndroid的NetBeans – 找不到符号setContentView(R.layout.main);...
  5. CSS多列布局(实例)
  6. 第一部分:MongoDB备忘录
  7. 天天早上慢跑一小时对身体好吗?
  8. 批量删除2012年9月份以前的表
  9. [FAQ20527] 如何关闭OTG功能
  10. android下划线链接,android7.0 TextView去除超链接下划线就这么难吗?
  11. win10加装机械硬盘卡_win10重装,机械硬盘和SSD的C盘如何分区?记住这2点电脑10年不卡...
  12. 安全基因赋能物流市场,智加科技打磨L4级自动驾驶重塑高速运输 | 2018 全球智能驾驶峰会...
  13. 新手怎么开通抖音小店?详细操作步骤分享,建议收藏
  14. electron打包的一些问题
  15. 支付宝小程引入 SJS
  16. 安装nginx遇到C compiler cc is not fount问题
  17. SpringBoot JDBC Mysql 时区报错 serverTimezone解决方案分析
  18. 解决multiple ‘X-Frame-Options‘ headers with conflicting values (‘DENY, SAMEORIGIN‘)
  19. 格式工厂转码错误原因0x000000001 怎么办
  20. 利用CMS漏洞渗透并获取某服务器权限

热门文章

  1. Racktables(一)的资产管理软件安装配置
  2. 像癌症一样传播:世界首个PLC病毒问世
  3. 人人出售56不亏:三方得利
  4. 090621 NTFS删除的恢复
  5. 软件测试工程师面试问题
  6. html如何提交保存,html表单提交保存
  7. word图片自动换行不亮_Word自动换行版式不变形
  8. Xamarin.Android真机测试提示[INSTALL_FAILED_UPDATE_INCOMPATIBLE]
  9. Swift2.0语言教程之函数嵌套调用形式
  10. java calendar.add方法_Java Calendar add()方法与示例