C言語でOS作成

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ジキル

C言語でOS作成

#1

投稿記事 by ジキル » 15年前

今使っているOSはWin XP SP3です。
開発環境は無料のVC++ 2010です。

C言語でOSを作成したいです。
そこでいくつか質問があります。

①言語はC言語だけで作れますか?
②開発環境はLinuxなどのほうがいいのでしょうか?
③C言語をコンパイルするとWinだとexe形式の実行ファイルが作成されますが、
 OSはどのように実行されるのでしょうか?
 パソコンの電源を入れるとOSのexeが実行されるのでしょうか?
 OSの実行がいまいち理解できません。
④入門書を三冊それぞれ五回ほど読んだ程度のまだまだ初心者です。
 そんな私でも作成することはできるのでしょうか?
⑤フリーのLinuxを改造するなどせずに、一から作成した場合はどのくらい時間がかかりますか?
⑥その他、これは勉強したほうがいいというものをお願いします。

OSを作りたいといっても最初は起動とシャットダウンができる程度の簡単なものでいいです。
その程度のOSを作成するという仮定で上記の質問に回答お願いします。

たかぎ

Re:C言語でOS作成

#2

投稿記事 by たかぎ » 15年前

ハードウェアはどんなものを想定していますか?
ブートローダが存在することを前提で作るのか、リセット処理から作るのかによっても話が変わります。

> ①言語はC言語だけで作れますか?

どんな処理系を使うかにもよりますが、普通は無理だと考えたほうがよいでしょう。
Visual C++とかは論外です。

> ②開発環境はLinuxなどのほうがいいのでしょうか?

何でもよいと思います。

> ③C言語をコンパイルするとWinだとexe形式の実行ファイルが作成されますが、
>  OSはどのように実行されるのでしょうか?
>  パソコンの電源を入れるとOSのexeが実行されるのでしょうか?
>  OSの実行がいまいち理解できません。

パソコン上で動くOSを作ることが前提なのでしょうか?
そこのところをはっきりさせてください。

> ④入門書を三冊それぞれ五回ほど読んだ程度のまだまだ初心者です。
>  そんな私でも作成することはできるのでしょうか?

できるかどうかでいえばできますが、まだまだ勉強と試行錯誤が必要になると思います。

> ⑤フリーのLinuxを改造するなどせずに、一から作成した場合はどのくらい時間がかかりますか?

どんなハードウェアで、どんなOSを、どんな開発ツールを使って作るのかによります。

> ⑥その他、これは勉強したほうがいいというものをお願いします。

アセンブリ言語とハードウェアの基本的な知識は必須です。
割り込み処理とか、I/Oポートの制御とかが分からないようでは話になりませんので。

Poco

Re:C言語でOS作成

#3

投稿記事 by Poco » 15年前

1.No。
 アセンブリ言語でしか記述できない部分があります。

2.あったほうがいいかも知れません。
 VMWare PlayerやVirtualBox等、仮想マシン環境は必須かな、と思います。

3.ハードディスクやフロッピーディスク、いわゆるブートデバイスの先頭512バイトを
 BIOSが読み込み、実行します。OSは一番最初にこの512バイトに起動プログラムを
 各必要があります。

4.5.6.誰だってできます。
 OSは起動とシャットダウンが出来れば、後はアプリケーションプログラムと 
 余り変わりません(といいつつ結構違いますが。)。

 ↓の本を買ってみてはどうですか?
 http://www.amazon.co.jp/dp/4839919844

 聞いたところによると、この本を元に中学生がOS作成したらしいです。
 #かかった期間は忘れましたが。

softya

Re:C言語でOS作成

#4

投稿記事 by softya » 15年前

>①言語はC言語だけで作れますか?
作るOSによっては、アセンブラは必須です。
マイコン向けのOSならアセンブラを使わずに書けるものもあります。

>②開発環境はLinuxなどのほうがいいのでしょうか?
WinでLinuxでも構いません。

>③C言語をコンパイルするとWinだとexe形式の実行ファイルが作成されますが、
exeはOS向けの形式ですので、リアルアドレスに変換された機械語ファイルを作る必要があります。
大雑把に説明します。パソコンを起動するとパソコンのBIOSが、HDDやFDDに記録されたブートローダを起動します。ブートローダは、OSのカーネル部分の機械語ファイルをメモリに展開してOSにジャンプします。

>④入門書を三冊それぞれ五回ほど読んだ程度のまだまだ初心者です。
並行して勉強する気さえあれば、出来ると思います。

>⑤フリーのLinuxを改造するなどせずに、一から作成した場合はどのくらい時間がかかりますか?
分かりません。
人それぞれです。

>⑥その他、これは勉強したほうがいいというものをお願いします。
すでに紹介されてますが、パソコン用なら「30日でできる! OS自作入門」をお勧めします。
http://book.mycom.co.jp/book/4-8399-198 ... 84-4.shtml
「30日でできる! OS自作入門」のWiki
http://hrb.osask.jp/wiki/?index
出来るOSの画面は、こんな感じです。
http://hrb.osask.jp/figures.html

もし、もっと素朴なものから始めたいと思うのならマイコン用のOS(モニタ程度のものから)を書くのも一つの方法です。

閉鎖

“C言語何でも質問掲示板” へ戻る