- 博客(4)
- 收藏
- 关注
原创 课程总结报告
1.正在运行的用户态进程 X。2.发生中断(包括异常、系统调用等),硬件完成以下动作。当前 CPU 上下文压入用户态进程 X 的内核堆栈。加载当前进程内核堆栈相关信息,跳转到中断处理程序,即中断执行路径的起点。3. 保存现场,此时完成了中断上下文切换,即从进程 X 的用户态到进程 X 的内核态。4.中断处理过程中或中断返回前调用了 schedule 函数,其中的 switch_to 做了关键的进程上下文切换。将当前用户进程 X 的内核堆栈切换到选出的 next 进程。
2023-05-15 20:00:13
114
1
原创 【无标题】
content_switch 函数有4个参数:rq、prev、next、rf,其中 rq 指向本次进程切换发生的 running queue;prev 和 next 分别指向切换前后进程的进程描述符;
2023-04-25 15:32:26
140
1
原创 以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34
由于Ubuntu是X86架构,为了编译arm64的文件,需要安装交叉编译工具链。
2023-03-30 19:20:26
123
原创 基于VSCode的Linux内核调试环境搭建以及start_kernel跟踪分析
这个函数是由0号进程执行的。继续执行,这时候遇到了kernel_init,即1号进程,它是所有用户进程的祖先,由kernel_thread函数创建,kernel_thread函数创建一个新的内核线程(实际linux不支持线程所以是一个内核进程),该线程的入口地址是kernel_init()函数。点击单点跳过,这里我们看到了0号进程init_task被设置整个系统的第一个进程(0进程是手工创建的,其他进程都是0号进程创建的)在内核引导时,init_task会被创建并启动,它是所有其他进程的起点。
2023-03-23 21:06:50
227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人