Linuxは複数のプロセスを同時に実行できるマルチタスクOSです。第2回目で紹介したように,プログラムはプロセスという単位で管理されており,それぞれが独立したメモリー空間を持つことで複数のプロセスが干渉しないように動作できます。 しかし,通常のパソコンにはプロセッサが1つしか搭載されていませんので,同時に1つのプログラムしか実行できないはずです*1。なぜ,Linuxではマルチタスクを実現できるのでしょうか。その答えはカーネルにあります。 今回は,カーネルがどのようにマルチタスクを実現しているかを解説します。 時分割でマルチタスクを実現 最初にプロセッサがプログラムをどのように実行するかを見てみましょう。 プロセッサの基本構造は至って単純です。プロセッサは「Program Counter(PC)」と呼ばれるレジスタが指し示すメモリー・アドレスから命令を読み込んで実行します。実行後は再度PCの
![第3回 プロセス・スケジューリング](https://cdn-ak-scissors.b.st-hatena.com/image/square/bed39b5962a5d552c95b6d796db8f55e72d32943/height=288;version=1;width=512/https%3A%2F%2Fxtech.nikkei.com%2Fimages%2Fn%2Fxtech%2F2020%2Fogp_nikkeixtech_hexagon.jpg%3F20220512)