操作系统任务调度(包你学会)

操作系统任务调度(包你学会)

ID:33580571

大小:187.92 KB

页数:10页

时间:2019-02-27

操作系统任务调度(包你学会)_第1页
操作系统任务调度(包你学会)_第2页
操作系统任务调度(包你学会)_第3页
操作系统任务调度(包你学会)_第4页
操作系统任务调度(包你学会)_第5页
资源描述:

《操作系统任务调度(包你学会)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统中任务调度的实现上图,就是TTS的最基本的结构,在它的后面,操作系统还可以另外增加若干字节以存放一些额外的数据,不过CPU只使用最基本的共104字节的空间。从上面的结构中我们可以看见,里面几乎保存了一个进程运行所需要使用的CPU的所有信息,下面,我们就来详细研究下这个结构。在上图中,已经用三种色彩将上述的TSS结构分成了三部份,对于“未用”部份我们可以不必理会,另外还有两个部份:“CPU自动更新区”及“CPU只读区”,所谓“自动更新”是指当CPU在进行任务切换的时候,会自动将当前任务的相关信息存放到TSS的相应位置中,这样,CPU就保存了当前任务的相关信息

2、。“只读区”是指CPU在任务切换时会从中读取相关信息,但是,在任务被切换出去的时候,不会保存它们,因此,“只读区”的信息是由操作系统在创建任务的时候就指定好的,CPU只是读取而不会去修改它们。从上图中,我们知道了CPU将当前任务的相关信息保存在什么地方,不过这个TSS实在是太大了!它不可能放在CPU中,而只能被放在内存中,因此我们还需要一个指针只向内存中的TSS,这样CPU就可以通过这个指针找到相应的TSS了,这样的指针有两种,我们分别将其称为“TSS描述符”和“任务门”。“TSS描述符”及“任务门”的结构与用途下面我们还是先来看看“TSS描述符”的结构:1570

3、TSS的大小限制的0~15位TSS的基址的0~15位PDPL010B1基址的16~23位大小限制的基址的24~31位G0016~19位AVL位:软件可利用位B:标志任务忙与不忙DPL:特权级(2位)P:存在位,标志TSS是否存在于内存中G:粒度位,在32位保护模式下,应当置1上图就是“TSS描述符”结构,从图中我们可以看见,它给出了一个TSS所在的内存位置以及TSS的大小。这里需要注意的是,从前面的TSS基本结构图中我们可以知道一个TSS基本结构最小不能小于104字节,因此,这里的TSS的大小限制最小是103(TSS的最小结构的大小104–1)。另外还要特别引起注

4、意的就是图中的“B”位,这一标志位用来标志一个任务是否是忙任务。如果B位被清零,那么我们就说这个任务是一个“可用任务”,-4-操作系统中任务调度的实现如果B位被置1,我们说这个任务是一个“忙任务”,所谓“忙任务”是指它正在被运行,或者它是一个被任务链链接起来的任务,明白“B”位的用处在实际的编程序非常重要,但在这里不打算详加描述,把详细的描述留给下面的文字完成。从上图我们可以看出,一个“TSS描述符”指代了一个TSS结构,按理来说,这已经完全足够使用了,但是用于Intel允许在中断的时候也可以进行任务切换,这样,我们就可以把中断处理程序作为一个专门的任务,然而,中

5、断描述符表中存放的只能是门描述符,而上面的“TSS描述符”并不是一种门描述符,因此,它不能被放在中断描述符表中,于是Intel又定义了一种“任务门”,它其实指向的是一个“TSS描述符”,但由于它是一种门描述符,因此,它可以被放在中断描述符表中,这样当发生中断的时候,CPU通过中断号查询中断描述符表,得到相应的门描述符,如果发现它是一个“任务门”,则通过它找到相应的“TSS描述符”,再通过相应的“TSS描述符”找到相应的“TSS结构”。其实,我总觉得定义“任务门”有点多此一举,但Intel已经这样做了,我们也就不得不照办。下面,我们就来看看“任务门”的结构:1570

6、保留(应置为0)TSS选择符PDPL00101保留(应置为0)保留(应置为0)上图就是“任务门”的结构,其中被用到的地方极少,Intel真是浪费啊!P位与DPL位与前面的“TSS描述符”中的相应位的作用是一样的,这里就不多述说了,余下就说说“TSS选择符”吧。从前面的TSS描述符我们以经知道了,一个“TSS描述符”指代了一个TSS结构,通过它我们可以知道一个TSS结构在内存中的位置。那么我们又怎样得到一个“TSS描述符”的呢?它又是放在什么地方的呢?在操作系统中,这样的TSS描述符由于会被CPU、中断服务程序、其它进程访问,因此它只能放在“全局描述符表”中(有“关

7、全局描述符表”在《操作系统引导探究》一文中有详细描述)。因此我们需要用一个索引来指出“TSS描述符”在全局描述符表中的位置,这样我们就可以找到相应的“TSS描述符”了,这个索引就被称之为“TSS选择符”,顾名思义,它是用来在“全局描述符表”中选择“TSS描述符”的。下面,我们通过一个图来看看CPU是怎么进行任务切换的,这个地方比较有趣的是“任务门”与“TSS描述符”都是放在“全局描述符”表中的,并且都需要一个索引指出它们在表中的位置,而这个索引都是一个选择符,分别称为“任务门选择符”与“TSS选择符”。CPU任务切换行为概述-5-操作系统中任务调度的实现由jmp,

8、call,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。