13. 什么是进程上下文、中断上下文
(1)进程上文:是指进程由用户态切换到内核态时需要保存用户态时CPU寄存器中的值,进程状态以及堆栈上的内容。即保存当前进程的状态,以便再次执行该进程时,能够恢复切换时的状态,继续执行。
(2)进程下文:是指切换到内核态后执行的程序,即进程运行在内核空间的部分。
(3)中断上文:硬件通过中断触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。中断上文可以看作硬件传递过来的这些参数和内核需要保存的一些其他环境(主要是当前被中断的进程环境)。
(4)中断下文:执行在内核空间的中断服务程序。
14. 中断上下文代码中有哪些注意事项
运行于进程上下文的内核代码是可抢占的,但中断上下文则会一直运行至结束,不会被抢占。所以中断处理程序代码要受到一些限制,在中断代码中不能出现实现下面功能的代码:
- 睡眠或者放弃CPU 因为内核在进入中断之前会关闭进程调度,一旦睡眠或者放弃CPU,这时内核无法调度别的进程来 执行,系统就会死掉。牢记:中断服务子程序一定不能睡眠(或者阻塞)。
- 尝试获得信号量 如果获得不到信号量,代码就会睡眠,导致(1)中的结果。
- 执行耗时的任务 中断处理应该尽可能快,因为如果一个处理程序是IRQF_DISABLED类型,他执行的时候会禁止所有 本地中断线,而内核要响应大量服务和请求,中断上下文占用CPU时间太长会严重影响系统功能。 中断处理程序的任务尽可能放在中断下半部执行。
- 访问用户空间的虚拟地址,因为中断运行在内核空间。
15. 什么是内核态和用户态
内核态(Kernel Mode)和用户态(User Mode)是计算机系统中的两种不同的执行模式,用于区分操作系统内核和应用程序的特权级别和访问权限。
内核态是操作系统内核运行的特权模式,拥有完整的系统权限和对硬件的直接访问能力。在内核态下,操作系统可以执行敏感的操作,如访问和控制硬件设备、修改内存映射表、处理中断和异常等。内核态可以执行任何核心功能和服务,并具有较高的权限。
用户态是应用程序运行的一种受限模式,应用程序在用户态下运行,无法直接访问和操作硬件设备和关键的系统资源。在用户态中,应用程序只能通过操作系统提供的接口(系统调用)来请求操作系统执行特权操作。用户态下的应用程序只能访问自己的内存空间和受限的资源,不能执行特权操作,因此更为安全。
16. Linux中断机制和普通中断机制的区别
相同点:中断上下文切换,保存现场,中断向量表跳转,中断处理程序,恢复现场等
Linux特有的:上下半部
17. Linux中断的响应执行流程
cpu接受中断->保存中断上下文->经由中断向量表跳转跳转到中断处理程序->执行中断上半部->执行中断下半部->恢复中断上下文。