




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章线程的基本概念-web 课件返回多线程的概念线程(thread)是进程上下文(contex)中执行的代码序列,又被称为轻量级进程(light weight process),是操作系统中比进程更小的可执行单元。单统程进程和多携程的进程在支持多线程的系统中,进程成为资源分配和保护的实体,而线程是被调度执行的基本单元。 进程的资源包括进程的地址空间,打开的文件和I/O等资源。属于同一个进程的线程共享该进程的 代码段和数据段,打开的文件,信号等。除了共享资源,每个线程还包含各自的线程ID,线程执行 状态,CPU寄存器状态和栈。多线程机制的优点包括以下几个方面:创建一个线程比创建一个进程的代价要
2、小。由于线程共享进程的资源,所以进程被创建时不 需要再分配内存空间等资源,因而创建线程所需的时间也更少。线程的切换比进程间的切换代价小。线程作为执行单元,当从同一进程的一个线程切换到另 一线程时,需要载入的信息比进程切换时要少,所以切换速度更快。充分利用多处理器。同一进程的线程可以在多个处理器并行运行,该进程的运行速度可以显 著提高,而单线程的进程却只能在一个处理器上运行,不能充分利用多个处理器。数据共享。对于同一进程的线程来说,他们共享同一块地址空间,可以访问相同的数据。数据共享使得线程之间的通信比进程间的通信更高效,更容易。快速响应特性。对于交互程序来说,多线程设计的优势是,当执行一些耗时
3、或者可能被阻塞 的操作时,其他部分仍然保持运行和响应。另外多线程编程可以使程序更加模块化,简化程序逻辑。用户级线程用户级线程库是用于用户级线程管理的例程包,支持线程的创建、终止,以及调度线程的执行 并保存和恢复线程的上下文,这些操作都在用户空间进行,无需内核的支持,所以用户级线程的创 建和管理等操作更快。对于那些内核本身不支持多线程的操作系统,通过用户级线程库可以使用户 获得多线程编程的好处。内核仍然以进程为单位进行调度,当内核调度一个进程运行时,用户级线程库调度该进程的一 个线程执行,如果时间片允许,进程的其他线程也可能被执行,该进程的多个线程共享该进程的运 行时间片,因而用户级线程的并行性
4、会受到一定的限制。内核级线程内核级线程的所有管理操作都是由操作系统内核完成的。内核保存线程的状态和上下文信息, 当一个线程执行了引起阻塞的系统调用时,内核可以调度该进程的其他线程执行。在多处理器系统 上,内核可以分派属于同一进程的多个线程在多个处理器上运行,提高进程执行的并行度。由于需要内核完成线程的创建,调度和管理,所以和用户级线程相比这些操作要慢的多,但是 仍然比进程的创建和管理操作要快。多线程的映射模型对于实现了用户级线程和内核级线程的操作系统,用户级线程和内核级线程之间的可以有不同 的映射方式。多对一模型:多对一模型把多个用户级线程映射到一个内核级线程。线程的管理在用户空间实 现,所以
5、效率高。当一个线程因调用系统调用被阻塞时,整个进程被阻塞。另外,用户级线程线程 不能在多处理器上并发执行。不支持内核级线程的操作系统使用多对一模型。一对一模型:一对一模型把每个用户级线程影射到一个内核级线程。该模型允许进程的多个进 程再多处理器上并行运行,当一个线程阻塞时,其他线程仍然可以运行。该模型的缺点是当创建一 个用户线程时,需要创建对应得内核级线程。由于内核资源的有限性,系统能够通常会限制系统中 线程的数目。多对多模型:多对多模型将m个用户级线程影射到n个内核级线程,mn。内核级线程的数目 依据应用程序的类型(要求高并发)、机器体系结构(多处理器或单处理器)或者当前系统资源的 约束来确
6、定。虽然多对一模型对创建用户级线程的数目没有限制,但这些线程在同一时刻只能有一 个被执行。一对一模型可以获得高并发性,但因耗费资源而线程数会受到限制。多对多模型具有多对一和一对一两种模型的优势,用户可以创建所需要的用户级线程,通过分配适当数目的内核级线 程获得并发执行的优势并节省系统资源。多对多映射多线程编程的个问题:1)需要重复创建和销毁线程,比如一个网络服务器根据用户的请求不断 地创建线程,然后销毁线程,长时间重复这一过程要耗费大量的处理器时间;2)如果为每个请求建 立一个线程而对线程数目没有限制的话,大量创建的线程可能会耗尽系统资源。线程池是一组被创建的线程的集合,当一个进程需要线程时,
7、如果线程池中还有可用的线程, 就从中取出一个投入使用。当线程池中没有可用的线程时,创建线程的请求必须等待,保护系统资 源不被耗尽。线程池中的线程数目可以依据系统的内存,处理器数目,要处理的任务的数目来确定, 或者动态地依据系统当前的资源和系统负载进行调整。线程的生命周期1、线程的标识通常用一个整数来标识一个线程,在pthread线程库中,以pthread_t类型来标识一个线程。通过 该ID程序可以引用一个线程,一个线程可以通过pthread_self来获得自己的线程ID。虽然该数据类 型的原型可能是unsigned long int,但是为了保持可移植性应当使用系统定义的数据类型,而避免直 接
8、使用 int 或 unsigned into2、线程的创建在c程序中运行时,首先运行的是从main函数开始的线程,该线程被称为初始线程或主线程。 在pthread线程库中,调用pthread_create创建一个新的线程,并指定启动函数作为线程开始执行的起点。3、线程的终止当线程的启动函数执行完毕,或者调用了 pthread_exit都可导致线程终止。由于主线程退出时整 个进程会终止,进程中的其他线程也会被终止,所以主线程一般会等待其他线程退出后再结束。4、线程的状态线程有四个基本的状态:就绪(ready):线程等待可用的处理器。运行(running):线程正在被执行。阻塞(blocked):
9、线程正在等待某个事件的发生(比如I/O的完成,试图加锁一个被上锁的互 斥量)。终止(terminated):线程从起始函数中返回或者调用pthread_exit。线程在任何时刻会处于上述四个状态之一,线程状态之间的转换:线程状态的转换多线程环境下的进程控制语义1、进程创建当进程的一个线程中创建一个子进程,不同的系统的实现不同,一种被称为单线程复制,另一 种被称为多线程复制。pthread标准要求只有父进程中调用fork的线程出现在子进程中。2、执行新的程序在进程中执行新的程序,函数的语意在多线程环境下没有发生大的变化。exec将会终止所有的 线程,用新的程序覆盖进程的地址空间,并开始执行新的程序。3、进程结束在任何一个线程中调用exit将会结束整个进程的。另外从主线程返回也等同于调用exit而导致 进程结束。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Temocapril-hydrochloride-Standard-生命科学试剂-MCE
- SP94-peptide-Cys-conjugated-生命科学试剂-MCE
- 第8课 北宋的政治教学设计 统编版七年级历史下册
- 专题范文管辖权异议申请书
- 2.2 探索2 资源的管理与贡献 教学设计 苏科版(2023)初中信息技术七年级上册
- 网店客服(第2版AIGC版) 教案 第6章 智能客服
- 气质培训课件
- 2025年国家电投笔试考试及答案
- 2025年二级建造师之二建水利水电实务模拟题库及答案
- 6.3.2角的比较与运算 说课稿 人教版数学七年级上册
- 公共资源交易知识培训
- 重难点解析人教版8年级数学上册《全等三角形》综合测试试卷(详解版)
- PEST分析课件教学课件
- 中小学学校手机管理实施细则(2025修订版)
- 装修水电验收合同范本
- 印制电路制作工专项考核试卷及答案
- 年产50万吨生化黄腐酸BFA系列产品项目可行性研究报告
- 国开2025年秋季《形势与政策》专题测验1-5答案
- 交通安全培训讲解课件
- 牛字旁硬笔书法课件
- 企业用人管理培训课件
评论
0/150
提交评论