オペレーティング システム開発を始めるためのリソースは何ですか?[閉まっている]

StackOverflow https://stackoverflow.com/questions/43180

  •  09-06-2019
  •  | 
  •  

質問

私が常にやりたいと思っていたことの 1 つは、独自のオペレーティング システム (必ずしも Linux や Windows のような派手なものではありませんが、既に開発した単純なブート ローダーよりも優れたもの) を開発することです。

単純な「Hello World」OS を作成する手順を説明するリソースやガイドを見つけるのに苦労しています。

おそらく多くの人が Linux や BSD を勧めるでしょう。しかし、そのようなシステムのコードベースは (おそらく) 非常に大きいため、どこから始めればよいのかわかりません。

助言がありますか?

アップデート:Google を通じてこの投稿にたどり着いた人が理解しやすいように、OS 開発リソースをいくつか紹介します。

その他のリソース:

という名前の素敵なリソースを見つけました マイクOS, 「MikeOS は、単純な OS がどのように機能するかを実証するための学習ツールです。BIOS アクセスには 16 ビット リアル モードを使用するため、複雑なドライバーは必要ありません。」

2008 年 11 月 14 日更新

いくつかのリソースを見つけました フリーバイトとフリー以外のオペレーティング システムに関する Freebyte ガイド OSKit や ExOS ライブラリなどのキットにリンクします。これらは、OS 開発を始めるのに非常に役立ちそうです。

2009 年 2 月 23 日更新

リック東京 推奨 ナノス この中で 質問. 。Nanoos は C++ で書かれた OS です。

2009 年 3 月 9 日更新

Dinah は、OS 開発者を目指す人たちに役立つ Stack Overflow のディスカッションを提供しました。 カスタム オペレーティング システムの作成における障害 OSを開発する際にどのような落とし穴が遭遇するかについて説明し、 OS開発 より一般的な議論です。

2009 年 7 月 9 日更新

LB がリンクを提供しました。 ピントスプロジェクト, 、OS開発を学ぶ学生向けに設計された教育用OS。

2009 年 7 月 27 日更新 (引き続き好調です!)

私はつまずいた オンラインOSコース バークレーからの23の講義を特集。

TomOS のフォークです マイクOS これには、少しのメモリ マネージャーとマウスのサポートが含まれます。MikeOS として、教育プロジェクトとして設計されています。NASM アセンブラで書かれています。

2009 年 8 月 4 日更新

私が見つけたのは、 スライドやその他の資料 上記のバークレーでのオンライン講義と並行して受講できます。

2009 年 8 月 23 日更新

全て osdev タグが付いた質問 スタックオーバーフローについて

OS/161 は、シミュレートされたハードウェア上で実行される、C で書かれたアカデミック OS です。このOSはNachosに似ています。ありがとうノベロクラット!

タングレナが推奨する http://en.wikipedia.org/wiki/MicroC/OS-II, 、組み込みシステム向けに設計された OS。があります コンパニオンブック 同じように。

Linux カーネル開発 by Robert Love は Anders によって提案されました。これは「Linux カーネルに関する内部関係者の見解が広く評価されている」ものです。

2009 年 9 月 18 日更新

ありがとうティム・S。ヴァン・ハーレンが私たちに教えてくれました 宇宙, 、完全に C# で書かれた OS。

tgiphil が語る マネージド オペレーティング システム アライアンス (MOSA) フレームワーク, 、「共通中間言語に基づいたマネージド オペレーティング システムの開発を促進するためのツール、仕様、およびソース コードのセット」。

2009 年 9 月 24 日更新

Steve は、Visual Studio を使用して Windows 上で開発するためのリソースをいくつか見つけました。チェックしてください。 VS 2005 を使用した BrokenThorn のガイドのセットアップ または OSDev の VS セクション.

2012 年 9 月 5 日更新

kerneltrap.org は利用できなくなりました。Linux カーネル v0.01 は次から入手できます。 カーネル.org

2012 年 12 月 21 日更新基本的なOS開発 チュートリアル 学期のプロジェクトとして設計されました。基本コンポーネントを使用して OS を構築する手順を説明します。初心者にとっては非常に良いスタートです。関連している . 。スルジャンさん、ありがとう!

2013 年 11 月 15 日更新

シンプルなオペレーティング システムを最初から作成する. 。ジェームス・ムーアさん、ありがとう!

