コンテンツにスキップ

スケジューリング

出典: フリー百科事典『ウィキペディア(Wikipedia)』

: scheduling Quality of Service 



 - 


 - 

 - 

/ - CPU





[?]

[]


3

[]


I/OCPUI/OCPURTOS[1]



CPU

[]


退[2]

使使

[]


CPUCPUI/O/[3]

[]


CPU1CPU





CPU


[]


CPU/

使

FIFO[編集]


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[]


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[]

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

関連項目[編集]

外部リンク[編集]