做游戏的php网站有哪些,如何注册一个建筑公司,企业网站 的网络营销方法有,生产类营销型网站上一篇文章学习了#xff1a;保护模式七#xff1a;调用门与依从的代码段----特权级保护 主要学习了以下内容#xff1a;
描述符特权级#xff08;目标对象的特权级#xff09;DPL 描述符特权级#xff08;目标对象的特权级#xff09;DPL 当前特权级CPL 低特权级的应…上一篇文章学习了保护模式七调用门与依从的代码段----特权级保护 主要学习了以下内容
描述符特权级目标对象的特权级DPL 描述符特权级目标对象的特权级DPL 当前特权级CPL 低特权级的应用调用高特权级的操作系统代码的两种方法 第一种方法是将高特权级的代码段定义为依从的第二种方法是使用调用门 请求特权级RPL
今天接着上一篇文章学习
任务切换的方法
1、回顾
从80286开始处理器是面向多任务系统而设计的。在一个多任务的环境中可以同时存在多个任务每个任务都有自己的局部描述符LDT和任务状态段TSS。可以在多个任务之间切换使它们轮流执行从一个任务切换到另一个任务时具体的切换过程是处理器固件负责进行。
但是什么时候切换到另一个任务以及切换到哪一个任务这是操作系统的责任处理器只负责具体的切换过程包括保护前一个任务的现场。
有两个基本的任务切换方法一种是协同式的从一个任务切换到另一个任务时需要当前任务主动的请求暂时放弃执行权或者在通过调用门请求操作系统服务时系统会调用由操作系统‘趁机’将控制转移到另一个任务。
另一种方式是抢占式的。在这种情况下可以安装一个定时器并在中断服务程序中实施任务切换。硬件中断信号总会出现不管处理器当时在做什么中断总会按时到来而任务切换就能准时进行。在这种情况下每个任务都能获得平等的执行机会。抢占式多任务将放在后面保护模式八进行学习。这里我们只学习多任务切换的一般工作原理。
2、任务切与特权级控制转移的区别
在上一篇文章点击查看。我们学习了特权级相关的概念。知道了特权级实际上是针对同一个任务的局部空间与全局空间之间的控制转移保护而存在的。注意我们说特权级是针对同一个任务的这一点需要理解因为不同的任务之间就算特权级不一样也是可以进行人去切换的。比如用户线程与内核线程这肯定是可以进行切换的。
上面的怎么理解呢
实际上操作系统出了为每一个任务提供服务外也会有一个作为任务而独立存在的部分而且是0特权级的任务。当计算机启动进入保护模式直接创建和执行操作系统的0特权级任务然后可以从该任务切换到其他任务不管它们是哪个特权级的。
如下图是一个任务切换和在任务内进行特权级间的控制转移示意图 很明显任务切换与特权级控制转移不是一回事
3、任务切换的方法
3.1 借助于中断—任务门
这是现代抢占式多任务的基础。原因很简单只要中断没有被屏蔽它就能随时发生。特别是定时器中断能够以准确的时间间隔发生可以用来强制实施任务切换。
我们知道在实模式下内存最低地址端的1KB是中断向量表保存着256个中断处理过程的段地址和偏移地址。当中断发生时处理器把中断号乘以4作为索引号访问中断向量表从相应的位置取出中断处理过程的段地址和偏移地址并转移到那里执行
而在保护模式下中断向量表不再使用取而代之的是中断描述符表。它和GDT,LDT是一样的用于保存描述符。它保存的是门描述符。 包括中断门陷阱门和任务门。这些门和我们之前学过的调用门非常类似。当中断发生时处理器用中断向量表乘以8因为每个描述符占8字节作为索引访问中断描述符表取出门描述符。门描述符中有中断处理过程的代码段选择子和段内偏移量这和调用门是一样的。接着转移到相应位置去执行。
一般的中断处理可以使用中断门和陷阱门。它们两的本质与调用门类似都是任务内的控制转移。从任务的局部空间转移大全局空间。
但是当中断发生时中断号对应的是任务门那就不一样了。此时就是进行任务切换-----即终止当前任务的执行切换到另一个任务执行。
如下图是一个任务门描述符的格式 其中
TSS选择子 执行任务切换时必须找到新任务的选择子。P位任务门的P位指示该门是否有效p0时不允许使用此门实施任务切换DPL任务门描述符的特权级但是对因中断而发起的任务切换不起作用处理器不按特权级施加任何保护。当以非中断的方式使用任务门进行任务切换就需要用到DPL
下面总体概述一下如何使用任务门来进行任务切换
当中断发生时处理器用中断号乘以8作为索引访问中断描述符表。当它发现这是一个任务门描述符时就知道应当发起任务切换。取出任务门描述符。从任务门描述符中取出新任务的TSS选择子再用TSS选择子访问GDT取出新任务的TSS描述符在执行新任务前处理器会把当前任务状态保存起来。也就是将当前任务的状态保存到TR寄存器指向的TSS状态段。然后处理器访问新任务的状态段TSS并从中恢复各个寄存器的内容包括通用寄存器、标志寄存器EFLAGS、段寄存器、指令指针寄存器EIP、栈指针寄存器ESP以及局部描述符表寄存器LDTR等。最终任务寄存器TR指向新任务的TSS而处理器开始新任务的执行。一旦新任务开始执行处理器固件会自动将其TSS描述符的B位置1表示该任务状态为忙。
4 总结
以上只是大概学习了任务切换的一般过程以及任务门描述符的基本概念。我们需要注意任务切换与特权级的控制转移之间的区别。后序还会有详细的内容。
详细的内容还是要参考原书籍这里只是做一个简单的总结。
学习探讨加个人 qq1126137994 微信liu1126137994