第3章-进程管理与调度答题.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.4 线程及其基本概念 线程(Thread)又称为轻量级进程。 将进程的资源分配与调度分开,引入线程的概念。 一个进程至少有一个线程。 多个线程共享其所在进程的资源,包括PCB。但所执行的程序不同,映射到不同的物理地址,使用不同的栈。 线程只由相关堆栈(用户栈/核心栈)寄存器和TCB组成。 对线程的调度即可以由OS进行,也可以由用户程序进行。 线程的优点 切换快速 管理开销小 通信容易 线程数目可以很多 Word 进程中的三个线程 Web server 中的多线程 进程中线程的执行过程示意图 具有单个线程和多个线程的进程示意图 线程的实现 用户级线程:没有内核的支持,在用户级提供一个库程序来实现多线程,包括创建、同步、调度等功能。同一进程的线程之间进行调度切换时,不需要调用系统调用。使得系统开销小,但无法发挥多处理器的优势。 核心级线程:由操作系统支持实现线程。有利于发挥多处理器的优势。 混合级线程:用户利用多线程库提供的并行环境编程,OS为多线程库提供核心级线程接口。 Linux用clone()系统调用来创建线程。 多对一 一对一 西安财经学院 房地产E网 西安财经学院 LOGO 房地产E网 操作系统讲义 孙 清 西安财经学院 操作系统概述 系统启动及用户界面 进程管理与调度 进程同步 第一章 第二章 第三章 第四章 设备管理 第七章 Contents 课程内容安排 西安财经学院 文件管理 第六章 存储器管理 第五章 第三章 进程管理与调度 进程的控制 1 进程的状态迁移及PCB 2 处理机调度 3 西安财经学院 线程及其基本概念 4 Linux中相关源代码分析 5 3.1 进程的状态迁移及PCB 进程的定义 运行中的程序,有生命周期,占用系统资源,包括:程序、数据、PCB(进程控制块) CPU处理机的工作状态 管态(核心态):系统态 目态:用户态 状态之间的转换 目态→管态:唯一途径是中断 管态→目态:设置程序状态字PSW 进程控制块(PCB) PCB:用于存放管理进程运行的必要信息。 PCB处于核心段,用户不能直接访问和修改PCB。 OS把所有PCB组织在一起,放在固定的内存区域,构成PCB表。 PCB表的大小决定了系统可同时运行程序的最大数目---道数。 进程的静态组成包括进程的程序、数据、系统/用户栈和PCB,这些统称为进程影像。 PCB包含四部分内容 进程描述信息:pid,gid 进程控制信息:状态、优先级、运行统计信息、同步和通信、代码执行入口地址、程序的外存地址。。。 所拥有的资源和使用情况:占用内存大小及其管理用数据结构指针、虚拟地址空间、共享数据段、输入/输出设备、数据缓冲区、打开文件列表等。 CPU现场保护信息:寄存器值 进程的状态迁移 3.2 进程的控制 进程的控制使用原语实现。 原语(primitive)是在管态下运行,执行期间不允许被中断。 原语的实现方法是以系统调用方式提供原语接口,采用中断屏蔽方式来实现原语功能。 进程的控制原语包括: 创建、撤销、阻塞、唤醒、挂起、激活。 1、进程的创建 父进程创建子进程时,系统从空PCB池中取一个空PCB,并在进程表中增加一项; 为新进程分配地址空间,传递环境变量,构造共享地址空间; 查找辅存,将新进程正文装到内存; 初始化PCB,为新进程分配PID,初始化PSW; 加入就绪队列。 用fork()系统调用创建子进程: pid=fork() fork()的返回值: 0 在子进程中; 0 在父进程中; -1 创建失败。 创建进程实例 #include stdio.h main() { int p1,p2,i; while ((p1=fork())==-1) ; if (p1 ==0) for(i=0;i10;i++) printf(“daughter %d\n”,i); else { while ((p2=fork())==-1) ; if (p2 ==0) for(i=0;i10;i++) printf (“son %d\n”,i); else for(i=0;i10;i++) printf(“parent %d\n”,i); } 2、进程的撤销(或终止) 撤销进程的情况: 正常终止; 由于错误导致非正常终止; 由祖先进程的要求而撤销。 调用exit()可终止进程。 找到该进程的PCB; 将该进程拥有的资源归还给父进程或操作系统; 若该进程拥有子进程,应先撤销它的所有子孙进程; 撤销进程出队列,归还它的PCB。 3、进程的阻塞 从执行态进入等待态,由于等待某个事件(如,I/O存取)的发生。 停止

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档