内核空间(kernel-space) VS 用户空间(user-space)

作为一个Linux开发者,首先应该清楚内核空间和用户空间的区别。

现代的计算机体系结构中存储管理通常都包含保护机制。

提供保护的目的,是要避免系统中的一个任务访问属于另外的或属于操作系统的存储区域
Linux操作系统对自身进行了划分:

1、核心软件独立于普通应用程序,运行在较高的特权级别上,
它们驻留在被保护的内存空间上,拥有访问硬件设备的所有权限,Linux将此称为内核空间
其它部分被作为应用程序在用户空间执行。它们只能看到允许它们使用的部分系统资源,并且不能使用某些特定的系统功能,
不能直接访问硬件,不能直接访问内核空间


进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用户程序之间交换信息。
信息交互方法
1、系统调用是用户级程序访问内核最基本的方法。目前linux大致提供了二百多个标准的系统调用,
陷入到内核的具体位置却不是随意的,这个位置由“系统调用”来指定。 
2、编写驱动程序
Linux/UNIX的一个特点就是把所有的东西都看作是文件(every thing is afile)。
驱动程序运行于内核空间,用户空间的应用程序通过文件系统中/dev/目录下的一个文件来和它交互。
这就是我们熟悉的那个文件操作流程:open() —— read() —— write() —— ioctl() —— close()。
客户级程序选择需要的驱动程序或服务(其实就是选择/dev/目录下的文件),就可以跟内核中的驱动交互了。
所以驱动程序也是用户空间和内核信息交互的重要方式之一。
在驱动程序中,我们可以用open来启动服务,用read()返回处理好的记录,
用ioctl()设置记录格式等,用close()停止服务,write()没有用到,那么我们可以不去实现它。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值