- 博客(4)
- 收藏
- 关注
原创 linux操作系统分析课程总结报告
本学期,在linux操作系统分析这门课中,老师首先详细的从多个方面为我们展现了Linux操作系统中的方方面面。李春杰老师主要讲解了进程管理、文件系统管理、中断与异常发生的始终等几个方面。让整个Linux更加完整而清晰的展现在了我们的面前。 这其中给我印象最深刻的部分便是中断异常的处理了。这一部分在408中曾经粗浅的学习过一些,但是在这门课上,李春杰老师从不同的角度进行了更加深入的分析,使我对于这部分知识有了更加深刻的了解。
2023-05-15 10:20:19 111
原创 深入理解进程切换
当一个进程需要被挂起,让出 CPU 给其他进程执行时,操作系统会将当前进程的上下文(包括 CPU 寄存器和内存映像等状态)保存在进程的内核态栈(Kernel Stack)中,然后将 CPU 分配给下一个需要执行的进程,并将其对应的上下文恢复到 CPU 寄存器和内存中,使其能够继续执行。switch_to(prev, next, prev):用于实际进行进程上下文切换,其中 prev 是前一个进程的任务结构体,next 是下一个进程的任务结构体,prev 是前一个进程的内核栈。这样就完成了进程的切换。
2023-04-26 14:09:35 104 1
原创 以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34
然后通过__invoke_syscall函数执行该系统调用内核处理函数,即将__invoke_syscall函数的两个参数regs和syscall_fn变为调用syscall_fn(regs),regs中存储着系统调用参数(regs->regs[0-5])和系统调用号(regs->regs[8]),从而执行该系统调用内核处理函数。最后将系统系统调用内核处理函数的返回值保存到内核堆栈里保存x0的位置,以便将返回值在恢复现场系统调用返回时可以传递到用户态x0寄存器。在etc下分别创建文。
2023-03-30 22:13:23 79
原创 基于VS Code的Linux内核调试环境搭建及start_kernel跟踪分析
若不想使用1234端口,可以使用-gdb tcp:xxxx来替代-s选项),另一个是-S代表启动时暂停虚拟机,等待 gdb 执行 continue指令(可以简写为c)。•电脑加电启动首先由bootloader加载内核,内核紧接着需要挂载内存根文件系统,其中包含必要的设备驱动和工具,bootloader加载根文件系统到内存中,内核会将其挂载到根目录/下,然后运行根文件系统中init脚本执行一些启动任务,最后才挂载真正的磁盘根文件系统。下载 busybox源代码解压,解压完成后,跟内核一样先配置编译,并安装。
2023-03-23 21:42:37 123 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人