2番目の部分: habrahabr.ru/post/196276
今日は主に飛行しないプロジェクトとOSの深いジブルに焦点を当てるので、多くのテキストといくつかのスクリーンショットがあります
新しい希望
Windows NT 3.1
Microsoft Windows 3.xブランチは、1990年のリリース直後に急速に広まりました。 「シカゴ」というコードネームの次世代システムは1993年に計画されていましたが、Windows 95という名前で登場しました。 同時に、1993年に、Windows NTがリリースされました。これは、クライアントサーバーアプリケーション用の高度なOSです。 機能の中には、スケジューラ、ネットワークサポート、OS / 2およびPOSIX互換サブシステム、DOSおよび古い16ビットWindowsアプリケーション用の仮想マシン、新しいNTFSファイルシステム、およびマルチプロセッササポートを備えたマルチタスクを置き換えるWin32 APIがあります。
![画像](https://habrastorage.org/getpro/habr/post_images/a49/a55/c13/a49a55c13d22e53a0b497344f4a1493c.gif)
Appleは、特にWindows 95のリリースを見越して、応答を明らかに期待していました。
ピンクと赤のプロジェクトはこの役割に対応していませんでした。 新しい競争力のあるOSを作成する試みは数多くありました。
スタートレック
Mac OSをNovellと一緒にx86アーキテクチャに移植しようとする大胆な試みがありました。 両社のエンジニアのチームは非常に迅速に非常に有望なプロトタイプを作成することができました。 このプロジェクトはさまざまな理由でキャンセルされました。PowerPCへの移行、マネージャーはAppleのビジネスモデルの破壊、サプライヤーの不安などを恐れていました。 数年後、DarwinはPowerPCとx86の両方で動作します。 Star Trekは起動時にHappy Macアイコンを表示し、Darwin / x86は「Welcome to Macintosh」と書きました。
![画像](https://habrastorage.org/getpro/habr/post_images/f93/4c4/31c/f934c431ce9e51ec8acb9a2c2d59b9f9.png)
ハッピーマック
iPhoneのリリース後、ARMがリストに追加されました。 DarwinはオープンソースのUNIXであり、Appleによってリリースされており、インターフェイスといくつかのライブラリを持たないMac OS Xを非常に大まかに表しています。 perev。
ラプター
RaptorはRedプロジェクトから多くを継承しました。 彼は特定のプロセッサアーキテクチャに縛られておらず、新世代のマイクロカーネルの開発を提案しました。 スタートレックのキャンセル後、ラプターでの営業時間を含める予定でした。 同様に、ラプターも予算削減、従業員の悲観論、その他の理由で長生きしませんでした。
ヌケルネル
これは最新のコア開発プロジェクトの名前であり、少なくとも近い将来に書き換える必要はありません。
タロス
Taligentは、Pinkプロジェクトの作業を継続するために、1992年の初めにAppleとIBMによって設立された会社です。 Pinkはもともとオブジェクト指向のOSとして計画されていましたが、代わりにオブジェクト指向のクロスプラットフォームCommonPoint環境であることが判明しました。 AIX、HP-UX、OS / 2、Windows 95 / NTで動作します。 サポートNuKernelはサポートされましたが、失敗しました。 Taligent Object Services(TalOS)は、Mach 3.0コアに基づくサービスのセットです。 計画は、拡張可能で、ポータブルで、リソースに優しいオペレーティングシステムを作成することでした。
TalOSのOOPは、カーネルからインターフェースまで、至る所にありました。 TalOSモジュールはフレームワークと呼ばれていました。 インターフェイス、テキスト、ドキュメント、グラフィックス、マルチメディア、フォント、印刷、およびドライバーやネットワークプロトコルなどの低レベルのもののフレームワークがありました。 このイデオロギーと特定の開発ツールを組み合わせることで、プログラマーからシステムエンジニアに負荷を移すことができました。
当時、NEXTSTEPなどのオブジェクト指向のアプリケーションフレームワークを備えたシステムがあったことに注意してください。 それでも、開発者は、オブジェクトと下位レベルのライブラリ、Unixシステムコール、Display PostScriptとの相互作用を整理する必要がありました。 そして、それらはすべて手続き型でした。 タリジェントは上から下へオブジェクト指向でした。 CommonPointアプリケーションは、一般にオペレーティングシステムAPIを使用せずに作成されることになっています。
1995年、タリジェントはIBMの完全な管理下に置かれました。 Pinkプロジェクトは次のApple OSにはなりませんでした。
コプランド
1994年初頭に、AppleはOSの新しいバージョンであるMac OS 8を発表し、10年で得た経験を紹介してWindowsを王座から引き離すことを約束しました。 プロジェクトのコードネームはCoplandです。 その作業は少し前に始まりました。 サンプル計画:
- 最後にRISCアーキテクチャに移行し、最終的にシステムをPowerPCに移植します
- OpenDOCテクノロジーQuickDraw GX、ColorSync、QuickDraw 3D、PowerTalk、PowerShareを強化
- システムをマルチユーザーにしますが、同時にインターフェイスをシンプルにします。
- DOSおよびWindowsとの相互作用を改善する
- 最高のネットワークサポートを実現
- 幅広いタスク用の自動化ツールを実装する(Visual Basicのようなもの-およそTransl。)
- Mac OSクローンのライセンスと開発を許可する
これを行うには、次のコンポーネントを導入する必要がありました。
- Iron Abstraction Layer(HAL)。 これは、互換性のあるシステムの作成に役立ちます。
- NuKernelマイクロカーネル
- マルチプロセッサシステムとプリエンプティブマルチタスクのサポート
- 高度な仮想メモリとメモリ保護
- 柔軟なシステム拡張メカニズム
- I / O、ネットワーク、ファイルシステムなどの重要なサービスをカーネルから削除する
- X / Open Transport Interface(OTI)、System V STREAMS、Data Link Provider Interface(DLPI)などの低レベルネットワークサービスのサポート
コップランドでの作業は90年代初頭に加速し、数年後、誰もが奇跡を待っていました。 しかし、プロジェクトは滑りました。 彼らはいくつかの生のドライバー開発キット(ドライバー開発キット、DDK)をリリースしましたが、1996年に予定されていたリリースは行われませんでした。 開発中、彼らは静かにメモリ保護をごまかしました。 Jill Amelio(当時のApple CEO)は、Coplandはピースのコレクションであり、それぞれが別々のチームによって開発され、誰もが魔法のように一緒に成長することを期待していると言いました。
プロジェクトはついに1996年5月に埋葬されました。 Amelio氏は、System 7.6以降、特に成功した開発の一部が次のOSに含まれると述べています。 それがおそらく起こったことです。 少なくとも、Mac OS 7.6に名前が変更されました。
ガーシュウィン
Coplandの恥ずべき失敗の後、OSの更新の問題はさらに深刻になりました。 ガーシュウィンのプロジェクトは簡単に浮上しました。 その機能のうち、おそらく仮想メモリの非常に条件付きのサポートを思い出すことができます。 これはプロジェクトのアイデアに過ぎず、誰もそれに取り組んでいない可能性があります。
ベオス
Appleはしばらくの間、新しいWindows NTベースのOSを作成するためにMicrosoftとのパートナーシップについて話し合ってきました。 まだSun SolarisとBeOSと見なされています。 Beでは、ほぼうまくいきました。 以前Appleの上級従業員だったJean-Louis Gassetによって設立されました。 彼は非常に印象的なオペレーティングシステムを開発したインテリジェントエンジニアのチームを率いていました。 メモリ保護、マルチタスク処理、マルチプロセッシング、メタデータファイルシステム、およびPowerPCプラットフォームとx86の混雑をサポートしていました。 マルチメディアもトップでした。 しかし、市場全体へのアクセスは、多くの欠点のために失敗しました。 たとえば、ネットワークサポート、プリンター、および一連のアプリケーションは特に広範囲ではありませんでした。
![画像](https://habrastorage.org/getpro/habr/post_images/ec3/14a/91e/ec314a91e0fa647bf39f421e541dd801.png)
ガッセはこの取引に自信を持ち、500メガバイト以上を要求しました。 当時のBeへの総投資額は2,000万レベルでした。Appleは最初に50を提供し、次にレートを125に引き上げました。Beは300に引き下げられましたが、取引は行われませんでした。 最後のラッシュで、Appleは200を提供します。貪欲が勝利しました。 ガッセはほぼ同意しましたが、275を要求し、何も受け取りませんでした。
近くのどこかに、商業的に成功したNeXTがありました。 彼のOPENSTEPは何とか企業市場で売られました。 創業者のスティーブ・ジョブズは明らかに何かを知っており、OPENSTEPはすべての競合他社より何年も先を行っていると主張しました。
計画する
NeXTは壊れませんでした。 Appleは1997年2月に4億ドルでそれを吸収します。 Amelioは、プランBではなくプランAを選択したと述べました。
ジェネレーションNeXT
スティーブ・ジョブズは1985年5月31日にアップルから追い出されました。 彼はスタートアップを立ち上げ、彼の元従業員のうちの5人をそこにドラッグします。 彼らは大学や研究室向けの完璧なコンピューターを作りたかったのです。 この少し前に、ジョブズは生物学でポール・バーグのノーベル賞受賞者と話をしました。 ベルクはこのアイデアを支持しました。 Appleは全体としてこのプロジェクトへの投資に興味を示しましたが、怒りは盲目でした。 司法解体があったが、彼らは平和的に終わった。 スタートアップはNeXT Computer、Incと呼ばれていました。
![画像](https://habrastorage.org/getpro/habr/post_images/91d/bb3/74a/91dbb374a7ff407af7dd36a4d36ae73b.jpg)
![画像](https://habrastorage.org/getpro/habr/post_images/93c/9b8/b60/93c9b8b60170e1e25d9b8ec5c184aba6.jpg)
スタートは大成功でした。 Jobsは自分のポケットから700万を投資しました。 Ross Perotから20M、Canonから100Mなど、他の投資がありました。 NeXTは、フォームとコンテンツが完璧なコンピューターを作成できました。 マザーボードもきれいでした。 マグネシウムの立方体はつや消しの黒に塗装されました。 モニタースタンドさえも愛をもって作られました。 搭載されているのは、適切な品質のステレオをサポートするサウンドチップでした。 これらのコンピューターは、独自の工場で生産されました。
ネクストステップ
Jobsは、1988年10月12日にサンフランシスコでNeXTキューブを導入しました。 オペレーティングシステムはNEXTSTEPと呼ばれ、Mach 2.0カーネルと4.3BSD環境を実行しました。 カーネルが変更され、NeXT固有の機能とMachの新しいバージョンから移植された機能の両方が組み込まれました。 ウィンドウサーバーは、ページ記述言語とウィンドウシステムのクロスであるDisplay Postscriptに基づいていました。 同様のことがSunにあり、NeWSと呼ばれていました。
![画像](https://habrastorage.org/getpro/habr/post_images/7e7/bf5/674/7e7bf5674d728708ccd4bd2f4e307171.png)
主なプログラミング言語はObjective-Cで、Interface Builderを使用してインターフェイスを開発しました。 プログラマーの作業を容易にするために、たとえばアプリケーションキット、ミュージックキット、サウンドキットなどの「キット」ライブラリが提供されました。
キューバのリリース時には、NEXTSTEPはバージョン0.8でした。 リリース1.0は、わずか1年後に行われました。
NEXTSTEP 2.0は、1.0からちょうど1年後にリリースされました。 このバージョンでは、CD-ROM、カラーモニター、NFSネットワークファイルシステム、オンザフライのスペルチェック、ロード可能なデバイスドライバーなどのサポートが追加されました。
1990年の秋、NeXTのCERNのTim Berners-Leeは、WYSIWYGと「投稿」ボタンを備えた最初のブラウザを作成しました。 スタッフメンバーのロバートカヨ氏は、NEXTSTEPの十分に考え抜かれた開発システムのおかげで、このプログラムはわずか数か月で作成されたと述べました。
![画像](https://habrastorage.org/getpro/habr/post_images/fd8/86e/6fd/fd886e6fdc288c2f0d28e88c994fd694.gif)
1992年、展示会NeXTWORLD Expo。 ネクストステップ486は995ドル相当で、どのプラットフォーム向けのバージョンかは明らかです。
NEXTSTEP 3.3の最新バージョンは1995年2月にリリースされました。 この時点で、すでに強力な開発ツールと、ユーザーインターフェイス、データベース、分散オブジェクト、マルチメディア、ネットワークなどの多くのライブラリがありました。 ドライバーの開発のために、オブジェクト指向のツールキットドライバーキットがありました。 NEXTSTEPは、Motorola 68k、x86、PA-RISC、およびSPARCプラットフォームで動作しました。 サポートされているプラットフォームで機能するファットバイナリがサポートされていました。
NEXTSTEPはクールで、NeXTハードウェアはスタイリッシュでしたが、それらは生き残りませんでした。 1993年の冬、NeXTは自社のコンピューターの生産を放棄し、x86用のNEXTSTEPに注力しました。
![画像](https://habrastorage.org/getpro/habr/post_images/db3/6d4/cec/db36d4cec300a4289fbf128d7b195e98.png)
NeXTはSun Microsystemsとともに、OpenStepの仕様をリリースしています。OpenStepは、サードパーティカーネル上でオブジェクト指向オペレーティングシステムを開発するためのオープンなAPIとフレームワークのセットです。 すぐに使用できるSunOS、HP-UX、およびWindows NTがサポートされました。 NEXTSTEPに基づく独自の実装は、1996年7月にOPENSTEP 4.0という名前でリリースされました。 間もなくアップデート4.1および4.2が登場しました。 OpenStep APIとOPENSTEPは、NeXTを実際には助けませんでした。 主な製品は、Webアプリケーションを開発するためのフレームワークであるWebObjectsでした。 彼は合併時にAppleを動かし、今日まで広く使用されています。
Objective-c
Objective-Cは、80年代初期にBrad CoxとTom Loveによって開発されたオブジェクト指向言語です。 これは、Smalltalkの原理に基づいた動的リンクとメッセージングを備えた、純粋なC上のオブジェクトアドオンです。 この言語は、C ++よりも学習しやすく、機能的です。 たとえば、多重継承と演算子のオーバーロードはサポートされていません。 Cox and LoveはStepStone Corporationを設立し、NeXT言語とコンパイラのライセンスを取得しました。 1995年、NeXTは、Objective-Cに関連するStepStoneのすべての知的財産権を取得しました。 Mac OS X上のObjective-Cコンパイラは、GCCの修正バージョンに基づいています。 コメントは、これは以前のバージョンのXcodeにのみ当てはまることを示唆しています。 その後、彼は徐々にクラングを支持して放棄されました-約。 perev。
マッハ数
オペレーティングシステムを完全に備えたAppleは、Machのコアも獲得しました。 彼の話を簡単に見てください。
![画像](https://habrastorage.org/getpro/habr/post_images/1b2/1f4/c6c/1b21f4c6c3269e2f626c0ab395127d1e.gif)
ロチェスターのインテリジェントゲートウェイ
1975年にロチェスター大学の研究者チームは、高度なRIG(ロチェスターのインテリジェントゲートウェイ)の開発を開始しました。 多くのローカルおよびリモートコンピューティングリソースへの一貫したアクセスを提供する必要がありました。 ローカルリソースはディスク、リボン、プリンター、プロッター、コンピューター全体であり、リモートリソースはARPANETノードまたは別のネットワークです。 RIGオペレーティングシステムはAlephと呼ばれ、Data General Eclipseミニコンピューターで実行されました。
![画像](https://habrastorage.org/getpro/habr/post_images/703/8dc/8fe/7038dc8fe5b01345f170fea6b60cdca2.jpg)
アレフ-最初の文字はまだどのアルファベットですか
Alephコアは、IPCプロセス間通信を中心に構築されました。 プロセスは、プロセス番号とポートアドレスによるアドレス指定を使用して、互いにメッセージを送信できます。 ポートは、カーネル内の特定のプロセスのメッセージキューでした。 プロセスは、メッセージを待っている間にブロードキャストをリッスンする複数のポートを持つことができます。 プロセスは、別のプロセスに宛てられたメッセージのコピーを静かに受信したり、交換を妨害して、すべてのメッセージ(着信および発信)をインターセプトする可能性があります。
RIGは、基本的な制限により、数年後に曲がりました。 アドレススペースが限られているため、メッセージは2 KBを超えることはできません。 これにより、IPCが非効率的になりました。 ポートはまったく保護されておらず、ポートへのアクセスはまったく制御されていません。 障害を制御する方法などありませんでした。
アクセント
RIGの開発者の1人であるRichard Rashidは、1979年にカーネギーメロン大学(CMU)に移りました。 そこで彼はAccent Network OSカーネルプロジェクトに参加しました。 RIGと同様に、IPCに基づいていましたが、欠陥はほとんどありませんでした。 ポート保護と仮想メモリがありました。 リモートコンピューター上のプロセスにメッセージを転送することが可能でした。 アクセントは、個人用のSpiceとフェールセーフDSNセンサーネットワークの2つの分散コンピューティングプロジェクト用に作成されました。 名前はしゃれに起因しています。 AccentはAccent Inc.が製造する調味料で、グルタミン酸一ナトリウム(MSG)としても知られるグルタミン酸ナトリウムのみで構成されています。 そして、プログラマーはメッセージをメッセージとしてラベル付けするのが大好きです。
数年間の開発の間、健全な結果は発生していません。 ハードウェアを更新し、マルチプロセッシングと移植性のサポートを追加するときが来ました。 Unixとの互換性に問題がありました。
マッハ
アクセントの続編はマッハと呼ばれていました。 Mach UNIXがリリースされる頃には、10年半にわたって開発を続けていました。 Mach開発者はUNIXの重要性と実用性を認識していましたが、元の単純さが消えていたことに注目しました。 リチャード・ラシッドは、コアは可能なすべてのダンプに変わったと言った。
Machは、UNIXのかさ高さに対処するために設計されました。 目標は次のとおりです。
- マルチプロセッサシステムの完全サポート
- 近代的なアーキテクチャのあらゆる種類の機能のサポート。 たとえば、さまざまなメモリアクセスモデル-NUMAおよびNORMA
- 透過的な分散コンピューティングのサポート
- カーネルのサイズを最小化し、APIを簡素化しますが、機能を失わないでください
- UNIXとの完全な互換性
- アクセントの制限を許可する
Machは4.3BSDコードに基づいて構築を開始しました。 使用例およびアクセント付きRIG。 DECが製造したTenexオペレーティングシステムでスパイされた仮想メモリの実装の詳細。 プロジェクトの開発に伴い、BSDコードは自己記述のものに置き換えられ、もちろん新しいコンポーネントが追加されました。
リチャードラシッドは、多くの失敗したオプションの後、MUCK、マルチプロセッサユニバーサルコミュニケーションカーネルという名前を取りました。 彼のコラボレーターの一人であるダリオ・ジウスは、イタリア語のアクセントを付けてマッハ-マックと発音しました。 そして、それが定着しました。
1986年にMachが登場した後、彼は「... UNIXを開発するための新しいカーネル」と称賛されました。 英語の「新しいコア」は、NuKernelと非常に一致しています。 コアはある程度成功しましたが、誰もがそれに気づいたわけではありませんでした。
Machコアは、4つの基本原則に基づいて構築されました。
- タスクは、1つ以上のスレッドに属するリソース(メモリ、ポート、プロセッサ)のコンテナです
- 実行の基本単位はスレッドです。 これらは、タスクによって提供される実行環境で実行されます。 各スレッドには独自のレジスタセットがありますが、メモリは共有され、タスクに属します
- ポートはアクセントに似ています。 これは、Machでのプロセス相互作用のための核内メッセージキューです。
- メッセージは、ストリームが別のストリームのポートに送信できるデータのセットです。
もう1つの重要な抽象化は、メモリオブジェクトです。 これは、ファイルを含むあらゆる種類のデータのコンテナであり、タスクアドレススペースにマップします。 Machはメモリ管理ユニットなしでは機能しませんでした。また、Machを使用するための便利なpmapインターフェイスを提供しました。 UNIXのメモリ管理では、ヒープとスタックが相互に成長する連続したアドレス空間が必要でした。 また、マッハでは、巨大でまばらな仮想アドレス空間に注目して仮想メモリシステムが開発されました。 読み取りおよび書き込み操作と記録中のコピーの分離を広くサポートし、作業を高速化します。 オブジェクトを介したメモリの抽象化により、外部メモリを使用できるようになりました。外部メモリは別のコンピュータ上にある場合もあります。 他の素敵なパンのうち、比較的無料のライセンスを思い出すことができます。
マイクロカーネルの概念により、カーネル自体はI / O、ネットワーク、またはファイルシステムへのアクセスをプログラムに提供できません。 すべてオペレーティングシステムに移行します。 それは簡単になるはずだった。 オペレーティングシステム自体は、Machカーネル上のタスクの1つです。 バージョン2.0および2.5では、これは尊重されていませんでした-BSDとMachは同じアドレス空間で実行されていました。 バージョン2.5に基づいて、Open Software FoundationはOSF / 1システムのカーネルをリリースします。 あなたはまだ山でマッハの使用を思い出すことができます。 Xinu、NEXTSTEP、OPENSTEP、Omron LUNA / 88k、Multimax(Encore)など。
Mach 3はCMUで開発を開始しました。 しかし、OSFを続けました。 これは、BSDがタスクとして実行された最初の真のマイクロカーネルバージョンでした。 Machコアは少しハイパーバイザーであり、多くのオペレーティングシステムが移植されました。 一部はユーザーモードで実行できます。
Mach-USの対称型マルチサーバーオペレーティングシステムは、各プロセスによって読み込まれたサーバーとライブラリを介してシステムサービスを提供しました。 サービスには、プロセス間通信、プロセス管理、ネットワークおよびローカルデバイスとの対話が含まれます。 ライブラリは、システムコールをインターセプトし、他のオペレーティングシステムをエミュレートできます。 BSD、DOS、OSF / 1、SVR4、VMS、OS / 2、Mac OS、HP-UXなど、さまざまなバージョンのエミュレーターがありました。
3番目のバージョンのその他の更新:
- リアルタイムのサポート。 ページングされたカーネルとリアルタイムスケジューラフレームワーク
- 低レベルのデバイスのサポート。 デバイスは、同期および非同期I / Oをサポートするメッセージのポートとして表示されます
- 書き換えられたIPC実装
- システムコールをリダイレクトし、ユーザー空間にそれらを取り出す
- 継続の使用 これは、プロセスの実行中に呼び出される継続関数を定義するときにプロセスがブロックできるようにするカーネルサービスです(???-およそTransl。)
リチャードラシッドはマイクロソフトの最高研究責任者を辞任し、別のリーダーであるエヴィテバニャンは最高技術責任者としてアップルに加わりました。
Mklinux
AppleとOSF(後にOpen Group、後にSilicomp)は、LinuxカーネルをPower Macintoshハードウェアと修正されたMachマイクロカーネルに移植し始めました。 osfmkコアとMkLinuxと呼ばれるシステムが判明しました。 モノリシックLinuxカーネルは、唯一のマイクロカーネルプロセスとして機能しました。 Linux 1.3の最初のリリースは、1996年の初めにMkLinux DR1という名前でリリースされました。 それ以降のバージョンは2.0カーネルに基づいていました。 リリースの1つは、Appleのリファレンスリリースに組み込まれました。 このプロジェクトの多くの開発がMac OS Xに含まれていました。
プロジェクト名について
NeXTがAppleに買収された後、オペレーティングシステム開発の2つの分野が登場しました。消費者市場向けのMac OSの改良と、NeXTに基づく新しい高度なサーバーシステムRhapsodyの開発です。
Appleは、ピンクや赤などの色付きの名前だけでなく、プロジェクトにも使用していました。 音楽的なものもありました。 CoplandとGerswhinは、作曲家のAaron CoplandとGeorge Gershwinにちなんで名付けられました。 「ラプソディインブルートーン」は、ガーシュウィンの有名な作品です。
一つの質問。 この部分の翻訳のプロセスですでに、私は既存のロシア語の翻訳に遭遇しました-appleinsider.ru/istoriya-apple/istoriya-operacionnyx-sistem-apple-chast-9.html 。 今考えています-そのまま続けるかそのままにしておきます