Linux内核模块与应用程序比较
2013-05-28 03:12
253 查看
在学习Linux驱动开发之前,有必要了解内核模块与应用程序之间的各种不同点。 首先,应用程序(一般的小应用)是从头到尾执行单个任务,而模块是将自己预先注册到内核中一便于为将来某个请求服务。当注册模块时,只是执行其初始化函数,为其后续运行做好准备工作后就立即结束。换句话说,模块的注册时告诉内核:“我在这里,并且我可以干这些工作,以后有这类工作可以找我做。”模块的退出函数是在模块被卸载之前执行的,它告诉内核:“我走了,以后有工作别找我干了。” 另外,应用程序在退出时可以不去释放在其调用前申请的资源,而模块在退出时必须要确定其加载时所申请的一切资源,否则,在系统重启之前它所申请的资源将一直残留系统之中。 Linux内核的模块化开发给开发者带来了很大的便利,由于其每次加载或者卸载驱动模块不需要重启系统,从而有助于缩小开发周期,为开发带来方便。 内核模块和应用程序的另外一个区别是,应用程序的开发者必须可以在程序中调用它并未定义的函数(如C语言的库函数printf()),而内核模块仅仅被连接到内核,因此模块所能调用的函数仅仅是由内核导出的那些函数。 最后,应用程序和内核模块的另外一个重要区别是他们处理错误的方式,应用程序开发中出现段错误一般可以通过调试技术跟踪到代码中,而内核模块中的一个错误,即使不会影响到整个系统,至少也会杀死当前进程。 文章来源:http://kaffeel.org/archives/248
相关文章推荐
- Middleware公司:J2EE和.NET应用程序服务器与Web服务基准比较
- Win32应用程序中进程间通信方法分析与比较
- .Net应用程序发布问题的最新解决方案,感觉比较爽(可桌面、程序中加自己的ICO及卸载等)
- Win32应用程序中进程间通信方法分析与比较
- Windows 和 Linux 应用程序从上到下调用层次比较
- 【转】用.Net开发DB2应用程序比较
- .Net应用程序发布问题的最新解决方案,感觉比较爽(可桌面、程序中加自己的ICO及卸载等)
- 简单java应用程序---比较两个数大小
- 应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较
- .Net应用程序发布问题的最新解决方案,感觉比较爽(可桌面、程序中加自己的ICO及卸载等)
- WEB开发中两个新建模版的比较(仅针对VS2008讨论):新建网站》ASP.NET网站和新建项目》ASP.NET WEB 应用程序
- 一个比较丑的应用程序框架(转)
- Win32应用程序中进程间通信方法分析与比较
- (转)Win32应用程序中进程间通信方法分析与比较
- Android应用程序开发教程:实现一个功能比较完善的登录对话框
- FileSystemWatcher 导致Mono ASP.NET应用程序CPU使用率比较高
- Win32应用程序中进程间通信方法分析与比较
- C/S与B/S应用程序的比较
- [转]Win32应用程序中进程间通信方法分析与比较
- MFC应用程序中指针的使用(比较实用)