操作系统课件:Chapter 4线程

上传人:人*** 文档编号:570083961 上传时间:2024-08-01 格式:PPT 页数:28 大小:602KB
返回 下载 相关 举报
操作系统课件:Chapter 4线程_第1页
第1页 / 共28页
操作系统课件:Chapter 4线程_第2页
第2页 / 共28页
操作系统课件:Chapter 4线程_第3页
第3页 / 共28页
操作系统课件:Chapter 4线程_第4页
第4页 / 共28页
操作系统课件:Chapter 4线程_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《操作系统课件:Chapter 4线程》由会员分享,可在线阅读,更多相关《操作系统课件:Chapter 4线程(28页珍藏版)》请在金锄头文库上搜索。

1、Chapter4:线程线程4.2Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005内容内容n概述n多线程模型n若干线程问题nPthreadsnWindowsXP线程nLinux线程nJava线程4.3Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005线程线程n线程(轻型进程lightweight process, LWP)是CPU使用的一个基本单元,包括l线程IDl程序计数器l寄存器集l栈空间n一

2、个线程与它的对等线程共享:l代码段l数据段l操作系统资源总体作为一个任务n传统的或重型进程(heavyweightprocess)等价于只有一个线程的任务4.4Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005线程和进程线程和进程线程和进程线程和进程n调度线程是调度的基本单位,同一进程中的线程切换不会引起进程切换。n并发线程可以提高系统的并发性。n资源进程拥有资源,是资源分配的基本单位,而线程则不拥有资源,但它可以访问创建它的进程所拥有的资源。n上下文切换线程的上下文切换的代价比进程小。4.5S

3、ilberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005Windows2000ProcessandThreadWindows2000ProcessandThreadWindows2000Windows2000进程和线程进程和线程进程和线程进程和线程4.6Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005单个线程和多线程进程单个线程和多线程进程4.7Silberschatz,GalvinandGagne20

4、05OperatingSystemConcepts7thedition,Jan23,2005n响应度高n资源共享n经济性nMP体系结构的运用优点优点4.8Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005用户线程用户线程n由用户级线程库进行管理的线程,如线程创建、调度等。n内核看不到ULT,线程的创建和调度在用户空间,不需要内核的干预。n例子-POSIXPthreads-Win32 threads-Java threads4.9Silberschatz,GalvinandGagne2005Ope

5、ratingSystemConcepts7thedition,Jan23,2005内核线程内核线程n由内核支持n例子lWindowsXP/2000lSolarislLinuxlTru64UNIXlMacOSX4.10Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005多线程模型多线程模型n多对一模型n一对一模型n多对多模型4.11Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005多对一多对一n多个用

6、户级线程映射到一个内核线程n多个线程不能并行运行在多个处理器上。n线程管理在用户态执行,因此是高效的,但一个线程的阻塞系统调用会导致整个进程的阻塞。n用于不支持内核线程的系统中n例子:lSolarisGreenThreadslGNUPortableThreads4.12Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005Many-to-One模型模型4.13Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,

7、2005一对一一对一n每个用户级线程映射到一个内核线程n比多对一模型有更好的并发性n允许多个线程并行运行在多个处理器上n创建一个ULT需要创建一个KLT,效率较差n例子lWindows95/98/NT/XP/2000lLinuxlSolaris9andlaterlOS/24.14Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005One-to-one模型模型4.15Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Ja

8、n23,2005多对多多对多n多个用户级线程映射为相等或小于数目的内核线程.n允许操作系统创建足够多的KLTn例子lSolaris9以前的版本l带有ThreadFiber开发包的WindowsNT/20004.16Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005Many-to-Many模型模型4.17Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005两级模型两级模型n类似于M:M,只不过它允许一

9、个用户线程绑定到内核线程n例子lIRIXlHP-UXlTru64UNIXlSolaris8andearlier4.18Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005两级模型两级模型4.19Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005Thread池池n在池中创建一批线程,等到任务n优点:l利用线程池中的线程来响应请求比创建一个线程更加快速l允许一个应用程序中的线程数量达到线程池的上限4.2

10、0Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005线程程库nWindows 线程库nPthread线程库nJAVA线程库4.21Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005Windows线程线程n1对1映射n每个线程包括:l线程idl寄存器集合l堆栈l私有数据n线程主要的数据结构:lETHREAD(executivethreadblock):执行线程块lKTHREAD(kernelthre

11、adblock):核心线程块lTEB(threadenvironmentblock):线程环境块4.22Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005Linux线程线程nLinux用“任务”这个术语,一般不用“线程”n线程可以通过clone()系统调用创建nclone()类fork()4.23Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005PthreadsnAPOSIX标注(IEEE1003

12、.1c),用于线程创建和同步n提供了线程有关的API接口n常用于UNIX类操作系统(Solaris,Linux,MacOSX)4.24Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005Java线程线程nJava线程由JVM管理nJava线程创建l扩展java.lang.Thread类l实现Runnable接口4.25Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005线程例子程例子npubliccl

13、assDoSomethingimplementsRunnableprivateStringname;publicDoSomething(Stringname)this.name=name;publicvoidrun()System.out.println(name+:+i);4.26Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005运行运行线程例子程例子npublicclassTestRunnablepublicstaticvoidmain(Stringargs)DoSomethingds1=newDoSomething(“1);DoSomethingds2=newDoSomething(“2);Threadt1=newThread(ds1);Threadt2=newThread(ds2);t1.start();t2.start();4.27Silberschatz,GalvinandGagne2005OperatingSystemConcepts7thedition,Jan23,2005Java线程状态线程状态EndofChapter4

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号