FC2ブログ

鈴の音情報局blog

携帯関連の将来や最新の技術情報や業界の行く末などを適当に綴るblogです。 内容の信憑性は?余り信じない方がいいと思います。
本家の鈴の音情報局はこちら→http://suzunone.0g0.jp:8800/
スマホ・携帯端末アクセス[ランキング][アクセスシェア(グラフ)] (毎年10/1にログをクリア)

OSを作る事を考える

コメ欄でOSのソースコードの話が出たのでちょっとだけ触ってみます。
今時のOSは昔のOSと違い、恐ろしく複雑化しており、ソースコードを
一から起こすのに恐ろしく時間がかかります。

今、Windows 8や8.1となっているWindowsと呼ばれているものは、
元々はWindows NTと呼ばれていたものであり、生まれながらにして
純粋にWindowsと呼ばれていたものはMS-DOSにGUIシェルを
被せただけのWindows 1.0~3.1でした。

こちらは1MBのROM空間しか扱えない16bit環境のMS-DOSに、HIMEM.SYSや
EMM386.EXEを介して80286レベルのOver 16bitの16GB環境を使えた、
最もポピュラーになったOSでした。

しかしAPIはWin16インターフェイス止まりでしたし、タスクスイッチレベルの
マルチタスクで、お行儀の悪いアプリが有れば他のタスクも止まって
しまうというスイッチングタスクレベルのOSでした。

その後ちょっとマシなマルチタスクを実装し、Win32 APIを提供し、
32bit環境を提供したWindows 95が登場。しかし構造的にはMS-DOSの
上にシェルを被せたという根本的な部分は変わりませんでした。

以降どんどんMS-DOS臭さと面影は消えていくものの、この作りはWindows 98や
Windows Millenniumまで構造が大きく変化しません。

Windows Millenniumの登場と少しずれてWindows 2000が登場します。
Windows 2000はWindows NT系のOSで、内部構造は完全な32bit系のOSです。
16bitのOSに32bitのシェルを重ねただけという安易な構造では有りません。
CPUのレベルリングをきちんと活用したしっかりとした32bit OSです。

Windows 2000以降は、Windows XP、Windows Vista、Windows 7、Windows 8と
続いていきます。ではWindows 2000まではどうか。

WindowsNT 3.1、WindowsNT 3.5、WindowsNT 3.51、Windows 4.0、そしてWindows 2000です。
今はUNICODEで単一OSで世界中対応できるようになりましたが、
初めの頃は漢字コードや国別の言語への移植が毎回人の手で行われていました。

特に1バイト系から2バイト系への移植は、まず英語版を完成させ、そして
2バイト版の代表言語である日本語へと移植が行われます。
その後他の漢字圏等の2バイト系の国の言語向けへとWindowsは移植されていきました。
Windowsは基本的にそのようにして移植されていたのです。

この2バイト系への移植をマイクロソフトから全面的にこっそりと受けていたのが、
NECのWindows開発チームでした。NECは9801シリーズを抱えていましたから、
独自で移植をしなくてはなりません。それをアメリカのマイクロソフトに人材を
常駐させていて移植をやっていた事から、全ての日本語化を引き受ける事に
なっていました。(この辺りは仲の良かったNEC内部の9801開発チームに居た
方からの個人的な情報であり、その人から聞いた内容に依存しています。
恐らくこの事を記述された資料は私の知る限り一切ないと思います。)


さてここまでずらずらとWindowsの流れを書いてきましたが、なぜこんなことを
書いているかというと、実はコメ欄でいただいた事に衝撃を受けたからです。

恐らく主要なOSのバージョンや大きく変化が加わる場合はソースコードを
一から起こしているとお考えだったように思われます。

iOS6→iOS7でマルチタスクが加わり、アイコン類も差し替わってたり、
コントロールセンターが加わって機能的にも見た目的にも変化が大きいので
そう考えられたのだと思います。


しかしマルチタスクなどは元から備わっていた機能を、わざわざ制限する
プログラムを入れてマルチタスクに出来なくしていたものであり、
それはバッテリーライフと動作の軽さを維持する為に、ジョブズの指示で
行われたと思われます。結果的にセキュリティー的にもいい結果を
もたらしましたが、Androidで大いにメリットとされる、ウェジェットや
マルチタスク本来の良さの全てを利用できるメリットも奪ってしまいました。

ここらは指揮者が何を入れて何を捨てるかの選択になります。
それぞれバランスのとり方が違っていたわけですね。



で、ソースコードはどうかというと、今時OSのソースコードを一から起こす
なんてまずやらないでしょう。例えばTIZENはBADAから、FirefoxOSはLinuxと
ブラウザのソースコードから。

