soon30日でできる!OS自作入門パート10(15日目1)気がつけば1カ月ほど空いてしまいましたがまだ終わっていません。いうことで続けていきます。今回のサブタイトルは『マルチタスク-1』です。マルチタスクをCPUにさせるには?実はCPUが1つしかなくてもマルチタスクはできているようです。その場合同時に複数のプログラムを動かしているのではなく、忍者の分身の術のようにAのプログラムを少し動かして次にBのプログラムをちょっと動かして...と処理しているようです。なるとこの切り替えを高速にしないと同時に動かしているように見えないですね。このプログラムの切り替えを「タスクスイッチ」と言うようです。CPUにタスクスイッチをしなさいと命令するとCPUはレジスタの値をすべてメモリに書き込みます(後で実行を再開するため)。その後にこれから実行するプログラムのためにメモリから全部のレジスタの値を読み込みます。これで切り替えは完了となります。iomap;};このコードはTSS(タスク状態セグメント)というものでこれをつかってレジスタの内容をメモリに書き込みます。TSSはintが26個集まったもので全部で104バイトです。1行目はタスクの設定に関する内容、2行目は3bitのレジスタ、3行目は16bitのレジスタです。4行目のldtrとiomapは1行目と同じくタスク設定に関する部分です。タスクスイッチしてみるということでタスクスイッチをしてみます。タスクAとタスクBを準備してAからBへ切り替えます。TSSを二つ作る必要があります。メインクラスにTSSの呼び出しを書き、ldtrとiomapに適当な値を代入します。AR_TSS32);ここまで出来たら実際に切り替えをします。続きは次回マルチタスク-1はここでまだ半分です。手強いので15日目は2つにわけたいと思いますので今回はここまでです。3入門』を読んで次の記事:『達人プログラマー』を読んで。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスサイトプロフィールsoon地方で常駐プログラマとして働いています。グーグルアドセンス」を利用しています。広告配信事業者は、ユーザーの興味に応じた広告を表示するためにCookie(クッキー)を使用することがあります。Google」をご覧ください。