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

    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)>
    这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业>
    这个作业的目标 <了解进程的切换和linux系统的一般执行过程>
    作业正文 https://www.cnblogs.com/dyyblog/p/14074473.html

    知识总结

    一.硬中断和软中断

    • 中断:在本质上都是软件或者硬件发生了某种情形而通知处理器的行为,处理器进而停止正在运行的指令流(当前进程),对这些通知做出相应的反应,即转去执行预定义的中断处理程序(内核代码)。
    • 硬中断:就是CPU的两根引脚(可屏蔽中断和不可屏蔽中断)。
    • 软中断/异常:包括除零错误、系统调用、调试断点等在CPU执行命令过程中发生的各种特殊情况统称为异常。异常会导致程序无法继续执行,而跳转到CPU预设的处理函数。异常分为以下三种:
    • 故障:出现问题,可以恢复到当前指令。
    • 退出:不可恢复的严重故障,导致程序无法继续运行,只能退出。
    • 陷阱:程序主动产生的异常。

    二.进程调度时机

    • schedule()函数:Linux内核通过schedule函数实现进程调度。调用schedule函数一次就是调度一次,调用schedule函数的时候就是进程调度的时机。调度schedule()函数的两种方法:
      进程主动调用schedule():如果进程调用阻塞的系统调用等待外设或主动睡眠等,最终都会在内核中调用到schedule函数。
      松散调用:内核代码中可以随时调用schedule()函数使当前内核路径让出CPU;也会根据need_resched标记做进程调度,内核检测到need_resched决定是否调用schedule函数。
    • 上下文:一般来说,CPU在任何时刻都处于以下三种情况之一
      运行于用户空间,执行用户进程上下文;
      运行于内核空间,处于进程(一般是内核线程)上下文;
      运行于内核空间,处于中断(中断处理程序ISR,包括系统调用处理过程)上下文。
    • 进程调度时机就是内核调用schedule()函数的时机。 进程调度时机情况总结如下:
      用户进程通过特定的系统调用主动让出CPU;
      中断处理程序在内核返回用户态时进行调度;
      内核线程主动调用schedule函数让出CPU;
      中断处理程序主动调用schedule函数让出CPU(包括以上两点)。
      2.调度策略和算法

    三.Linux系统的运行过程

    1)正在运行的用户态X。

    2)发生中断(包括异常、系统调用)。

    3)保护现场,此时完成上下文切换。

    4)中断处理过程中或中断返回前调用schedule函数,其中switch_to做了关键进程上下文切换。

    5)运行用户态进程Y。

    6)恢复现场。

    7)完成中断上下文切换,从进程Y内核态返回到进程Y的用户态。

    8)继续运行用户态进程Y。

    实验过程

    ![](https://img2020.cnblogs.com/blog/2168504/202012/2168504-20201202161639786-1965090985.png)


    ls操作基本原理

  • 相关阅读:
    Java核心(七):this和super的区别
    Java核心(六):==和equals()的区别;重写equals()方法
    java核心(五):堆内存、栈内存;String赋值时,内存变化
    Java核心(四):Java中的装箱和拆箱
    Java核心(三):代码块的作用
    从数据库中导出.csv文件
    mongodb中数据类型的坑
    return 和 echo 的小坑
    对数据库中初始的数据在后台进行翻译
    SQL语句执行效率及分析
  • 原文地址:https://www.cnblogs.com/dyyblog/p/14074473.html
Copyright © 2011-2022 走看看