Языки, используемые для разработки ОС до C - PullRequest
9 голосов
/ 28 августа 2010

Я знаю, что C - это стандартный язык программирования для разработки операционной системы, но из любопытства мне было интересно, что ему предшествовало. Какой язык программирования был основным для разработки операционной системы до C?

Ответы [ 6 ]

9 голосов
/ 28 августа 2010

До того, как C был использован для Unix (1969 ...), было много систем. Вот редкая временная шкала. Нажмите на каждую систему для деталей. Большинство ранних систем будут реализованы на ассемблере. Заметным исключением (не указанным на временной шкале) было опережающее время 1961 B5000 с операционными операциями, написанными на АЛГОЛЬ.

5 голосов
/ 31 августа 2010

Во время «холодной войны» 1970-х годов была предпринята попытка использовать функции безопасности и параллельной обработки данных ALGOL 68 для создания Secure / Capability операционных систем:

Компьютер Cambridge CAP - Все процедуры, составляющие операционную систему, были написаны в ALGOL 68C , хотя ряд других тесно связанных защищенных процедур, таких как paginator, написаны в BCPL . c.f. Microsoft

Flex machine - Аппаратное обеспечение было нестандартным и микропрограммируемым, с операционной системой, (модульным) компилятором, редактором, сборщиком мусора и системой хранения, написанными на Algol 68RS. Порт Linux этого Algol68RS можно загрузить с компиляции, можно загрузить с Sourceforge: algol68toc .

/ * Интересно, что DRA's алгебраически заданная абстрактная машина Ten15 все еще доступна, также из Sourceforge: TenDRA (для minux). Ten15 служит промежуточным языком DRA для компиляторов и развивается для поддержки C и Ada. По-видимому, была предпринята попытка портировать FreeBSD / Unix с использованием компилятора TenDRA C * /

ICL VME - Язык программирования S3 был языком реализации операционной системы VME. S3 был основан на ALGOL 68, но с типами данных и операторами, согласованными с теми, которые предлагаются ICL 2900 Series . Эта ОС по-прежнему используется в качестве виртуальной машины Linux и насчитывает около 100 000 пользователей.

Компьютеры советской эпохи Эльбрус-1 (Эльбрус-1) и Эльбрус-2 были созданы с использованием языка высокого уровня uЭль-76 (AL-76) , а не традиционная сборка. uЭль-76 напоминает Algol-68. Основное отличие заключается в типах динамической привязки в uЭль-76, поддерживаемых на аппаратном уровне. УЭль-76 используется для применения, управления заданиями, системного программирования c.f. e2k-спецификации .

Возможно, американские военные где-то делали нечто подобное. Кто-нибудь?

4 голосов
/ 28 августа 2010

Берроуз был одним из первых, кто использовал что-то кроме ассемблера для разработки ОС. Они выбрали диалект алгол.

В 1965 году началась разработка Multics (Project MAC, финансируемый ARPA), и PL / I был выбран для разработки ОС. В 1969 году Multics был открыт для использования в MIT, но были разочарования, и Bell Labs вышли из Project MAC. Кен Томпсон, Деннис Ритчи, Даг Макилрой и Дж. Ф. Оссанна продолжали искать святой Грааль, и началось развитие Unics (позднее Unix).

История Multics

Неисправность мультиплексора?

Unix v. Multics

4 голосов
/ 28 августа 2010

Было много 16-битных систем Forth, где интерпретатор и (довольно примитивный) уровень ОС были написаны на Forth.

Оригинальная Mac OS была написана в сочетании 68k ASM и немного расширенного Pascal.

ADA использовался для написания нескольких ОС.

Но я предполагаю, что доминирующим языком, используемым для разработки ОС до C, был язык ассемблера IBM 360.

3 голосов
/ 28 августа 2010

Операционные системы «хотят» писать на ассемблере.Если вы начинаете с нуля, после того, как вы выполнили подпрограммы обработки прерываний, вы можете просто продолжать и не переходить к высокоуровневому языковому интерфейсу.

Кроме того, ассемблеры любят развиваться.Как только вы охватите указанный набор инструкций, удобно добавлять псевдонимы для инструкций, которые служат нескольким целям.Далее идут псевдоинструкции, которые могут использовать псевдонимы для машинных инструкций.Тогда хорошо иметь расширяемое средство для написания макропрограмм, чтобы генерировать произвольные участки кода, которые выглядят как инструкции.(В отличие от макросов C, это часто может позволять управление потоком и программирование в стиле сценариев.) Затем существуют правила области видимости, гарантирующие, что идентификаторы используются только в определенном контексте.

Бит за битом, языки развиваются.С не выскочил из воздуха.Ему предшествовало поколение или два языка ( Algol, BCPL ), которые произошли от ассемблеров высокого уровня.Многие платформенные языки ассемблера были достаточно хорошими.IBM все еще делает подлого ассемблера.(Конечно, до этого это были не очень хорошие ассемблеры, а до этого были перфокарты и тумблеры.)

В последнее время GNU as придал сборке немного дурного имени, поскольку был относительнопримитивный.Не верьте тактике запугивания.

3 голосов
/ 28 августа 2010

Это зависит. Например, ОС Amiga изначально была написана до некоторой степени на BCPL, и вы могли бы представить, что многие древние операционные системы были написаны на чистом ассемблере.

CP / M (который является своего рода предшественником MS-DOS) был написан на PL / M, но MS-DOS был написан на сборке по соображениям производительности. Вот что-то на MS-DOS: http://www.patersontech.com/Dos/Byte/InsideDos.htm

(Отредактировано, не уверен, где я взял этот фортранский мусор.)

...