RISC-V I(命令セットとレジスタの基礎)
10 問RISC-V の unprivileged ISA 仕様をもとに、命令フォーマットがなぜあの形なのか、即値のビットがなぜ散らばって配置されているのか、x0 がゼロ固定であることが何を可能にするのかを学びます。あわせて ABI レジスタ名と呼び出し規約、lui/auipc によるアドレス生成、jal と jalr の役割分担、RV32I と RV64I の違いと M/A/F/D/C 拡張の位置づけまで、RISC-V 固有の設計判断を追いかけます。
RISC-V II(特権モードとトラップ処理)
10 問RISC-V の特権アーキテクチャ仕様にもとづき、M/S/U の3つの特権モードと、トラップが起きたときに CPU が何を保存し、どこへ飛び、どうやって元に戻るのかを CSR(制御状態レジスタ)の単位で追いかけます。mtvec のベクタ方式、mepc/mcause の中身、mstatus による割り込み許可の退避、mret/sret の復帰動作、satp によるページング設定まで、OS の最下層で必ず触れる仕組みを理解できます。実務でカーネルやブートコードを読むときに「この CSR は何のためにあるのか」が自分の言葉で説明できる状態を目指します。
割り込みとシステムコールの機構
10 問CPUがユーザーモードと特権モードを行き来する仕組みを、RISC-V特権仕様とLinuxのman-pages・カーネル文書に基づいて学びます。ecallとトラップ、mcause/mepc/mtvecの役割、特権スタックの巻き戻し、同期例外と非同期割り込みの違い、システムコールのレジスタ規約、シグナルとEINTR、割り込みハンドラの分割、vDSOによる回避まで扱います。
メモリアロケータの内部
10 問malloc/free がカーネルから memory をもらい、それを分割・再利用する仕組みを学びます。brk と mmap の使い分け、チャンクのメタデータ、アリーナによるスレッド競合の緩和、オーバーコミットまで、glibc の man-page と Linux カーネル文書に基づいて原理を確認します。
カーネル同期プリミティブとメモリモデル
10 問スピンロックのACQUIRE/RELEASE意味論、futexシステムコール、seqlock、RCUの猶予期間、RISC-VのLR/SC・FENCE・aq/rlビット、RVWMOの緩いメモリ順序など、カーネルが並行性を支える仕組みを一次仕様に沿って学びます。
ファイルシステムとブロック層の内部
10 問inodeとディレクトリエントリの分離、ハードリンクと参照カウント、ext4のジャーナリングモード、fsyncとfdatasyncの差、ページキャッシュとO_DIRECT、そしてblk-mqとI/Oスケジューラまで、Linuxのファイルシステムとブロック層が内部でどう動いているかを、man-pagesとkernel.orgの一次資料に基づいて学びます。