- 博客(5)
- 收藏
- 关注
原创 Linux操作系统分析课程总结报告
(1)通过中断处理过程中的调度时机,用户态进程与内核线程之间互相切换和内核线程之间互相切换,与最一般的情况非常类似,只是内核线程运行过程中发生中断没有进程用户态和内核态的转换;(2)内核线程主动调用schedule(),只有进程上下文的切换,没有发生中断上下文的切换,与最一般的情况略简略;irqfd是基于eventfd的机制来实现的,用于用户态与内核态,以及内核态之间的事件通知;最一般的情况:正在运行的用户态进程X切换到运行用户态进程Y的过程。(三) 结合虚拟化分析中断过程。(1)正在运行的用户态进程X。
2023-05-15 13:45:42 167
原创 Linux 操作系统分析实验:深入理解进程切换
首先 membarrier_switch_mm(rq, prev->active_mm, next->mm) 使用了一个内存屏障,来保证上一个进程访问其内存空间与下一个进程访问其内存空间之间的先后顺序(某种程度上是一种进程同步机制),避免在访存进行过程中发生 mm_struct 的切换导致的访存错误(值得补充的是,前面切换到内核级线程的时候因为没有切换 mm_struct,所以不需要这样的内存屏障)。上下文切换完成后,必须调用 finish_task_switch,即这两个函数一定是要成对出现的。
2023-04-25 20:31:55 166
原创 以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34
本次实验:以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34。
2023-04-01 15:42:53 227
原创 基于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 22:15:19 239
原创 Linux操作系统分析孟宁Lab1
本次实验内容:将一个简单的C程序汇编成x86或x86-64汇编代码,并逐步分析程序的执行过程,深入理解存储程序计算机和函数调用堆栈框架在执行过程中所起的作用。我选择使用RISC-V汇编代码。
2023-03-14 21:43:39 232 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人