【OS】タイムスライスとは
はじめに
1つのCPUコアは一度に1つのことしかできないのに、あたかも複数のプログラムが同時に動いているように見せることができます。これは「タイムスライス」という技術によって実現しています。
本記事では、タイムスライスについて、わかりやすく解説していきます。
タイムスライスとは
タイムスライスとは、OSがCPUの実行時間を小さな「時間の切り身」(スライス)に分割し、それらを順番に異なるタスクに割り当てる仕組みです。
例えば、1つのCPUコアで動作している場合、OSは「タスクAに10ms、タスクBに10ms、タスクCに10ms…」というように、非常に短い時間単位で実行するタスクをローテーションさせます。
この切り替えが速ければ、人間にはすべてのタスクが同時に進行しているように感じられます。
タイムスライスの仕組み
このタイムスライスという仕組みを、OSは「タイマー割り込み」という仕組みを使って実現しています。
コンピュータ内部には高精度のタイマーが搭載されており、設定した時間間隔(例えば10ミリ秒ごと)でCPUに割り込み信号を送ります。この割り込みが発生すると、CPUは現在実行中のタスクを一時停止し、制御をOSに戻します。OSはこの機会を利用して、次に実行すべきタスクを選び、CPUの実行権をそのタスクに引き渡すのです。
タイムスライスの長さ
タイムスライスの長さ(クオンタムサイズとも呼ばれます)は、OSのパフォーマンスに大きな影響を与えます。一般的に、この長さは数ミリ秒から百ミリ秒程度の範囲で設定されますが、これは慎重に選ばれた値です。
短すぎるタイムスライス(例えば1ms)は、タスクの切り替え(コンテキストスイッチ)のオーバーヘッドが相対的に大きくなりすぎるため、システム全体の効率が低下します。逆に長すぎるタイムスライス(例えば100ms)では、ユーザーが操作するアプリケーションの応答性が悪くなり、「カクカクする」と感じるようになります。
優先度とタイムスライス
すべてのタスクが平等に同じ長さのタイムスライスを受け取るわけではありません。OSはタスクの「優先度」に基づいて、より重要なタスク(例えばユーザーが直接操作しているアプリケーション)に長めのタイムスライスを割り当てたり、より頻繁に実行する機会を与えたりします。
例えば、バックグラウンドでファイルをコピーしているタスクよりも、ユーザーが操作しているWebブラウザのタスクの方が高い優先度を持ち、より多くのCPU時間を得られます。
マルチコアプロセッサ時代のタイムスライス
現代のCPUはほとんどが複数コアを備えていますが、タイムスライスの重要性は変わりません。各コアが独立してタスクを実行できるため、理論的にはコア数分のタスクを同時に実行できます。
しかし、実行待ちのタスク数は通常コア数よりはるかに多いため、各コア上でタイムスライスによるタスク切り替えが依然として必要です。
さらに、マルチコア環境では、OSはタスクをコア間で適切に分散させる「負荷分散」も行わなければなりません。
おわりに
コンピュータで複数のアプリケーションを同時に使っているとき、その背後で何百回ものタイムスライスの切り替えが行われていることを想像してみてください。目に見えないほど短い時間の積み重ねが、私たちに「コンピュータは複数のことを同時にこなせる」という錯覚を与えています。
最後までお読みいただき、ありがとうございました。
参考・画像引用元URL
Discussion