搜索
bottom↓
回复: 12

为什么linux在找到对应的驱动程序前要先产生一个异常?

[复制链接]

出0入0汤圆

发表于 2016-4-24 21:22:23 | 显示全部楼层 |阅读模式
看韦东山的书的时候发现的

原文是
以LED为代表:
1.应用程序使用库提供的open函数打开代表LED的设备文件
2.库根据open函数传入的参数执行“swi”指令,这条指令会引起CPU异常,进入内核
3.内核的异常处理函数根据这些参数找到相应的驱动程序,返回一个文件句柄给库,进而返回给应用程序


我不明白,什么叫"会引起CPU异常,进入内核"? CPU异常到底指的是什么?是不是就是中断?
如果不是,这么做比起中断方式来有什么好处?

出0入0汤圆

发表于 2016-4-24 21:42:11 | 显示全部楼层
SWI软中断

出0入0汤圆

发表于 2016-4-24 21:51:11 | 显示全部楼层
ARM为例,普通应用程序在用户空间,运行在虚拟地址模式。而驱动作为内核的一部分,与内核一起工作在实模式中。这个中断,即产生SWI异常,使CPU切换到内核中。。

出0入0汤圆

发表于 2016-4-29 10:44:57 | 显示全部楼层
rtx也用类似办法,我认为这种办法比其他同类型rtos好多了

出0入0汤圆

发表于 2016-4-29 11:08:30 | 显示全部楼层
SWI或者SVC,隔离用户和系统内核,用户通知内核即可,让内核去操作硬件设备。
RTOS中任务切换的概念被Linux用来调用驱动了,这不说还真不知道

出0入0汤圆

发表于 2016-4-29 15:19:59 | 显示全部楼层
一般来说中断是指外部事件引起的,异常通常是cpu的内部事件引起的。

出0入0汤圆

发表于 2016-4-30 13:01:19 | 显示全部楼层
sgweilong 发表于 2016-4-29 11:08
SWI或者SVC,隔离用户和系统内核,用户通知内核即可,让内核去操作硬件设备。
RTOS中任务切换的概念被Linux ...

不是,是rtx这个rtos用了linux或者dos这样的软中断做法,其他很多rtos都没有这么干的

出0入25汤圆

发表于 2016-4-30 14:56:16 来自手机 | 显示全部楼层
内核工作在ring0级别,应用工作在ring3级别,通过软中断或者调用门进入ring0级别

出0入25汤圆

发表于 2016-4-30 14:59:17 来自手机 | 显示全部楼层
妹子,你对操作系统原理和计算机体系结构不通啊

出100入101汤圆

发表于 2016-4-30 18:09:11 来自手机 | 显示全部楼层
lz学了多久Linux?

出0入0汤圆

发表于 2016-4-30 19:00:17 来自手机 | 显示全部楼层
妹子很努力啊

出0入0汤圆

发表于 2016-5-1 00:18:53 来自手机 | 显示全部楼层
这和x86的sysenter/int 80h产生系统调用是一回事╮(╯▽╰)╭不产生异常无法主动切换上下文

出0入0汤圆

发表于 2016-5-1 00:56:05 | 显示全部楼层
xwkm 发表于 2016-5-1 00:18
这和x86的sysenter/int 80h产生系统调用是一回事╮(╯▽╰)╭不产生异常无法主动切换上下文 ...

她没内核态和用户态的概念!你跟她说INT 80h……( ̄◇ ̄;)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 02:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表