zoukankan      html  css  js  c++  java
  • 2020-2021-1 20209305 《Linux内核原理与分析》第九周作业

    作业信息

    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)>
    这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业>
    这个作业的目标 <理解进程调度时机跟踪分析进程调度与进程切换的过程>
    作业正文 https://www.cnblogs.com/baoxiyuan/p/14063256.html

    1.硬中断和软中断

        硬中断就是CPU的两根引脚(可屏蔽中断和不可屏蔽中断)。CPU在执行每条指令后检测这两根引脚的电平,如果是高电平,说明有中断请求,CPU就会中断当前程序的执行
      去处理中断。一般外设都是以这种方式与CPU进行信号传递的。
        软中断/异常:包括除零错误、系统调用、调试断点等在CPU执行指令过程中发生的各种特殊情况统称为异常。异常会导致程序无法继续执行,而跳到CPU预设的处理函数。
      异常分为3种:
      故障:除0错误、缺页中断。
      退出:不可恢复的严重故障,导致程序无法继续运行。
      陷阱:程序主动产生的异常,在执行当前指令后发生。
    

    2.进程调度的时

      (1)中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule();
      (2)内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度;
      (3)用户态进程无法实现主动调度,仅能通过陷入内核态后的某个时机点进行调度,即在中断处理过程中进行调度。
    

    3.Linux系统执行过程中的几种特殊情况

      1、通过中断处理过程中的调度时机,用户态进程与内核线程之间互相切换和内核线程之间互相切换,与最一般的情况非常类似,只是内核线程运行过程中发生中断没
      有进程用户态和内核态的转换;
      2、用户进程向内核线程切换。内核现场不需要从内核态返回到用户态,省略了恢复现场和iret恢复CPU上下文。
      3、内核线程向用户进程的切换。内核线程主动调用schedule(),只有进程上下文的切换,没有发生中断上下文的切换,与最一般的情况略简略;
      4、创建子进程的系统调用在子进程中的执行起点及返回用户态,如fork;
      5、加载一个新的可执行程序后返回到用户态的情况,如execve;
    

    4.理解进程调度时机跟踪分析进程调度与进程切换的过程




    5.schedule()函数作用

      schedule函数是进程调度的主体函数。其中pick_next_task函数是schedule函数中重要的函数,负责根据调度策略和调度算法选择下一个进程.
      context_switch函数是schedule函数中实现进程切换的函数,context_switch函数是schedule函数中实现进程切换的函数,switch_to是context_switch
      函数中进程关键上下文切换的函数。
  • 相关阅读:
    JZOJ 5870 地图
    20190921
    20190919
    SP703 SERVICE
    UVA323 Jury Compromise
    [note]一类位运算求最值问题
    [BZOJ3674]可持久化并查集
    [luogu3359]改造异或树
    [luogu4755]Beautiful Pair
    [BJWC2012]冻结
  • 原文地址:https://www.cnblogs.com/baoxiyuan/p/14063256.html
Copyright © 2011-2022 走看看