- 博客(4)
- 收藏
- 关注
原创 linux课程总结报告
通过本学期Linux操作系统分析课程,我对Linux系统有了更深的理解,对Linux的常用命令更加熟悉,本课程从Linux内核分析系统调用、进程切换、可执行程序工作原理等角度分析了Linux内核的运行过程,学习到了如何编译内核,构建根文件系统,通过qemu模拟环境启动内核,使用gdb断点调试内核程序并据此分析。
2023-05-15 22:13:28
53
1
原创 深入理解进程切换
content_switch 函数有4个参数:rq、prev、next、rf,其中 rq 指向本次进程切换发生的 running queue;prev 和 next 分别指向切换前后进程的进程描述符;rf则起到标志作用,函数各个部分如下:完成任务调度的准备工作。在进程切换之前,首先执行调用每个体系结构都必须定义的prepare_task_switch挂钩,这使得内核执行特定于体系结构的代码,为切换做事先准备。该函数给各个体系结构专有的开始上下文切换的工作提供了入口,不同体系结构的实现不同。
2023-04-26 00:31:14
57
1
原创 以time/gettimeofday系统调用为例分析ARM64 Linux5.4.34
编译和调试 ARM64 环境,需要安装交叉编译工具链和跨平台版 gdb为 ARM64 新建一个内核编译配置文件,对这个新配置文件进行修改。在菜单中选择如下编译配置在终端提前 export 交叉编译选项再 make同样地,编译 busybox 之前也要 export 交叉编译选项。
2023-03-30 23:13:50
56
原创 基于vscode的linux内核调试环境搭建以及start_kernel跟踪
继续执行,遇到了kernel_init,即1号进程,它是所有用户进程的祖先,由kernel_thread函数创建,kernel_thread函数创建一个新的内核线程(实际linux不支持线程所以是一个内核进程),该线程的入口地址是kernel_init()函数。最后是start_kernel的结尾arch_call_reset_init(),这个函数执行了reset_init()函数,再设置一个函数断点reset_init,点击单点跳过进入reset_init函数内部。
2023-03-23 21:56:10
106
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人