Linuxのプロセススケジューラのしくみ その1 時分割によるスケジューリング

842515eaf8fbb2dfcc75197e7797dc15?s=47 Satoru Takeuchi
August 23, 2020
43

Linuxのプロセススケジューラのしくみ その1 時分割によるスケジューリング

以下動画のテキストです。
https://youtu.be/b924MxEt42Q

842515eaf8fbb2dfcc75197e7797dc15?s=128

Satoru Takeuchi

August 23, 2020
Tweet

Transcript

  1. Linuxのプロセススケジューラのしくみ その1: 時分割によるスケジューリング Aug 23th, 2020 Satoru Takeuchi Twitter: satoru_takeuchi,

    EnSatoru 1
  2. Linuxのプロセススケジューリング • 1つのCPU上で実行可能プロセスが複数個あれば所定の時間づつ実行させる ◦ いわゆる時分割によるスケジューリング ◦ この「所定の時間」を「タイムスライス」と呼ぶ CPU上で動作 するプロセス n=1

    n=2 n=3 同上 同上 P0 P0 P1 P0 P0 P1 P2 P0 P1 2 時間
  3. 実験 • 目的 ◦ Linuxのスケジューラが時分割によるスケジューリングをしていることを確かめる • 実験プログラムsched.cの概要 1. 1つのCPU上で無限ループするプログラムを 1~4個同時に100ミリ秒間動かす

    2. 各プログラムはCPUを1ミリ秒使うごとに次の情報を記録する ▪ プロセスの番号 ▪ プログラム開始時からの経過時間を記録 3. 100ミリ秒経過後に全プログラムについての記録を出力 3
  4. sched.cの動作イメージ(n=2, タイムスライス=2ミリ秒) P0 P1 P0 P1 経過時間(ミリ秒) 0 2 1

    3 5 4 6 8 7 記録 記録 記録 記録 記録 記録 記録 記録 測定終了 図示 経過時間(ミリ秒) 4 P1 P0 0 1 2 3 4 5 6 7 8 1ミリ秒の精度では 順番に実行している プロセス 経過時間 P0 1,2,5,6 P1 3,4,7,8
  5. 結果(n=1) • p0が動き続ける 5 0

  6. 結果(n=2) • P0とP1がおおよそ同じ時間づつ交互に動く 6 0 1 タイムスライス

  7. 結果(n=3) • P0~P2がおおよそ均等な時間づつ動作 7 0 1 2

  8. 結果(n=4) • P0~P3がおおよそ均等な時間づつ動作 8 0 1 2 3

  9. 疑問 • nが増えるとタイムスライスが短くなってるような…? 9 0 1 0 1 2 0

    1 2 3
  10. 今回はここまで • まとめ ◦ Linuxのスケジューラは時分割式 ◦ 実際にそうなっていることを実験で確認した • 「Linuxのプロセススケジューラのしくみ」次回予告 ◦

    タイムスライスはどう決まるのか 10