chap7.4 多线程环境(自学).ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap7.4 多线程环境(自学)

3 多线程程序设计基础 void * backup_file( void * fds) { int srcfile = backupfile = len = i = 0 ; char buf[MAX]; int* fd = (int *) fds; srcfile = fd[0]; backupfile = fd[1]; pthread_t tid = pthread_self(); while( ( i = read( srcfile, buf, MAX )) 0 ) { len = len + i; write( backupfile, buf, i); } close( srcfile ); close( backupfile); printf(“ Thread[%d] backup %d bytes\n”, tid, len); pthread_exit(0); } UNIX多线程环境 1 基本概念 引入原因: 在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。 引入效果:进程承担资源的分配。线程承担具体处理机的调度和信息处理 有效发挥处理机的功能,提高了并行性,程序响应快。 进程中的多个线程共享同一数据空间(用户地址空间和其他进程资源),通讯快,简单,减少了上下文切换开销, 。 改变程序设计结构 线程的概念:线程是进程内部相对独立的并具有可调度特性的执行单元。 1 基本概念 2.包含线程的进程结构 单线程进程结构: PCB+用户地址空间+栈段 多线程进程结构: PCB+用户地址空间+各个线程结构信息(TCB+线程栈段) 1 基本概念 3.线程模型 核心级线程和用户级线程 :分类的标准主要是线程的调度者在核内还是在核外。前者更利于并发使用多处理器的资源,而后者则更多考虑的是上下文切换开销。 在目前的商用系统中,通常都将两者结合起来使用,既提供核心线程以满足smp系统的需要,也支持用线程库的方式在用户态实现另一套线程机制,此时一个核心线程同时成为多个用户态线程的调度者。 1 基本概念 (a) 核心级线程(KLT) 线程的调度和管理等由操作系统的程序完成。系统的核心程序给应用程序提供一个可访问核心级线程的应用程序接口。即系统调用或应用程序API。系统核心来管理线程的调度与上下文切换。 特点: 1. 核心程序可以把同一进程中的不同线程调度到多个处理机上运行。即支持多处理器并行处理机制。 2. 当进程中的一个线程被阻塞时,进程中的另一个线程可以被调度。 3. 内核程序本身也可用多线程方式编写,所以核心程序可设计成可重入的并发程序结构。 4. 同一进程中的线程进行切换时需要进入到核心模式下完成。缺点。 1 基本概念 (b) 用户级线程(ULT) 系统中线程的产生与维护完全由用户级程序实现。内核只负责以进程为单位的系统资源和处理器调度和管理。应用程序通常是建立在一个“线程控制库”基础上的多线程程序。 特点: 1.线程切换时无需改变进程的运行模式,减少了进程在核心态和用户态之间转换时的资源消耗。 2.线程的调度管理程序是用户级程序,所以线程的调度算法可以比较灵活。 3.用户级线程管理模式的系统程序移植性比较好 . ? 1 基本概念 (c) 轻量级进程 一个轻量级进程(LWP)是一个内核支持的用户线程。每个进程有一个或多个轻量级进程,每一个LWP都由一个单独的内核线程来支持,并可以将一个或多个用户级线程映射到一个核心级线程上。在一个多处理器系统中,每个LWP能被分配到不同的处理机上运行,实现并行。由于I/O等待或资源阻塞只是单个LWP而不是整个进程,在单处理器环境中优势很明显。 缺点: 由于大部分LWP的操作,如创建、释放和同步等需要系统调用。系统调用相对来说是开销很大的操作。 每个LWP需要花费相当多的内核资源,因此,一个系统不能支持大量的LWP。 2 多线程程序设计规则 UNIX系统提供多线程机制,为用户的程序设计提供了更好的并行基础。但是多线程程序设计不同于单线程程序设计,有一些新的设计方法和规则应该引起注意。 1 多线程程序结构的改变 多线程编程可以使程序在运行中减

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档