首页 > 其他分享 >手写操作系统 - 22.图解内核任务切换【手动栈】

手写操作系统 - 22.图解内核任务切换【手动栈】

时间:2024-12-12 20:59:07浏览次数:5  
标签:上下文 22 当前任务 任务 切换 寄存器 堆栈 手写 图解

在这里插入图片描述

图解手动任务切换

这张图片展示了一个基于堆栈操作的任务切换过程,主要使用了汇编语言实现。以下是任务切换的完成步骤的描述:


1. 初始化上下文

任务切换的目标是保存当前任务的上下文(寄存器、堆栈等),并恢复目标任务的上下文。

  • 任务的堆栈中保存了所有的寄存器值(如 EAXEBXESP 等)和返回地址。
  • 每个任务都有自己的堆栈,from->stackto->stack 分别表示当前任务和目标任务的堆栈指针。

2. 保存当前任务的寄存器状态

simple_switch 函数中:

  • 使用 push 指令依次将 EBPEBXESIEDI 等寄存器的值压入当前任务的堆栈。
  • 保存完成后,堆栈的状态包含所有的寄存器值和返回地址。

3. 更新堆栈指针

将当前任务的堆栈指针 ESP 存储到 from->stack,从而保存当前任务的上下文。


4. 加载目标任务的堆栈指针

to->stack 中读取目标任务的堆栈指针,并将其加载到 ESP,这一步切换了堆栈指向。


5. 恢复目标任务的寄存器状态

  • 使用 pop 指令依次弹出目标任务堆栈中的寄存器值,恢复 EDIESIEBXEBP
  • 通过恢复寄存器状态,目标任务的上下文被完全加载。

6. 跳转到目标任务的执行地址

  • 使用 ret 指令从堆栈中弹出返回地址,跳转到目标任务的执行位置。
  • 这时任务切换完成,CPU 开始执行目标任务。

任务切换的关键点

  • 堆栈指针切换 是整个任务切换的核心,通过更新 ESP 实现上下文的保存与恢复。
  • 所有寄存器状态都存储在堆栈中,确保切换时任务上下文一致。
  • 切换后的执行位置由堆栈中的返回地址决定。

通过这种方式,简单地实现了任务之间的上下文切换,这种方法常用于嵌入式系统或简单的实时操作系统中。

标签:上下文,22,当前任务,任务,切换,寄存器,堆栈,手写,图解
From: https://blog.csdn.net/u012133105/article/details/144337670

相关文章

  • 20222414 2024-2025-1 《网络与系统攻防技术》实验八实验报告
    1.实验内容及要求(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户......
  • macOS Ventura 13.7.2 (22H313) 正式版 ISO、IPSW、PKG 下载
    macOSVentura13.7.2(22H313)正式版ISO、IPSW、PKG下载使用台前调度自动整理工作空间,全新连续互通相机,让Mac体验更胜以往请访问原文链接:https://sysin.org/blog/macOS-Ventura/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org​台前调度等新功能帮助Mac用......
  • 国标GB28181-2022平台LiteGBS摄像机图像有噪点、画面卡顿时,应如何操作?
    随着技术的不断进步与创新,LiteGBS国标GB28181软件将继续以其优势,为公共安全、城市管理和企业安防等领域提供更加高效和先进的视频监控解决方案。LiteGBS国标GB28181软件也将继续深耕视频监控领域,充分发挥H.265技术的优势,为各行各业用户提供更加高效、智能、可靠的视频监控解决方案......
  • 20222418 2024-2025-1 《网络与系统攻防技术》实验七实验报告
    1.实验内容本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有(1)简单应用SET工具建立冒名网站(2)ettercapDNSspoof(3)结合应用两种技术,用DNSspoof引导特定访问到冒名网站。2.实验过程(1)简单应用SET工具建立冒名网站cat/etc/apache2/ports.......
  • 20222326 2024-2025-2 《网络与系统攻防技术》实验八实验报告
    1.实验内容实验内容:1.Web前端HTML要求:能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。2.Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的......
  • 22.[极客大挑战 2019]BuyFlag1
    进入靶场好熟悉的页面查看源代码点击后进入了一个新的页面新页面提示必须以学生身份登录,需要100000000元将cookie:user=0改为cookie:user=1即可绕过身份验证让我们输入密码再查源代码注意左下角的绿字需要我们用post方式提交money和passwordpassword要能识别为......
  • 20222413 2021-2022-1 《网络与系统攻防技术》实验八实验报告
    1.实验内容1.1本周学习内容:本周学习内容为简单登录网页的前后端编写,以及如何对网页进行sql注入攻击、xss攻击、CSRF攻击。1.2实验内容(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript......
  • MobiSys'2022 CoDL论文详解
    算子切分在了解算子切分前,先了解一下卷积的运算过程,作者将算子切分分为了两个维度的切分:OC维度和H维度,没有W维度可能与数据在内存中的存储方式有关。OC维度切分卷积就是OC数量个kernel_size×kernel_size×IC大小的卷积核与输入张量卷积计算后的输出叠加,因此从OC维度上切分,将......
  • openEuler 22.03 安装 .NET 8.0
    //查看内核信息1、cat/proc/version2、查看主机信息  hostnamectl3、openEuler 安装 rpm 源sudorpm-Uvhhttps://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm查看 dotnet 相关包信息sudodnfinfoaspnetcore-runtime-8.04、安装 ......
  • 20222304 2024-2025-1 《网络与系统攻防技术》实验七实验报告
    一、实验内容及要求本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有(1)简单应用SET工具建立冒名网站(2)ettercapDNSspoof(3)结合应用两种技术,用DNSspoof引导特定访问到冒名网站。二、实验过程2.1简单应用SET工具建立冒名网站SET(Social-......