今使っているOSはWin XP SP3です。
開発環境は無料のVC++ 2010です。
C言語でOSを作成したいです。
そこでいくつか質問があります。
①言語はC言語だけで作れますか?
②開発環境はLinuxなどのほうがいいのでしょうか?
③C言語をコンパイルするとWinだとexe形式の実行ファイルが作成されますが、
OSはどのように実行されるのでしょうか?
パソコンの電源を入れるとOSのexeが実行されるのでしょうか?
OSの実行がいまいち理解できません。
④入門書を三冊それぞれ五回ほど読んだ程度のまだまだ初心者です。
そんな私でも作成することはできるのでしょうか?
⑤フリーのLinuxを改造するなどせずに、一から作成した場合はどのくらい時間がかかりますか?
⑥その他、これは勉強したほうがいいというものをお願いします。
OSを作りたいといっても最初は起動とシャットダウンができる程度の簡単なものでいいです。
その程度のOSを作成するという仮定で上記の質問に回答お願いします。
C言語でOS作成
Re:C言語でOS作成
ハードウェアはどんなものを想定していますか?
ブートローダが存在することを前提で作るのか、リセット処理から作るのかによっても話が変わります。
> ①言語はC言語だけで作れますか?
どんな処理系を使うかにもよりますが、普通は無理だと考えたほうがよいでしょう。
Visual C++とかは論外です。
> ②開発環境はLinuxなどのほうがいいのでしょうか?
何でもよいと思います。
> ③C言語をコンパイルするとWinだとexe形式の実行ファイルが作成されますが、
> OSはどのように実行されるのでしょうか?
> パソコンの電源を入れるとOSのexeが実行されるのでしょうか?
> OSの実行がいまいち理解できません。
パソコン上で動くOSを作ることが前提なのでしょうか?
そこのところをはっきりさせてください。
> ④入門書を三冊それぞれ五回ほど読んだ程度のまだまだ初心者です。
> そんな私でも作成することはできるのでしょうか?
できるかどうかでいえばできますが、まだまだ勉強と試行錯誤が必要になると思います。
> ⑤フリーのLinuxを改造するなどせずに、一から作成した場合はどのくらい時間がかかりますか?
どんなハードウェアで、どんなOSを、どんな開発ツールを使って作るのかによります。
> ⑥その他、これは勉強したほうがいいというものをお願いします。
アセンブリ言語とハードウェアの基本的な知識は必須です。
割り込み処理とか、I/Oポートの制御とかが分からないようでは話になりませんので。
ブートローダが存在することを前提で作るのか、リセット処理から作るのかによっても話が変わります。
> ①言語はC言語だけで作れますか?
どんな処理系を使うかにもよりますが、普通は無理だと考えたほうがよいでしょう。
Visual C++とかは論外です。
> ②開発環境はLinuxなどのほうがいいのでしょうか?
何でもよいと思います。
> ③C言語をコンパイルするとWinだとexe形式の実行ファイルが作成されますが、
> OSはどのように実行されるのでしょうか?
> パソコンの電源を入れるとOSのexeが実行されるのでしょうか?
> OSの実行がいまいち理解できません。
パソコン上で動くOSを作ることが前提なのでしょうか?
そこのところをはっきりさせてください。
> ④入門書を三冊それぞれ五回ほど読んだ程度のまだまだ初心者です。
> そんな私でも作成することはできるのでしょうか?
できるかどうかでいえばできますが、まだまだ勉強と試行錯誤が必要になると思います。
> ⑤フリーのLinuxを改造するなどせずに、一から作成した場合はどのくらい時間がかかりますか?
どんなハードウェアで、どんなOSを、どんな開発ツールを使って作るのかによります。
> ⑥その他、これは勉強したほうがいいというものをお願いします。
アセンブリ言語とハードウェアの基本的な知識は必須です。
割り込み処理とか、I/Oポートの制御とかが分からないようでは話になりませんので。
Re:C言語でOS作成
1.No。
アセンブリ言語でしか記述できない部分があります。
2.あったほうがいいかも知れません。
VMWare PlayerやVirtualBox等、仮想マシン環境は必須かな、と思います。
3.ハードディスクやフロッピーディスク、いわゆるブートデバイスの先頭512バイトを
BIOSが読み込み、実行します。OSは一番最初にこの512バイトに起動プログラムを
各必要があります。
4.5.6.誰だってできます。
OSは起動とシャットダウンが出来れば、後はアプリケーションプログラムと
余り変わりません(といいつつ結構違いますが。)。
↓の本を買ってみてはどうですか?
http://www.amazon.co.jp/dp/4839919844
聞いたところによると、この本を元に中学生がOS作成したらしいです。
#かかった期間は忘れましたが。
アセンブリ言語でしか記述できない部分があります。
2.あったほうがいいかも知れません。
VMWare PlayerやVirtualBox等、仮想マシン環境は必須かな、と思います。
3.ハードディスクやフロッピーディスク、いわゆるブートデバイスの先頭512バイトを
BIOSが読み込み、実行します。OSは一番最初にこの512バイトに起動プログラムを
各必要があります。
4.5.6.誰だってできます。
OSは起動とシャットダウンが出来れば、後はアプリケーションプログラムと
余り変わりません(といいつつ結構違いますが。)。
↓の本を買ってみてはどうですか?
http://www.amazon.co.jp/dp/4839919844
聞いたところによると、この本を元に中学生がOS作成したらしいです。
#かかった期間は忘れましたが。
Re:C言語でOS作成
>①言語は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(モニタ程度のものから)を書くのも一つの方法です。
作る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(モニタ程度のものから)を書くのも一つの方法です。