- 博客(4)
- 收藏
- 关注
原创 Lab5深入理解进程切换
接下来是关于内存管理的操作,会根据进程的类型(内核空间进程或用户空间进程)进行不同的处理。如果切换到用户空间进程,则需要切换地址空间,并调用 membarrier_switch_mm() 函数和 switch_mm_irqs_off() 函数进行一些额外的操作。最后,函数调用 switch_to() 函数来进行寄存器状态和栈的切换,并返回 finish_task_switch() 函数来完成进程切换。这个函数是处理操作系统中进程切换的汇编代码,具体作用是将当前正在运行的进程切换为被调度的下一个进程。
2023-04-26 16:28:11 92
原创 lab4:以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34
el0_sync在完成保存现场的工作之后,会根据ESR_EL1寄存器确定同步异常产生的原因,同步异常产生的原因很多,在ARM64 Linux中最常见的原因是svc指令触发了系统调用,所以排在最前面的就是条件判断跳转到el0_svc,el0_svc中主要负责调用C代码的el0_svc_handler处理系统调用和ret_to_user系统调用返回。为了连贯性,系统调用表及系统调用内核处理函数相关的处理细节我们稍后在讨论,我们假定系统调用处理完毕,先来看看ret_to_user系统调用返回相关的代码。
2023-03-31 16:07:37 69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人