これだけライブラリやソースコードや資源が溢れてしまっている世の中で、
一からソースを起こすこと自体がナンセンスだと思います。

今のOSってPCにしろモバイルにしろ、かなり複雑で、一から起こすととんでも
ない時間がかかります。しかもバグだらけで使い物にならないどころか、
商品に出来ないレベルのモノが出来ると思います。


iOSも一から起こしたOSではなく、MacOSから分岐してモバイル用にアレンジした
OSになっています。なのでここ最近でOSを作るのに一からソースコードを起こす
なんて事はまず有りません。


またある程度以上PCに触ってきた方なら知っているかも知れませんが、
OS作成の苦悩を記した本が有ります。
闘うプログラマー ~ Junk Blog
面白いです。そしてデヴィッド・カトラーのエンジニア魂が強すぎて面白いです。Windows NTの難産ぷりが書かれており、それを取り巻く人間模様が描かれてます。

世界のOSたち - Windows OSの未来を作った「Windows NT 3.x」後編 ~ マイナビニュース
基本的な部分はある程度完成しましたが、次から次へと現れるバグにCutler氏は「品質の高いコードを書け」と開発メンバーを叱り、その結果は多くのベータ版に反映されました。1992年10月にファーストベータ版(ビルド番号は3.10.3xx)、1993年3月には1万5,000人のユーザーに配布したセカンドベータ版(3.10.404)をリリース。さらに500箇所にも及ぶバグが発見されたため、それらを修正したサードベータ版(3.10.438)を1993年4月に配布し、そして発売日が定まったことからさらにバグフィックスした最終ベータ版(3.10.475)を1993年6月に配布しました。1993年7月1日にはRC版(Release Candidate version:出荷候補版)、同月12日にはRC2版をリリース。最終的には250名を超える開発陣が5年の月日をかけて560万行にも及ぶコードを書き上げたWindows NT 3.1は、同月26日に開発チームの手を離れ、1993年7月27日のリリースに至ったのです(図01)。

ついにWindows開発から離れた「闘うプログラマー」 ~ ITpro
「闘うプログラマー」に描かれた、スキーなどのアウトドア・スポーツが好きで、性格も荒い「鬼軍曹」タイプのCutler氏が、様々な軋轢(あつれき)を生み出しながらWindows NTという巨大OSを生み出していく姿に、ワクワクした人も多いだろう。筆者もその1人だ。

『闘うプログラマー 新装版』 解説 ~ 成毛眞ブログ
不思議なことにWindows-NTの最初のバージョンは1.0ではなく3.1だった。これは当時のWindowsの最新版が3.1だったことに由来する。マーケティング的には主流だったWindowsとの互換性を訴えたかったのだ。Windows9Xシリーズ、Windows-XP、Windows-VistaもWindows-NT系である。つまり、Windows-NTは世界でもっとも多く使われているOSの1つなのだ。

知る人ぞ知る、「闘うプログラマー」という本。
これはマイクロソフトの社内で繰り広げられていたWindows NT 3.1を
全くの一から作り上げる様子を描いた本です。

OSを一から作り上げることがいかに大変な事なのか、この本を読めば
理解できると思います。今Windows 7やWindows 8となっている大元は
言わずと知れたWindows NT 3.1のソースコードが元になっており、
それがWindows RTやWindows CEもWindows NT系のどこかからソースが
分岐しています。

何故そうするかというと、先人が作り上げた資産はOSを作るという行為と、
デバッグする行為の二つが有りますが、このデバッグが非常に大きな
ウエイトを占めています。

上記の引用部でも分かると思いますが、作るだけでも大変なのに、
大勢の人に使ってもらい、見つかったバグを潰していく。
これだけでものすごいコストと時間がかかるのです。


だからソースを一から起こすなんて非常に無駄な行為です。
毎回一から起こしてもどうせ似たようなものを作る事になるのですし。

それなら製品に乗せて出来るだけ多くの人が安全性を確認した
ソースコードを引き継ぐ方がいいですよね。
一度製品として出して、大勢の人が使った商品のソースコードって
信頼性が大きく向上したものという見方をするものなんです。

既に商品になってしまった古いものなんて考え方はしません。
商品として出せばそのマスターのソースは当然バックアップとして
残し、プロジェクト毎残してメンテナンスが出来る様にしておきます。


そしてそれを丸々コピーして次のバージョンの開発を進めるのが
普通です。特別な事が有り、一から起こし直そうという何らかの
理由が無い限りは。


