22) Linux 通过什么方式实现系统调用?靠软件中断实现的,首先,用户程序为系统调用设置参数,其中一个编号是系统调用编号,参数设置完成后,程序执行系统调用指令,x86 上的软中断是有 int 产生的,这个指令会导致一个异常,产生一个事件,这个事件会导致处理器跳转到内核态并跳转到一个新的地址 。并开始处理那里的异常处理程序,此时的异常处理就是系统调用程序 。
23) Linux 软中断和工作队列的作用是什么?Linux 中的软中断和工作队列是中断处理 。
1.软中断一般是“可延迟函数”的总称,它不能睡眠,不能阻塞,它处于中断上下文,不能进城切换,软中断不能被自己打断,只能被硬件中断打断(上半部),可以并发的运行在多个 CPU 上 。
所以软中断必须设计成可重入的函数,因此也需要自旋锁来保护其数据结构 。
2.工作队列中的函数处在进程上下文中,它可以睡眠,也能被阻塞,能够在不同的进程间切换 。已完成不同的工作 。
可延迟函数和工作队列都不能访问用户的进程空间,可延迟函数在执行时不可能有任何正在运行的进程,工作队列的函数有内核进程执行,它不能访问用户空间地址 。
推荐阅读
- 怎么提升Linux性能,看完这篇文章,彻底掌握"平均负载"
- Linux下Oracle监听无法启动处理
- 果粉桌面三件套:打造属于自己的品质桌面
- linux下高并发服务器实现
- Linux引导101
- 20 个 Linux 终端下的生产力工具
- 淘宝佣金比例设置方法 卖家在设置淘宝客的佣金比例时要注意哪些方面
- Linux 中软链接和硬链接的区别
- LINUX系统和Unix系统有什么区别和联系呢?
- 解析10个JavaScript笔试题