网站大量收购闲置独家精品文档,联系QQ:2885784924

操作系统基础课件作者邓胜兰第4章节进程与线程.ppt

操作系统基础课件作者邓胜兰第4章节进程与线程.ppt

  1. 1、本文档共98页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux的进程管理 pthread线程库 创建线程 pthread_create(thread, attr, fun_name, agrs) 结束线程 pthread_exit(stat) 等待线程结束 pthread_join (thread, stat) 采用线程方法实现例2的编程 Linux的进程管理 例子3 main() { pthread_t mythd; int stat, i, sum, x; sum=0; /* 创建·线程 */ pthread_create(mythd, NULL, mytask, x); for(i=101; i=200; i++) sum+=i; /* 等待线程结束 */ pthread_join(mythd, stat); sum=sum+x; printf(“Process: sum=%d\n”, sum); } /* 线程的执行函数 */ void mytask(int *sp) { int i, sum sum=0; for(i=1; i=100; i++) sum+=i; /* 保存计算结果 */ *sp=sum printf(“Thread: sum=%d\n”, sum); /* 线程结束 */ pthread_exit(0); } 作 业 习题4 1、5、8、14、15、19、23 上机实验 1、2 * * 例如:hash(PID)=PID的后4位数字 * 例如:hash(PID)=PID的后4位数字 * 例如:hash(PID)=PID的后4位数字 * 例如:hash(PID)=PID的后4位数字 * 例如:hash(PID)=PID的后4位数字 * 唤醒指定进程,唤醒等待某个事件的一个进程或所有进程 * 唤醒指定进程,唤醒等待某个事件的一个进程或所有进程 * 唤醒指定进程,唤醒等待某个事件的一个进程或所有进程 * 唤醒指定进程,唤醒等待某个事件的一个进程或所有进程 * 分两部分运行 * 生活中常见的排队方法 常与其他算法结合,以便公平对待同类进程。 * 生活中常见的排队方法 常与其他算法结合,以便公平对待同类进程。 * 对超时的进程,或停止运行,或加价收费。 * * * ULT的管理类似于进程管理,在用户态下执行 * 操作系统的线程调度 * CPU利用率的影响?调度频率? * 例如:hash(PID)=PID的后4位数字 * 例如:hash(PID)=PID的后4位数字 * 例如:hash(PID)=PID的后4位数字 * 例如:hash(PID)=PID的后4位数字 * 例如:hash(PID)=PID的后4位数字 * 例如:hash(PID)=PID的后4位数字 * 例如:hash(PID)=PID的后4位数字 线 程 线程的三种实现方式 在用户态下实现用户级线程(ULT) 多线程库完成线程的创建、调度和切换 不需要修改操作系统内核 在内核中实现核心级线程(KLT) 内核管理线程的创建、调度和切换 提供相关的系统调用 ULT与KLT的混合实现 线 程 实现用户级线程ULT 进程主程序作为主线程运行 调用多线程库的函数创建用户级线程。 通过调用多线程库的函数完成线程的调度和切换。 内核不能感知线程 多线程库和用户程序是一个整体,都是进程在用户空间中执行的程序。 进程1的运行时间 线 程 多个ULT线程分享一个进程的处理机时间 ULT ULT ULT 多线程库 进程1 ULT ULT 多线程库 进程2 进程调度 CPU 线 程 用户级线程ULT的特点 线程管理开销少 线程调度灵活 不需要修改操作系统 核心阻塞进程时将阻塞所有线程 不能实现完全的线程并行 线 程 线程控制块(TCB) 线程标识信息 状态和调度信息 ULT状态与进程状态完全不相干。调度信息可以包括优先级,ULT调度多采用非剥夺调度方式。 执行现场信息 线程私有存储区:堆栈和数据区,但它们不受操作系统保护。 线 程 核心级线程KLT的实现 由操作系统内核实现线程的管理和调度,提供线程创建,结束,同步等系统调用。 创建进程的同时创建第一个线程;提供系统调用创建新的线程。 为每个线程建立线程控制块(TCB),并为线程分配核心栈和用户栈。 处理机调度以线程为对象。 核心级线程也称为轻权进程。 线 程 核心级线程 KLT 的特点: 实现完全的线程并行 多个KLT可以被调度到多CPU上的真正地并行。 避免了ULT中的阻塞问题 阻塞只是针对单个线程的 线程的管理开销比ULT大 需要通过系统调用 线 程 ULT与KLT的混合

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档