LINUX实操:关于Linux进程管理
《LINUX实操:关于Linux进程管理》要点: 进程的引入当计算机在引入多道程序时,出现了临界资源竞争的情况,为了刻画和办理程序间的这种制约关系,提出了进程的概念,用以改善资源的利用率,提高程序的吞吐量. 进程控制块PCB
运行状态进程的PCB同样用结构体指针数组表现:
数据成员说明: 进程属性
优先级问题谦让度:标识进程之间资源竞争能力,高谦让度的进程,资源竞争能力弱.负值或0表示最高优先级,对其他进程不谦让.谦让度的值一般为:-20~19;当前硬件发展速度非常快,一般我们是不设置进程优先级的,除非有进程失控而疯狂的抢占资源; 在创建进程时,nice可以为进程设置谦让值,但进程优先级的值为父进程shell优先级的值与nice所指定的谦让度相加的成果.即,利用nice指定的值是一个增量,而不是优先级的绝对值. 运行 a.out 法式,并为它指定谦让度增量为5:
利用renice来变动谦让度:
进程调度算法简介法式使用cpu的三种模式:I/O密集型、计算密集型和平衡型.对于I/O密集型法式,响应时间非常重要,响应时间不及时,和可能丢失数据;对于计算密集型法式,cpu的周转时间非常重要;对于平衡型法式,协调响应和cpu周转的工作最重要. 进程周转时间:期待进入内存的时间,在就绪队列中期待的时间,在 CPU中执行的时间和I/O操作的时间的总和. FCFS算法FCFS(frist come first serve),也叫FIFO算法,先来先执行.短任务执行可能会异常慢,因为前面的进程可能占用很长时间,造成平均响应时间过长. 时间片轮转算法目的是改善短程序响应时间长的问题.办法是周期性的对进程进行切换.该算法最关键的时间片的选择,时间片过长和FIFO算法区别不大,时间片过短,进程频繁切换的开销大于执行程序的开销,系统效率降低. STCF算法STCF算法全称:short time to complete frist.核心是每个进程都有优先级,短进程的优先级要高于长进程的优先级.STCF算法分为:非抢占式和抢占式两类.非抢占式便是让已经在cpu上运行的程序执行到结束或者阻塞,然后在就绪队列中选择执行时间最短的程序来执行.而抢占式是,每当有新进程进入就绪队列时,都会去判断当前运行进程和新进程的执行时间长短,选择执行时间短的进程运行,及永远保证cpu运行的是所有进程中执行时间最短的进程.该算法有个非常明显的缺点:长任务进程无法执行.还有该算法的关键点是如何预测进程所需的执行时间. 优先级调度算法办理了STCF算法中长任务进程饥饿的问题,而暴露出的短任务会饥饿的问题,可以通过动态调整优先级来办理.实际上动态调整优先级(称为权值)+ 时间片轮转的策略正是Linux系统进程调度的策略之一的分时调度策略,调度过程如下:
现代OS通常都会采用混合调度算法.如:将不同的进程分为几个大类,每个大类有不同的优先级,不同大类的进程调度取决于大类的优先级,同一个大类的进程调度采用时间片轮转算法来实现. 本文永远更新链接地址: 《LINUX实操:关于Linux进程管理》是否对您有启发,欢迎查看更多与《LINUX实操:关于Linux进程管理》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |