- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章UNIX系统多线程环境
创建线程原形函数: int pthread_create(pthread_t *tid,const pthread_attr *tattr,void (start_routine)(viod*),void *arg); 其中参数: tid:是线程标识符 tattr:是线程初始化时的属性 start_routine:是线程入口函数的起始地址 arg:是对自定义函数传递参数的指针 线程创建函数使用方法: #include pthread.h pthread_attr_t tattr, pthread_t tid; extern void *start_routine(void *arg); void *arg; int ret; /* default behavior*/ ret=pthread_create(tid,NULL,start_routine,arg); 也可以用函数pthread_attr_init()创建一缺省属性,再用该属性创建一个该属性的线程。如: /*initialized with default attributes*/ ret=pthread_attr_init(tattr); ret=pthread_create(tid,tattr,start_routine,arg); 线程创建函数返回值: 线程创建函数pthread_create()执行成功时返回值为0,否则表示线程创建出错,常见的出错代码为: EAGAIN——线程创建时某个系统限制超出了,如创建了太多的LWPs。 EINVAL——创建时tattr值有错。 ENOMEM——没有创建新线程所需的内存。 * * 第三部分 UNIX 系统技术扩展篇 扩展篇中主要包括现代UNIX系统中的新增功能。 第九章 UNIX系统多线程环境 第十章 UNIX网络通信及Internet技术 第十一章 X-Window及其它实用程序 第九章 UNIX 系统多线程环境 线程是现代操作系统中的一个新概念,它在CPU 的调度管理中与进程概念一样重要。 9.1 线程的基本概念 为了并行处理OS提供了一些软的并行技术,并发程序设计方法就是其中之一。 1.多线程的引入 理由: 1) 进程运行需要独立的环境中进行、进程切换需要做大量的数据交换会占用大量存储空间及CPU时间,需要一个程序运行切换时代价小的单位完成并行。因此提出“线程”。 2) 引入线程还可以建立便利的通信机制,因为同一进程中的线程是共享同一数据空间的。 引入线程后达到的效果: 改进程序的实时响应能力 可以有效的发挥多处理器的功能 改进程序设计结构 减少对系统资源的频繁调度与切换 线程的定义: 线程是进程内一个相对独立的、具有可调度特性的执行单元。 2. 包含线程的进程模型 引入线程后的进程可以有四种情况: 进程的内部描述: 1) 单线程机制中的进程描述 2) 多线程机制中的进程描述 在多线程环境中进程和线程被赋予了新的含义: 进程——是保存进程映像的虚地址空间、受保护的访问处理器、文件和I/O访问的单元。 线程——保存线程执行状态,当线程中断时保存线程的上下文,具有独立的PC寄存器、用独立的栈区存放线程自己的局部变量、进程中的线程共享进程的内存和其它资源。 3. 引入线程后的系统特性 1) 有利于应用程序的设计与运行 改进程序的实时响应能力 可以有效地使用多处理器 2)线程具有执行状态和运行特性 线程具有派生态、阻塞态、结束态 线程运行中的特性包括某个线程的阻塞不影响进程的运行、线程执行中要考虑同步问题。 4. 多线程系统中线程管理模式 系统对线程的管理可以有多种方式。 1)纯用户级线程管理方式 用户级线程(ULT)管理 线程的产生与维护完全由用户级程序实现,系统核心程序感知不到线程的存在。 应用程序是建立在一个“线程控制库”的基础上的多线程程序 线程控制库 是线程管理程序包,包含线程创建、终止、消息传递、线程调度管理等程序代码。 程序运行由创建一个线程开始,内部将应用程序产生的线程分配给系统内核的一个进程去完成。 线程的状态与进程的状态有关 纯用户级线程管理模式示意图: 用户级线程管理模式的优点 线程切换时不需要获得核心级程序运行的权限 线程的调度算法比较灵活 此种管理模式运行环境比较宽松 2) 纯核心级线程管理模式 在核心级线程(KLT)管理模式中线程的调度管理由操作系统核心程序完成。 核心程序为应用程序提供一个访问接口,即系统调用或API。 每个程序中的线程都存在于一个进程中 系统核心程序管理并控制着进程上下文和所包含线程的上下文。 系统调度建立在线程的基础上 核心级线程管理模式示意图: 核心级线程的管理模式有以下特点: 可支
原创力文档


文档评论(0)