解決済みの質問
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
「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
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(11件中 1~5件目)
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
>そこで質問ですが、カーネルはlinuxカーネルを使ってもいいでしょうか?
良いんじゃない。
Linuxカーネルは元々無料配布する目的で作成されたものです。
他にFreeBSDもソースコードが公開されていると思いますので、それを読んでみると良いでしょう。
>本来なら書籍やネットで地道に調べるべきなんでしょうが時間がありません。
それだけ急ぎなら現時点で無理な要望と思います。
現在、フリーで使えるOSはLinuxとFreeBSD位でしょう。
特にLinuxは公開されているカーネルを使ってディストリビューションを自由に配布して良いことになっているようですから応用するのに最適と思います。
あなた独自のプログラムを他のコンピュータで作成し、コンパイル後に運用マシンで動作テストされると良いでしょう。
カーネルのソースコードを入手できるサイトはご自身で探してください。
投稿日時 - 2011-12-21 12:13:40
> ユーザーとコンピュータの入出力はそろほど重要ではありません。
> あくまでそのプログラムの挙動が見れればいいので。
もっと簡単なプログラムのようですね。
「今の状態は」、というコマンドを出し、「こんな状態です」ともらったメッセージをディスプレイに出力するだけですか。
「今の状態は」、OSのあるテーブルを参照すれば分かるものであれば、「マスタモード」設定して、参照して、その「コード」を「テーブル」化しておき、検索して、説明文を出すだけの仕様になります。
SEとは、客先要求を如何にコンピュータ化するかの手段、しくみを「経験と知恵」で、具体的に構築する仕事です。
投稿日時 - 2011-12-21 09:26:09
補足
そうですね。
僕が観察するための入出力です。
あとSEの件はどういうことでしょうか?
投稿日時 - 2011-12-22 00:17:51