进程的两个基本属性
1.拥有资源的独立单位
2.可独立调度和分派的基本单位
进程的数目不宜过多,进程切换频率不宜过高,限制了并发程度。
操作系统的设计目标是:提高并发度、减小系统开销。
引入线程的目的是简化线程间的通信,以小的开销来提高进程内的并发度。
只有进程时:进程是资源分配的单位和CPU调度的单位。
有线程时:线程作为CPU调度的单位,而进程只作为其他资源分配的单位。
线程只拥有必不可少的资源,如线程状态、程序计数器、寄存器上下文、栈。
同样具有就绪、阻塞、执行三种基本状态。
线程的优点:创建时间比进程短、终止时间比进程短、切换时间比进程短、共享进程内线程间的文件资源,可不通过系统内核。
多线程更适用于多处理及结构。
线程分为内核线程和用户级线程。
内核线程(Kernel-level thread):由内核支持,在内核空间执行线程创建、调度和管理,依赖于OS核心。
——内核维护进程和线程的上下文信息
——线程切换由内核完成
——一个线程发起系统调用而阻塞不会影响其他线程的运行。
——时间片分配给线程,所以多线程的进程获得更多的CPU时间。
用户线程(User Threads):由用户级线程库进行管理的线程,无需内核支持。
缺点:
——如果内核是单线程的,那么一个用户发起系统调用而阻塞,则整个进程阻塞。
——时间片分配给进程,多线程则每个线程就慢。
轻权进程(LWP LightWeight Process):内核支持的用户线程,是内核数据结构,驻留在内核空间。一个进程可以有多个轻权进程,每个轻权进程由一个单独的内核线程来支持。
轻权进程允许一个进程中发出多个并发的系统调用。
多线程:
1.多对一:多个用户及线程映像进单个内核级线程,通常用于不支持内核线程的系统中。
缺点:任意时刻只能有一个县城可以访问内核(并发度低)。
一个用户线程发起系统调用而阻塞,则整个进程阻塞。
2.一对一:每个用户级线程映像进内核线程。
——提供良好的并发行,一个用户线程发起系统调用而阻塞时允许另一个线程运行。
——每创建一个用户线程需创建一个相应的内核线程,带来了额外开销,所以许多系统限制应用中线程的数目。
3.多对多:不限制应用的线程数、多个线程可以并发。
两种线程取消方式:
1.异步取消:一个线程理机中止目标线程
2.延迟取消:目标线程检查它是否应该终止。
线程池Thread Pool:
——目的:1.避免创建和撤销开销 2.限制线程的数量。
用户级线程在使用系统调用时,需要“捆绑”在一个LWP上。
——永久捆绑:一个LWP固定被一个用户级线程占用,该LWP移到LWP之外。
——临时捆绑:从LWP池中临时分配一个未被占用的LWP。
一个进程对应的LWP组成LWP池,线程库动态挑中池中LWP的数目,以保证应用最佳性能。
1.拥有资源的独立单位
2.可独立调度和分派的基本单位
进程的数目不宜过多,进程切换频率不宜过高,限制了并发程度。
操作系统的设计目标是:提高并发度、减小系统开销。
引入线程的目的是简化线程间的通信,以小的开销来提高进程内的并发度。
只有进程时:进程是资源分配的单位和CPU调度的单位。
有线程时:线程作为CPU调度的单位,而进程只作为其他资源分配的单位。
线程只拥有必不可少的资源,如线程状态、程序计数器、寄存器上下文、栈。
同样具有就绪、阻塞、执行三种基本状态。
线程的优点:创建时间比进程短、终止时间比进程短、切换时间比进程短、共享进程内线程间的文件资源,可不通过系统内核。
多线程更适用于多处理及结构。
线程分为内核线程和用户级线程。
内核线程(Kernel-level thread):由内核支持,在内核空间执行线程创建、调度和管理,依赖于OS核心。
——内核维护进程和线程的上下文信息
——线程切换由内核完成
——一个线程发起系统调用而阻塞不会影响其他线程的运行。
——时间片分配给线程,所以多线程的进程获得更多的CPU时间。
用户线程(User Threads):由用户级线程库进行管理的线程,无需内核支持。
缺点:
——如果内核是单线程的,那么一个用户发起系统调用而阻塞,则整个进程阻塞。
——时间片分配给进程,多线程则每个线程就慢。
轻权进程(LWP LightWeight Process):内核支持的用户线程,是内核数据结构,驻留在内核空间。一个进程可以有多个轻权进程,每个轻权进程由一个单独的内核线程来支持。
轻权进程允许一个进程中发出多个并发的系统调用。
多线程:
1.多对一:多个用户及线程映像进单个内核级线程,通常用于不支持内核线程的系统中。
缺点:任意时刻只能有一个县城可以访问内核(并发度低)。
一个用户线程发起系统调用而阻塞,则整个进程阻塞。
2.一对一:每个用户级线程映像进内核线程。
——提供良好的并发行,一个用户线程发起系统调用而阻塞时允许另一个线程运行。
——每创建一个用户线程需创建一个相应的内核线程,带来了额外开销,所以许多系统限制应用中线程的数目。
3.多对多:不限制应用的线程数、多个线程可以并发。
两种线程取消方式:
1.异步取消:一个线程理机中止目标线程
2.延迟取消:目标线程检查它是否应该终止。
线程池Thread Pool:
——目的:1.避免创建和撤销开销 2.限制线程的数量。
用户级线程在使用系统调用时,需要“捆绑”在一个LWP上。
——永久捆绑:一个LWP固定被一个用户级线程占用,该LWP移到LWP之外。
——临时捆绑:从LWP池中临时分配一个未被占用的LWP。
一个进程对应的LWP组成LWP池,线程库动态挑中池中LWP的数目,以保证应用最佳性能。