linux内核异步执行流程
(2009-09-15 13:33:58)
标签:
系统调用
软中断
linux内核
处理器
it
进程能够通过中断从一个状态转换到另一个状态,获得这种转换的途径之一是包括异常和中断在内的异步。
异常:
异常也叫做同步中断,是发生在整个处理器硬件内部的事件。异常通常发生在指令执行之后。
大多数现代 处理器允许程序员通过执行某些指令来产生一个异常。其中一个例子就是系统调用。
系统调用:
用户态的程序调用的许多C库例程,就是把代码和一个或者多个系统调用捆绑在一起形成一个单独的函数。当用户进程调用其中一个函数的时候,某个值被放入适当的处理器寄存器中,并产生一个软中断irp(异常)。然后这个软中断调用内核入口点。
系统调用能够在用户空间和内核空间之间传递数据,由两个内核函数来完成这个任务:copy_to_user()和copy_from_user()。
系统调用号和所有的参数都先被存入处理器的寄存器中,当x86的异常处理程序处理软中断0x80时,它对系统调用表进行索引。
中断:
中断对处理器的执行是异步的,就是说中断能够早指令之间发生。
一般要发生中断,中断控制器是必须的(x86用的是8259中断处理器)。当中断处理器有有一个待处理的中断时,它就触发连接到处理器的相应INT线,然后处理器通过触发线来确认这个信号,确认线连接到INTA线上。这时候,中断处理器就可以把IRQ数据传到处理器上了。这就是一个中断确认周期。
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。