2013 年 12 月 8 日更新

コンピューターのオペレーティングシステムの作り方 ありがとうディトニ!

2014 年 3 月 18 日更新

ToAruOS GUIを含めほぼスクラッチで構築されたOS

2016 年 9 月 12 日更新

独自のおもちゃオペレーティング システムを作成する

2016 年 12 月 10 日更新

シンプルなオペレーティング システムを最初から作成する (ありがとう@Tyler C)

役に立ちましたか?

解決

この後もリンクがたくさんあります 簡単な概要 X86 プラットフォーム用の OS の作成に関係するものについて説明します。

最も有望と思われるリンク (www.nondot.org/sabre/os/articles) はもう利用できないため、 Archive.org のバージョン それを読むために。

最終的に、ブートローダーはカーネルのマシン コードを取得し、メモリに置き、そこにジャンプします。カーネルには任意のマシンコードを組み込むことができますが、ほとんどの C プログラムは OS を想定しているため、そのすべてが含まれていないことをコンパイラに伝えるか、ブートローダーがその一部を作成する必要があります。

その後、カーネルがすべての面倒な作業を実行します。これが、あなたが望むサンプル カーネルであると思います。しかし、「Hello world」と応答するカーネルから、コマンド インタプリタをロードし、ディスク サービスを提供し、プログラムをロードして管理するカーネルを実現するまでには、長い道のりがあります。

ACM の古い文献にアクセスするには、ACM を購読することを検討してください。80 年代後半から 90 年代初頭の初期のコンピューティング雑誌には、次の方法に関する記事がたくさんあります。 代替OSを作成する. 。この時代の本でも絶版になっているものがあるかもしれません。それらの雑誌の索引 (そのサイトで入手可能 - 雑誌名の近くの「索引」をクリック) を検索し、コピーを持っている人を尋ねることによって、同じ情報を無料で入手できるかもしれません。

最後に、私は usenet が死んだことを知っています (インターネット破滅の預言者はそう言っています) が、当時のゴツゴツした年老いた専門家の多くがまだそこに住んでいることがわかるでしょう。Google グループを検索してください (そこには dejanews の古いリポジトリがあります)。そうすれば、あなたが今尋ねているのと同じ質問を 10 年か 1.5 年前に尋ねている人がたくさん見つかると思います。Linus Torvalds はもともと Linux を開発していたので、助けを求める多くの質問に遭遇することもあります。検索しても何もヒットしない場合は、適切なニュースグループで質問してください (おそらく comp.arch で始まりますが、名前に OS が含まれるものを検索してください)。

他のヒント

ミニックス はるかに小さく、学習目的のために設計されており、 それと一緒に行く本 も良いものです。

アップデート:Minix 3 は少し違う目標だと思いますが、 ミニックス2 (もちろん最初のバージョンも) 教育目的でした。

リアルタイム マルチタスク オペレーティング システムを一から作成した者として...

キーボード デバウンス ルーチン、キーボード ドライバー、ディスク ドライバー、ビデオ ドライバー、ファイル システム、そして最後にブート ローダーです。これは何もせずに初めて起動するだけです。

...ハードウェアに慣れることがいかに重要であるかは、どれだけ強調しても足りません。これは、誰かがすでに用意した原始的なシステムを単に選ぶのではなく、本当にすべてを自分でやりたい場合に特に当てはまります。たとえば、Intel に連絡して、お使いの CPU の種類に応じた CPU カードを入手してください。これにより、「ピン配置」、割り込み、オペコードなど、あらゆるものがレイアウトされます。

ハードウェアがすべてを可能にすることを忘れないでください。ハードウェアを勉強してください。後悔することはありません。

.

マイクロコントローラー OS を作成します。x86 ベースのマイクロコントローラーをお勧めします。最新のOSはまさに 巨大な. 。まずは基本を学びましょう。

独自の OS の開発に関するすべての情報を入手できる場所が 1 か所あればいいのにと思います。それに最も近いのは、 OS 開発ウィキ そして フォーラム. 。これらは、セットアップ、開発、デバイスのハードウェア情報に関する大量の有益な情報を提供します。

また、素晴らしいチュートリアルがいくつかあります ボーンファイド, 私は、による入門チュートリアルを使用しました。 ぬか, 、そして現在、彼の呼び出しに基づいて、より最近のものを見ています。 自分だけのおもちゃを転がして UNIX クローン OS.

