エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
最初に読むならスケジューラ周りかなと、まずはタイマー割込みの扱いから追っかけることにする。 普通の... 最初に読むならスケジューラ周りかなと、まずはタイマー割込みの扱いから追っかけることにする。 普通のマルチタスクOSはプロセスプリエンプションを提供している。つまり、10ミリ秒周期とかでタイマ割込みを発生させて、プロセスを切り替える(ためにスケジューラを呼び出す)。本物のx86であればi8253とかが割込み源になるが、9vxはユーザプロセスでありハードウェアを直接叩くわけにはいかないし、その必要もないので、シグナルで代用する。割込みコンテキストがシグナルコンテキストで実行されると考えればよい。 9vx/vx32.cのsetclock()を見ると、setitimer()関数を使っていることがわかる。ITIMER_VIRTUALなので、プロセスの仮想時間で25ミリ秒*1経過すると、SIGVTALRMが発生する。 static void setclock(int start) { struct i