2020-01-01から1年間の記事一覧
2020 年を振り返ってみると、色々と検討した結果もう Rust を勉強するしかないなー ということになって春ごろから Rust の勉強を開始、そして myos の開発が始まりました。 さて、およそ半年開発を続けてきた「myos」ですが、 「私の OS」ってなんやねーん …
さいきん変な OS が発表されたっぽいです。 basicdos.com 2020 年になって DOS !!! ぼくはこういうソフトを見つけた時に、普通の人とはちょっと視点で見てしまいます。 このソフト、ぼくの自作エミュレータで動くのかな? バイナリないナリ ということで、ま…
さいきん Rust の基本戦略をやっと完全に理解しました。 オブジェクトはスタックに割り当てます。(スタックポインタを減算するだけ) 所有権とライフタイムによってオブジェクトの生存期間が関数の生存期間を超えないように制御します。 関数を抜けたらスタ…
最近 myos の開発していて気になったことがあります。 myos のスケジューラーをほとんどいじってないのに今まで見たことない不審な動きをするようになったんですよ そういえば、開発用の Mac を Intel から Apple に買い替えました。 そして、現状 Apple Mac…
飲食店のテーブルには謎のボタンがついていることがあります。 お店の中のものを勝手に触ると怒られますが、謎のボタンを押すと店員さんがやってきていろいろなサービスを受けることができます。 これって何かに似てませんか? 前回は WebAssembly のランタ…
myos の開発をはじめておよそ半年が経ちました。 前回の続き 前回の日記より実装も進歩してはりぼて OS でできることの8〜9割程度が myos でもできるようになりましたが、まだいくつか課題があります。 そもそも myos ははりぼて OS ベースではないし、は…
このシリーズの記事は月1くらいで書こうと思ってて前回からそんなに日付も経ってないのですが、 ここ最近で過去最大にいろいろ変わってしまったので前倒しで書くことにします。 initrd 某はりぼて OS では起動時にフロッピーディスクの内容をメモリに転送し…
古代のコンピュータでは1台のコンピュータでひとつのタスクを実行するのが普通でした。*1 現代のコンピュータでは1台のコンピュータで複数のタスクを同時に実行するのが当たり前となり、さらには複数の OS を並列に動かす技術さえあります。 複数のタスク…
前回の日記でひとつ触れ忘れました。 Rust 自作 OS 日記/Part 4 フォントのはなし - 借り初めのひみつきち ベクターフォントのラスターフォントにないもうひとつの利点、 それは描画予定のサイズよりあらかじめ大きいバッファに描画してから縮小して実際の画…
古きよき太古のコンピューターは ROM にフォントを内蔵していたので文字コードを指定するだけで画面に文字を表示することができました。 現代のコンピューターは広大な画面に自由に図形を描画できるようになった代償として文字を表示するためにフォントが必…
いまどきの PC 用 OS では ACPI 対応を避けて通ることができません。 現在、私の OS では以下の ACPI ライブラリを利用しています。 GitHub - rust-osdev/acpi: Rust library for parsing ACPI tables and AML ACPI には様々なテーブルがありますが、このラ…
最近の大きな変更点は、カーネルとブートローダーを分離しました! UEFI の便利なところはカーネルを直接起動できるところです。 一方、カーネルに UEFI のコードが含まれることによる問題も少なからずあるので、 ブートローダーを分離することになりました…
以前書いた日記の続きになります。 neriring.hatenablog.jp Rust ではさまざまなターゲットがあり、比較的容易にクロスコンパイルできます。 一方 UEFI も PC に依存しないように設計されていて、 x86 系とは全く別のアーキテクチャである ARM 系 CPU などに…
EFER.LME と EFER.LMA をご存知ですか? これらのフラグは x64 CPU でロングモードの遷移に関わるフラグです。 では、2つのフラグの役割の違いをご存知ですか? ロングモードの遷移 ロングモードの遷移についておさらいしてみましょう。 *1 まずは、 CR0 レ…
前回の日記からまた間が空いてしまったので進捗をば。。 最近多忙につき、あまり開発時間が取れてないですが、 ウィンドウシステムっぽいものを実装始まりました ちなみに以前作ってたアレがこんな感じ まるで進化してない 見た目はだいぶそれっぽいになりま…
前回の日記でお察しかと思いますが、さいきん Rust + UEFI で OS がどのくらい作れるのか検証していました。 TL; DR 結論から言うとマルチスレッドが動く程度までは動いて、今後も継続して開発していこうと思います。(๑╹ω╹๑ ) Rust で OS Rust 特有の苦労し…
2020-12-23: cargo xbuild が不要になったので一部修正しました。 さいきん Rust のべんきょうはじまりました! github.com Rust とは 安全に低レベルプログラミングができるナウい言語っぽいです。 メモリ管理が厳しいので初学者はコンパイルを成功させるだ…
自作PCエミュレーターの進捗です。GitHub - neri/vpc: A PC Emulator implemented by WebAssembly はりぼてOS 前回投稿時点では 起動画面が出るところまでの動作でそれ以降の動作は不安定になってましたが、その後の改良で現在ではほとんどのアプリが動くよ…