技術日誌

DB,Java,セキュリティ,機械学習など。興味のあることを雑多に学ぶ

OS

30日OS自作本21日目

OS

21日目の内容です。セグメントやメモリの復習が多めです。 hariboteOSのメモリマップ メモリに直接データを書き込むなどの危険行為を行なっているので、念のためどこらへんを潰しているのか分かり易くするために復習です。p171から引用したデータを元に作成…

30日OS自作本20日目

OS

20日目は1文字を表示するAPIを作りました。これでOSに配備したアプリケーションからOSの機能を呼び出すことができます。 API 引数を扱う専用の処理を呼び出す 引数専用の処理でスタックに引数をつむ 23bitレジスタ,16bitレジスタ,8bitレジスタ復習(EAX,AL等)…

30日OS自作本18日目

OS

細かいコンソールの修正といくつかのコマンド(mem,cls,dir)を作る内容でした。 動画 www.youtube.com 文字列を比較する string.hで定義されているstrcmpを使用します。 arr[0] == "t" && arr[0] == "s" && arr[2] == "t" これが strcmp(arr,"tst")==0 こんな…

30日OS自作本17日目

OS

17日目の内容です。 www.youtube.com ソースの動作具合 13章目以降初めて全てのソースが動作しました。16日目は全滅だったので非常に嬉しいです。ただしGUIは若干もたついており遅延があるような気がします。タイミングがシビアなアクションゲームなどはでき…

30日OS自作本16日目

OS

16日目の内容です。 タスク管理の機構を強化するような内容です。 タスク管理 15日目でハードコードされた部分を無くします。タスクも構造体の配列で管理するようにします。 #define MAX_TASKS 1000 /* 最大タスク数 */ //前回から引き続き登場task state se…

30日OS自作本15日目

OS

15日目はマルチタスク(タスクスイッチ)をやりました。 マルチタスクp290~310 タスクスイッチ 保存するレジスタ等の内容 JMP命令とEIPレジスタ JUMP命令のnearモードとfarモード 実行イメージ 動画 感想 マルチタスクp290~310 CPUは複数のタスクを同時に実行…

30日OS自作本14日目

OS

14日目の内容です。 内容としてはGUI機能をさらに強化する感じです。 Windowが動くようになりました(不完全) 画面が高解像度になりました。 キーボード入力に対応した文字が表示できるようになりました。 GUIは結構進みましたが、まだまだ改善の余地を感じさ…

30日OS自作本13日目(詰む)

OS

13日目のソースは harib10a:文字列表を簡単に(文字列表示のヘルパー関数を作る) harib10b:FIFOバッファを見直す(タイマーのFIFOを統合する) harib10c:性能を測定してみる(パフォーマンス測定用のカウンターの導入) ですが、harib10cのソースが正常に動作しま…

30日OS自作本12日目

OS

12日目はタイマーです。 www.youtube.com タイマーとは?その必要性は? タイマーがないと定期的に or 何秒後にXXするという処理を作りにくい タイマーがなくても一応実現できる。 ただしCPUのクロックに依存したコードを書く必要がある 各命令や関数が何ク…

30日OS自作本11日目

OS

11日目はついにWindowを作ります。 Windowのハローワールド的なもの ウインドウ ウインドウの作り方です。簡単にコメントで補足してみました。 struct SHEET *sht_win; unsigned char *buf_win; /*リソース確保*/ sht_win = sheet_alloc(shtctl); //シート b…

30日OS自作本10日目

OS

10日目はGUIの改善を行いました。これにより、下のバーをマウスが破壊する現象がなくなりました。 GUIの改善。マウス以外の恩恵を感じられるのは11日目から、な気がします。 day9までのGUIの課題 画面再描画の方法 画面描画の改善 感想 day9までのGUIの課題 …

30日OS自作本9日目

OS

30日OS自作本9日目 9日はメモリ管理です。 BIOSからメモリの情報を取得する方法(失敗) https://stackoverflow.com/questions/39024754/how-to-get-ram-size-bootloader https://wiki.osdev.org/Detecting_Memory_(x86)#Manual_Probing http://softwaretechni…

