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操作基本原理

原文地址:https://www.cnblogs.com/dyyblog/p/14074473.html