CCH05_THREAD(操作系统).ppt
上传人:sy****28 上传时间:2024-09-10 格式:PPT 页数:57 大小:1.9MB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

CCH05_THREAD(操作系统).ppt

CCH05_THREAD(操作系统).ppt

预览

免费试读已结束,剩余 47 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Module5:Threads线程引入线程的目的是简化线程间的通信,以小的开销来提高进程内的并发程度。Threads线程线程的引入Threads线程进程和线程的比较线程切换和进程切换MultipleThreadswithinaTask一个任务中的多线程Threads线程(Cont.)UserThreads用户线程用户线程(user-levelthread)KernelThreads内核线程内核维护进程和线程的上下文信息;线程切换由内核完成;一个线程发起系统调用而阻塞,不会影响其他线程的运行。时间片分配给线程,所以多线程的进程获得更多CPU时间。用户线程与内核线程MultithreadingModels多线程模型Many-to-One多对一Many-to-oneModel多对一模型One-to-One一对一One-to-oneModel一对一模型Many-to-manyModel多对多模型Many-to-manyModel多对多模型Two-levelModel线程举例ThreadsSupportinSolaris2Solaris2支持的线程轻权进程(LightWeightProcess)Solaris2ThreadsSolaris2线程用户线程、轻权进程和核心线程的关系SolarisProcessSolaris线程Solaris用户线程和轻权进程用户级线程在使用系统调用时(如文件读写),需要“捆绑(bound)”在一个LWP上。永久捆绑:一个LWP固定被一个用户级线程占用,该LWP移到LWP池之外临时捆绑:从LWP池中临时分配一个未被占用的LWP在使用系统调用时,如果所有LWP已被其他用户级线程所占用(捆绑),则该线程阻塞直到有可用的LWP--例如6个用户级线程,而LWP池有4个LWP如果LWP执行系统调用时阻塞(如read()调用),则当前捆绑在LWP上的用户级线程也阻塞。有关的C库函数就绪状态(Ready):进程已获得除处理机外的所需资源,等待执行。备用状态(Standby):特定处理器的执行对象,系统中每个处理器上只能有一个处于备用状态的线程。运行状态(Running):完成描述表切换,线程进入运行状态,直到内核抢先、时间片用完、线程终止或进行等待状态。等待状态(Waiting):线程等待对象句柄,以同步它的执行。等待结束时,根据优先级进入运行、就绪状态。转换状态(Transition):线程在准备执行而其内核堆栈处于外存时,线程进入转换状态;当其内核堆栈调回内存,线程进入就绪状态。终止状态(Terminated):线程执行完就进入终止状态;如执行体有一指向线程对象的指针,可将线程对象重新初始化,并再次使用。初始化状态(Initialized):线程创建过程中的线程状态;WindowsNT的线程状态Windows2000线程状态WindowsNT的线程状态NT线程的有关APIThreadLibrariesPthreadsWin32ThreadsJavaThreadsJava线程ExtendingtheThreadClass线程类型的扩展CreatingtheThread创建线程TheRunnableInterface可运行接口ImplementingtheRunnableInterface可运行接口的实现CreatingtheThread创建线程JavaThreadManagementJava线程的管理JavaThreadStatesJava线程状态ProducerConsumerProblem生产者消费者问题ProducerThread生产者线程ConsumerThread消费者线程OperatingSystemExamplesWindowsXPThreadsWindowsXPThreadsLinuxThreadsLinuxThreadsLinuxThreads