こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

簡単なOSを作りたい

OSについてほとんど知識の無い者です。

現在、あるプログラムを作りたく色々と勉強しています。
しかし、調べていくうちにwindowsやmac等の既存のOSではそれを作ることは厳しいとわかってきました。
これらのOSはセキュリティやトラブル回避の面で堅牢性が高いそうです。
そのプログラムにとってそういう強さはむしろ邪魔になってきます。

そこでlinuxを思いつきました。
ですが、最近のlinuxディストリビューションも先のOSのように丈夫で堅牢な仕組みになっていると思います(詳しく調べてはいませんが、最近のlinux人気から予想はできます)。

僕に必要なOSは、ユーザー利用重視ではなくプログラム利用重視のOSです。

なので自分でOSを作ろうと思います。

そこで質問ですが、カーネルはlinuxカーネルを使ってもいいでしょうか?
というのは、linuxの堅牢性がどこから来るものかわからないからです。
もしlinuxカーネルから来ているのであれば、linuxカーネルは使えません。
来ていないのであれば、出来合いのlinuxカーネルが使えると思います。

しかし自分が欲しいOSを作るためにはlinuxカーネル自体不必要かもしれません。
そういった場合どのように勉強をすればいいでしょうか?

とにかく特定のプログラム専用のOSです。
それに最低限必要な機能(とキーボード・マウス・ディスプレイの入出力)以外無用です。
どうすれば実現できるでしょうか。
本来なら書籍やネットで地道に調べるべきなんでしょうが時間がありません。
よろしくお願いします。

投稿日時 - 2011-12-20 16:39:44

QNo.7200394

すぐに回答ほしいです

質問者が選んだベストアンサー

「OSについてほとんど知識が無い」
けれど
「windowsやmac等の既存のOSでは堅牢性が高く
 そのプログラムにとってそういう強さはむしろ邪魔」
なので
「自分でOSを作るしかない」
と判断しているところが、性急すぎる気がします。

実際には、OSで提供している機能なのに、それを知らないだけという可能性はないでしょうか。

たとえば、例えば、ローカルの画像ファイルを一括で アップロードするアプリを作りたいとしたとき
通常のブラウザでは、セキュリティーの観点からサーバーサイドからやブラウザ上のJavaScriptを使って
ローカルの任意のファイルへのアクセスは禁止しているので、このままでは実現できません。
(OSが禁止しているのではなく、ブラウザが禁止している点が重要)
しかし、OSとしては、ローカルファイルへのアクセスは当然できるのですから
Webアプリでなく、専用のデスクトップアプリやアプレットを用意することは可能ですし、
出まわっているftpクライアントや、クラウド同期系のツールでも実現可能です。

#家族が6人だが、6人乗りの自動車がないからといって、
#自分で車を作ったり、市販車を6人乗りに改造する人はまずいません。
#セダンでなく、ワゴン車を使えばよいということに気がつけば、
#あとは7人乗以上のワゴン車の座席を余らせるだけのことです。

つまり、見直すのは、OSそのものではなくて、アプリの実現方法とOSの選択です。
時間がないというのなら、なおさらです。
現状のOSでは ○○の制限があって、△△の機能が実現できないということを明確に明示さえすれば、
それの回避策を多角的に考えられるので、最適な方法が見つかると思われます。

「どうしても自作OSの上で動かしたい」っていうだけだと、「じゃそうすれば」としかいいようがないですから。


逆に、アプリの話はどうでもよくて、
自作OSというものに 興味もたれているのでしたら、別の話ですが・・・
(それならそれで、時間をかけてゆっくりやるしかないでしょう)

投稿日時 - 2011-12-21 14:57:03

補足

実は「作りたいプログラム」もどうやって作ればいいかわからない状態です。
ただ抽象的な概念のようなものが頭の中にあるだけで具体的にどう作ればいいのか全然わかりません。

ただ言えることは、そのプログラムは乱暴な挙動をするかもしれないのでOSがセキュリティ上その動きを止めてしまうのではないかということです。

