首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

线程治理

2012-11-13 
线程管理线程有三种模型:·用户级或应用程序级线程·内核级线程·用户级和内核级混合线程用户级线程不具有自

线程管理

线程有三种模型:

·用户级或应用程序级线程

·内核级线程

·用户级和内核级混合线程

用户级线程不具有自身的线程上下文,对操作系统是不可见的。运行时库调度器从进程的多个线程中选择一个线程,然后该线程和该进程允许的一个内核线程关联起来,内核线程被操作系统调度器指派到处理器内核。

内核级线程驻留内核空间,像单个进城一样被调度。如果用户建立内核级线程,则单个线程都有一个内核级线程与之对应。

混合线程中,用户线程与内核线程是“多对一”的关系。这种实现中,进程有自己的内核线程池,可运行的用户线程由运行时库分派并标记为准备好执行的可用线程。操作系统选择用户线程并将它映射到线程池中的可用内核线程。

内核线程池不会被销毁和重建,它们总是位于系统中,在必要时分配给不同用户级线程。纯内核级线程被创建时,就创建一个新的内核线程。只对内核线程池池中的每个线程创建上下文(单个内核线程也有上下文)。

线程有两个竞争范围:

·进程范围

·系统范围

线程依照竞争范围和分配域(被指派到的处理器集)来同其他线程竞争处理器的使用。有进程竞争范围的线程同进程中其它线程竞争;有系统竞争范围的线程同系统分配的其它进程的线程竞争资源。有着系统范围的线程和系统中所有线程一起被排序和调度。

线程是进程被调度执行时的执行单元。

进程范围的

进程发生上下文切换是在:

·进程被抢占

·进程主动让出处理器

·进程发起I/O请求或需要等待某个事件

·进程从用户模式切换到内核模式

总而言之,就是进程失去处理器时会发生上下文切换。线程与之类似,但是,内核/操作系统是通过内核线程来实现对所有线程的调度的。

进程和线程的调度策略有:

·先进先出(FIFO)

·轮询(RR)

当一个就绪队列中包含多个进程时,调度器必须决定首先将哪个进程指派给处理器。每个进程被赋予一个优先级别,并同其他有着相同级别的可运行进程放置在同一个优先级队列中。调度策略的区别:

FIFO调度根据到达队列的时间指派处理器。当正运行的进程的时间片耗尽,它被放置在优先级队列的头部;当一个休眠进程变为可运行,被放置在优先级队列的尾部

RR策略中当时间片耗尽,进程被放置在队列的尾端,同时队列中下一个进程被指派给处理器。其它与FIFO相同。

状态转换

描述

就绪——>运行(分派)

进程被指派到处理器

运行——>就绪(超时)

处理器指派给进程的时间片用完,进程被放到就绪队列

运行——>就绪(抢占)

时间片用完前进程被抢占;当有着更高优先级的进程就绪时就可能发生这种情况,进程被放回就绪队列

运行——>休眠(阻塞)

时间片用完前,进程放弃了对处理器的使用;进程可能等待某个事件或者进行了系统调用例如I/O请求;进程同其它休眠进程被放入到一个队列中

休眠——>就绪(阻塞解除)

进程等待的事件已经发生,或系统调用结束例如I/O请求被满足,进程被重新放入就绪队列

运行——>停止

由于收到了停止信号,进程放弃了处理器

停止——>就绪

由于收到了继续信号,被放入就绪队列

运行——>僵死

进程已经结束,等待父进程从进程表中提取其退出状态

僵死——>退出

父进程已经提取了退出状态,进程退出系统

运行——>退出

进程已经停止,父进程已经提取了它的进程状态,而且进程退出系统

如果父进程不等待子进程,那么一旦子进程运行结束,它就变为僵死进程。僵死进程不使用任何系统资源,但是仍然在进程表中占用条目。

关于进程抢占:

用户抢占在以下情况时产生:

从系统调返回用户空间。

从中断处理程序返回用户空间

内核抢占可能发生在:

当从中断处理程序正在执行,且返回内核空间之前。

当内核代码再一次具有可抢占性的时候,如解锁及使能软中断等。

如果内核中的任务显式的调用schedule()

如果内核中的任务阻塞(这同样也会导致调用schedule())

热点排行