マウス(PS2)の割り込みについて

OS

8章終了時にマウスが動いている仕組みがイメージできなかったので 5〜8章で割り込みついて書いてるところを自分なりにまとめました。 PICの設定の初期化 IDTの設定 IDTに割り込みハンドラを登録する 割り込みの発生、割り込みハンドラの呼び出し 割り込み…

30日OS自作本8日目

OS

8日目の内容になります。 前回マウスを動かすための割り込み処理を完成させたので、 受信したデータを使ってマウスカーソルを動かす内容になります。 祝マウス初動作。灰色のバーはマウスが通った後再描画されないのでグチャグチャ 動画 マウスの受信データ…

30日OS自作本7日目

OS

7日目は6日目で作った割り込みを少しカスタマイズしました。 マウスからの入力が感知できるようになりましたが、まだ動かす部分は作っていません。 7日目終了時の画面。表示されているデータの左側がキーボード、右側がマウス入力のもの 割り込み処理の中身…

30日OS自作本6日目

OS

6日目は割り込みハンドラの実装&呼び出しを行った。 キーボード入力に反応.マウスはまだ動かない. GDTの仕組み GDTRという48ビットのレジスタにGDTを配置した番地(開始地点)とリミット(開始地点からどこまでGDTか)を書き込む GDTRの最初の2バイトはリミット…

30日OS自作本5日目

OS

5日目は文字とマウスカーソルの表示をやりました。 VRAMにマウスカーソルとフォントを書き込んだ。マウスカーソルはまだ動かない 文字をどう扱うか 文字を配列のインデックスに利用する マウスカーソルを動かすためにはセグメンテーションと割り込みが必要。…

30日OS自作本4日目

OS

今日はこの辺までできた。 画面描画周りの色々 で結局画素の位置との対応は? 配列とポインタ 配列のインデックスはアドレスの加算として表現されている C言語でなんでもできるわけではない おまけ(失敗) 感想 画面描画周りの色々 day3から引き続き、ビデオ…

30日OS自作本3日目

OS

なんかすごく低レイヤー臭が強まったdayでした。 フロッピーの容量は次のように決まる ESとBXレジスタを使ったバッファアドレスの決まり方 BIOSとのお別れ 新しく知ったこと gccはgasというアセンブリ用のソースを出力する objファイルのobjectは目的、の意…

実家にフロッピーとドライブがあったのでOSを書き込んでブートしてみた(失敗)

OS

たまたま見つかったフロッピーと格闘した記録です。 実家にフロッピー&ドライブあったんで自作os本のサンプル焼こうと思ったらエラー発生。 pic.twitter.com/Vy3Pnlyz4Z— yuyabu (@yuyabu2) May 4, 2018 ディスクエラーなら別の試せばいいか。もう4回遊べる…

30日OS自作本2日目

OS

ちょっと詰まっても読み進めれば解決することがわかりました。 helloos.nas のコメント部分が文字化けしてしまいました。 よくわかんないこと ORG アセンブラとバイナリ(DBで書き込んだ16進数)との対応(解決) ラベルとアドレスの対応(解決) nask以外のツール…

30日OS自作本1日目

OS

macOS High Sierra 10.13.4でやっています こちらのサイトを大いに参考にしています GitHub - sandai/30nichideosjisaku: 『30日でできる! OS自作入門』川合 秀実氏(著)のMacOSX開発環境を整えることができます バイナリエディタ 推奨の通り0xEDを使います …

「30日でできる! OS自作入門」の最初のOSブートまでの環境構築をmacOS High Sierraでやる

30日でできる! OS自作入門作者: 川合秀実出版社/メーカー: 毎日コミュニケーションズ発売日: 2006/03/01メディア: 単行本購入: 36人 クリック: 735回この商品を含むブログ (299件) を見る きっかけTuring Complete FM Turing Complete FM のゲストのるくすさ…