なので、そのプログラム専用のOSが必要かなと思い今回質問しました。

投稿日時 - 2011-12-22 00:16:03

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(12)

ANo.12

Linuxディストリを使えば手っ取り早いと思います。例えばPeriやjavaは開発がしやすくなっているディストリビューションもたくさんあります。pollixというでぃすとりもいいと思いますよ。

以下、らいぶCDの部屋より。
>>> Plollixは開発用のツールを満載したデベロッパー向けの1CDLinux.
>>>インストールされている統合開発ツールおよび開発用の実行環境は、
>>>J2SE SDK, Jikes, Netbeans, Eclipse, BlueJ, JGrasp, JSwat, Tomcat, JBoss, Boa-
>>>Constructor, IDLE, SPE, VisualTcl, SWIG, >>>>>>SciTE,...etc.
>>>ウィンドウマネージャーにはIceWMを採用し、動作は軽快であり、
>>>ドキュメント作成のためにOpenOfficeまで装備しています.
>>>1枚のCDを持ち歩けばどこでも作業ができ、
>>>プログラマーには重宝するでしょう(笑い).

参考URL:http://simosnet.com/livecdroom/index.html#pollix

投稿日時 - 2012-01-13 14:24:31

ANo.11

> 実は「作りたいプログラム」もどうやって作ればいいかわからない状態です。
> ただ抽象的な概念のようなものが頭の中にあるだけで具体的にどう作ればいいのか全然わかりません。

ということでしたら、仕様と 概略のフローを一旦 絵にしてみて、
その上で、 OSや アンチウィルスソフト が ブロックしそうな項目を洗い出してみることを
お勧めします。

実際には、既存のOSでも 設定や使い方で回避できるものが多々あるでしょうから、
その上で 本当に専用のOSがいるのかどうかを判断するべきです。

投稿日時 - 2011-12-22 15:25:51

ANo.10

linux,FreeBSD,FreeDOSを利用するのが手軽だと思いますよ。

オリジナルのOSを作ったところで、まずそのOSを作る手間。
そのOSで動作するプログラムを開発するためのクロス開発環境を作る手間。
(そのOS上で動作する開発環境でもよいでしょうが)
そして時間がないということからすると、
失礼ですが、あなたの手には負えないと思われます。

そもそも危惧されている堅牢性はどのような事なのでしょうか。

投稿日時 - 2011-12-21 23:39:26

ANo.8

>そこで質問ですが、カーネルはlinuxカーネルを使ってもいいでしょうか?
良いんじゃない。
Linuxカーネルは元々無料配布する目的で作成されたものです。
他にFreeBSDもソースコードが公開されていると思いますので、それを読んでみると良いでしょう。

>本来なら書籍やネットで地道に調べるべきなんでしょうが時間がありません。
それだけ急ぎなら現時点で無理な要望と思います。
現在、フリーで使えるOSはLinuxとFreeBSD位でしょう。
特にLinuxは公開されているカーネルを使ってディストリビューションを自由に配布して良いことになっているようですから応用するのに最適と思います。
あなた独自のプログラムを他のコンピュータで作成し、コンパイル後に運用マシンで動作テストされると良いでしょう。
カーネルのソースコードを入手できるサイトはご自身で探してください。

投稿日時 - 2011-12-21 12:13:40

ANo.7

> ユーザーとコンピュータの入出力はそろほど重要ではありません。
> あくまでそのプログラムの挙動が見れればいいので。
もっと簡単なプログラムのようですね。
「今の状態は」、というコマンドを出し、「こんな状態です」ともらったメッセージをディスプレイに出力するだけですか。

「今の状態は」、OSのあるテーブルを参照すれば分かるものであれば、「マスタモード」設定して、参照して、その「コード」を「テーブル」化しておき、検索して、説明文を出すだけの仕様になります。

SEとは、客先要求を如何にコンピュータ化するかの手段、しくみを「経験と知恵」で、具体的に構築する仕事です。

投稿日時 - 2011-12-21 09:26:09

補足

そうですね。
僕が観察するための入出力です。

