9


1

C以前のOS開発に使用する言語

Cはオペレーティングシステム開発の標準的なプログラミング言語であることは知っていますが、好奇心からCが何に先行するのか疑問に思っていました。 C以前のオペレーティングシステム開発に使用された主なプログラミング言語は何ですか?

6 Answer


9


CがUnix(1969 …​)に使用されるまで、多くのシステムがありました。 http://en.wikipedia.org/wiki/Timeline_of_operating_systems [これはまばらなタイムラインです。]詳細については、各システムをクリックしてください。 初期のシステムのほとんどは、アセンブラーで実装されます。 注目に値する例外(タイムラインにリストされていない)は、ALGOLで書かれたO / Sを使用した1961年前のhttp://en.wikipedia.org/wiki/Burroughs_large_systems[B5000]でした。


5


1970年代の「冷戦」の間に、ALGOL 68のデータセキュリティおよび並列処理機能を使用して、http://en.wikipedia.org/wiki/Capability-based_security [Secure / Capability]ベースのオペレーティングシステムを作成する努力がありました。

Cambridge CAP computer-オペレーティングシステムを構成するすべての手順は、http://en.wikipedia.org/wiki/ALGOL_68C [ALGOL 68C]で記述されていますが、他の密接に関連する保護された手順(ページネーターなど)は、http://en.wikipedia.org/wiki/BCPL [BCPL]に記述されています。 c.f。 マイクロソフト

Flex machine-ハードウェアは、Algol 68RSで記述されたオペレーティングシステム、(モジュラー)コンパイラー、エディター、ガベージコレクター、およびファイリングシステムを使用して、カスタムおよびマイクロプログラマブルでした。 このAlgol68RSのLinuxポートは、コンパイルからダウンロードできます。http://sourceforge.net/projects/algol68/files/ [Sourceforge:algol68toc]からダウンロードできます。

/ 興味深いことに、http://en.wikipedia.org/wiki/Defence_Research_Agency [DRA’s]の代数的に指定された抽象的なマシンhttp://en.wikipedia.org/wiki/Ten15[Ten15]は、http:/からも利用できます。 /sourceforge.net/projects/tendra4minix/[Sourceforge:TenDRA](minux用)。 Ten15は、コンパイラ用のDRAの中間言語として機能し、CおよびAdaをサポートするように進化しました。 どうやらhttp://en.wikipedia.org/wiki/FreeBSD[FreeBSD]/Unixをhttp://en.wikipedia.org/wiki/TenDRA[TenDRA] Cコンパイラを使用して移植しようとしたようです /

ICL VME-http://en.wikipedia.org/wiki/S3_programming_language[S3プログラミング言語]は、http://en.wikipediaの実装言語でした。 org / wiki / operating_system [オペレーティングシステム] VME。 S3はALGOL 68に基づいていましたが、データ型と演算子はhttp://en.wikipedia.org/wiki/ICL_2900_Series[ICL 2900 Series]によって提供されるものに合わせて調整されました。 このOSはまだLinux VMとして使用されており、約100,000人のユーザーがいます。

ソビエト時代のコンピューターhttp://en.wikipedia.org/wiki/Elbrus_%28computer%29[Эльбрус-1(Elbrus-1)]およびЭльбрус-2は、高級言語http://en.wikipediaを使用して作成されました。従来のアセンブリではなく、org / wiki / AL-76_programming_language [uЭль-76(AL-76)]。 uЭль-76はAlgol-68に似ていますが、主な違いは、ハードウェアレベルでサポートされるuЭль-76の動的バインディングタイプです。 uЭль-76は、アプリケーション、ジョブ制御、システムプログラミングに使用されますhttp://www.ixbt.com/cpu/e2k-spec.html[c.f。 e2k-spec]。

たぶん、米軍はどこかで似たようなことをしていました。 誰でも?


4


インタプリタと(かなり原始的な)OS層がForthで書かれた多くの16ビットForthシステムがありました。

元のMac OSは、68k ASMとわずかに拡張されたPascalを組み合わせて作成されました。

ADAはいくつかのOSの記述に使用されています。

しかし、C以前のOS開発に使用されていた主要な言語はIBM 360アセンブリ言語だったと思います。


4


バローズは、OS開発にアセンブラー以外の何かを使用した最初の1つでした。 彼らはアルゴールの方言を選びました。

1965年にMultics(プロジェクトMAC、ARPAの資金提供)の設計が始まり、PL / IがOSの開発に選ばれました。 1969年、MulticsはMITで使用するためにオープンしましたが、フラストレーションがあり、Bell LabsはProject MACから撤退しました。 ケン・トンプソン、デニス・リッチー、ダグ・マキロイ、J F. Ossannaは聖杯を求め続け、Unics(後のUnix)開発が始まりました。


3


場合によります。 たとえば、Amiga OSは元々BCPLである程度書かれていたので、多くの古代のオペレーティングシステムは純粋なアセンブリ言語で書かれていたと想像できます。

CP / M(MS-DOSの一種)はPL / Mで作成されましたが、パフォーマンス上の理由からMS-DOSはアセンブリで作成されました。 MS-DOSに何かあります:http://www.patersontech.com/Dos/Byte/InsideDos.htm

(編集、このFortranガベージをどこで拾ったかわからない。)


3


オペレーティングシステムは、アセンブラーで記述されることを「望んでいます」。 ゼロから始めている場合、割り込みルーチンを完了したら、高レベルの言語インターフェイスに移動せずにそのまま続行できます。

さらに、アセンブラーは進化することを好みます。 指定した命令セットをカバーしたら、複数の目的に役立つ命令のエイリアス名を追加すると便利です。 次に、いくつかのマシン命令をエイリアスできる疑似命令があります。 次に、マクロサブルーチンを記述し、命令のように見えるコードの任意のセクションを生成するための拡張可能な機能があると便利です。 (Cマクロとは異なり、これにより多くの場合、フロー制御とスクリプトのようなプログラミングが可能になります。)次に、特定のコンテキストでのみ識別子が使用されるようにするスコープ規則があります。

少しずつ、言語が進化します。 Cは薄い空気から飛び出しませんでした。 高レベルのアセンブラーから進化した1世代または2種類の言語(http://en.wikipedia.org/wiki/C_%28programming_language%29#History[Algol、BCPL])が先行していました。 多くのプラットフォーム固有のアセンブリ言語は、実際にはかなりいいものでした。 IBMはまだ平均的なアセンブラーを作っています。 (もちろん、それ以前はそれほど素晴らしいアセンブラーではなく、それ以前はパンチカードとトグルスイッチでした。)

最近では、GNU `as`は比較的原始的であるため、アセンブリに少し悪い名前を与えています。 しかし、恐ろしい戦術を信じないでください。