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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux 内核空间与用户空间信息交互方法 2009-05-07 23:13:58| 分类: LINUX 学习 | 标签: |字号大中小订阅 引自/u1/41220/showart_484176.html linux 内核空间与用户空间信息交互方法 communication between kernel space and user space 笔记如下: 用户级程序主动发起的信息交互 A 编写自己的系统调用 B 编写驱动程序 C: 使用proc 文件系统 D: 使用虚拟文件系统 E: 使用内存映像 由内核采取主动 A 从内核空间调用用户程序。 B 利用brk 系统调用来导出内核数据 C: 使用信号 linux 内核空间与用户空间信息交互方法 本文作者: 康华:计算机硕士,主要从事Linux 操作系统内核、Linux 技术标准、计算机安全、软件测试等领域的研究 与开发工作,现就职于信息产业部软件与集成电路促进中心所属的MII-HP Linux 软件实验室。如果需要可 以联系通过kanghua151@ 联系他。 摘要:在进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用户程序之间交换信息。 Linux 提供了多种方法可以用来完成这些任务。本文总结了各种常用的信息交换方法,并用简单的例子演示 这些方法各自的特点及用法。其中有大家非常熟悉的方法,也有特殊条件下方可使用的手段。通过对比明 确这些方法,可以加深我们对Linux 内核的认识,更重要的是,可以让我们更熟练驾御linux 内核级的应用 开发技术。 内核空间(kernel-space) VS 用户空间(user-space) 作为一个Linux 开发者,首先应该清楚内核空间和用户空间的区别。关于这个话题,已经有很多相关资料, 我们在这里简单描述如下: 现代的计算机体系结构中存储管理通常都包含保护机制。提供保护的目的,是要避免系统中的一个任务访 问属于另外的或属于操作系统的存储区域。如在IntelX86 体系中,就提供了特权级这种保护机制,通过特 权级别的区别来限制对存储区域的访问。 基于这种构架,Linux 操作系统对自身进行了划分:一部分核心 软件独立于普通应用程序,运行在较高的特权级别上,(Linux 使用Intel 体系的特权级3 来运行内核。) 它们驻留在被保护的内存空间上,拥有访问硬件设备的所有权限,Linux 将此称为内核空间。 相对的,其它部分被作为应用程序在用户空间执行。它们只能看到允许它们使用的部分系统资源,并且不 能使用某些特定的系统功能,不能直接访问硬件,不能直接访问内核空间,当然还有其他一些具体的使用 限制。(Linux 使用Intel 体系的特权级0 来运行用户程序。) 从安全角度讲将用户空间和内核空间置于这种非对称访问机制下是很有效的,它能抵御恶意用户的窥探, 也能防止质量低劣的用户程序的侵害,从而使系统运行得更稳定可靠。但是,如果像这样完全不允许用户 程序访问和使用内核空间的资源,那么我们的系统就无法提供任何有意义的功能了。为了方便用户程序使 用在内核空间才能完全控制的资源,而又不违反上述的特权规定,从硬件体系结构本身到操作系统,都定 义了标准的访问界面。关于X86 系统的细节,请查阅参考资料1 一般的硬件体系机构都提供一种“ 门”机制。“ 门”的含义是指在发生了特定事件的时候低特权的应用程序可以 通过这些“ 门”进入高特权的内核空间。对于IntelX86 体系来说,Linux 操作系统正是利用了“系统门”这个硬 件界面(通过调用int $0x80 机器指令),构造了形形色色的系统调用作为软件界面,为应用程序从用户态 陷入到内核态提供了通道。通过“系统调用”使用“系统门”并不需要特别的权限,但陷入到内核的具体位置却 不是随意的,这个位置由“系统调用”来指定,有这样的限制才能保证内核安全无虞。我们可以形象地描述 这种机制:作为一个游客,你可以买票要求进入野生动物园,但你必须老老实实的坐在观光车上,按照规 定的路线观光游览。当然,不准下车,因为那样太危险,不是让你丢掉小命,就是让你吓坏了野生动物。 出于效率和代码大小的考虑,内核程序不能使用标准库函数(当然还有其它的顾虑,详细原因请查阅参考 资料2 )因此内核开发不如用户程序开发那么方便。而且由于目前(linux2.6 还没正式发布)的内核是“非 抢占”的,因此正在内核空间运行的进程是不会被其他进程取代的(除非该进程主动放弃CPU 的控制,比 如调用sleep(),schedule()等),所以无论是在进程上下文中(比如正在运行read 系统调用),还是在中 断上

文档评论(0)

bhyq + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档