あとSEの件はどういうことでしょうか?

投稿日時 - 2011-12-22 00:17:51

ANo.6

> とにかく特定のプログラム専用のOSです。
> それに最低限必要な機能(とキーボード・マウス・ディスプレイの入出力)以外無用です。
> どうすれば実現できるでしょうか。

この程度のプログラム制御は、OSとは言わないで、I/Oインターフェース制御とでもいう部分をプログラムコーディングするだけだと思います。
1.プログラム開発言語を決定する。
→C++とかです。
2.処理フローを立案する。
→俗に言う、「基本設計書」
3.コーディング、デバッグツール、単体テスト、総合テスト、製品受け入れテスト等の仕様書作成。

大体こういった流れになるかと思います。
このときの基本的なことは、I/O制御をマルチタスク制御にするのか、シングルタスクにするのかで、内部制御プログラム設計が大きく変わってきます。
マルチタスク制御のための、リエントラントルーチンの保証や、シリアルリユーザブルルーチンの保証のどちらを採用するかといった問題が発生します。

投稿日時 - 2011-12-20 20:51:04

補足

入出力に関する説明が悪いのか僕の認識が違うのかわかりませんが、ユーザーとコンピュータの入出力はそろほど重要ではありません。あくまでそのプログラムの挙動が見れればいいので。

投稿日時 - 2011-12-21 02:37:47

ANo.5

今から30年以上前、パソ・コンという言葉もなくワン・ボード・マイ・コンの時代にはOSなどという物もなく
キー・ボード・スキャン、ビデオ・コントローラーやIOコントローラーなどハードもコントーロール・プログラムも自作していました。
 当時はハード・ウェアの構成も限られていましたが、現在のPCの構成でOSを一から自作することに要する知識と技術は
例えて言えば犬小屋作りと大邸宅建設と比較するようなものです。

:>そういった場合どのように勉強をすればいいでしょうか? 
 何をしたいか、どのようなハード・ウェア構成にするか、どのように制御すべきかを想定しておくことが肝要です。

:>とにかく特定のプログラム専用のOSです。
 特定のプログラムのためなら必ずしもOSは必要ではありません。
WindowsOSやLinuxカーネル自体がプログラムそのものです。

投稿日時 - 2011-12-20 17:52:50

補足

どうしてもOSの上に乗せたいんです。

投稿日時 - 2011-12-21 02:38:18

ANo.4

FreeDOSを使うのを検討されるといいと思います。
MS-DOS用のコンパイラやアセンブラはまだ入手可能でしょう。
http://ja.wikipedia.org/wiki/FreeDOS

どのようなプログラムを作ろうとしているのかは判りませんが、
OSを作るってことは開発環境まで含めて必要になることを失念していませんか?
x86のオブジェクトを直にコーディングできる達人なら開発環境なんて要らないでしょうけど。

投稿日時 - 2011-12-20 17:28:24

補足

開発環境等はつまりコーディングするコンピュータということですか?今使ってるwindowsじゃダメでしょうか?

投稿日時 - 2011-12-21 02:39:16

ANo.3

PC-DOSを使ったら?(今のパソコンで使えるのかな?)

投稿日時 - 2011-12-20 17:06:14

補足

DOSですか。調べてみようと思います。ありがとございます。

投稿日時 - 2011-12-21 02:41:14

ANo.2

時間がないのなら諦めましょう。

>最低限必要な機能(とキーボード・マウス・ディスプレイの入出力)以外無用です。
これだけ自作するのにどれだけ時間がかかるか考えたことがありますか。
こういった物に時間や労力を取られないためにあるのがOSです。

投稿日時 - 2011-12-20 16:51:01

ANo.1

こちらの書籍を参考にされてみてはいかがですか?

http://www.amazon.co.jp/gp/product/4839919844/ref=as_li_ss_tl?ie=UTF8&tag=igaiga-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4839919844

投稿日時 - 2011-12-20 16:49:29

補足

こういう本があるんですね。今度本屋で見てきます。

投稿日時 - 2011-12-21 02:41:50