2 番目にチェックアウトします:"オペレーティングシステム :設計と実装」

Windows で開発したい場合は、jolson のブログ投稿をチェックしてください。.

編集:Visual Studio を使用した Windows での開発については、次を確認してください。 BrokenThorn のガイド または OSDev のウィキ.

優れたリソースは、MIT コース 6.828 の資料です。オペレーティング システム エンジニアリング。

XV6 - x86 用の ANSI C で書かれたシンプルな Unix 風の教育 OShttp://pdos.csail.mit.edu/6.828/2012/xv6.html

XV6 ソース - 行番号付きの印刷された小冊子としてhttp://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf

XV6 ブック - OS 設計の主なアイデアを説明しますhttp://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

材料はコンパクトです:92ページのソースと96ページの解説。

Minixの本よりも好きです!まさに宝石ですね!

こちらもご覧になってみてはいかがでしょうか シャープOS これは彼らが C# で書いているオペレーティング システムです。

オペレーティング システムの基礎に関する優れたリソースが書籍にあります。新しい OS をゼロから作成するという要求はあまりないので、インターネット上には趣味的な情報はあまり見つかりません。

標準的な教科書である Tanenbaum の「Modern OS」をお勧めします。また、Calingaert の「Operating System Elements」も役に立つかもしれません。これは、設計者の観点から OS とは何かについて大まかに概要を説明した薄い本の概要です。

リアルタイム システムに興味がある場合 (少なくともリアルタイム OS の違いとその理由を理解しておく必要があります)、Labrosse の「MicroC/OS-II」もお勧めします。

編集:

「より技術的な」とは何を意味するのか具体的に教えていただけますか?これらの本には疑似コード実装の詳細が記載されていますが、OS の例や特定のマシン/言語のコード スニペットをお探しですか?

-アダム

別の質問から来ました。言及したいのですが ピントス...Nachos と Pintos を使った OS コースは、x86 上で実行できるものと同じ種類のもののようであることを思い出しました。

Robert Love の Linux カーネル開発は非常に興味深いと思いました。Linux カーネル内のさまざまなサブシステムが非常に現実的な方法でどのように動作するかについて説明します。ソースが入手可能なので、Linux はハッキング対象の最有力候補です。

この議論に組み込む価値のあるその他の Stack Overflow ページを以下に示します。

カスタム オペレーティング システムの作成における障害
x86 アーキテクチャ用のオペレーティング システムの開発

Minix でハッキングを開始します。Linux よりもはるかに小さく (もちろん)、教育目的を念頭に置いて設計されています (少なくとも一部は)。ただし、Minix 3 ではないので、それはまったく別の話です。

すでに答えていますが、私が大学でオペレーティングシステムを受講したとき、初期のLinuxカーネルから始めて、単純化された最新の機能(基本的なファイルシステム、仮想メモリ、マルチタスク、ミューテックス)を追加しました。楽しい。根性の一部を学びながら、プロテクト モードとページ テーブルを使用した非常にクレイジーな低レベルのアセンブリのみの一部をスキップできます。

http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2

学部時代のオペレーティング システムのコースでは、いくつかのサブシステムを構築しました。 OS/161, は、高レベルのサービスを実装する際にさまざまな設計空間の決定を検討する自由を残しつつ、基本の一部を提供する、シンプルな BSD のようなカーネルです。

見てみるのもいいかもしれません Linuxを最初から作成する.

Linux from Scrate(LFS)は、完全にソースコードから独自のカスタムLinuxシステムを構築するための段階的な指示を提供するプロジェクトです。

シンプルかつ基本的なOS開発 チュートリアル 学期のプロジェクトとして設計されました。基本コンポーネントを使用して OS を構築する手順を説明します。初心者にとっては非常に良いスタートです。関連論文は、 ここ.

このリポジトリを含めたいと思います コンピュータ オペレーティング システムの作り方 サミー・ペッセ著。現在作業中です。とても興味深い。

研究対象となるかなり単純な OS の 1 つは、μC/OS です。この本にはソースが入ったフロッピーが入っています。

http://en.wikipedia.org/wiki/MicroC/OS-II

次の Web サイトで、Managed Operations System Alliance (MOSA) プロジェクトを確認してください。 www.mosa-project.org. 。彼らは、C# で AOT/JIT コンパイラーとフルマネージド オペレーティング システムを設計しています。開発者の中には、非アクティブな SharpOS プロジェクトの出身者もいます。

