I/O scheduler

I/O scheduler负责处理对物理设备的操作调度,采用的是电梯调度算法。但是为了满足其它的需求。linux提供四种调度策

略:

1.the noop elevator:

这种策略没有order队列,只有一个dispatch队列,每来一个操作请求就将其放在dispatch队列的最后。

2.the cfq(complete fairness queueing)elevator:

这种策略核心是一个hashtable,它将到来的操作请求按所属进程组的id,散列到hashtable中,hashtable的每个项可以

看做是一个队列,调度的时候按照round-robin的方式进行,一个队列一个队列进行处理。

3.the deadline elevator:

这种策略有四个order队列,其中的两个包括read和write队列,另外两个是deadline队列,也分为read和write两种。

当一个操作被长时间搁置时,就会将其加入到deadline队列中去,调度的时候先调度deadline队列,再调度普通队列。

read操作请求的过期时间比write操作请求的过期时间(expire time)要短,因为read操作经常会阻塞进程。

4.the anticipatory elevator:

这种队列跟第3种队列差不多,只是设计的时候更sophisticated,比方说当elevator连续接到一个进程2次I/O请求,那么

elevator会假设该进程会发第3次请求,因此它会停止调度一段时间等进程发出第3次调用,这些假设都是基于进程的一些

统计信息的

你可能感兴趣的:(算法,linux)