上下文切换四天rhce-2v2.pdfVIP

  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文档。上传文档
查看更多

上下文切换:

CPU运行的进程的信息被在CPU的寄存器和高速缓存中,这部分数据集被称为上下文。

当进程发生切换的时候(正在运行的进程移出CPU,新的进程移入CPU),即会发生上下文

切换。

中断处理:

当内核收到一个中断信号时,即意味着某个正在等待CPU资源调用的进程需要CPU立即响

应。这个时候正在运行的程序会立刻被挂起(移出CPU),而需要立刻被CPU运行的进程

会被唤醒(移入CPU)。显而易见的,此时便会发生上下文切换。大量的中断便意味着大量

的上下文切换,这相当耗费资源。

进程状态:

TASK_RUNNING进程正在被CPU运行,或者处于CPU运行队列中。

TASK_STOPPED进程运行途中被暂停,等待内核传来的恢复信号。

TASK_INTERRUPTIBLE进程暂停,等待某个条件被满足继续运行。

TASK_UNINTERRUPTIBLE与TASK_INTERRUPTIBLE类似,但是不能够被中断。

TASK_ZOMBIE僵尸状态,子进程结束等待父进程“收尸”。

僵尸进程和孤儿进程:

孤儿进程是子进程还在运行的时候父进程已经关闭了。这种进程会被init进程收养,init

进程(pid=1)会孤儿进程自己结束生命周期。因此孤儿进程并无害处。

僵尸进程是长期处于僵尸状态的进程,这类进程大部分运行已经结束,仅保留了一小部分数

据结构等待父进程调用。但是,父进程长期不释放其子进程的数据结构造成内存浪费。由于

僵尸进程对于系统来说已经关闭了,因此我们无法kill掉它。解决方法是kill掉其父进

程即可。

进程调度:

古董级的linux:

进程表全表扫描,找到下一个需要运行的进程,时间复杂度O(n)。

RHEL4/5:

每个CPU两个队列,运行队列和过期队列。调度程序根据进程的优先级依次将他们放到运

行队列中,需要调度时,取出运行队列的第一个进程放到CPU中运行。当CPU运行该进程

结束的时候,将这个进程放入过期队列,重复以上过程。直到运行队列不再有任何进程等待

调度时,将过期队列转变为新的运行队列,之前的运行队列成为新的过期队列,循环往复。

这种调度机制时间复杂度为O(1)。

RHEL6:

完全公平调度算法(CFS),计算每个进程的虚拟时间。虚拟时间是基于进程等待时间、竞争CPU

进程数量、进程优先级来计算的。每次调度请求都会将虚拟时间最小的进程放入CPU进行

计算,随着CPU的运行该进程,它的虚拟时间也会逐渐变大。当它不再是最少虚拟时间的

进程的时候,他将被拥有最少虚拟时间的进程所抢占。这种算法更简单,而且实际表现更好。

进程优先级:

进程优先级包括两部分,PRI和NI。

PRI是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此

值越小进程的优先级别越高。那NI呢?就是我们所要说的nice值了,其表示进程可被执行

的优先级的修正数值。如前面所说,PRI值越小越快被执行,那么加入nice值后,将会使得

PRI变为:PRI(new)=PRI(old)+nice。由此看出,PR是根据NICE排序的,规则是NICE越小PR

越前(小,优先权更大),即其优先级会变高,则其越快被执行。如果NICE相同则进程uid

是root的优先权更大。

进程在创建时被赋予不同的优先级值,而如前面所说,nice的值是表示进程优先级值可被修

正数据值,因此,每个进程都在其执行时被赋予一个nice值,这样系统就可以根据系

统的资源以及具体进程的各类资源消耗情况,主动干预进程的优先级值。在通常情况下,子

进程会继承父进程的nice值,比如在系统启动的过程中,init进程会被赋予0,其他所有进

程继承了这个nice值(因为其他进程都是init的子进程)。%nice,就是改变过优先级的进

程的占用CPU的百分比。

由此可见,进程nice值和进程优先级不是一个概念,但是进程nice值会影响到进程的优先

级变化。

ps-efl

查看进程优先级PRI和进程的nice值NI。

PS:如果是实时进程PRI就是静态优先级,如果是非实时进程,就是动态优先级。

nice-nparm_numcommand

以parm_num为nice值,执行command命令。

reniceparm_num-pPID

修改进程号为PID的进程nice值。

文档评论(0)

152****8708 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档