soon30日でできる!OS自作入門パート5(10日目)いよいよ10日目です。これで大体1/3の進捗ですね。前回はメモリ管理を行いましたがその続きからやっていきます。メモリの確保と解放を繰り返しているうちに連続しない小さな空きがたくさんできてしまうため0x1000バイト単位で確保と解放をする関数を作り管理するようです。その際、0x1000バイト単位に切り上げたり切捨てたりするという話で4Pくらい使っています。ちなみに0x1000バイトは4KBです。重ね合わせ処理10日目のサブタイトルは『重ね合わせ処理』ということでここがこの日のメインとなります。一応おさらいしておくと、マウスを動かした時にステータスバーに触れるとステータスバーが虫に食われたようになってしまっていました。これを解消するための処理です。今回は一緒にウインドウの重ね合わせ処理もやります。いうことでまずどうするかというとレイヤーのようなイメージで管理をするようです。具体的にはウインドウを開くとそれをレイヤー1、マウスはレイヤー2のようにすることで重ねても上手く動作するようにする...ということのようです。ウインドウを開くとメモリを確保し、新規レイヤーを持ってきます。レイヤーは配列になっていて新規レイヤーを使うとその配列のフラグが使用中になり、高さを指定したら配列内でループさせて順番を決める...のような作りです。ソースをみないとなんともわかりづらいですね...。こんな処理をするとめちゃくちゃ重そうです。動作を確認してみると上手く重ね合わせ処理はできていますが、案の定動きが重たいです...。いうことで高速化をしていきます(今回はなかなかボリューミー)ここでは7Pに渡り高速化の説明が書かれています。具体的にはマウスを動かした時の計算範囲を狭めたり、無駄なif文を通らないようにしたりまぁそんな感じです。いう自分の作ったものをより改善していくのが結構面白かったりしますよね。僕は好きです(今回自分は何もしていませんが...)なんやかんやで快適に高速化されてめでたしめでたしでこの日は終了です。10日目の終わりにソースは付属のCDに全てついているのでいつでも自分で動かせるのですが、結局本の中で筆者が苦労して改善したものをただ持ってくるだけなのでどうもソースを持ってきて動かそうという気になりません。内容は難しいので本を読んでいるだけでも勉強になるのですが、実際にOSが出来上がってくる後半か完成したくらいに実際に動かして自分で改良してみたいと思います。C言語なんでその辺も勉強しなければいけないのですが...。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスサイトプロフィールsoon地方で常駐プログラマとして働いています。グーグルアドセンス」を利用しています。広告配信事業者は、ユーザーの興味に応じた広告を表示するためにCookie(クッキー)を使用することがあります。Google」をご覧ください。