Linux进程的管理

1.1 多任务

多任务操作系统就是能同时并发地交互执行郭哥进程的操作系统。在单处理机器上,这会产生多个进程在同时运行的错觉。在多处理机上,着会使多个进程在不同机器上真正同时,并行地运行。无论在单处理机还是多处理器机器上,多任务操作系统都能使多个进程处于堵塞或者睡眠的状态,也就是说,实际上并没有被真正的投入运行。进程利用内核堵塞自己,直到某些事件的产生。

多任务系统可以分为两类:非抢占式多任务和抢占式多任务,而Linux则提供了抢占式的多任务模式。

在Linux2.4以前,linux的进程调度程序都设计的相当简陋,设计近乎原始。在linux2.5的内核当中,进行了大手术,引入了许多的新特性。主要感谢静态时间片算法和针对每一处理器的运行队列。在2.6内核当中,增加了完全公平调度算法。

1.3策略

策略决定决定调度程序在何时让什么程序运行。调度器的策略往往就决定了系统的整体映像,并且,还要优化处理器的使用时间。所以呀,他是至关重要的。

1.3.1 I/O消耗型和处理器消耗型的进程。

进程可以被分为I/O消耗型和处理器消耗型,要注意这两种进程资源的分配。但是,对于某些进程来说,并不能单纯的将其归类为I/O消耗型或者处理器消耗型。

1.3.2进程优先级

调度算法当中最基本的一类就是机遇优先级的调度,。Linux采用了两种不同的优先级范围。一种是nice值,它的范围是-20到+19,默认值为0,越大的nice值意味着更低的优先级。nice值低的可以获得更多的时间。在Linux当中,nice值代表分配给进程的时间片的比例。

第二种范围是实时优先级,其值是可配置的,默认情况下它的变化范围是从0~99。实时优先级和nice优先级处于互不相交的两个范畴。

1.4Linux 调度算法

1.4.1 linux的调度器类:

linux调度器是以模块的方式提供的,这样做的目的是允许不同类型的进程可以有针对性的选择调度算法。

这种模块化结构被称为调度器类,它允许多种不同的可动态添加的调度算法的并存。每一个调度器都有自己的优先级。

1.4.2Unix系统中的进程调度:

在Unix当中,若采用nice值直接经行绝对时间的映射,那么时间片的分配并不是很理想。为了使进程能够更快的投入运行,而去对新要唤醒的进程提升优先级,即使他们的时间片已经用完,虽然这种方式能够提升不少的交互性能,但是一些例外的情况也有可能发生使得给定进程打破公平原则。

通过对传统Unix调度器进行改造以解决问题,但是实际的问题在于分配绝对的时间片引发的固定的切换频率,给公平性造成很大的变数。CFS采用的方法是对时间片分配方式进行根本的性的重新设计:完全摒弃时间片而是而是分配给进程一个处理器使用比重。通过这种方式。CFS确保了进程调度中能有恒定的公平性,而将切换频率至于不断变换当中。

1.4.3公平调度

进程调度的效果应如同系统具有一个理想中的完美多处理器。进程的调用实现却并不如理想中的那样完美。调度时进程抢占会带来一定的代价。CFS充分考虑额外的消耗,确保系统性能不受损失。

每个进程都按其权重在全部可运行进程中所占比例的“时间片”运行,为了计算准确的时间片,CFS为完美多任务中的无线小调度周期的近似值设立了一个目标。这个目标被称为“目标延迟”。越小的调度周期将带来更好的交互性。但是要承受更高的切换代价。linux当中有一个最小力度保证切换时候的延迟。默认请款下这个值为1ms。

在CFS中,两个进程的nice值的相对差才会影响两个进程的所占时间片的权重。在多进程的环境下,降低了调度延迟带来的不公平性。


在没有你的世界里,爱你,叶铮









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值