首页 > 其他分享 >chapter15------任务切换

chapter15------任务切换

时间:2024-08-28 22:14:22浏览次数:3  
标签:中断 描述符 mov chapter15 任务 切换 ------ TSS

任务切换的基本方式(简介)

协同式

从一个任务切换到另一个任务时,需要 当前任务主动地请求暂时放弃执行权,或者在通过调用门请求操作系统服务时,由操作系统将控制转移到另一个任务

任务的切换取决于每个任务的 “自律性”

抢占式

可以安装一个 定时器中断,并在 中断服务程序中实施任务切换

每个任务都能获得平等的执行权

任务切换前的设置

任务切换与任务中控制转移的区别

首先,我们要知道在 任务中控制转移 是指 控制在一个任务内的全局空间和局部空间中转移

而任务切换是指 以任务为单位,控制从一个任务转移到另一个任务中

二者的区别就在于 控制是在同一个任务中转移还是不同任务中转移

如下图所示

1

0特权级别的操作系统(内核)任务

任务切换,系统至少要有2个任务,其中一个正在执行

在之前,内核是通过虚假的调用门返回,将控制权转移到用户程序中

这一章,我们先创建一个 0特权级别的操作系统(内核)任务,然后用任务切换的方法,切换到用户程序上

   ;为程序管理器的TSS分配内存空间 
   mov ecx,104                        ;为该任务的TSS分配内存
   call sys_routine_seg_sel:allocate_memory
   mov [prgman_tss+0x00],ecx          ;保存程序管理器的TSS基地址 

   ;在程序管理器的TSS中设置必要的项目 
   mov word [es:ecx+96],0             ;没有LDT。处理器允许没有LDT的任务。
   mov word [es:ecx+102],103          ;没有I/O位图。0特权级事实上不需要。
   mov word [es:ecx+0],0              ;反向链=0
   mov dword [es:ecx+28],0            ;登记CR3(PDBR)
   mov word [es:ecx+100],0            ;T=0
                                      ;不需要0、1、2特权级堆栈。0特级不
                                      ;会向低特权级转移控制。
   
   ;创建TSS描述符,并安装到GDT中 
   mov eax,ecx                        ;TSS的起始线性地址
   mov ebx,103                        ;段长度(界限)
   mov ecx,0x00408900                 ;TSS描述符,特权级0
   call sys_routine_seg_sel:make_seg_descriptor
   call sys_routine_seg_sel:set_up_gdt_descriptor
   mov [prgman_tss+0x04],cx           ;保存程序管理器的TSS描述符选择子 

   ;任务寄存器TR中的内容是任务存在的标志,该内容也决定了当前任务是谁。
   ;下面的指令为当前正在执行的0特权级任务“程序管理器”后补手续(TSS)。
   ltr cx                          

我们就让这个任务叫做 程序管理器,然后就是创建TSS并安装到GDT中,最后让处理器的TR寄存器指向该任务,表示该任务正在执行

任务切换的方法(详细)

中断(抢占式多任务)

实模式下的中断向量表

内存最低端的1KB是中断向量表,保留 256 个中断处理过程的 段地址和偏移地址,每个条目占用 4字节

中断发生时,处理器将 中断号乘4作为表内的索引来访问中断向量表,从相应位置取到 入口地址 并转移到那里执行

保护模式下的中断描述符表

中断描述符表和GDT、LDT类似,不过保留的是 门描述符,包括中断门、陷阱门、任务门,每个描述符占用 8字节

中断发生时,处理器将 中断号乘8作为表内的索引来访问中断描述符表,从相应位置取到 门描述符 并转移到指定处执行

  • 中断处理使用 中断门、陷阱门: 允许在 任务内 实施中断处理过程,转移到全局空间,本质上也是 任务内的控制转移行为

  • 中断处理使用 任务门:必须进行 任务切换,中断当前任务的执行,保留当前任务的现场,转换到另一个任务执行

如下是任务门的描述符格式,主要成份是TSS选择子( 新任务的TSS )

3

嵌套任务标志

当中断发生时,都需要通过 iret指令 返回

  • 常规的中断处理过程返回到 同一任务的不同代码段
  • 任务切换返回到 被中断的那个任务

二者都是通过相同的指令返回,处理器该如何区分呢------答案是标志寄存器EFLAGS的 NT位(第14位),即 嵌套任务标志

4

每个任务的TSS都有一个 任务链接域,用于指向前一个任务的TSS描述符的选择子,NT位为1,表示当前任务为嵌套任务,可以通过TSS返回到前一个任务

所以处理器通过 NT位 来判定 iret指令 该如何做

远程调用指令CALL

处理器执行call指令时,先通过描述符选择子访问GDT,然后分析对应的描述符的类型

  • 代码段描述符: 常规的段间转移
  • 调用门描述符: 具有特权级变换的段间转移
  • 任务门描述符或TSS描述符: 任务切换

由call指令发起的任务切换是嵌套的

  • 当前任务的B位和NT位不变
  • 新任务的B位和NT位置1
  • 新任务的TSS任务链接域改为旧任务的TSS描述符选择子

如下图所示:

6

远跳转指令JMP

处理器开始的步骤和call指令是一样的,访问GDT,取描述符

由JMP指令发起的任务切换不会形成任务之间的嵌套关系

  • 当前任务的B位清零,NT位不变
  • 新任务的B位置1,NT位不变

任务不可重入

简单来说,就是执行任务切换时,新任务的状态不能为忙,即B位应该为0

处理器通过新任务的TSS描述符的B位来检测重入

总结

7

任务切换实例看代码就可以了,只有20来行吧

标签:中断,描述符,mov,chapter15,任务,切换,------,TSS
From: https://www.cnblogs.com/winter-z/p/18385492

相关文章

  • mysql格式化日期
    mysql查询记录如果有时间戳字段时,查看结果不方便,不能即时看到时间戳代表的含义,现提供mysql格式换时间函数,可以方便的看到格式化后的时间。1.DATE_FORMAT()函数用于以不同的格式显示日期/时间数据。DATE_FORMAT(date,format)format参数的格式有 %a缩写星期名%b......
  • 雪花算法和UUID
    雪花算法和UUIDUUIDUUID是一种唯一且不需要中央协调的ID,它使用某种规则创建ID,而不是某种中心化的自增方式,使得其成为创建成本最低的ID类型。到目前为止UUID一共有5个实现版本版本1:按照UUID定义的每个字段的意义来实现,使用的变量因子是时间戳+时钟序列+节点信息(Mac地址),考的......
  • Python编码系列—Python中的HTTPS与加密技术:构建安全的网络通信
    ......
  • Allen 前端陪诊系统----bilibili学习笔记
    目录一.项目配置1.下载node.js2.搭建第一个vite项目2.1创建项目2.2安装所有依赖2.3启动项目二.路由引入1.下载vue-router插件2.创建路由和页面1)创建路由2)配置路由3)路由模式4)创建页面三.UI框架1)下载element-plus2)采用按需引入3)页面布局学习链接:https:/......
  • XSS漏洞
    本质变量在接收数据时,数据被写成js脚本,然后进行回显操作,就被浏览器执行;js可以干什么,这个漏洞就可以干什么产生层面前端函数类echo…漏洞操作对应层危害影响js代码决定浏览器内核版本版本是否支持执行反射性发包x=sdfjlj==>x.php==>回显包存储......
  • JSP基于协同过滤算法的网上招聘系统02c9z(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:用户,企业,招聘信息,录取信息,职位类别,应聘信息,企业信息技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主......
  • JSP基于隐语义模型的旅游推荐系统r4f0b--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:用户,景点类别,景点信息,游记路线,景点订票,景点退票开题报告内容一、研究背景与意义随着互联网技术的飞速发展,旅游行业逐渐向线上转移,但传统旅游推荐......
  • JSP吉祥汽车销售公司信息管理系统9xr5i--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:用户,员工,车辆信息,进货信息,购买订单,销售量统计技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库......
  • 翻译_Clock Domain Crossing Design
    翻译_ClockDomainCrossingDesign原文标题及连接:ClockDomainCrossing(CDC)Design&VerificationTechniquesUsingSystemVerilog.作者:CliffordE.CummingsSunburstDesign,[email protected]摘要在多时钟设计中,需要在时钟域交叉(ClockDomainC......
  • 设计必备Adobe Photoshop ps2023 最新版本v24.5 安装和下载教程
    从Photoshop开始,一场惊艳的视觉盛宴就此展开。无论是社交媒体帖子还是照片修饰,设计横幅还是精美网站,日常影像编辑还是重塑现实,Photoshop都能让创作更上一层楼。Photoshop24.5带来了全新的体验,让你的创作之旅更加轻松愉快。调整预设,为你的图像增添戏剧效果。这个功能让你只......