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

第二章 - 进程和线程.pptVIP

  1. 1、本文档共119页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 进程管理 本章内容提要 什么是进程 进程的状态和组成 进程间的同步与互斥 进程通信 对进程的管理 线程和管程概念 死锁概念 2.1 进程概念 2.1.1 程序顺序执行的特征 ■顺序程序设计 2.1.2程序并发执行及其特征 ■程序并发执行概念---在操作系统中,是指一个时间段中有几个程序都处在已启动运行到运行完毕之间。 ▲非多道技术下作业执行过程 ▲多道技术下作业执行过程 ■程序并发执行的特征 ① 失去封闭性 ② 程序与计算不再一一对应 ③ 并发程序在执行期间相互制约 2.1.3 进程概念的引入和定义 ■引入进程概念 多道程序并发执行所引发的一系列新情况,必须引入新的概念来描述程序动态执行过程的性质。 ■进程概念定义 定义:程序在并发环境中的执行过程 ●进程最根本的属性是动态性和并发性 “进程”是操作系统的最基本、最重要的概念之一。这是对正在运行程序的一个抽象。但还没有形成统一的定义。 ★生活中事例——按菜谱做菜 ●进程和程序的区别 动态性 并发性 非对应性 异步性 ■进程特征 (1)动态性 (2)并发性 (3)调度性 (4)异步性 (5)结构性 2.2 进程状态描述及组织方式 2.2.1 进程的状态及其转换 ■进程的状态 三种基本状态 ●运行状态(Running) ●就绪状态(Ready) ●阻塞状态(Blocked) ■进程状态的转换 (1)就绪→运行 (2)运行→阻塞 (3)阻塞→就绪 (4)运行→就绪 2.2.2 进程的组成 1.进程映像 进程映像通常就由程序、数据集合、栈和PCB等4部分组成 进程描述 2.进程控制块的组成 进程控制块(PCB)也称进程描述块(Process Descriptor),它是进程组成中最关键的部分,其中含有进程的描述信息和控制信息,是进程动态特性的集中反映,是系统对进程施行识别和控制的依据。 ★进程控制块一般应包括如下内容: 进程名 特征信息 进程状态信息 调度优先权 通信信息 现场保护区 资源需求、分配和控制方面的信息 进程实体信息 族系关系 其它信息 3.进程控制块的作用 每个进程有惟一的进程控制块 操作系统根据PCB对进程实施控制和管理 进程的动态、并发等特征是利用PCB表现出来的 PCB是进程存在的唯一标识 2.2.3 进程组织方式 1.线性方式 进程队列 2.链接方式 PCB索引结构示意图 2.3 进程管理和有关命令 2.3.1 进程图和进程管理 ■进程图(Process Graph)是描述进程族系关系的有向树 ■进程创建 引发创建进程的事件: ▲调度新作业 ▲用户登录 ▲操作系统提供特定服务 ▲派生新进程 ●创建新进程时要执行创建进程的系统调用(如UNIX/Linux系统中的fork) ●其主要操作过程有如下四步: (1)申请一个空闲的PCB (2)为新进程分配资源 (3)将新进程的PCB初始化 (4)将新进程加到就绪队列中 #include unistd.h #include sys/types.h #include stdio.h int main(int argc,char *argv[]) { int pid; pid = fork(); /* fork another process */ if (pid 0) { /* error occurred */ fprintf(stderr, Fork Failed); exit(-1); } else if (pid == 0) { /* child process */ execlp( /bin/ls, ls,NULL); } else { /* parent process */ wait(NULL); /* paren

文档评论(0)

peace0308 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档