上記の闘うプログラマーではWindows NTの初版が出来上がるまでに
5年かかったという事が書かれています。今となってはWindows NT3.1
なんて、非常にシンプルなOSです。その完成に5年です。

もう当たり前に商業ベースに乗ってしまったLinuxも、リーナス氏が
開発を始めて「こんなの作ったから試してみて」と、1.4MBのFD一枚
からブートできるOSと所から始まって、みんなが「面白そう」と
我も我もと集まって色んな人がソースコードを触るようになり、
世界中で千人単位のチームになって開発が進み、色々話題になって
商業ベースに乗るまでも何年もかかっています。


そういえば、iOSも元であるMacOSも語り出せばWindows NTどころ
ではない難産でしたね。System 6や7(日本では漢字TALK6や7)等が
いつの間にかMacOSに名前が変わり、MPUがモトローラの680x0から
PowerPCに変わり、結局、Windows並のマルチタスクも実現できない状態で、
Windows 3.1並のOSというレッテルを張られたままくすぶっていました。

やっとMacが再度表舞台の日の目を見たのがOSXが登場してからです。
このOSXは結局はアップルは自社開発が出来ずに、ジョブズがアップルを
首になっていた間に作っていたNeXT STEPが元になっています。

NeXT STEPも全くの一から起こしたものではなく、UNIXのソースコードを
利用している。そのNeXT STEPは8年かけてβ版が作られ、ジョブズが
アップルに戻った時にOSXを生み出すソースコードになります。


日々使っているスマホのOS、見えない所で動いているものですから
割と簡単に考えられがちですが、天才脳を持ったような人間が、
団子になってかかって、何年もかけて作られたものが元になっています。
それが日々バージョンアップして配布されているのです。

Androidにしろ、iOSにしろ、Windowsにしろ、とにかく長らく時間を
かけて熟成してきたものであり、そのソースコードがどれだけ貴重な
ものか知ってもらいたいなと思ったので記事にしてみました。



実は私はある日ぶちぎれて部下を引き連れて、突然とあるOSの互換OSを、
自分でプロジェクトを立ち上げて作った経験が有ります。アプリケーションを
ブートさせて基本的なI/Oを司るだけの非常に簡素なものですが、最後の方は
まあまあ地獄を見ましたよ。結果として会社にはえらく感謝されましたが。

最低限のブートさせるだけの簡素なOSですら酷いデスマがやってきました。
OSを作るというのはなんとまあ大変な作業なんだと思い知りました。
一旦ブートしてしまったら表示からメモリ空間、I/Oと全ての繋がっている
ハードウエアや割り込み等全ての面倒を自分でみないといけませんからね。

それをフルアセンブラで組んでいたのは過去のいい思い出です。
もうあんな事二度と出来ません。ブートから作るとデバッガが使えませんしね。
ICEなんて便利なものもない、デバッガだけで作れていた純粋なソフト屋でしたから。


過去にこういった経験が有るので、「OSを作る・いじる」という行為には
私は超超過敏に反応します(笑)

それを考えると、ベースになるOSのソースコードが無料で簡単に手に入る
なんていい時代になったもんだと思います。初期から割とリッチなOSに
なっているので、色々剥がして軽くするところから始めないといけませんが、
それでも私たちが死にそうに苦労した時よりは相当楽になったのではと思います。


私がAndroidがどうたら、iOSがどうたら、Firefox OSやTIZENがどうのこうのと、
やたらとOSの話題に触りたがるのは、どうしてもその根幹部分をいじる苦労を
忘れられない、ドM根性が残っているからかも知れません。

まあOSのソースはもう弄りませんけどね。
その分余計に口うるさくブログでは触りたいと思います。

歳取ったなぁ。。。
関連記事
  1. 2013/10/17(木) 15:31:14|
  2. 携帯
  3. | トラックバック:0
  4. | コメント:9
<<「TV&バッテリー」使用中止と製品回収に関するお知らせ、のメール | ホーム | アップルがiOS 7で極めて深刻な脆弱性を多数修正、iOS6が穴だらけと言わんばかりの状態に>>

コメント

WindowsNT 4.0の存在が無かったことになっているのはちょいと(^_^;)
NTが3.51から4.0になった時は「ディスプレイドライバのバグでOSごと落ちるなんてNTじゃない」なんて話題になったものです(^_^;)
  1. URL |
  2. 2013/10/17(木) 20:40:48 |
  3. YASU #eAb5nx9M
  4. [ 編集]

