- 博客(4)
- 收藏
- 关注
原创 Linux操作系统分析课程总结报告
通过这门课程,我学会了如何创建虚拟机,并在虚拟机上通过vscode对Linux源码进行调试,了解了进程的是如何在Linux系统中进行创建并且进行切换,理解了系统调用的实现流程,更加深刻的了解了中断在系统中的实现过程,最后也感受到了虚拟化技术的神奇之处,让我更加深刻了理解了所谓的系统是怎样一种东西,为我之后进行嵌入式开发和后端开发的学习过程打下了坚实的理论基础。不足之处是,由于要修改虚拟机的操作系统,用户会感知使用的环境是虚拟化环境,而且兼容性比较差,用户使用时也比较麻烦,需要获得集成虚拟化代码的操作系统。
2023-05-15 14:44:10
197
1
原创 Linux中的进程切换分析
call指令压栈RIP寄存器到进程切换前的prev进程内核堆栈,而ret指令出栈存入RIP寄存器的是进程切换之后的next进程的内核堆栈栈顶数据,所以 ret 恢复的就是 next 进程内核堆栈中的 rip 值,即实现了 rip 值的保存与修改。当进程在运行过程中遇到中断或触发系统调用,首先会进行中断上下文的切换,之后进行ISR中断服务,之后调用_schedule()函数进行进程的切换,schedule()将当前进程的标识符记为prev进程。然后再通过调度算法确定下一个要被换上的进程,记为next进程。
2023-04-25 21:50:51
670
1
原创 以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系统调用返回。用户态发生的中断处理接口为el0_sync(内核态发生的中断处理接口是el1_sync)系统调用是用户态执行SVC指令导致的,因此要进入el0_svc处理函数。
2023-03-30 23:27:24
189
原创 Linux内核调试环境搭建以及在VScode上对start_kernel 的跟踪分析
Linux内核调试环境搭建以及在VScode上对start_kernel 的跟踪分析
2023-03-24 00:00:54
420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人