ソフトウェア

17歳の学生が独学で「どのようにCPUがプログラムを動かすのか」を調査し詳細に解説するページを作成


コンピューターの頭脳ともいえるCPUが、どのようにプログラムを実行するのかについて、17歳のエンジニアであるレクシー・マティック氏が、独学で調べた知識を解説したウェブページを公開しています。

Putting the "You" in CPU
https://cpu.land/


「プログラムを実行するとどうなるか」について疑問を抱いていたマティック氏は、独学での学習を始めたものの、OSやCPUがどのように機能するかについて詳細かつ適切に解説するサイトは見つからなかったそうです。そこでマティック氏は、「自分自身で本当に良い学習リソースを作るべきだ」と考え、解説ページの作成に取り掛かりました。

PCでプログラムを実行する際、CPUは命令を順番に実行していく必要があります。しかし、CPUプロセッサは、一度に複数のプログラムを実行することができません。そこで、OSの中核を担うカーネルが、タイマーを使って多数のプログラムの中からプロセッサに割り当てるべきタスクを選択します。その結果、CPU内でプログラムは首尾一貫した孤立したユニットとして実行されていると見なされ、処理が進みます。

コンピューターを起動させると、カーネルはinitプログラムを起動します。initプログラムは、コンピューターのグラフィック環境をレンダリングするプログラムを起動し、その後、さらなる別のソフトウェアの起動を担当します。


別のプログラムを起動するためには、「forkシステムコール」を使って、プロセスのコピーを作成する必要があります。作成されたコピーは、メモリページがすべてコピーオンライト(COW)を導入しており、物理RAM内にメモリをコピーする必要がないため、非常に効率的だとされています。

initプログラムや、別のプログラムの起動プロセスにおいても、自分がforkシステムコールを用いてコピーされたプロセスであるかどうかのチェックが入ります。コピーされたプロセスだと確認された場合、「exec」と呼ばれるシステムコールを用いて、カーネルに現在実行中のプロセスを新しいプログラムで置き換えるように要求します。

置き換えられた新しいプログラムは「Executable and Linkable Format(ELF)」と呼ばれる実行ファイル形式に変換され、カーネルはそのプログラムをロードする方法と、新しい仮想メモリ内のどこにコードとデータを配置するかについての情報を見つけるために、ELFファイル内を解析します。プログラムが流動的にリンクされている場合、カーネルはELFファイルを適切に変換することもあるとされています。


その後、カーネルはプログラムの仮想メモリ内をロードし、該当プログラムを実行したまま、カーネル以外のOSが動作するのに必要な、ファイルシステムやファイル操作コマンドを実行する、ユーザーランドに戻ることが可能になります。マティック氏は、「この動作はCPUの命令ポインターを仮想メモリ内の新しいプログラムにおけるコードの先頭に設定すること」と述べています。

マティック氏によると、プログラムとCPUに関する正確な解説ページを作成するために、詳細な研究と推敲(すいこう)を3カ月にわたって繰り返したとのこと。解説ページの作成にあたっては、ChatGPTが使われましたが、マティック氏は「ChatGPTは私にたくさんウソをつき、ほとんどの情報は役立ちませんでした。しかし、一部の情報は問題の解決に非常に役立ちました」と述べ「大規模言語モデルの限界を認識しており、AIが間違った情報を生成することを知っている場合、ChatGPTはプラスに働く可能性があります」と述べています。


マティック氏に対しては「正確に記述された素晴らしい学習リソースです」との称賛の声が上がっています。これに対しマティック氏は「この解説を作成することで、自身の思考プロセスが明確になり、最初は理解したと思っていてもまだ理解ができていなかった部分の特定に非常に役立ちました」と反応しています。

マティック氏は「この解説を読んで、楽しんでいただければ幸いですし、誰もがCPUやプログラムについて学ぶことができるオンラインリソースになることを願っています」と述べています。

この記事のタイトルとURLをコピーする

・関連記事
「CPU」「GPU」「NPU」「TPU」の違いを分かりやすく説明するとこうなる - GIGAZINE

CPUやGPUに代わって「FPGA」がコンピューティングの主役に躍り出る可能性はあるのか? - GIGAZINE

1万種類を超える大規模言語モデル(LLM)をまとめてダウンロード数や類似性などを分かりやすく視覚化したデータライブラリが公開される - GIGAZINE

非ECCメモリを使った結果データが破損したという体験談 - GIGAZINE

PC起動時に動作するBIOSに取って代わる「UEFI」とはいったい何なのか? - GIGAZINE

in ソフトウェア, Posted by log1r_ut

You can read the machine translated English article here.