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

第6章进程与存储管理示例资料.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.3.2 进程控制 执行一个文件的调用 系统调用exec()引出另一个程序,它用一个可执行文件的副本覆盖调用进程的正文段和数据段,并以调用进程提供的参数转去执行这个新的正文段程序 系统调用exec()包含六种不同的调用格式,但完成同一工作,主要是参数处理方法不同。常用调用格式: execvp( filename, argp); 或 excelp( filename,arg0,arg1,…,(char *)0); 例如,用excelp调用实现一个shell的基本处理过程 用户输入命令后,按以下步骤执行用户命令: 用fork,创建子进程 用exec,启动命令程序 用wait,父进程和子进程同步 图6.8 shell 执行过程 用C语言实现的程序——shell程序的实现 6.3.2 进程控制 进程的终止 系统调用exit(rv):自我终止当前进程,使其进入ZOMBIE僵死状态,等待父进程进行善后处理 exit调用将导致释放除task_struct结构之外的所有资源,并清除进程上下文 父进程收到子进程的信息rv和有关子进程的时间信息后,将释放子进程的task_struct结构,并将有关的时间信息加到自己的task_struct结构的有关项中 6.4 Linux进程调度 调度原理 调度的时机 调度标识的设置 调度策略与优先数的计算 调度的实现 6.4 Linux进程调度 Linux系统的进程调度由核心的调度过程schedule()实现 调度原理 Linux系统对实时进程和普通进程采用不同的调度算法 普通进程:基于时间片的动态优先数调度法 6.4 Linux进程调度 调度时机 在Linux系统中,为了减少操作系统设计的复杂性和提高系统执行效率,只在核心的几个预定的位置进行调度 当进程状态发生变化,自动放弃处理机时,主动转入调度过程进行调度。例如,调用sleep()或wait()或exit()放弃处理机 当处理机从核心态向用户态转换时,系统设置了高优先级就绪进程的强迫调度标志need_resched时,则发生调度 6.4 Linux进程调度 调度标识的设置 Linux只使用一个调度标志need_resched,该标志保存在进程描述符中 调度标志need_resched在以下两种情况被设置为1 当处于运行态的进程的时间片耗尽时 当进程被唤醒,而它的优先级比正在运行的当前进程的优先级高时 6.4 Linux进程调度 调度策略与优先数的计算 Linux将进程分为普通进程和实时进程,实时进程的调度优先级比普通进程高, Linux总是优先调度实时进程 Linux使用三种调度策略 动态优先数调度SCHED_OTHER:用于普通进程 先来先服务调度SCHED_FIFO:用于实时进程 轮转法调度SCHED_RR:用于实时进程 6.4 Linux进程调度 调度策略与优先数的计算 进程可以通过scehed_setscheduler( )系统调用选择适合自己的调度策略。如果选择了实时调度,则该进程就转变为一个实施进程 进程的调度策略保存在进程描述符中,并被子进程所继承,因此实时进程的子进程仍然是一个实时进程 6.4 Linux进程调度 调度的实现 进程调度由scehedule( )过程实现,执行过程 进程选择:按照调度策略来找到合适的进程 进程切换:主要完成进程的上下文切换,其中用户进程的地址空间切换由switch_mm()完成,进程的堆栈切换过程由switch_to()实现 6.5 进程通信 Linux的进程通信分三部分 低级通信 管道通信 进程间的通信IPC Linux同时支持网络通信协议TCP/IP 6.5.1 Linux的低级通信 Linux低级通信主要用来传递进程间的控制信号。主要方式: 软中断信号机制:通知对方发生了异步事件 系统调用kill(pid,sig):向进程pid发送软中断信号sig 系统调用signal(sig,func):收到信号sig后,执行预先预定的动作func 文件锁库函数lockf:实现互斥 实现同步的系统调用 wait():用于父子进程之间的同步 sleep(n):当前进程睡眠秒后自动唤醒自己 软中断信号 Linux有30个软中断信号和31个实时软中断信号 软中断信号的作用见图6.10 实时软中断信号:其编号从32~63,它们没有预先定义的含义,与普通软中断信号的区别在于:实时信号可以排队而不会发生丢失的现象 图6.10 Linux软中断信号 软中断信号 软中断是对硬中断的模拟 发送软中断:向接收进程的task_struct结构中的相应项发送图6.10中的一个信号 接收进程:收到软中断信号后,将按照预先规定去执行一个软中断处理程序。但是,软中断处理程序不像硬中断处理程序,收到

文档评论(0)

502992 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档