もてあそんでしまった 宇宙, 、「CIL準拠の言語で完全に実装されたオペレーティングシステムプロジェクト」です。それはC#で書かれているので、それは私の路地にありました。オペレーティング システムを構築したことがない私のような人間にとって、「Hello World」オペレーティング システムをすぐに実行できるのは実際、非常に素晴らしいことです。

このサイトをチェックしてください: http://osix.net/modules/article/?id=359

上で述べたように、 OS開発ウィキ は (これまでのところ) OS 開発のための最良のソースです。ドイツ語を話す人にとっては、 lowlevel.eu Wikiもすごいですね。比較的知られていないもの インシタタス OS, 、ユーザー空間アプリの小さなセットを備えたシンプルなカーネル。OS 開発の複雑なトピックに取り組むのに最適です。

モヴィッツ Common Lisp で書かれ、「オンザメタル」で実行される Lisp 環境です。残念ながら、上のいくつかのリンクは、 モヴィッツのメインページ アクセスを拒否しますが、ソース コードをダウンロードしてコンパイルする方法については、 トラックページ. 。また、準備ができたイメージは、のアーカイブで見つけることができます。 このページ.

私見ですが、これは非常に興味深いものです。 Lispマシン 現在利用可能なハードウェアのコンセプト。商業的には失敗しましたが、だからといってそのアイデアが悪かったということにはなりません。

Unix 嫌いのハンドブック 『』は、Unix とその派生概念を半ば真剣に非難する楽しい本です。多くのセクションでは、Lisp マシンの概念がいかに優れているかについて議論しています。

ここに「」という論文があります。シンプルなオペレーティング システムを最初から作成する」。ブートローダーの作成、x86-32 保護モードの開始、C での基本的なカーネルの作成について説明します。全てを詳しく説明するのが上手なようです。

x86 JS シミュレーター そして ARMシミュレータ また、さまざまなハードウェアがどのように動作するかを理解し、お気に入りのブラウザを終了せずにテストを行うのにも非常に役立ちます。

プログラマーにとって興味深い質問です。Windows や Mac のような OS を構築するには長い長い時間がかかりますが、単純なものを構築したい場合は、最善を尽くしてください。

  1. アセンブリ言語、C および C++ に焦点を当てる必要があります。これらの言語の専門家である必要があります。
  2. まず、OS の仕組みについての良い本を読み[Google it]、次にそこからすべての情報を読んでください。 ウィキ OS
  3. YouTubeで「アセンブリ言語で独自のOSを作成する方法」を検索してビデオを見てください。 例えば。ビデオ
  4. Linux OSのソースコードをダウンロードして自分でコンパイルし、自分でコードを変更してみてください
  5. これであなたも経験豊富な OS エディターになりました。今すぐダウンロードしてください ミニックス そして QNX 彼らと一緒に開発を始めて、ここからドキュメントを入手してください ミニックス ドキュメント そして QNX ドキュメント

これで、OS 作成の修士号を取得しました (完全ではありませんが、あと少しです)。今度はこの知識を友達に配布し、彼らの助けを借りて、Mac、Linux、または Windows と同じくらい強力な OS を作成してみます。

基本的なオペレーティング システムを作成してしまったら、GUI の作成やライブラリの移植にはリソースがあまりないため、継続するのは実際には困難です。しかし、見てみると私は思う とあるOS とても役に立つでしょう!

その OS の表面にあるコードは非常に単純です。しかし同時に、彼は cairo、python、(まだではないが近々) sdl などを移植し、共有メモリを作成し、独自のウィジェット ツールキットも作成しました。すべてCで書かれています。

もう 1 つの興味深い OS は次のとおりです。 系統OS. 。これはJamesM(の背後にいる人)によって作られました。 jamesM のカーネル チュートリアル. 。ToaruOS よりも多くの機能を備えていますが、規模が大きく、より複雑でもあります。

とにかく、これら 2 つの OS、特に ToAruOS は非常に役立ちます。

基本的なオペレーティング システムの開発に取り組み始めたとき、次のような基本的なガイドが必要でした。 基本的なオペレーティング システムへの足がかり. 。おかげで頭がおかしくならずに済みました。

まったく何もないところから作りたい場合(純粋なアセンブリコード)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top