第7章进程线程管理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章进程线程管理

第七章 进程/线程管理 内容简介: 进程概念、进程调度、进程通信和同步 线程定义、多线程同步及示例 多线程的编程方法 目 录 7.1 进程概念及组成 7.2 进程调度 7.3 进程运行和机制 7.4 进程通信与同步 7.5 线程概念及分类 7.6 线程基础 7.7 线程应用中的同步问题 7.1 进程概念与组成 进程和线程是调度的基本单位 : 进程和线程的管理是操作系统中的核心部分。进程是静态概念。 线程描述进程内的执行, 负责执行包含在进程的地址空间中的代码。 独立性 进程是系统中独立存在的实体,它可以拥有自己独立的资源,比如文件和设备描述符等。未经进程本身允许,其他进程不能访问到这些资源。 动态性 程序只是一个静态的指令集合,而进程是一 个正在系统中活动的指令集合在进程中加入了时间的概念。进程具有自己的生命周期和各种不同的状态。 并发性 并发行由独立性和动态性衍生而来。若干个进程可以在单处理机状态上并发执行。 并发与并行: 并行 指在同一时刻内,有多条指令在多个处理机上同时执行。 并发 指在同一时刻内只能有一条指令执行,但多个进程的指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。 7.1.2 进程的组成 作为申请系统资源的基本单位,进程必须有一个对应的物理内存空间,要对其进行高效的管理,首先要用数据结构对空间进行描述。 进程上下文 运行进程的环境称为进程上下文(context) 进程的上下文组成 进程控制块PCB包括进程的编号、状态、优先级以 及正文段和数据段中数据分布的大概情况。 正文段(text segment)存放该进程的可执行代码。 数据段(data segment)存放进程静态产生的数据结构 用户堆栈(stack) 进程表 进程表 (process table) 将系统中所有的PCB块联系起来。 访问进程 Linux中的PCB块又称为task struct结构,Linux根据系统物理内存的大小限制已打开进程的总数目。系统每次访问一个进程时,内核根据PID在进程表中查找相应的进程PCB块(具体查找过程通过一个PID的hash表实现),再通过PCB块找到其对应的代码段与数据段,并进行操作。 7.2 进程调度 信号 进程状态 进程调度 7.2.1 信号 Linux系统信号 信号主要用于通知进程异步事件的发生。 进程可以用kill或killpg系统调用向另一个进程发信号。 进程可以通过提供信号处理函数来取代对于任意信号的缺省反应,这种缺省反应一般都是终止进程。 信号发生时,内核中断当前的进程,进程执行处理函数来响应信号,结束后恢复正常的进程处理。 Linux 系统信号 信号产生的条件: 用户按下特定的键后,将向该终端前台进程组发送信号 硬件异常会产生信号:如被0除、无效内存引用等。 kill(2)系统调用允许进程向其他进程发送任意信号 kill(1)命令允许用户向进程发送任意信号。 软件设置的条件,如SIGALARM。 基本函数 捕捉信号 此函数是信号处理程序或者信号捕捉函数,决定系统对信号的响应 void (*signal (int signo,void (*func)(int)))(int) 发送信号 raise ; Int raise(int sig);向当前进程发送信号,等价于kill(getpid(),sig)即发信号到当前进程。成功返回为0,出错为-1。 alarm;unsigned int alarm(unsigned int seconds);此函数用来设置一个时间值(闹钟时间),当所设置的值被超过后,产生SIGALRM信号,默认动作是终止进程。 rause ;int pause(void);可以使进程挂起,直到捕捉到一个信号。 sleep; unsigned int sleep(unsigned int seconds);此函数挂起调用中的进程,直到过了预定时间或者是收到一个信号并从信号处理程序返回。 例:程序执行2秒打印hello字符串 #include unistd.h #include signal.h void handler(){ printf(“hello\n”); } main() { int i; signal(SIGALRM,handler); alarm(2); for(I=1;I4;I++){ printf(“sleep %d \n”,I); sleep(1); } } 7.2.2 进程状态 进程是一个动态的实体,

文档评论(0)

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

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

1亿VIP精品文档

相关文档