- 博客(9)
- 收藏
- 关注
原创 Linux操作系统分析课程总结报告
将当前进程X的内核堆栈切换到进程调度算法选出来的next进程(本例假定为进程Y)的内核堆栈,并完成了进程上下文所需的EIP等寄存器状态切换。详细过程见前述内容。标号1,即前述3.18.6内核的swtich_to代码第50行“”1:\t“ ”(地址为switch_to中的“$1f”),之后开始运行进程Y(这里进程Y曾经通过以上步骤被切换出去,因此可以从标号1继续执行)。注意这里是进程Y的中断处理过程中,而(3)中保存现场是在进程X的中断处理过程中,因为内核堆栈从进程X切换到进程Y了。正在运行的用户态进程X。
2023-05-20 21:58:45
179
1
原创 lab5:深入理解进程切换
一、进程调度时机就是内核调用schedule函数的时机用户进程上下文中主动调用特定的系统调用进入中断上下文,系统调用返回用户态之前进行进程调度。内核线程或可中断的中断处理程序,执行过程中发生中断进入中断上下文,在中断返回前进行进程调度。内核线程主动调用schedule函数进行进程调度。以上第一种和第二种情况可以统一起来,中断处理程序执行过程主动调用schedule函数进行进程调度,与前述两类调度时机对应。
2023-04-29 16:21:59
112
原创 以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34
el0_sync 在完成保存现场的工作之后,会根据 ESR_EL1 寄存器确定同步异常产生的原因,同步异常产生的原因很多,在 ARM64 Linux 中最常见的原因是 svc 指令触发了系统调用,所以排在最前面的就是条件判断跳转到 el0_svc , el0_svc 中主要负责调用C代码的 el0_svc_handler 处理系统调用和 ret_to_user 系统调用返回。流程和上次实验类似,但这次我们要自己写一个触发系统调用的内嵌汇编代码。配置项和上一个实验类似,但是要注意设置为Arm64环境。
2023-04-25 23:44:07
55
原创 高软作业——分析Lab5.2的Callback函数调用
** 函数定义*/= NULL)//函数使用给Linktable增加Callback方式的接口,需要两个函数接口,一个是call-in方式函数,如代码中SearchLinkTableNode函数,其中有一个函数作为参数,这个作为参数的函数就是callback函数,如代码中Conditon函数。
2023-03-29 15:02:17
123
原创 编写menu第一版简单程序
选用go或rust编写menu项目,创建一个版本库,采用VS Code作为编译调试环境。撰写一个帖子,从创建版本库、配置VS Code编译调试环境、编写menu第一版简单程序,以及最终调试运行,完整记录下来,目标是为go或rust的开发者提供一个开发环境配置和工作流程的参考。
2023-03-18 19:43:56
63
原创 Linux操作系统分析Lab1(RISC-V汇编代码分析)
将一个简单的C程序汇编成LoongArch或RISC-V汇编代码,并逐步分析程序的执行过程,深入理解存储程序计算机和函数调用堆栈框架在执行过程中所起的作用
2023-03-14 17:13:38
271
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人