>YASUさん
おおおおおおっ、書いている時に何か少ないなと思いながら書き進めていたら・・・(;^ω^)
そういえば4.0はマイクロカーネルのどうのこうのとひと悶着あった記憶がありますね。
比較的長く使った記憶があるのに、すっぽーーーんと存在を忘れていました(;・∀・)
  1. URL |
  2. 2013/10/17(木) 21:54:47 |
  3. 鈴 #GpEwlVdw
  4. [ 編集]

>おおおおおおっ、書いている時に何か少ないなと思いながら書き進めていたら・・・(;^ω^)
NT4.0って、普通の人は使わないOSでしたのでしょうがないかと…
融通が効かないけど安定しているNT3.51、融通効くけどブルーバック出やすいNT4.0って感じです。
ディスプレイドライバがユーザーモードからカーネルモードでの動作するようになったのんですよね。
OSのリリース直後はよく落ちて大変でした(^_^;)
  1. URL |
  2. 2013/10/18(金) 00:00:01 |
  3. YASU #cEmK8Lb.
  4. [ 編集]

OSといえば

OS/2なんてのもありますよ…開発は主にIBM(と初期にはMSも協力)でしたね
ターゲットCPUは286以降で386推奨でスタートしていたはず…
「OS/2」という名称、なにかににてませんか?…
IBMのPC「PS/2」とにてますよね…だってPS/2の為のOSとして開発されていたのだから…
でもまともに出来上がった時(V2.11)は
486からPentiumに切り替わりつつあり、MSがWin3.1を出した後でもうすぐ95が出る頃という…
ワープV3あたりはAptiva&ThinkPadで95系と共にサポートされていてOS/2が一番売れた時期かなぁ
(NT系の普及がまだでUNIX系でもDOSベースWin系でもない安定したOSがこれだけだったから)
その後はNT4のSPが進むにつれて、NT系のシェアが増えていき、最終的には終了しちゃったけど…

もうひとつOSといえばBeOSです
当初はx86や68kやPPC用OSではなくターゲットが「マイコンのSMP構成」のOSだという
特殊な出自を持つOS…
その影響(OS自体を分散処理させる必要性)からかマルチスレッド処理に優れ、マルチメディアRTOS(リアルタイムOS)とか呼ばれたことも
後発なのに0から書き上げられた数少ないOSでもある
API自体やGUI自体は他のOSの影響を受けておらず洗練されたものらしく
移植が容易でx86のAT互換機版もPPCのMac版も存在する…

そしてNEXTSTEPと並んで次世代MacOSの候補にもなっていたこともある…
(技術的にはBeの方が優勢だったけど、NEXT+Jobsや金銭面で比較されたので…)

あたしはカーネルだけでみれば
このBeを一番評価していたりする…
個人用途だと
NT系やOSXが4コア~8コアあたりでスレッド割り振りに偏りが出始めるけど、
多分beのカーネルならもっと多くのコアがあっても有効活用してくれそうなきがするから

あとTRONなんてのもありますね…
osカーネルはRTOSとか組込み用というレベルでみればありふれたものだけど
BTRONというGUIはGUIの理想を押し切ったようなUIで、これは慣れたらすごいUIだとおもってました

なのでBeカーネルをベースにITRON仕様APIを搭載しBTRONのGUIを採用したら
PCの操作は今とは違ったものになっていただろうなぁ
なんて思っています
まぁ、どっちもMacとWindowsが普及した後に出てきたのでそれらとの互換性が…
ってなっちゃうのでしょうけど…(LinuxはそれをUNIX系の体裁をとることで免れたけど)
  1. URL |
  2. 2013/10/18(金) 04:50:33 |
  3. 姫 #Qgp/yXvw
  4. [ 編集]

BTRONかぁ、一時は教育用PCのOSとして採用しようって大盛り上がりでしたよねぇ (遠い目)。
Mr.Sonと飼い慣らされた官僚によって潰されちゃいましたからねぇ。
でも、今思ってみれば、BTRONが採用されていれば今頃はガラパゴス化していた可能性も否定できないので、あれですが...

そう言えば、ITRON + Windows CEなんてのも有りましたが、
日の目を見ませんでしたね。
  1. URL |
  2. 2013/10/18(金) 13:37:30 |
  3. 生ぴーまん #bnistvpo
  4. [ 編集]

OS/2って用語を下手に日本語化したので設定時に悩んだ記憶が(^_^;)
BTRONはμ-BTRONのTiPOを一時期使っていましたが小難しい用語が満載なんで普通の人が慣れるのは難しいんじゃないかと思いました。
使う人を選ぶOSって感じ?
教育用には良いのかもしれませんが…
  1. URL |
  2. 2013/10/18(金) 16:01:53 |
  3. YASU #eAb5nx9M
  4. [ 編集]

