《线程的引入N》PPT课件.ppt_第1页
《线程的引入N》PPT课件.ppt_第2页
《线程的引入N》PPT课件.ppt_第3页
《线程的引入N》PPT课件.ppt_第4页
《线程的引入N》PPT课件.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2.7 线程的引入,线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。,Linux中的线程编程,Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。,简单多线程程序,/* example.c*/#i

2、nclude #include void thread(void)int i;for(i=0;i3;i+)printf(This is a pthread.n); ,int main(void)pthread_t id;int i,ret;ret=pthread_create(,我们编译此程序:gcc example1.c -lpthread -o example1运行example1,我们得到如下结果:This is the main process.This is a pthread.This is the main process.This is the main process.Thi

3、s is a pthread.This is a pthread.,再次运行,我们可能得到如下结果:This is a pthread.This is the main process.This is a pthread.This is the main process.This is a pthread.This is the main process.,进程的两个基本属性,独立的资源拥有者: 给每个进程分配一虚拟地址空间, 分配文件,I/O设备等 独立调度和分配的基本单位: 进程是一个独立调度和分配的基本单位 以上两个属性构成进程并发执行的基础,要使程序并发执行, 系统必须额外完成操作:

4、创建进程、撤消进程、进程切换 由于进程是资源拥有者, 上述操作的时间空间开销大,限制并发度的提高。为了减少开销提高并发度,将进程的两属性分开处理, 设置只作为调度和分配的基本单位而不独立拥有资源的线程, 资源的拥有者还是进程。进程可包含多个线程, 同属一个进程的各线程可以并发执行, 共享进程的全部资源。线程只拥有极少量运行中必不可少的资源,可以轻装运行,减少了并发执行的系统开销, 提高了速度。,线程(有时称轻量级进程) : 是被系统独立调度和分配的基本单位 只拥有极少量运行中必不可少的资源: 程序计数器、一组寄存器和栈(执行栈)。 同属一个进程的各线程之间可以并发执行, 共享所 在进程的代码段

5、、数据段和系统资源 可以创建、撤消本进程中的另一个线程 同样有就绪、阻塞和执行状态 一个进程可以有多个线程,引入线程的好处: 占用较少的系统资源, 线程的创建、撤销和切换花费的时空间开销都小。 同一进程内的线程共享内存和文件, 它们之间相互通信无须调用内核, 效率高。 提高应用程序的性能, 如: web页面的多幅图像被同时传送。 使多处理机效率更高, 多个线程可以同时在不同的处理器上运行, 如:矩阵乘法 改善程序的结构。,例子:,Web服务器 文件服务进程在一段时间内需要处理多个用户的请求, 因此有效的方法是: 为每一个请求创建一个线程。 在一个SMP机器上 多个线程可以同时在不同的处理器上运

6、行。 一个应用有几个独立部分,他们不需要顺序执行 每个部分可以以线程方式实现, 当一个线程因I/O阻塞时, 可以切换到同一应用的另一个线程。 一个线程显示菜单并读入用户输入; 另一个线程执行用户命令。,2.7.2 线程与进程的比较,调度 并发性 拥有资源 系统开销,线程与进程的关系,1:1,每一执行的线程 有自己的地址空间 和资源.,各种UNIX版本,M:1,进程拥有自己的地址空间和动态资源.在该进程中多个线程可被创建和执行,共享这些资源.,Windows NT, Solaris, OS/2, OS/390, MACH,1. 互斥锁(mutex) 当线程需要访问使用频率比较高的共享数据和程序段

7、时, 最好用互斥锁实现互斥访问; 互斥锁有两种状态开锁(unlock)和关锁(lock)状态, 只能用两条命令(原语)lock和unlock对互斥锁进行修改操作。 当线程需要访问共享段时, 先对它的互斥锁执行 lock 命令, 若互斥锁已处于关锁状态则本线程将被阻塞, 如果它处于开锁状态则将它关锁后再访问; 访问结束后必须执行 unlock命令打开互斥锁同时唤醒等待该互斥锁的线程。 系统提供了TRYLOCK命令仅对互斥锁进行测试。,2.7.3 线程间的同步与通信,2. 条件变量 单独用互斥锁实现互斥访问,可能引起死锁; 在创建一个互斥锁时联系一个条件变量。单纯互斥锁用于短期锁定,条件变量则用于

8、线程的长期等待,实现线程之间的同步。,Lock mutex check data structures; while (resource busy) wait(mutex,condtion ); Mark resource as busy; Unlock mutex,Lock mutex Mark resource as free; Unlock mutex Wakeup(conditon ),3. 信号量机制 1) 私用信号量:实现同一进程中各线程的同步。 2) 公用信号量:实现不同进程之间或不同进程中的各线程之间的同步。,2.7.4 线程控制,用户级线程(User-Level Thread

9、s) 内核支持线程(Kernel Supported Threads) 两者结合的方法,1.用户级线程(ULT),仅存在于用户级中 由应用程序通过线程库完成所有线程的管理 内核不知道线程的存在,线程切换不需要内核特权 内核管理含线程的进程的活动,但不管理线程 当用户级线程调用系统调用时,整个进程阻塞 通过线程库完成: 线程的创建、撤消和调度切换 在线程之间传递消息和数据 保护和恢复线程上下文 实例: 数据库管理系统informix 是ULT,用户级线程的优点和缺点:,优点: 线程切换不调用内核 调度是应用程序特定的:可以选择最好的算法 ULT可运行在任何操作系统上(只需要线程库) 缺点: 用户

10、级线程调用系统调用时, 内核把它看为整个进程的行为, 整个进程(含所有线程)将被阻塞。 内核只将处理器分配给进程, 同一进程中的两个线程不能同时运行于两个处理器上。,2. 内核支持线程(KST):,所有线程管理由内核完成 内核维护进程和线程的上下文 线程之间的切换需要内核支持 以线程为基础进行调度 例子:Windows NT,OS/2,内核级线程的优点和缺点:,优点: 对多处理器, 内核可以同时调度同一进程的多个线程, 多个线程能同时运行于多个处理器上。 阻塞是在线程一级完成的 内核例程是多线程的 缺点: 在同一进程内的线程切换要调用内核, 导致速度下降。,2.7.5 Solaris 操作系统

11、中的线程,是用户级线程与内核级线程结合实现的 用户级线程(ULT ) 线程库: 可在应用进程中建立多个(ULT ) 每个ULT需要一个栈和程序计数器 不受调度程序的调度, 线程切换快 对内核不可见, 提供应用程序并行性接口 系统可拥有数千个ULT 内核级线程(KLT ) : 设置了大量KLT 有一个小的数据结构和栈, 速度快 它们完成内核的所有工作 调度处理器的单位, 其结构由内核维护,轻型进程(LWP): Solaris在用户级线程和内核级线程之间, 还定义了一种轻型进程 LWP(Light-Weight Process), 一个进程中至少有一个LWP(它含有进程控制块),内核级线程执行时, 若被阻塞, 则与之相连的LWP 将随之阻塞, 进而使连到 LWP 上的用户级线程被阻塞。如果进程中有多个LWP, 当一个被阻塞时另一个仍可继续执行, 这样就避免了整个进程的阻塞, 即使全部 LWP 都被阻塞, 进程中不访问内核的线程仍然能继续执行。,上机安排,实验要求 (8课时) 时间,第5,8,10周二12节,周四34节,第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论