linux 进程调度机制

linux 进程调度机制

ID:33573435

大小:80.00 KB

页数:15页

时间:2019-02-27

linux 进程调度机制_第1页
linux 进程调度机制_第2页
linux 进程调度机制_第3页
linux 进程调度机制_第4页
linux 进程调度机制_第5页
资源描述:

《linux 进程调度机制》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1.用户级线程在用户层通过线程库来实现。对它的创建,撤销和切换都不利用系统的调用。2.核心级线程由操作系统直接支持,即无论是在用户进程中的线程,还是系统进程中的线程,它们的创建,撤销和切换都由核心实现。3.硬件线程就是线程在硬件执行资源上的表现形式。单个线程一般都包括上述三个层次的表现:用户级线程通过操作系统被作为核心级线程实现,再通过硬件相应的接口作为硬件线程来执行。对用户级线程来讲,内核也并不知道它的存在,所以所有对用户级线程的管理和调度都是在用户空间来进行的。用户级线程的切换通常是发生在一个应用进程

2、的诸线程之间,这是,不仅无需通过中断进入操作系统的内核,而且切换的规程也远比进程调度和切换的规则来得简单。例如,当一个线程封锁后会自动切换到下一个具有相同功能的线程。因此,用户级线程的切换速度特别快。但是用户线程也有它自身的缺点,例如,如果内核是单线程的,那么任何一个用户级线程若执行了阻塞系统调用就会导致该线程所属的进程阻塞。此时如果采用的是内核级线程,则调度室以线程为单位。当一个线程调用一个系统调用时,内核把系统调用只看做是该线程的行为,因而封锁该线程,于是可以再调度该进程中的其他线程执行。优先权只是调

3、度算法考虑的一个方面 进程调度依据调度程序运行时,要在所有可运行状态的进程中选择最值得运行的进程投入运行。选择进程的依据是什么呢?在每个进程的task_struct结构中有以下四项:policy、priority、counter、rt_priority。这四项是选择进程的依据。其中,policy是进程的调度策略,用来区分实时进程和普通进程,实时进程优先于普通进程运行;priority是进程(包括实时和普通)的静态优先级;counter是进程剩余的时间片,它的起始值就是priority的值;由于counte

4、r在后面计算一个处于可运行状态的进程值得运行的程度goodness时起重要作用,因此,counter也可以看作是进程的动态优先级。rt_priority是实时进程特有的,用于实时进程间的选择。 Linux用函数goodness()来衡量一个处于可运行状态的进程值得运行的程度。该函数综合了以上提到的四项,还结合了一些其他的因素,给每个处于可运行状态的进程赋予一个权值(weight),调度程序以这个权值作为选择进程的唯一依据。关于goodness()的情况在后面将会详细分析。 进程调度策略 调度程序运行时,要

5、在所有处于可运行状态的进程之中选择最值得运行的进程投入运行。选择进程的依据是什么呢?在每个进程的task_struct结构中有这么四项: policy,priority,counter,rt_priority 这四项就是调度程序选择进程的依据.其中,policy是进程的调度策略,用来区分两种进程-实时和普通;priority是进程(实时和普通)的优先级;counter是进程剩余的时间片,它的大小完全由priority决定;rt_priority是实时优先级,这是实时进程所特有的,用于实时进程间的选择。 首

6、先,Linux根据policy从整体上区分实时进程和普通进程,因为实时进程和普通进程度调度是不同的,它们两者之间,实时进程应该先于普通进程而运行,然后,对于同一类型的不同进程,采用不同的标准来选择进程: 对于普通进程,Linux采用动态优先调度,选择进程的依据就是进程counter的大小。进程创建时,优先级priority被赋一个初值,一般为0~70之间的数字,这个数字同时也是计数器counter的初值,就是说进程创建时两者是相等的。字面上看,priority是"优先级"、counter是"计数器"的意思

7、,然而实际上,它们表达的是同一个意思-进程的"时间片"。Priority代表分配给该进程的时间片,counter表示该进程剩余的时间片。在进程运行过程中,counter不断减少,而priority保持不变,以便在counter变为0的时候(该进程用完了所分配的时间片)对counter重新赋值。当一个普通进程的时间片用完以后,并不马上用priority对counter进行赋值,只有所有处于可运行状态的普通进程的时间片(p->counter==0)都用完了以后,才用priority对counter重新赋值,这

8、个普通进程才有了再次被调度的机会。这说明,普通进程运行过程中,counter的减小给了其它进程得以运行的机会,直至counter减为0时才完全放弃对CPU的使用,这就相对于优先级在动态变化,所以称之为动态优先调度。至于时间片这个概念,和其他不同操作系统一样的,Linux的时间单位也是"时钟滴答",只是不同操作系统对一个时钟滴答的定义不同而已(Linux为10ms)。进程的时间片就是指多少个时钟滴答,比如,若priority为2

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

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

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