: scheduling Quality of Service 



 - 


 - 

 - 

/ - CPU





[?]

スケジューラの分類

編集

3

長期スケジューラ

編集

I/OCPUI/OCPURTOS[1]



CPU

中期スケジューラ

編集

退[2]

使使

短期スケジューラ

編集

CPUCPUI/O/[3]

ディスパッチャ

編集

CPU1CPU





CPU


スケジューリングアルゴリズム

編集

CPU/

使

FIFOFCFS (First-Come, First-Served) 



CPU








最小残余時間優先

編集

 (SRT)  (SJF) 

2



FIFO




固定優先度プリエンプティブ・スケジューリング

編集

 (FCFS) 



FIFO






ラウンドロビン・スケジューリング

編集





FCFSSJFFCFSSJF





FCFS

多段キュースケジューリング

編集

使

まとめ

編集
スケジューリングアルゴリズム CPUオーバーヘッド スループット ターンアラウンド時間 応答時間
FIFO 低い 低い 高い 低い
最短ジョブ優先英語版 中程度 高い 中程度 中程度
優先度ベースのスケジューリング英語版 中程度 低い 高い 高い
ラウンドロビン・スケジューリング 高い 中程度 中程度 高い
多段キュー・スケジューリング 高い 高い 中程度 中程度

通信ネットワークのスケジューリングアルゴリズム

編集

FIFO

QoS使

3.5G High-Speed Downlink Packet Access (HSDPA)  channel-dependent scheduling LTEOFDMA

I/Oのスケジューリング方式

編集



FIFO (First In, First Out) - I/O

Shortest Seek First - 

Elevator Algorithm - Shortest Seek FirstI/O

Anticipatory Scheduling - I/O

Completely Fair Queuing (CFQ) - I/OLinux 2.6.18I/OLinux5.0[4]

Budget Fair Queueing (BFQ) - CFQLinuxI/O[5]

Deadline - [6]

OSにおけるスケジューリングアルゴリズムの選択法

編集

OS使使OSWindows NT/XP/Vista FIFO調FIFO

リアルタイム性を保証するスケジューリング

編集








オペレーティングシステムのスケジューラ実装

編集

OS

1100ABC3A1BCA

CPU使 (SMP) 

使 (affinity) 使調

NUMASMPSMPSMPSMPSMP調Linuxexec()調exec()

Windows

編集

MS-DOSWindowsWindows 3.1OS使CPU (yield) CPU使調Windows 95 16[7]

Windows NTOS使3203101516310OSAPI5I/OCPU使I/OCPU[8]Windows Vista 使CPU[9]I/O

Mac OS

編集

Mac OS 9調1調MP使MP1MP "blue task" 使調WaitNextEvent 使調 YieldToAnyThread  YieldToThread 使

macOS使///4[10]Carbon調 (cooperative scheduler) 

AIX Version 4 3

FIFO

CPUFIFO

RR

AIX Version 3 10RR使RR

OTHER

POSIX1003.4a AIX Version 4 RR AIX Version 3 

AIX 5 FIFO3FIFO3FIFOFIFO2FIFO3AIXSCHED_RR SCHED_OTHER [11]

Linux 2.4

編集

Linux 2.4 O(n)0140099100140nice200nice10[]active調使expiredactiveexpiredactiveactiveexpired

LinuxSUSE Linux Enterprise Server O(1)2.4使 Linux 2.4-ac Kernel series 

Linux 2.6.0 から Linux 2.6.22 まで

編集

 2.6  2.6.22 Linux 2.5 O(1)

Linux 2.6.23 以降

編集

 "Rotating Staircase Deadline" O(1) Completely Fair Scheduler [12]Completely Fair Scheduler (CFS)  stride scheduling CPU使

CFS O(logN) N O(log N) 

OSCFS[13]

FreeBSD

編集

FreeBSD0255使06364127128159160223224255Linuxactive使FreeBSDidle[14]

NetBSD

編集

NetBSD0233使063SCHED_OTHER649596128128191SCHED_FIFOSCHED_RR192233

Solaris

編集

Solaris0169使059[15]6099100159[15]160169Linux使

まとめ

編集
OS プリエンプション アルゴリズム
Windows 3.1x なし 協調的スケジューラ
Windows 9598Me 半分 32ビットプロセスはプリエンプティブ。16ビットプロセスは協調的スケジューラ
Windows NT あり 多段フィードバックキュー
Mac OS 8以前 なし 協調的スケジューラ
Mac OS 9 一部 MPタスクはプリエンプティブ。プロセスやスレッドは協調的スケジューラ
macOS あり 多段フィードバックキュー
Linux 2.6 より以前 あり 多段フィードバックキュー
Linux 2.6-2.6.23 あり O(1)スケジューラ英語版
Linux 2.6.23 以降 あり Completely Fair Scheduler
Solaris あり 多段フィードバックキュー
NetBSD あり 多段フィードバックキュー
FreeBSD あり 多段フィードバックキュー

脚注

編集


(一)^ Stallings 2004, p. 399

(二)^ Stallings 2004, pp. 396, 370

(三)^ Stallings 2004, p. 396

(四)^  (20181012). block: remove legacy IO schedulers. 202371

(五)^ BFQ (Budget Fair Queueing). 202371

(六)^ Deadline IO scheduler tunables. 202371

(七)^ Early Windows

(八)^ Sriram Krishnan. A Tale of Two Schedulers Windows NT and Windows CE. 20127222012719

(九)^ Inside the Windows Vista Kernel: Part 1, Microsoft Technet

(十)^ Mach Scheduling and Thread Interfaces. 2012719

(11)^ CPU monitoring and tuning Archived 2011811, at the Wayback Machine.

(12)^ Molnár, Ingo (13 April 2007). "[patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]". linux-kernel (Mailing list).

(13)^ Efficient and Scalable Multiprocessor Fair Scheduling Using Distributed Weighted Round-Robin

(14)^ Comparison of Solaris, Linux, and FreeBSD Kernels. 2012719

(15)^ abReal-Time Scheduler Scheduling Classes. Oracle (20194). 2020117

参考文献

編集
  • Błażewicz, Jacek; Ecker, K.H.; Pesch, E.; Schmidt, G.; Weglarz, J. (2001). Scheduling computer and manufacturing processes (2 ed.). Berlin [u.a.]: Springer. ISBN 3-540-41931-4 
  • Stallings, William (2004). Operating Systems Internals and Design Principles (fifth international edition). Prentice Hall. ISBN 0-13-147954-7 
  • Stallings, William (2004). Operating Systems Internals and Design Principles (fourth edition). Prentice Hall. ISBN 0-13-031999-6 
  • Information on the Linux 2.6 O(1)-scheduler

関連項目

編集

外部リンク

編集