たまにはWindows/386とかAmiga OSも思い出してくだしあ。

>姫さん
OS/2 2.11の頃はIBM謹製以外のOADG仕様のPCでも選り好みが激しく、ブートすらしなかったなぁ。

>YASU さん
>NT4.0って、普通の人は使わないOSでしたのでしょうがないかと…
キャプチャとかする人にはNTFSで大きなファイルが作れて良かったようですね。
尤もフツーのインストールだとブートパーティーションがFATからの変換なので4GB制約にかかるという
95/98よりめんどくさいことになったり。
仕事に使うにはIEやらIISやら勝手に入れられて不安定、個人で使うにはドライバが無いという...

>OS/2って用語を下手に日本語化したので設定時に悩んだ記憶が(^_^;)
終了させるのに「シャットダウン」じゃなく「遮断」だったような...
5550の頃からキーボードを鍵盤と呼ばせるあたり伝統なのかな?
  1. URL |
  2. 2013/10/19(土) 02:14:52 |
  3. Beep #-
  4. [ 編集]

ここにコメしている人とコメ内容が濃厚すぎる気がするのは気のせいでしょうか。。。(;´∀`)
なんだか怖い人ばかり集まってしまった気がしています;;;;;




BeOSとかAmigaとか、今時メディアで記事書いている人でも聞いた事すらない人が多そうな・・・。
OS/2はOSをIBMとMSが仲たがいして/2になったという話も一部では囁かれていましたがさてww

OS/2→PS/2と言えば思い出されるのがMCAバスで、98でMCA相当と言えばNESAバスですね。
OSもだけど、バス争いも混濁していたなぁって思いだされました。

インストール時にFAT変換だったNT4.0懐かしいですね。
あれって、あらかじめNTFSでフォーマットしていてもOVER 4GBって無理でしたっけ?
当時どうやっていたか、もう余り記憶に残ってない・・・。

NT系列って、NT4.0以降から初版はやたら不安定とかバグが増えた印象が強いです。
なので「NT系列のOSはsp2以降が出てからきちんと使えるもの」という考えになりました。
自分で使う分にはいいけど、他人様にお勧めするのはsp2が出てからって事です。

結局色々有ったけど、NT4.0系列のOSはsp2~4以降はすごく安定していて、
後にXPの立場がぐんと上がる理由にもなったように思います。
最終的にはOSって機能よりも安定度競争って部分が強いのかも。


そういう意味じゃ今のiOSの進んでいる方向って、間違ってるなぁ・・・って気がしないでもない。
肝心な所で信用失っちゃ意味が無いし。
  1. URL |
  2. 2013/10/20(日) 12:24:56 |
  3. 鈴 #GpEwlVdw
  4. [ 編集]

Amigaでは通じなくてもウゴウゴルーガとか...
アップルの黒歴史Lisaとか、漢字Talk以前のSweetJAM時代のMacとか

MCAにはPCIに先んじてバス調停やプラグ&プレイ的な要素があったそうですね。
NESAバスはCバス上位互換だったので、ISAに対するEISAのような気もします。

>あれって、あらかじめNTFSでフォーマットしていてもOVER 4GBって無理でしたっけ?
パーティーションユーティリティーのフォーマッタで先にNTFSフォーマットしてやれば出来たような
記憶があります。

SP2がでれば安心って良くいわれていましたが、最近はブロードバンドでWindows Update出来るように
なったからか、XPはSP3までVistaはSP2、Win7はSP1までしか出てこないので、判断しにくいですね。

>そういう意味じゃ今のiOSの進んでいる方向って、間違ってるなぁ・・・って気がしないでもない。
新しめの機種に最新のOSにアップデートするのは良いとして、古い機種(3GSとか)にセキュリティなどで
恐怖感を煽って最新のOSを入れさせて、実質的な買い換えの強要は如何な物かと。
  1. URL |
  2. 2013/10/21(月) 00:22:52 |
  3. Beep #-
  4. [ 編集]

コメントの投稿(投稿時には必ず何らかの名前を付けてください)


管理者にだけ表示を許可する

(名前を入れないとクリックできません)

トラックバック

トラックバックURLはこちら
http://suzunonejh.blog15.fc2.com/tb.php/4131-732b03e4
この記事にトラックバックする(FC2ブログユーザー)

最近の記事

機能リンク

最近のコメント

カテゴリー

ブログ内検索

ブログリンク

RSSフィード

QRコード

QR

月別アーカイブ



メールフォーム

お問い合わせ・ご質問はこちらから。

名前:
メール:
件名:
本文:

suzunone.m(あっと)gmail.com に
直メでもOKです。