2020-2021-1 20209313 《Linux内核原理与分析》第六周作业

作业信息

这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)>
这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第六周作业>
这个作业的目标 <从内核态层次理解系统调用机制,类推中断服务处理过程,分析system_call中断处理过程>
作业正文 ... https://www.cnblogs.com/assignment/p/13947483.html

使用gdb跟踪分析一个系统调用内核函数





分析系统调用的过程,从system_call开始到iret结束之间的整个过程,并画出简要准确的流程图

系统调用的过程涉及用户态和内核态,而从用户态进入内核态的钥匙就是int 0x80这个软中断。在用户态和内核态间由eax等寄存器负责存储中断服务程序的入口(中断向量)和传入参数,进入sys_call后会立即将eax以及其他寄存器保存,并会根据eax内容执行具体的中断服务程序。返回后由于中断服务程序会改变系统信号量等内容,所以要处理更新信号,并进行进程调度,这里应该是进程切换的时机之一,当一切结束后执行恢复现场,这一次的系统调用也就结束了。
而执行syscall_exit_work的关键就在于testw $_TIF_ALLWORK_MASK, %cx 也就是检查是否还有其它工作要完成。

原文地址:https://www.cnblogs.com/assignment/p/13947483.html