[OS自作] 性能比較時にMacのQEMUで実行した時にカクカクする(16日目)

30日でできる! OS自作入門
[30日でできる!OS自作入門](https://tatsu-zine.com/books/make-your-own-os-in30days">30日でできる! OS自作入門)の16日目、サンプルコードが動作しなくなりました。 実際には動作するのですが、マウスポインタの動作がカクカクするし、画面もリフレッシュされていません。 前回からの差分を確認してみると、性能比較のために無限ループでカウンターをひたすらインクリメントしています。その辺りが原因ではないかと調べて見たところ、どうやらio_cli()すると割り込みをキャッチできないようです。 代わりにio_stihlt()を行えば、サクサク動作するOSになります。 ### 動作させるコード ```c `gutter:true; void task_b_main(struct SHEET *sht_back) { 中略 for (;;) { // count++; io_cli(); if (fifo32_status(&fifo) == 0) { // io_sti(); //代わりにstihltを行う io_stihlt(); } else { i = fifo32_get(&fifo); ``` 以後、harib11[abcde]で同様の変更をしないと動作しないと思います。 ### 考察 cliとstiの間が速すぎて割り込みをキャッチできていないようです。 (io_sti()の後に何か表示させるコードを追加すると期待した動作になるので) 同じ問題は今後も出てくると思うので、つど修正して確認したいと思います。

0 件のコメント :

コメントを投稿