zoukankan      html  css  js  c++  java
  • Linux内核设计第八周 ——进程的切换和系统的一般执行过程

    Linux内核设计第八周

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

    第一部分 知识点总结

    第二部分 实验部分

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

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

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

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

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

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

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

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

    实验总结:在调试过程中,我发现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

  • 相关阅读:
    [转载]Oracle Golden Gate
    git操作命令
    logger.error完整打印错误堆栈信息
    短网址算法
    YYYY-mm-dd HH:MM:SS大小写解释
    quarz时间配置
    Freemarket语法
    Java NIO:IO与NIO的区别
    idea常用到的命令
    linux 常用命令
  • 原文地址:https://www.cnblogs.com/java-stx/p/5384561.html
Copyright © 2011-2022 走看看