Linux用户空间与内核空间

今日头条

1151人已加入

描述

应用程序运行在用户空间,而Linux 驱动属于内核的一部分,因此驱动运行于内核空间。当我们在用户空间想要实现对内核的操作,比如使用open 函数打开/dev/led 这个驱动,因为用户空间不能直接对内核进行操作,因此必须使用一个叫做“系统调用”的方法来实现从用户空间陷入到内核空间,这样才能实现对底层驱动的操作。

内核

os分配给每个进程一个独立的、连续的、虚拟的地址内存空间,通常32位Linux内核(2^32)虚拟地址空间划分0~3G为用户空间,3~4G为内核空间。

进程寻址空间0~4G

进程在用户态只能访问0~3G,只有进入内核态才能访问3G~4G

进程通过系统调用进入内核态

每个进程虚拟空间的3G~4G部分是相同的

32位系统用户进程最大可以访问3GB,内核代码可以访问所有物理内存。

进程从用户态到内核态的转换:

系统调用

异常

外设中断

lw

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分