質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Q&A

解決済

6回答

2516閲覧

os作成について

tsunod1

総合スコア18

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

0グッド

0クリップ

投稿2016/11/27 06:59

c言語でosを作ってみたくてdebianとかgnomeでosを作りたいです.
わかる方教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

c言語でosを作ってみたくて

他の回答者の方も挙げられているように、上記の本がもっとも目的のものに近いです。
この本を私も昔に読んだんですが、辛かった記憶しかないです(今はもう内容を忘れています)。

この本自体は比較的分かりやすい良書だと思いました。
しかし、それでも約700ページもあるし、アセンブラやマシン語の知識も必要です。
(ここでは「How」を説明しませんが、700ページもあることを掲示板で説明しきれません)


一番辛いのは、すごい頑張っても、ようやく原始的なOSしかできないところです。

そもそも、Linuxを使った方が確実に早いです。フリーのOSではもうLinuxがすでにあって、
しかも2千万行超えとかいう大規模なものなので、その水準に追いつける見込みは皆無でしょう。

ですから率直に言って、すぐ使えて役に立つ、という実用的な得はありません。
(組み込み系の)学習か趣味のためにやるものだと思います。

使うためにOSを作るというより、ブラックボックスとなっている
OSの仕組みを知るのは有益、といった感じでしょうか。


なんで、そんなことをわざわざ言うのか……?
と、質問者や閲覧者の方は、疑問に思われるかもしれませんね。

ただそもそも、今回のような雑な質問をされている時点で、
強い動機や目的意識というのを感じられないんですよね。

私は何もやる気をくじきたいのではありません。
OS自作というジャンルは非常に険しい道なので、
明確な動機や目的意識を持った方が、有意義な学習になると思ったのです。

投稿2016/11/27 08:30

LLman

総合スコア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
KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

debianとかgnomeでosを作りたいです.

debianはOSですよ。gnomeはデスクトップ環境です。
それらを使って一般的なOSを作ることはできないですよ。

投稿2016/11/27 07:43

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問が雑すぎです。
そんなに雑な質問しか出来ないならまずは本を探してみるのが先では。

「OS 自作」の雑なキーワードでググったら以下の初心者向けっぽい本がすぐに見つかりましたよ…。(私は読んでません)

30日でできる! OS自作入門

投稿2016/11/27 07:07

編集2016/11/27 07:09
carimatics

総合スコア740

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

問合せの動機が、ハードウエアを制御することに興味があるならまずは、
ハードウエア制御の仕組みから経験してみては、いかがでしょうか?

ラズベリーパイ3

組み込みLinuxですが、ソースコードでハードウエアの制御などができます。

いろんな方が回答されているように、OSを自作するというのはコンピュータ技術者の課題の中でも難易度の高い分野になります。(とっても地味な分野です。)CPUやメモリ、キーボード、マウスなどをどのようにソフトウエアで制御するか?という仕組みを理解していないと作れない分野になります。
デバックもとても大変です。こういった苦労することを楽しめる人でないと向かない分野です。
仕組みを理解したいのであれば、小さいコンピュータを制御するソースコードを読み込むことをお勧めします。

投稿2016/11/28 13:57

nagaetty

総合スコア1106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2016/11/27 07:05

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問