第三章进程及线程.pptVIP

  1. 1、本文档共56页,可阅读全部内容。
  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文档。上传文档
查看更多
第三章进程及线程.ppt

基于Linux操作系统教程 Operating System Course based on Linux 第三章 进程及线程 3.1 进程的描述 unsigned long policy:进程的调度策略 继承的调度策略定义在sched.h文件中,其值可为: (1)SCHED_OTHER:非实时进程轮转法调度. (2)SCHED_FIFO:实时进程的先进先出. (3)SCHED_RR:实时进程轮转法. 3.2 进程控制 3.2.1 操作系统内核 3.2.2 进程的创建 3.2.3 进程的终止 3.2.4进程的阻塞和唤醒 3.2.5 原语 3.2.6 进程控制原语 注意: 进程创建主要完成进程基本情况的复制,生成子进程的task_struct结构,并复制或共享父进程的其他资源。若子进程想要执行与父进程不同的代码,则要放弃父进程的正文段代码,形成自己的执行代码,该工作由execve()来完成。 LINUX中的进程调度 进程切换的方式 在linux中进程的切换方式有: (1)主动自愿方式:通过系统调用阻塞自己,该方式 可以预见。 (2)非主动方式:进程由系统空间返回到用户空间,即从中断,系统调用或异常等返回到用户空间,系统重新调度进程。 进程的切换动作 运行schedule()函数时,进行进程切换,切换动作由schedule() 调用函数switch_mm()和switch_to()函数来完成。 进程切换的流程为: (1)指向当前正在运行的进程。 (2)检查是否有内核软中断服务请求在等待。 (3)判断当前进程状态,若为“TASK_INTERRUPTABLE”,则将其从就绪队列中摘下。 (4)当前进程不可能再运行,决定选择其他进程。 (5)遍厉就绪队列。寻找优先权weight最大者。 (6) 选中要执行的进程,调用switch_mm和switch_to来完成功能。 Linux中的线程 在linux中的线程时一种一对一的模型,也就是说每个线程实际上在核心上时一个单独的进程。核心的调度程序负责线程的调度,就像调度普通进程。 实现一对一线程的好处在于,实现起来简单,强壮。在线程的切换方面,虽然没有一对多模型速度快,但由于linux上下文切换的特定实现,切换速度还是令人满意的。 Linux中支持的进程间通信方式有: (1)管道 (2)信号 (3)消息队列 (4)信号量 (5)共享内存 (6)套接字 管道的概念 管道的定义不但使用在命令一级,也用在程序设计 一级.在linux中,通过将两个file结构指向同一个VFS 索引接点,每个file结构定义不同的文件操作例程地址, 其中一个向管道中写数据,另一个从管道中读数据. int pipe(int fd[2]) 其中,fd[0]为读端口,fd[1]为写端口.一般对文件 的操作都可以施加到管道上. 命名管道与无名管道的区别. 信号机制 信号是在软件层次上对中断机制的一种模拟. 从原理上讲,一个进程收到一个信号与处理机收到 一个中断是一样的. linux定义了32种信号.在include/asm/signal.h 中定义. 进程可以通过三种方式来响应一个信号: 1 忽略信号:除了sigkill和sigstop,其它信号都 不处理. 2 捕捉信号 3 执行缺省操作 信号的生命周期 从信号的发出到信号处理函数执行完毕,可以分为三个阶段: (1)信号的诞生,如检测到硬件异常或调用信号发送函数等. (2)信号在目标进程中注册:指的是信号值加入到进程的待处 理信号集中. (3)信号在进程中注销:在运行该信号处理函数前,应该将该 信号在进程中注销. (4)信号生命终止:进程注销信号后,立即执行响应的信号处 理函数,执行完毕后,信号生命终止. 消息队列 该机制是进程间进行通信的一种异步方式.发送进程将消息发送到消息队列中,而接收进程负责从消息队列中将消息摘取下来. 共享内存机制 共享内存是两个或更多的进程共享一块内存,该机制是两个进程之间的最底层的最快捷的一种通信方式.但是该方式没有内置的同步机制. 相关的数据结构: 结构体: (1)Struct shmid_ds:包含了内存区域信息的绝大部分. (2)Struct shmid_kernel:用于存放专有的共享内存相关信息. Shmid_ds的部分成员 shm_segsz:共享内存区域的大小. shm_nattch:使用该共享内存区域的任务数. shm_unused,shm_unused2,s

文档评论(0)

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

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

1亿VIP精品文档

相关文档