{"id":18650257,"url":"https://github.com/zuki/os_from_zero","last_synced_at":"2026-01-26T03:02:43.184Z","repository":{"id":149401896,"uuid":"351009883","full_name":"zuki/os_from_zero","owner":"zuki","description":"「ゼロからのOS自作入門」実習記録","archived":false,"fork":false,"pushed_at":"2021-05-11T00:04:17.000Z","size":12478,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-17T21:06:09.668Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zuki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-24T08:55:16.000Z","updated_at":"2024-11-11T10:28:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"ba1e7474-9ae7-4cde-9096-af1c1d5c9a9b","html_url":"https://github.com/zuki/os_from_zero","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zuki/os_from_zero","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zuki%2Fos_from_zero","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zuki%2Fos_from_zero/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zuki%2Fos_from_zero/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zuki%2Fos_from_zero/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zuki","download_url":"https://codeload.github.com/zuki/os_from_zero/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zuki%2Fos_from_zero/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28765571,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T02:25:41.078Z","status":"ssl_error","status_checked_at":"2026-01-26T02:24:28.809Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T06:43:05.195Z","updated_at":"2026-01-26T03:02:43.165Z","avatar_url":"https://github.com/zuki.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 「ゼロからのOS自作入門」自習メモ\n\n## [Linuxでの開発環境の構築](src/day00.md.md)\n\n## [第1章: PCの仕組みとハローワールド](src/day01.md)\n\n- バイナリ入力によるhello world\n- UEFIアプリによるhello world\n\n## [第2章: EDK II入門とメモリマップ](src/day02.md)\n\n- EDK IIを使ったUEFIアプリによるhello world\n- UEFI機能を使ったメモリマップの取得\n\n## [第3章: 画面表示の練習とブートローダ](src/day03.md)\n\n- カーネル(Cプログラム）作成\n- ブートローダ（UEFIアプリ）作成\n  - ブートローダからカーネルを呼び出して実行\n  - ブートローダからカーネルへ引数を渡す\n- フレームバッファ（ブートローダで用意してカーネルに渡す）を使ったピクセル描画\n\n## [第4章: ピクセル描画とmake入門](src/day04.md)\n\n- 配置newによるメモリ確保\n- ブートローダの改良（LOADセグメントの選択ロード）\n\n## [第5章: 文字表示とコンソールクラス](src/day05.md)\n\n- フォントの描画原理\n- printk()\n\n## [第6章: マウス入力とPCI](src/day06.md)\n\n- USBホストドライバ(xHC)、マウスデバイスドライバ(HIDマウス）の導入（説明なし）\n- PCIデバイスの解説（PCIデバイスリストの作成）\n- xHCの使用法\n\n## [第7章: 割り込みとFIFO](src/day07.md)\n\n- X86_64割り込みの解説\n- FIFO(queue)の実装（イベントキューとして使用）\n\n## [第8章: メモリ管理](src/day08.md)\n\n- カーネルによるメモリ管理（スタック、セグメンテーション設定、ページング）\n\n## [第9章: 重ね合わせ処理](src/day09.md)\n\n- sbrk()の実装によるNew演算子の実現\n- レイヤー導入\n- シャドウバッファによる高速化\n- memcpy()による高速化\n\n## [第10章: ウィンドウ](src/day10.md)\n\n- ウィンドウの作成\n- intersection領域の更新による高速化\n- バックバッファによる画面のチラツキ防止\n- ウィンドウのドラッグ\n\n## [第11章/第12章2節: タイマとACPI](src/day11.md)\n\n- タイマ割り込みを実現\n\n## [第12章: キー入力](src/day12.md)\n\n- USBキーボードドライバの作成\n- キー押下イベントの処理\n\n## [第13章: マルチタスク (1)](day13.md)\n\n- コンテキストスイッチ\n- プリエンプティブマルチタスク\n\n## [第14章: マルチタスク (2)](day14.md)\n\n- SleepとWakeup\n- タスク優先度を導入\n\n## [第15章: ターミナル](src/day15.md)\n\n- ウィンドウ描画を専用タスクで行う\n- アクティブウィンドウ機能\n- ターミナルを作成（入力機能はまだない）\n\n## [第16章: コマンド](src/day16.md)\n\n- ターミナルに入力機能を追加\n- `echo`, `clear`, `lspci`コマンドを実装\n- コマンド履歴機能を実装\n- TaskBを削除\n\n## [第17章: ファイルシステム](src/day17.md)\n\n- UEFIの機能でボリュームデータをメモリに読み込んで使用する\n- FAT32の仕様書の解説\n- lsコマンドを実装\n\n## [第18章: アプリケーション](src/day18.md)\n\n- ファイルからアプリケーションを呼び出して実行\n  - アセンブリ言語による\n  - C言語による（ライブラリ関数を自作）\n  - C言語による（標準ライブラリを使用）\n\n## [第19章: ページング](src/day19.md)\n\n- アドレス変更\n  - 仮想アドレスの物理ページへの変換\n  - 4階層ページング\n- アプリケーション（高位アドレスに配置）のロード・実行\n  - アプリケーション実行でシステムがリセットする問題発生\n  - lldbによるデバッグ\n\n## [第20章: システムコール](src/day20.md)\n\n- ユーザ権限のセグメントの作成、ユーザスタックの割当\n- TSSによるカーネルスタックの設定\n- 例外ハンドラの設定によるデバッグ出力\n- MSRを介したシステムコールの実現\n\n## [第21章: アプリからウィンドウ](src/day21.md)\n\n- newlibを使うためのグルー関数とシステムコール\n- アプリケーションからカーネルに戻るExitシステムコール\n- アプリケーションからWindowを開き、文字を描くシステムコール\n\n## [第22章: グラフィックとイベント (1)](day22.md)\n\n- 画面に線を描画するアルゴリズム\n- 大量描画を最適化する方法\n- システムコール時にOS用スタックに入れ替える方法\n\n## [第23章: グラフィックとイベント (2)](day23.md)\n\n- マウス入力、キーボード押下の取得\n- タイマ作成システムコール\n- eye, paint, timer, アニメーション、ブロック崩しアプリケーションの作成\n\n## [第24章: 複数のターミナル](src/day24.md)\n\n- アプリ専用の階層ページング機構を用意して複数アプリの同時起動を可能にする\n- ターミナルに表示フラグをもたせてターミナルなしにアプリを起動する\n- アプリが例外処理を行った場合に終了させる。\n\n## [第25章: アプリでファイル読み込み](src/day25.md)\n\n- ディレクトリ操作を可能にする\n- fopen, freadの実装（open, readシステムコールの実装）\n\n## [第26章: アプリでファイル書き込み](src/day26.md)\n\n- ファイルディスクリプタを抽象化し、stdin, stdout, stderrを実装\n- fwriteの実装（writeシステムコールの実装）\n\n## [第27章: アプリのメモリ管理](src/day27.md)\n\n- デマンドページングの実装\n- メモリマップトファイルの実装\n- コピーオンライトの実装\n\n## [第28章: 日本語表示とリダイレクト](src/day28.md)\n\n- FreeTypeを使い、日本語TrueTypeフォントを表示する。\n- Printの出力先をfdとし、リダイレクト機能を実装（出力のみ）\n\n## [第29章: アプリ間通信](src/day29.md)\n\n- パイプの実装\n\n## [第30章: おまけアプリ](src/day30.md)\n\n- 各種アプリの実装\n- 閉じるボタンの実装\n\n## [Macでの環境構築](src/mac.md)\n\n## [MikanLoaderPkg](src/MikanLoader.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzuki%2Fos_from_zero","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzuki%2Fos_from_zero","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzuki%2Fos_from_zero/lists"}