前回の入門:msyksphinz.hatenablog.com
並列プログラミングに改めて入門するために並行プログラミング入門を読んでみることにした(積読しまくっている)。
引き続き読んでいる。ちょっと飛ばしてタスクのスケジューリングのような問題に対して。 コンテキストスイッチを行うためのアルゴリズムをRustを使って実装するという問題。 Rustを使っても根本的なところは変わっていなくて、要するに現在のコンテキスト(レジスタの内容など)を格納する場所を確保するのと、実際のレジスタ値の退避や格納などを行うアセンブリコードを実装する。 そしてある一定時間がたつと、現在実行中のコンテキストをメモリに退避して、別のコンテキストをメモリから読み取る、ということを行う。
Rustのコードは長いからじっくり読んでいないけれども、やりたいことはなんとなく理解できた。