• 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 也就是检查是否还有其它工作要完成。

  • 相关阅读:
    01-HTML控件
    08-多线程
    07-Log日志
    06-File-文件
    05-函数式编程
    04-异常使用处理
    03-常用包模块
    02-包
    Java NIO(六) Selector
    Java NIO(四) Scatter/Gather
  • 原文地址:https://www.cnblogs.com/assignment/p/13947483.html
Copyright © 2020-2023  润新知