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

转载 2007年09月23日 02:34:00
原贴:http://blog.chinaunix.net/u/23204/showart_180515.html

Linux系统应用程序和内核模块的区别
 
 
1.应用程序是从头到尾执行单个任务;模块却只是预先注册自己以便服务于将来的某个请求,其中,函数init_module(模块的入口)的任务是为以后调用模块函数预先做准备,函数cleanup_module(模块的第二入口)是在模块卸载时调用。

  2.应用程序可以调用它未定义的函数,因为在连接过程能够解析外部引用从而使用适当的函数库;模块仅仅被连接到内核,因此它仅能调用有内核导出的函数(如printk),而没有任何可连接的库。

  3.应用程序开发过程中的段错误是无害的,并且总是可以使用调试器跟踪到源代码中的问题所在;内核模块的一个错误即使不对整个系统是致命的,也至少会对当前进程造成致命错误。

  4.应用程序运行于用户空间,处理器禁止其对硬件的直接访问以及对内存的未授权访问;内核模块运行于内核空间,可以进行所有操作。

  5.应用程序一般不必担心发生其他情况而改变它的运行环境;内核模块编程则必须考虑并发问题的处理。

 

相关文章推荐

Linux内核模块与应用程序的对比

用户态程序               Linux内核模块 运行     用户空间          内核空间 入口     main()             module_init()指定;...

增加Linux系统调用——通过增加内核模块

实验环境:服务器版Ubuntu,内核版本

装卸Linux系统内核模块分析

Linux是单内核结构,也就是说, 它是一个大程序, 其中任一函数都可以访问公共数据结构和其它函数调用。 (作为操作系统)另外一种可能的结构是多核式的, 各功能块自成一体, 相互之间由严格的通信机制相...
  • llwszjj
  • llwszjj
  • 2015年03月19日 16:04
  • 285

Linux系统内核模块函数调用及命名空间

内核模块是怎么开始和结束的 用户程式通常从函数main()开始,执行一系列的指令并且当指令执行完成后结束程式。内核模块有一点不同。内核模块要么从函数init_module 或是你用宏modul...

增加Linux系统调用——通过Hack增加内核模块

上一篇文章《增加Linux系统调用——通过增加内核模块》中,介绍了如何

linux内核模块和驱动程序的编写

  • 2009年12月03日 21:33
  • 42KB
  • 下载

Linux系统:Ubuntu下如何在桌面创建一个应用程序的“快捷方式”?

原:http://blog.sina.com.cn/s/blog_95e7dea801011ax3.html 刚从WIndows的魔爪中投奔自由,接触Ubuntu不久,遇到了很多问题,其中一...

Linux系统调用__get_thread获取TLS失败导致应用程序奔溃

背景Android模拟器运行在PC端,Android应用运行在模拟器内部,当PC机在BIOS中没有打开虚拟化技术(vt-x: intel的硬件虚拟化技术; AMD-V: AMD CPU的硬件虚拟化技术...

飞凌AM335x开发板Linux系统应用程序添加到桌面的方法

以下基于飞凌嵌入式OK335xS开发板,Linux操作系统,其它平台未经验证,请参考使用,资料下载请联系飞凌嵌入在线客服。 本方法涉及到的目录及文件(基于AM335x 开发板文件系统源文件): for...

Linux系统自带spi驱动加载及应用程序编写方法详解

硬件平台:飞思卡尔IMX6, 内核版本:kernel3.0.35 Linux系统中,和I2C一样,SPI也有系统自带的设备驱动程序,位于源码目录下drivers/spi/s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux系统应用程序和内核模块的区别
举报原因:
原因补充:

(最多只允许输入30个字)