Linux面试题及答案,学完时候就可以出师了( 三 )


22) Linux 通过什么方式实现系统调用?靠软件中断实现的,首先,用户程序为系统调用设置参数,其中一个编号是系统调用编号,参数设置完成后,程序执行系统调用指令,x86 上的软中断是有 int 产生的,这个指令会导致一个异常,产生一个事件,这个事件会导致处理器跳转到内核态并跳转到一个新的地址 。并开始处理那里的异常处理程序,此时的异常处理就是系统调用程序 。
 
23) Linux 软中断和工作队列的作用是什么?Linux 中的软中断和工作队列是中断处理 。
1.软中断一般是“可延迟函数”的总称,它不能睡眠,不能阻塞,它处于中断上下文,不能进城切换,软中断不能被自己打断,只能被硬件中断打断(上半部),可以并发的运行在多个 CPU 上 。
所以软中断必须设计成可重入的函数,因此也需要自旋锁来保护其数据结构 。
2.工作队列中的函数处在进程上下文中,它可以睡眠,也能被阻塞,能够在不同的进程间切换 。已完成不同的工作 。
可延迟函数和工作队列都不能访问用户的进程空间,可延迟函数在执行时不可能有任何正在运行的进程,工作队列的函数有内核进程执行,它不能访问用户空间地址 。




推荐阅读