- 博客(6)
- 收藏
- 关注
原创 lab5:s深入理解进程切换
context_switch函数的主要功能是保存当前运行进程的上下文,并加载要切换到的目标进程的上下文,以便让目标进程继续执行。最后,调用 finish_task_switch 函数,完成进程切换,这个函数与第一步的prepare_task_switch函数是成对出现的,用来完成一些清理操作。调度队列是一个序列,rq指本次进程切换时的运行队列,prev指向切换前的进程,next指向切换后进程。如果切换到的目标进程属于不同的地址空间,那么页表会被切换到目标进程的页表,以确保正确的内存映射。
2023-05-23 10:45:41
130
1
原创 LINUX课程总结
在Linux操作系统分析这门课程的学习过程中,我了解到了Linux操作系统的组成和架构,包括内核、Shell、文件系统等等。由于本人是跨考生,在学这门课之前,仅仅了解一些Linux常用指令,这么课让我认识了Linux操作系统的底层构成,进程的创建终止以及进程调度机制等等,同时学习了编译内核,构建根文件系统,通过qemu模拟环境启动内核,使用gdb断点调试内核程序,阅读内核源码,对Linux操作系统有了一个更全面、更深层次的认识,也对我今后的对Linux的学习打下了一个良好的基础。
2023-05-16 11:41:32
499
原创 lab5:深入理解进程切换
该函数在进程切换之前调用,内核会执行与体系结构相关的一些调测指令。上下文切换完成后,必须调用 finish_task_switch,即这两个函数一定是要成对出现的。
2023-04-25 23:45:08
119
1
原创 lab4:以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34
这一过程是 CPU 硬件自动完成的,不需要程序干预。随后,以 svc 指令对应的 el0_sync 为例,el0_sync 处的内核汇编代码首先做的就是保存异常发生时程序的执行现场(保存现场,即用户栈、通用寄存器等),然后根据异常发生的原(ESR_EL1 寄存器中的内容)跳转到 el0_svc,el0_svc 会调用 el0_svc_handler、el0_svc_common 函数,将 X8 寄存器(regs->regs[8])中存放的系统调用号传递给 invoke_syscall 函数。
2023-03-31 09:49:46
106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人