c言語でosを作ってみたくてdebianとかgnomeでosを作りたいです.
わかる方教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
c言語でosを作ってみたくて
他の回答者の方も挙げられているように、上記の本がもっとも目的のものに近いです。
この本を私も昔に読んだんですが、辛かった記憶しかないです(今はもう内容を忘れています)。
この本自体は比較的分かりやすい良書だと思いました。
しかし、それでも約700ページもあるし、アセンブラやマシン語の知識も必要です。
(ここでは「How」を説明しませんが、700ページもあることを掲示板で説明しきれません)
一番辛いのは、すごい頑張っても、ようやく原始的なOSしかできないところです。
そもそも、Linuxを使った方が確実に早いです。フリーのOSではもうLinuxがすでにあって、
しかも2千万行超えとかいう大規模なものなので、その水準に追いつける見込みは皆無でしょう。
ですから率直に言って、すぐ使えて役に立つ、という実用的な得はありません。
(組み込み系の)学習か趣味のためにやるものだと思います。
使うためにOSを作るというより、ブラックボックスとなっている
OSの仕組みを知るのは有益、といった感じでしょうか。
なんで、そんなことをわざわざ言うのか……?
と、質問者や閲覧者の方は、疑問に思われるかもしれませんね。
ただそもそも、今回のような雑な質問をされている時点で、
強い動機や目的意識というのを感じられないんですよね。
私は何もやる気をくじきたいのではありません。
OS自作というジャンルは非常に険しい道なので、
明確な動機や目的意識を持った方が、有意義な学習になると思ったのです。
投稿2016/11/27 08:30
総合スコア5592
0
ベストアンサー
Operating Systemと一口にいっても様々な層からできてますが、おそらく質問者さんがイメージしている「OS」はエンドユーザーに近い部分だと思います。それだって(広義の)Operating Systemと言えましょう。一般的なOS(とそれを構成するソフトウェア)をとても大雑把にいうと以下のようにいくつかの層に分かれてます。
- カーネル
前提とするハードウェア資源(CPU, GPU, HDD, メモリー)を直接制御する部分。
- ハードウェアを直接制御するためのドライバー(プロセッサのネイティブライブラリー)
- カーネルとやり取りするための様々なインターフェース(の特定言語向けライブラリー)
- 低レベルサービス
- グラフィック基盤(LinuxであればX Windowシステム)
- ユーザーとのインタラクションを司るGUI(GnomeのようなWindow Manager)やCUI(シェル)
- 一般のアプリケーション
回答者のみなさんがおっしゃるようにカーネル層に近い部分はとてつもなく難易度が高く、広範囲で深い知識が必要です。しかし最初にいったように質問者さんはカーネル層を作りたいと考えているわけではなく、Window Manager層あたりを作りたいのだと思います。
もしそうなら、Linux上で利用可能などれかの計算機言語でGUIを備えたアプリケーションを作る知識がまず必要になります。アプリケーションが作れないことには、その基盤となる層のものつまりWindows Managerは作れません。比較的簡単に思えるものの一つとしてJava/JavaFX/swingあたりが適切かなと思うのですが、言語がCであればX Windowと直接やりとりするプログラムになるでしょうか。しかしJavaに比べるとプログラミング難易度はかなり高くなると思います。Javaで作ったりX Windowを使うよりももっと簡単にグラフィックスを扱えるGUIライブラリーもいくつかあると思います。Gtk+, Qt, Tkなどというものがそれにあたるのでしょうか・・・(その辺りあまり詳しくないですがどれもX Windowを直接使うのに比べれば多分大分易しいのではと思います。)
なお、GUIはCUIに比べて学ぶのもプログラムを作るのも時間がかかります。一般的なオペレーティングシステムにはGUIによるアプリケーションの起動、ファイルシステム等のブラウジング、コンフィギュレーション、アクセサリー等々非常に豊富な機能があるのでそれに近いものを作ろうとするととほうもない時間がかかります。
ですが、プログラミングをしたいという興味に従って「アイコンをクリックしたらアプリケーションが起動」という素朴なものでもよいので「頑張って作ってみる」もしくは「作る練習をしてみる」ことは決して無駄なことではなく、挑戦する価値のある目標だと思いますしそこから得られるものもちゃんとあると思います。
カーネルを実際に作ったことがある人は非常に少ないと思いますが、上のようなフロントエンド的なものを「作ってみたい」と妄想したことのある人なら少なくないはずです。
投稿2016/11/27 09:08
編集2017/01/09 06:28総合スコア18392
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
質問が雑すぎです。
そんなに雑な質問しか出来ないならまずは本を探してみるのが先では。
「OS 自作」の雑なキーワードでググったら以下の初心者向けっぽい本がすぐに見つかりましたよ…。(私は読んでません)
投稿2016/11/27 07:07
編集2016/11/27 07:09総合スコア740
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
問合せの動機が、ハードウエアを制御することに興味があるならまずは、
ハードウエア制御の仕組みから経験してみては、いかがでしょうか?
組み込みLinuxですが、ソースコードでハードウエアの制御などができます。
いろんな方が回答されているように、OSを自作するというのはコンピュータ技術者の課題の中でも難易度の高い分野になります。(とっても地味な分野です。)CPUやメモリ、キーボード、マウスなどをどのようにソフトウエアで制御するか?という仕組みを理解していないと作れない分野になります。
デバックもとても大変です。こういった苦労することを楽しめる人でないと向かない分野です。
仕組みを理解したいのであれば、小さいコンピュータを制御するソースコードを読み込むことをお勧めします。
投稿2016/11/28 13:57
総合スコア1106
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
投稿2016/11/27 07:05
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。