chap7 UNIX多线程环境

chap7 UNIX多线程环境

ID:42065794

大小:128.50 KB

页数:32页

时间:2019-09-07

chap7  UNIX多线程环境_第1页
chap7  UNIX多线程环境_第2页
chap7  UNIX多线程环境_第3页
chap7  UNIX多线程环境_第4页
chap7  UNIX多线程环境_第5页
资源描述:

《chap7 UNIX多线程环境》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第七讲UNIX多线程环境1基本概念引入线程原因:在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。1原理引入效果:进程承担资源的分配。线程承担具体处理机的调度和信息处理有效发挥处理机的功能,提高了并行性,程序响应快。进程中的多个线程共享同一数据空间(用户地址空间和其他进程资源),通讯快,简单,减少了上下文切换开销,。改变程序设计结构线程的概念:线程是进程内部相对独立的并具有可调度特性的执行单元。1基本概念2.包含线程的进程结构单线程进程结构:PCB+用户地址空间+栈段多线程进程结构:

2、PCB+用户地址空间+各个线程结构信息(TCB+线程栈段)1基本概念3.线程模型针对线程的两大意义,分别开发出了核心级线程和用户级线程两种线程模型,分类的标准主要是线程的调度者在核内还是在核外。前者更利于并发使用多处理器的资源,而后者则更多考虑的是上下文切换开销。在目前的商用系统中,通常都将两者结合起来使用,既提供核心线程以满足smp系统的需要,也支持用线程库的方式在用户态实现另一套线程机制,此时一个核心线程同时成为多个用户态线程的调度者。1基本概念(a)核心级线程(KLT)线程的调度和管理等由操作系统的程序完成。系统的核心程序给应用程序

3、提供一个可访问核心级线程的应用程序接口。即系统调用或应用程序API。系统核心来管理线程的调度与上下文切换。特点:1.核心程序可以把同一进程中的不同线程调度到多个处理机上运行。即支持多处理器并行处理机制。2.当进程中的一个线程被阻塞时,进程中的另一个线程可以被调度。3.内核程序本身也可用多线程方式编写,所以核心程序可设计成可重入的并发程序结构。4.同一进程中的线程进行切换时需要进入到核心模式下完成。缺点。1基本概念(b)用户级线程(ULT)系统中线程的产生与维护完全由用户级程序实现。内核只负责以进程为单位的系统资源和处理器调度和管理。应用程

4、序通常是建立在一个“线程控制库”基础上的多线程程序。特点:1.线程切换时无需改变进程的运行模式,减少了进程在核心态和用户态之间转换时的资源消耗。2.线程的调度管理程序是用户级程序,所以线程的调度算法可以比较灵活。3.用户级线程管理模式的系统程序移植性比较好.1基本概念(c)轻量级进程一个轻量级进程(LWP)是一个内核支持的用户线程。每个进程有一个或多个轻量级进程,每一个LWP都由一个单独的内核线程来支持,并可以将一个或多个用户级线程映射到一个核心级线程上。在一个多处理器系统中,每个LWP能被分配到不同的处理机上运行,实现并行。由于I/O等

5、待或资源阻塞只是单个LWP而不是整个进程,在单处理器环境中优势很明显。缺点:由于大部分LWP的操作,如创建、释放和同步等需要系统调用。系统调用相对来说是开销很大的操作。每个LWP需要花费相当多的内核资源,因此,一个系统不能支持大量的LWP。2多线程程序设计规则UNIX系统提供多线程机制,为用户的程序设计提供了更好的并行基础。但是多线程程序设计不同于单线程程序设计,有一些新的设计方法和规则应该引起注意。1多线程程序结构的改变多线程编程可以使程序在运行中减少对系统资源的使用频率,可利用远程系统调用建立线程,并将程序的运行分布在多个处理器上完成

6、。在编程时,应考虑以线程为核心完成程序的分布式处理,尽量使程序的设计结构简单化和独立化。程序设计是基于线程控制库和远程系统调用包完成的。一般设计过程为:在某个主机中创建一个进程,然后让这个进程创建一系列的线程,每个线程可以完成一个远程的系统调用,而这些远程的系统调用可以去调用另一台工作站上的过程。2多线程程序设计规则POSIX标准:该标准以libpthread线程库方式提供给用户使用。移植性好。Solaris多线程标准:包含的是一套sun的线程接口库libpthread。2多线程标准库2多线程程序设计规则(a)全局变量的使用规则在单线程中

7、,全局变量使用很常见,但在多线程中,应考虑多个线程访问同一个全局变量的数据一致性的问题。3多线程编程规则extreninterrnoif(write(file-des,buffer,size)==-1){printf(“%d”,errnno);线程局部变量2多线程程序设计规则(b)程序代码安全性问题应注意加入的代码是否安全。不能在一个多线程程序中随便加入非多线程语句。应使用多线程函数完成各项操作工作。2多线程程序设计规则(c)线程间的同步和互斥统一互斥锁法:线程运行时为了避免对共享资源的交替使用,可以使用一个互斥锁法进行管理。类似进程管理

8、中的互斥机制。可重入解决方法:使用模块化和数据封装的设计方法,将多线程中的函数制作成“可重入式函数“。可重入函数是指某一函数同时被多个线程调用时,其执行结果仍然是正确的。即在该函数的执行中已充

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。