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

[2.8Linux中的进程.pptVIP

  1. 1、本文档共64页,可阅读全部内容。
  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.8Linux中的进程

2.8 Linux中的进程 Linux是一个多任务操作系统,它要尽量保证CPU始终在使用状态,如果某个正在运行的进程等待外部设备完成工作(例如等待打印机完成打印任务),这时,操作系统就可以选择其它进程运行,从而保持CPU的最大利用率,这就是多任务的基本思想。进程之间的切换由调度程序完成。 进程即程序的一次执行。从组成上看,进程可划分为三个部分:PCB、指令与数据。从动态执行的角度来看,进程可视为在操作系统(OS)根据PCB进行调度而分配的若干时间片内对程序的执行以及对数据的操作过程。 2.8.1 Linux进程控制块PCB Linux 内核利用一个数据结构(task_struct)标志一个进程的存在,表示每个进程的数据结构指针形成了一个task数组(Linux中,任务和进程是两个相同的术语),这种指针数组有时也称为指针向量。这个数组的大小默认为512,表明在Linux系统中能够同时运行的进程最多可有512个。当建立新进程的时候,Linux为新的进程分配一个task_struct结构,然后将其指针保存在task数组中。 task_struct结构的组成主要可分为如下几个部分: 1. 进程运行状态 Linux进程共有如下六种状态: ① TASK_RUNNING,当前运行进程以及运行队列中的进程都处于该状态中。进程调度 时,调度程序只在处于该状态的进程中选择优先级最高的进程来运行。 ② TASK_INTERRUPTIBLE,在等待队列中,可被信号中断的等待状态。收到信号后,进程可能停止或者重新插入到运行队列中。 ③ TASK_UNINTERRUPTIBLE,直接等待硬件状态,不可被中断。 ④ TASK_ZOMBIE,僵死状态。进程已经消亡,但其PCB仍存在task数组中。在进程退出时,将状态设为TASK_ZOMBIE,然后发送信号给父进程,由父进程在统计其中的一些数据后,释放它的task_struct结构。 ⑤ TASK_STOPPED,进程因接收到信号(如:SIGSTOP、SIGSTP、SIGTTIN、SIGTTOU)而停止或由于其它进程使用ptrace系统调用来跟踪而将控制权交回控制进程。 ⑥ TASK_SWAPPING,进程被交换到了交换区(2.0版中未实现)。 2. 用户标识信息 Linux使用用户标识符与组标识符来判断用户进程对文件和目录的访问许可。每个进程的task_struct中均有四对标识符。 uid、gid 执行该进程的用户的标识与组标识。在fork( )时,从父进程处继承。 (2) euid、egid (3) suid、sgid (4) fsuid、fsgid (5)struct task_struct *p_cptr 最新的子进程指针,init_task的这个指针指向它自身。 (6)struct task_struct *p_ysptr 左兄弟进程指针。 (7)struct task_struct *p_osptr 右兄弟进程指针。 (8)struct wait_queue *wait_chldexit 等待队列,用于系统调用wait( ),等待子进程的返回。 root与pwd包含指向两个VFS索引节点的指针,这两个索引节点分别是进程的主目录以及进程的当前目录。索引节点中有一个引用计数器,当有新的进程指向某个索引节点时,该索引节点的引用计数器会增加计数。未被引用的索引节点的引用计数为0,因此,当包含在某个目录中的文件正在运行时,就无法删除这一目录,因为这一目录的引用计数大于0。 2.8.3 进程调度 1. 进程的调度策略 为了符合POSIX标准,Linux中实现了三种进程调度策略: ① SCHED_OTHER 一般进程。 ② SCHED_FIFO 先进先出(First In First out)的实时进程。 ③ SCHED_RR 轮转调度(Round Robin)方式执行的实时进程。 2.8.5 相关的系统调用 在表2.12中简要列出和进程及进程间通信相关的系统调用。在标志列中,各字母的意义为: m :手册页可查; + :POSIX

文档评论(0)

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

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

1亿VIP精品文档

相关文档