`
pengcc
  • 浏览: 33050 次
  • 性别: Icon_minigender_1
  • 来自: Mars
最近访客 更多访客>>
社区版块
存档分类
最新评论

Linux内核模块与应用程序的区别

阅读更多

         用户态程序           Linux内核模块

运行     用户空间          内核空间
入口     main()            module_init()指定;
出口     无                module_exit()指定;
编译     gcc –c            Makefile
连接     ld                insmod
运行     直接运行          insmod
调试     gdb               kdbug, kdb, kgdb等


Linux内核模块的优点与缺点

优点
使得内核更加紧凑和灵活
修改内核时,不必全部重新编译整个内核。系统如果需要使用新模块,只要编译相应的模块,然后使用insmod将模块装载即可
模块的目标代码一旦被链接到内核,它的作用域和静态链接的内核目标代码完全等价。

缺点
由于内核所占用的内存是不会被换出的,所以链接进内核的模块会给整个系统带来一定的性能和内存利用方面的损失;
装入内核的模块就成为内核的一部分,可以修改内核中的其他部分,因此,模块的使用不当会导致系统崩溃;
为了让内核模块能访问所有内核资源,内核必须维护符号表,并在装入和卸载模块时修改符号表;
模块会要求利用其它模块的功能,所以,内核要维护模块之间的依赖性。

分享到:
评论

相关推荐

    Linux内核模块和驱动程序的详细编写

    Linux内核是一个整体是结构。因此向内核添加任何东西。或者删除某些功能 ,都十分困难。为了解决这个问题。引入了内核机制。本文介绍了模块的实现机制以及模块编程的方法。

    LINUX内核经典面试题

    LINUX内核经典面试题 ,20) 如何加载、卸载一个模块? 21) 模块和应用程序分别运行在什么空间? 22) Linux中的浮点运算由应用程序实现还是内核实现? 23) 模块程序能否使用可链接的库函数? 24) TLB中缓存的是什么...

    深度:一文看懂Linux内核!Linux内核架构和工作原理详解

    作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父...

    Linux编写内核模块新增系统调用遍历进程树--基于Ubuntu20.04.03LTS实现

    实验目标:在Linux内核中增加一个系统调用,并编写对应的linux应用程序。利用该系统调用能够遍历系统当前所有进程的任务描述符,并按进程父子关系将这些描述符所对应的进程id(PID)组织成树形结构显示。 实验环境:...

    gpio内核驱动模块(应用程序)

    此程序为全志H3的GPIO内核驱动程序应用部分

    基于Linux的LoRa内核模块设备驱动程序源码+应用测试程序源码

    这是一个 LoRa 设备驱动程序,作为具有 IEEE 802.15.4 MAC 接口的 Linux 内核模块。 兼容SX1276/77/78/79芯片 文件夹介绍 LoRa:LoRa 源代码和构建文件。 dts-overlay:设备树覆盖板和操作系统。 test-application:...

    Linux中应用程序和内核模块的区别

    文章简单介绍了linux中应用程序和内核模块的区别

    linux 0.11 内核源码 - 免费下载

    本代码是目前能够找到的最早的Linux的内核版本,Linux 0.11内核是Linux内核的早期版本,于1991年由Linus Torvalds编写并发布。作为一个基于UNIX的操作系统内核,它的源代码包含了核心代码和一些驱动程序。采用开源...

    Linux内核防火墙Netfilter实现与应用研究

    介绍了Linux内核防火墙的发展,对2.4.x内核中的Netfilter框架的流程和IPv4协议栈中Netfilter的实现进行了分析,通过一个内核防火墙模块实例介绍了基于Netfilter框架下的内核防火墙设计方法,对Netfilter框架下的防火墙...

    深入分析Linux内核源代码

    自由软件Linux 操作系统源代码的开放,为我们掌握操作系统核心技术提供了良好的条 件。本书共分13 章,对Linux 内核2.4 版...分析与应用等。其中重点剖析了Linux 内核中最基础的部分:进程管理、内存管理及文件管 理。

    linux内核空间与用户空间信息交互方法

    在进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用户程序之间交换信息。...通过对比明确这些方法,可以加深我们对Linux内核的认识,更重要的是,可以让我们更熟练驾御linux内核级的应用开发技术。

    Linux驱动开发:Linux内核模块、字符设备驱动、IO模型、设备树、GPIO子系统、中断子系统.zip

    Linux驱动开发:Linux内核模块、字符设备驱动、IO模型、设备树、GPIO子系统、中断子系统、platform总线驱动、I2C总线驱动、SPI总线驱动 Linux项目是一个开放源代码的操作系统项目,由林纳斯·托瓦兹(Linus Torvalds...

    【论文】linux内核实时化技术

    Linux 操作系统的源代码开放、内核模块化设计及内核的高度可裁减性使其在嵌入内核 式实时操作系统研究领域备受重视。但其面向通用多任务分时系统的设计思想限制了 Linux 在实时运算中的应用,必须进行有效的实时扩展...

    linux netlink 示例代码: 通过net link 进行 内核和用户空间的数据通讯

    用户程序源码 eknetlink.c -内核程序源码 netlink提供了一种很好很强大的的用户与内核之间的通讯机制,本文通过静态的新增一个netlink协议类型,并使用这个新的netlink类型实现用户态和内核态的双向通讯,对linux的...

    为Linux内核增加一个系统调用.zip

    在 Linux 内核中增加一个系统调用,并编写对应的 Linux 应用程序。利用该系统调用能够遍历系统当前 所有进程的任务描述符,并按进程父子关系将这些描述符所对应的进程 id(PID)组织成树形结构显示。 整个程序的构思...

    深入分析Linux内核源码

    深入分析Linux内核源码 前言 第一章 走进linux 1.1 GNU与Linux的成长 1.2 Linux的开发模式和运作机制 1.3走进Linux内核 1.3.1 Linux内核的特征 1.3.2 Linux内核版本的变化 1.4 分析Linux内核的意义 ...

    linux内核驱动详解2

    | `-- 秒设备驱动与应用程序 | |-- second.c | `-- second_test.c |-- 11 | |-- DMA范例 | | |-- 3c505.c | | |-- 3c505.h | | `-- dma.h | `-- 静态映射范例 | `-- mach-smdk2440.c |-- 12 | |-- NVRAM驱动 | | `--...

    边干边学——LINUX内核指导

    第1章 了解Linux内核 1. 1 Linux内核 1. 2 查看Linux内核状况 1. 3 编程序检查系统状况 1. 4 Linux编程环境 第2章 shell 2. 1 she11 2. 2 实现一个简单的shell程序 2. 3 shell编程 第3章 内核时钟 3. 1 关于时钟和...

Global site tag (gtag.js) - Google Analytics