2021-2022-1 20212808 《Linux内核原理与分析》第九周作业

本文详细介绍了Linux内核中的进程切换和系统执行过程,包括硬中断、软中断的概念,schedule函数在进程调度中的作用,以及上下文切换的关键函数如context_switch和switch_to。还探讨了进程调度的时机、策略与算法,如SCHED_FIFO、SCHED_RR和CFS算法。同时,通过实验分析了schedule()、context_switch()和switch_to()在源代码中的实现和调试过程。
摘要由CSDN通过智能技术生成

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

课本知识
  • 硬中断与软中断
    硬中断:可屏蔽中断和不可屏蔽中断。高电平说明有中断请求。
    软中断/异常:
    故障:出问题,但可以恢复到当前指令,如除零错误。
    退出:不可恢复的严重故障,只能退出。如连续发生故障。
    陷阱(Trap):程序主动产生的异常。
  • schedule函数
    Linux内核通过schedule函数实现进程调度,调用schedule函数的时候就是进程调度的时机。
  • 上下文
    一般来说,cpu在任何时刻都处于以下3种情况之一:
    运行于用户空间,执行用户进程上下文
    运行于内核空间,处于进程(一般是内核线程)上下文
    运行于内核空间,处于中断上下文。
  • 进程调度的时机
    用户进程通过特定的系统调用主动让出CPU;
    中断处理程序在内核返回用户态时进行调度;
    内核线程主动调用schedule函数让出CPU;
    中断处理程序主动调用schedule函数让出CPU(包括以上两点)。
  • 调度策略与算法
  1. SCHED_FIFO和SCHED_RR:实时进程的调度类,实时进程的优先级是静态设定的,始终大于普通进程的优先级;SCHED_NORMAL:普通进程的调度类,同一进程在本身优先级不变的情况下分到的CPU时间占比会根据系统负载变化而发生变化。
  2. CFS即为完全公平调度算法,其基本原理是基于权重的动态优先级调度算法。每个进程使用CPU的顺序由进程已使用的CPU虚拟时间(vruntime)决定,已使用的虚拟时间越少,进程排序越靠前,进程在此被调度执行的概率也就越高。
  3. 进程上下文包含了进程执行的所有信息:
    用户地址空间:进程代码、数据和用户堆栈等
    控制信息:进程描述符、内核堆栈
    硬件上下文:存储相关寄存器的值
  • Linux系统的一般执行过程分析
    最一般的情况:
    正在运行的用户态进程X切换到运行用户态进程Y的过程
  1. 正在运行的用户态进程X
  2. 发生中断——save cs:eip/esp/eflags(current) to kernel stack,then load cs:eip(entry of a specific ISR) and ss:esp(point to kernel stack).
  3. SAVE_ALL //保存现场
  4. 中断处理过程中或中断返回前调用了schedule(),其中的switch_to做了关键的进程上下文切换
  5. 标号1之后开始运行用户态进程Y(这里Y曾经通过以上步骤被切换出去过因此可以从标号1继续执行)
  6. restore_all //恢复现场
  7. iret - pop cs:eip/ss:esp/eflags from kernel stack
  8. 继续运行用户态进程Y
  • Linux系统执行过程中的几种特殊情况:

通过中断处理过程中的调度时机,用户态进程与内核线程之间互相切换和内核线程之间互相切换,与最一般的情况非常类似,只是内核线程运行过程中发生中断没有进程用户态和内核态的转换;
内核线程主动调用schedule(),只有进程上下文的切换,没有发生中断上下文的切换,比 最一般的情况略简略;创建子进程的系统调用在子进程中的执行起点及返回用户态,如fork一个子进程时;
加载一个新的可执行程序后返回到用户态的情况,如execve系统调用加载新的可执行程序;

  • linux系统架构与执行过程
    在这里插入图片描述

实验八:

进程调度相关源代码跟踪和分析
  1. 进入LinuxKernel目录,删除menu目录,克隆一个新的menu
cd LinuxKernel

rm menu -rf

git clone https://github.com/mengning/menu.git

cd menu

mv test_exec.c test.c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值