Linux内核设计第八周 ——进程的切换和系统的一般执行过程

时间:2022-12-28 16:06:40

Linux内核设计第八周

——进程的切换和系统的一般执行过程

第一部分 知识点总结

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

第二部分 实验部分

1、配置实验环境,确保menu内核可以正常启动

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

2、进入gdb调试,在shedule和context_switch处设置断点

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

3、开始调试,可以看到Menu内核启动在shedule处中断

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

4、单步调试,发现程序执行到__schedule处,我们list出该处的代码

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

5、进入该函数继续调试,在picknexttask处设置断点,查看具体细节

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

6、查看picknexttask函数的具体代码,我们会看到在进程上下文切换的具体细节,最终调用finishtaskswitch函数完成进程上下文的切换。

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

7、调试完picknexttask函数,我们finish这段调试,继续执行c,进入到contextswitch函数断点处。list可以看到contextswitch函数处的详细代码。

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

8、一直单步调试下去,我们在过程中可以发现preparetaskswitch函数,为进程上下文切换做准备工作。

Linux内核设计第八周 ——进程的切换和系统的一般执行过程

实验总结:在调试过程中,我发现schedule函数中调用__ schedule函数,__ schedule函数又调用了pick_ next_ task函数和context_ switch函数,根据相关代码可以分析出,pick_ next_ task函数首先指定了调度策略,context_ switch函数进行进程上下文切换。

重点总结

1、Linux系统中进程调度的时机分析

见知识点总结

2、进程上下文切换和中断上下文切换的关系?

见知识点总结

3、分析并理解Linux中进程调度与进程切换过程

见知识点总结

4、理解“Linux系统一般执行过程”

  • 1.首先在控制台下输入命令
  • 2.shell程序分析输入参数,在终端中解释程序
  • 3.调用系统调用fork生成一个shell本身的拷贝
  • 4.调用exec系统调用将输入的命令的可执行文件装入内存
  • 5.从系统调用返回
  • 6.shell和命令都执行

宋宸宁+ 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000