- 博客(4)
- 收藏
- 关注
原创 分析 time/gettimeofday 系统调用
并将系统调用的参数依次放入x0-x5这6个寄存器中,然后将系统调用号存入x8寄存器中。然后通过__invoke_syscall函数执行该系统调用内核处理函数,即将__invoke_syscall函数的两个参数regs和syscall_fn变为调用syscall_fn(regs),regs中存储着系统调用参数(regs->regs[0-5])和系统调用号(regs->regs[8]),从而执行该系统调用内核处理函数。执行完成以后,一个一个退栈执行后续代码然后到b ret_to_user返回系统调用。
2023-05-22 15:57:43
172
2
原创 基于VSCode的Linux内核调试环境搭建以及start_kernel跟踪分析
首先从https://www.busybox.net下载 busybox源代码解压,解压完成后,跟内核一样先配置编译,并安装。5、在.vscode中添加配置文件。6、跟踪Linux内核的启动过程。
2023-05-22 14:50:06
274
1
原创 Linux源码分析课程总结报告
虚拟化技术中虚拟化层会拦截所有的硬件访问,并将其重定向到虚拟机中。这意味着,在启动引导程序时,虚拟化层会加载虚拟机的引导程序而非物理主机上的引导程序。从而虚拟层会在调用系统调用时访问虚拟的内核而非物理机的内核,从而实现虚拟化的系统调用。
2023-05-15 23:57:52
175
1
原创 深入理解进程切换
pushl %ebp由于 switch_to 是 context_switch() 中的一个宏替换,所以这一步是将 context_switch() 的栈桢起始位置压到 prev 进程的内核栈中。movl [next->thread.esp], %esp将 next->thread.esp 恢复到当前 CPU 的 esp 寄存器中,此时已经切换到了 next 进程的内核栈。到这里已经完成了内核栈的切换,下面的工作就是在 __switch_to() 中对 next 进程进行一些设置。
2023-04-26 22:27:44
228
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