操作系统 国家课程配套教材 罗宇 文艳军 8.1线程与用户级线程实现新_第1页
操作系统 国家课程配套教材 罗宇 文艳军 8.1线程与用户级线程实现新_第2页
操作系统 国家课程配套教材 罗宇 文艳军 8.1线程与用户级线程实现新_第3页
操作系统 国家课程配套教材 罗宇 文艳军 8.1线程与用户级线程实现新_第4页
操作系统 国家课程配套教材 罗宇 文艳军 8.1线程与用户级线程实现新_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、第十八讲 线程概念,用户级线程实现目的与要求:掌握线程概念,线程与进程区别及用户级线程的实现.重点与难点:线程如何从原进程概念中剥离出来,线程控制块,线程状态.用户级线程实现方法及优缺点.作业:2,78/20/20221线程的引入传统进程既是除了处理机以外的资源分配单位如内存占用单位又是执行单位。随着共享内存多外理机的开展,为了支持进程内多道程序设计而引入线程。8.1.1. 对称多处理对称多处理机指共享内存且多个处理机都可响应中断且可以运行用户和核心程序的多处理机系统。第八章 并行与分布式操作系统 81并行操作系统 8/20/20222处理机Cache处理机Cache处理机Cache.主存总线

2、适配器I/O总线系统总线打印机硬盘对称多处理机系统结构 8/20/20223新结构对操作系统的要求:多任务并行支持,希望同一进程的程序可同时在多CPU上运行,同时还共享进程存储空间。同步支持,当运行在不同CPU上的程序访问共享数据时要有利用硬件支持的同步手段(如:Test_and_set指令。每个CPU都应该能够运行操作系统调度程序自行调度。多CPU cache一致性的要求(全部由硬件实现或由硬件和操作系统合作实现)。8/20/20224 线程概念将原进程的PCB内容分成两局部。描述进程资源,空间的局部。描述执行现场,状态及调度的局部。将第二局部内容作为线程描述表的内容且进程内允许多个线程存在

3、。8/20/20225一.进程与线程区别新的进程被定义为:资源分配单位。线程定义为:CPU分配单位执行单位。新进程描述:一个独立的进程空间,可装入进程映像。一个独立的进程关联的执行文件。进程所用系统其它资源(如设备、文件等。一个或多个线程。 进程在创立时一般同时创立好第一个线程,其它线程按需要由用户程序请求创立。8/20/20226线程TCB描述:线程标识信息;状态和调度信息;现场信息组织成栈帧;线程私有存储区;指针指向PCB。8/20/20227传统进程与多线程进程比较PCB用户栈用户空间描述核心栈a.传统进程模型用户栈核心栈用户栈核心栈用户空间描述PCBTCBTCB.b.多线程进程模型8/

4、20/20228二.线程状态变化 进程产生时同时产生第一个线程,其它线程在以后由任一线程请求创立。 线程创立后运行过程中三个主要状态是:运行、就绪、阻塞。8/20/20229运行就绪结束阻塞结束被调度时间片完或被剥夺等待事件事件发生重新初始化创立 原进程的运行、就绪、阻塞状态已变为针对线程,而原挂起状态反映进程映像在不在内存故还是进程的状态。8/20/202210三.多线程应用多线程可以方便实现CPU之间的并行,CPU与外设间的并行。多线程与多进程比,多线程天然地共享空间,而多进程要通过如shmget系统调用才可共享局部用户空间。举例:有两个任务:任务1和任务2,把它们组织到单进程中,和多线程

5、中运行的时间花费比较。8/20/202211任务1等I/O任务1任务2等I/O任务2a.单线程进程单CPU执行任务1任务1等I/O任务2任务2等I/O线程1处理机1线程2处理机2b.多线程进程多CPU执行线程1线程2CPU切换任务1等I/O等CPU任务1任务2等I/O任务2c.多线程进程单CPU执行等CPU8/20/202212四、线程间通讯与同步。线程间通过共享空间通讯。可以通过同步原语(系统调用/或利用硬同步指令的同步函数),实现互斥与同步。8/20/202213五多线程编程接口举例UNIX的pthread库所提供的有关线程函数。1创立线程 int pthread_create (pthr

6、ead_t tid, const pthread_attr_t attr, void (func)(void ), void arg); 2 等待某线程结束int pthread_join(pthread_t tid,void status); tid是我们必须要等待线程的tid, 3 获得正在执行线程的IDpthread_t pthread_self(void); 8/20/2022144. 将线程变为独立状态int pthread_detach(pthread_t tid); 线程或者是可集合的joinable或者是独立的detached。当可集合的线程终止时,其线程ID和退出状态将保存,

7、直到另外一个线程调用pthread_join。独立的线程终止时,所有的资源都释放,我们不能等待它终止。如果一个线程需要知道另一个线程什么时候终止,最好保存第二个线程的可集合性。 5 线程结束void pthread_exit(void status); 6加锁/解锁int pthread_mutex_lock(pthread_mutex_t *mutex)int pthread_mutex_unlock(pthread_mutex_t *mutex)这两个函数用于对临界区的加锁和解锁。以保证对共享数据的互斥操作。Mutex是指向锁结构的地址。8/20/2022158.1.3. 线程实现 两种典

8、型实现多线程方法:多线库方法和核心方法。一多线库实现的用户级线程 不改变操作系统内核,开发一个多线程函数库,这是一种非操作系统内核的实现方法,是一种过渡的方法。 由多线程库提供线程创立,结束,同步等函数,进程主程序作为主线程运行,以后可调用多线程库的创立线程函数创立用户级线程。 操作系统只看到进程,只做进程调度。由多线库调度用户级线程分时地在进程中运行。 8/20/202216多线库P多线库P进程1进程2进程调度CPU由传统进程支持实现用户级多线程示意图 8/20/202217创立用户级线程函数处理过程:接收新线程执行函数及初始变量值;在进程用户空间中分配TCB表,栈区和私有存储区;初始化上述

9、表格;将TCB表中的线程状态改为就绪;运行线程调度程序;返回到被调度线程的现场运行。* 8/20/202218进程调度与多线库线程调度比照:用户程序调用任一多线程库函数,在函数处理结束时都去运行线程调度,调用返回时可能返回到另一线程。用户程序在自陷或被中断进入内核,在内核处理结束时都去运行进程调度程序。用户级线程与进程的关系:多线程分时地在进程内运行,多线库线程调度是选取线程占用进程,内核进程调度是选取进程占用CPU。*8/20/202219用户级线程的优势:线程管理开销小;无需修改操作系统核心;缺点:不能做到同一进程内线程在多CPU并行;线程因I/0等原因阻塞于内核时,多线库调度器不知道。8/20/202220在线教务辅导网: 更多课程配套课件资源请访问在线教务辅导网8/20/2022218/20/2022228/20/2022238/20/2022248/20/2022258/20/202226馋死8/20/2022278/20/2022288/20/2022298/20/2022308/20/2

温馨提示

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

评论

0/150

提交评论