ビットの並びから、arm64 アセンブリ・キャッシュ・ページング・fork と exec・スレッドと排他制御・ファイルディスクリプタとバッファリングまで。全30レッスンで「遅い・落ちる・数が合わないの原因を、自分で測って突き止められる」ところまで進みます。アドレスも実行時間もアセンブリも、すべて実際に走らせた出力を載せています。
全30レッスンを6つの章に分けています。第1章から順に進めるのがおすすめですが、 気になるところだけ拾い読みしてもかまいません。 ※ C・アセンブリ・シェルはブラウザ内で実行できないため、手元のターミナルで試してください。本文の出力は Apple M1 Max(arm64)・macOS・clang 21 での実測値です。アセンブリは arm64 で、x86-64 とは命令名が違いますが考え方は同じです。ビット演算や浮動小数点の回は、ブラウザでそのまま動く Python も置いてあります。
0 と 1 の並びが、整数にも小数にも文字にもなるところを、実際のメモリのバイト列で確かめます。エンディアン・桁あふれ・浮動小数点・UTF-8 を、すべて手元の機械の出力で見ていきます。
書いた C が、どんな命令の並びになるのかを clang -S で取り出して読みます。レジスタ・分岐・関数呼び出し・最適化・分岐予測・システムコールまで、arm64 の実物で進みます。
アドレスを印刷して、コード・ヒープ・スタックの地図を描きます。キャッシュとページングの効き方を実測し、最後は mmap でファイルをメモリとして読みます。
fork で 2 つに分かれ、exec で中身が入れ替わるところを動かして確かめます。切り替えの値段を測り、競合状態を実際に起こして、守る方法の値段まで比べます。
ファイルディスクリプタがただの番号であることから始めて、バッファリングの 25 倍の差を測ります。最後は dup2 でシェルのパイプラインを自分で組み立て、1 本のスレッドで複数を待つところまで進みます。
カーネルが何を守っているのかを、止められる側から確かめます。コンテナが何を分けているのかを整理し、最後に 30 回ぶんを 1 本の線につなぎます。
ここで見た仕組みをコードで使いこなすなら C 言語入門コース、コマンドでサーバーを触るなら Linux 入門コース、試験の下地として用語を広く押さえるなら IT 基礎入門コース へ。メンバーシップで全コースが解放されます。