linux进程管理分析.doc

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux进程管理分析

Linux 作者:陈颖 邮箱:chxxxyg@163.com 博客: / 目录 一 进程管理原理分析概述 1 二 进程创建 2 1 进程管理相关结构 2 2 进程与线程之间的关系 4 3 进程创建 5 三 进程调度 14 1进程调度相关结构 14 2 优先级与负荷权重 16 2.1优先级的计算 16 2.2 负荷权重的计算 17 3核心调度器 18 3.1 周期性调度器 18 3.2 主调度器 19 4 完全公平调度类 22 4.1 数据结构 22 4.2 完全公平调度类操作方法 22 4.2.1 虚拟时间计算 22 4.2.2 延迟计算 23 4.2.3 完全公平调度类操作方法实现 25 时间更新 26 创建新进程时的处理 28 将进程插入就绪队列 29 5 实时调度类 31 5.1 数据结构 31 5.2 实时调度类 32 6 负载均衡 34 四 程序的运行 37 1 可执行文件 37 2 程序的运行 38 一 进程管理原理分析概述 进程创建之后将被插入就绪队列接受调度投入运行,新进程运行之初,它的地址空间与其父进程相同,为运行新的程序它需要调用exec函数将新的可执行程序加载到进程空间,从而运行不同于父进程的程序。 进程创建: 用户空间的进程创建是通过调用系统调用fork、clone、vfork来实现 的,对于这些系统调用内核都是通过函数do_fork来处理的,它们的不同在 于它们传入的参数clone_flags不一样,它决定了新进程与父进程共享那些资 源。在函数do_fork中,为新进程分配了一个进程描述结构task_struct,并且 为新进程分配了两页的栈空间,在栈空间的底部存放着一个thread_info结构, 该结构保存了特定于CPU的一些信息。然后再clone_flags中标志的位共享或是重 新分配一些资源,初始化一些调度相关的信息。最后将新进程插入就绪队列 等到调度。 进程调度: 进程可能处于以下几种状态:运行,等待,睡眠。运行状态即是此刻正在执行;等待状态就是正出于就绪队列中等待调度;睡眠状态不在就绪队列中,在没被唤醒之前不能得到调度。就绪队列是管理等待调度进程的结构。 一个CPU只有一个就绪队列rq,然而这个就绪队列并不直接管理进程,它又包含子就绪队列,例如完全公平就绪队列、实时就绪队列。进程的调度主要基于两个调度器:周期性调度器和主调度器。周期性调度器是在内核频率HZ中断中统计一些进程时间信息,并判断进程是否需要调度,如果需要就发起调度请求;主调度器是进程主动放弃CPU控制权,切换到其他进程运行,在住调度器中做了很多进程上下文切换的工作。 上层调度器并不直接对进程进行操作,而是通过进程所属调度类对进城进行操作。调度类主要有两种:完全公平调度类、实时调度类。内核中用0到139来表示进程优先级,0到99供实时进程使用,100到139供普通进程使用,在用户空间对应-20到19的nice值。完全公平调度类提供类一些方法,这些方法对完全公平队列上的进程进行插入、移除、时间统计等操作。在完全公平队列上进程是按虚拟时间大小通过红黑树排序的,虚拟时间越小的进程排在红黑树越靠左边,得到运行的可能就越大。虚拟时间跟进程权重紧密相关,而权重又跟进程优先级相对应。随着时间的推移,权重越大的进程虚拟时间增加越慢,向右移动的速度就越慢,得到调度的机会就越多,所以优先级越高的进程得到运行的机会就越大。实时进程类与完全公平调度类大体相同,不同的是在实时就绪队列上,有100个链表头,分别挂接100个不同优先级的实时进程。选择下一个进程运行时,从小到大扫描链表找出第一个进程运行。实时进程包含SCHED_RR和SCHED_FIFO,它们在同优先级队列中都是先进先出,不过SCHED_RR有时间片,时间片用完后重新分配时间片将进程放入优先级队列尾,然后就调度其他进程运行。SCHED_FIFO进程一旦调度运行就可以一直运行下去,除非主动放弃CPU控制权。 在SMP多处理器系统中还要实现负载均衡,将忙碌CPU队列上的进程移动到空闲CPU上。 运行新程序: 新进程运行之初,它的地址空间与其父进程相同,为运行新的程序它需要调用exec函数将新的可执行程序加载到进程空间,从而运行不同于父进程的程序。 二 进程创建 1 进程管理相关结构 task_struct是一个庞大的结构体,它包含了进程管理的全部信息。这些信息主要包含以下几个方面: ※状态和执行信息,(如带决信号、使用的二进制格式、进程ID、指向父进程以及其他有关 进程的指针、优先级和程序执行有关的时间信息); ※虚拟内存信息; ※用户ID、组ID以及权限; ※进程处理的文件和对应的文件系统信息; ※线程相关的信息; ※进程间通信相关信

文档评论(0)

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

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

1亿VIP精品文档

相关文档