- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
核心级线程及线程调度
* * 第十九讲 核心级线程,线程调度 目的与要求:掌握核心级线程实现原理,及典型的线程调度方法. 重点与难点:线程核心实现方法和混合实现方法.组调度方法,多级调度原则. 作业:4,6 8.1.3线程实现 二. 核心级线程 由操作系统内核提供线程创建,结束,同步等系统调用。当进程被创建时,内核同时为进程创建第一个核心级线程,运行用户主程序;以后可调用创建线程系统调用,创建新的线程。 内核调度以线程为单位。核心级线程既运行用户程序,在自陷/中断进管时又运行核心程序。 L L 进程1 进程2 线程调度 CPU L L L CPU … 创建核心级线程系统调用处理过程: 接收新线程执行函数地址,初始变量值,用户栈地址,私有区地址; 在核心空间中分配TCB,核心栈;初始化上述表格及运行现场; 将线程状态改为就绪; 运行核心线程调度程序; 恢复被调度线程的现场运行。 操 作 用户级线程 核心级线程 进 程 创建(ms) 52 350 1700 使用信号量同步(ms) 66 390 200 特点: 可支持同一进程内线程在多CPU上的并行; 线程状态由内核调度程序完全掌握; 核心级线程比用户级线程开销大; 核心级线程表格占用系统空间。* 在SPARC工作站上不同线程、进程操作开销比较 三. 混合实现 用户用多线程库函数编程,多线库合理安排用户级线程使用内核级线程。 用户按用户程序的并发度安排使用用户级线程,多线库程序参考计算机CPU个数安排使用核心级线程。 多线库调度 L 多线库调度 L 进程1 进程2 线程调度 CPU L L L … … CPU … 四. 纯内核线程 纯粹运行内核程序的线程,不提供创建此类线程的系统调用界面,由系统初始化时创建,用来处理核心的一些异步事务。如定时进行页面交换,定时刷新文件缓冲区,异步I/O请求的处理等。 8.1.4线程调度 线程调度原则: 让CPU充分被利用; 同进程的线程尽量一起运行(提高系统吞吐率) 一.负载共享 原则:让任意进程中的任意线程可在任意处理机上运行。 实现:系统有一全局就绪队列,每个处理机在运行调度程序时都可从全局队列中选择合适线程来运行。 优点: 系统负载均匀分布到处理机上。 实现容易。 缺点: 不能实现相关线程同时运行;线程切换可能频繁。 二、负载绑定 如果将线程指定到处理机上运行而又允许处理机在执行到因I/O或同步等操作时而进行调度切换到其它线程,这种情况就是处理机与线程的绑定。 三 . 组调度 原则:让同一进程中的线程在多CPU上同时运行。 实现: ·独占式组调度:将多个CPU同时分配给同一组线程,直到所有线程运行结束。 ·引导型组调度:当CPU调度了进程中的一个线程时,通过机间中断通知其它CPU调度同一进程中的其它线程。 ·浮动型组调度:当某个CPU调度了进程中的一个线程时,同时也帮助把该进程的某些线程调度到其它CPU上,通过机间中断通知其它CPU去做线程切换。
文档评论(0)