Исследовательский UNIX

Первыми большими изданиями UNIX были Исследовательские системы (Research sys­tems) из Bell Laboratories. В дополнение к самым ранним версиям UNIX эти системы включали шестую версию UNIX с системой разделения времени (Time-Sharing System, Sixth Edition), общеизвестную как V6, которая в 1976 г. была первой версией, широко доступной за пределами Bell Laboratories. Системы идентифицируются номерами редакций Руководства программиста UNIX, которые были текущими на момент соз­дания дистрибутивов.

Система UNIX отличалась от других операционных систем в трех главных отно­шениях.

  • Она была написана на языке высокого уровня.
  • Она распространялась в виде исходных кодов.

  • Она предусматривала мощные примитивы, которые обычно можно было найти лишь в операционных системах, работавших на более дорогом оборудовании.

Большая часть исходного кода системы была написана на С, а не на языке ассемб­лера. Господствующим убеждением в то время было то, что операционная система должна была быть написана на ассемблере, чтобы обеспечить необходимую эффектив­ность и получить доступ к аппаратному обеспечению. Сам язык С был достаточно высо­кого уровня, чтобы позволить легкую компиляцию для широкого спектра компьютерного оборудования без излишних усложнений или ограничений, которые заставили бы про­граммистов возвратиться к языку ассемблера, чтобы получить необходимые эффектив­ность или возможности. Доступ к аппаратному обеспечению был предусмотрен через ассемблерные заглушки для 3 процентов функций операционной системы - таких, как переключение контекста, - которые нуждались в них.

Хотя успех UNIX не произрастает лишь из того, что она была написана на языке высокого уровня, использование С было критическим первым шагом [Kernighan & Ritchie, 1978; Kernighan & Ritchie, 1989; Ritchie et al., 1978]. Язык Ритчи С происходил [Rosier, 1984] от языка В Томпсона, который сам происходил от BCPL [Richards & Whitby-Strevens, 1980]. В настоящее время С продолжа­ет развиваться [Tuthill, 1985; ISO, 1999].

Вторым важным отличием UNIX было ее распространение из Bell Laboratories в другие исследовательские учреждения в форме исходного кода. Предоставляя исход­ный код, основатели системы гарантировали, что другие организации могли не только использовать систему, но также подправлять ее внутреннюю работу. Легкость, с ко­торой новые идеи могли быть приняты в новую систему, всегда была ключом к изме­нениям, которые с ней делались. Каждый раз, когда развивалась новая система, пытав­шаяся обставить UNIX, кто-нибудь анализировал пришельца и клонировал его основ­ные идеи в UNIX. Уникальная способность использовать небольшую, постижимую систему, написанную на языке высокого уровня, в окружении, погруженном в новые идеи, вела к системе UNIX, которая развилась значительно дальше своего скромного начала. Хотя получатели исходного кода должны были его лицензировать, для уни­верситетов были доступны дешевые университетские лицензии. Таким образом, многие люди стали опытными в работе UNIX, создав платформу для мира с открытым исходным кодом, который последовал в дальнейшем.

Третьим важным отличием UNIX было то, что она предоставляла отдельным поль­зователям возможность параллельно запускать множество процессов и подключать эти процессы в конвейеры команд. В то время лишь операционные системы, рабо­тающие на больших и дорогих машинах, имели возможность запускать несколько про­цессов, а число параллельных процессов обычно строго контролировалось системным администратором.

Самые ранние системы UNIX работали на PDP-11, которая была недорогой и мощной для своего времени. Тем не менее был по крайней мере один ранний перенос шестой редакции UNIX (Sixth Edition UNIX) на машину с другой архитектурой: Interdata 7/32 [Miller, 1978]. PDP-11 имела также неудобно маленькое адресное пространство. Появление машин с 32-разрядными адресными пространствами, особенно VAX-11/780, предоставило UNIX возможность расширить свои службы со включением виртуальной памяти и работы в сети. Ранние эксперименты Исследовательской группы (Research group) по предоставлению UNIX-подобных возможностей на другом оборудовании привели к заключению, что переносить всю операционную систему было так же просто, как дублировать службы UNIX под другой операционной систе­мой. Первой системой UNIX с переносимостью в качестве конкретной цели была система UNIX с разделением времени, седьмая редакция (UNIX Time-Sharing System, Seventh Edition (V7), которая работала на PDP-11 и Interdata 8/32 и имела разновид­ность VAX, которая называлась UNIX/32V Time-Sharing, System Version 1.0 (32V).

Исследовательская группа в Bell Laboratories разработала также восьмую, девятую и десятую версии UNIX с разделением времени (соответственно V8, V9 и V10). Их системой 1996 г. является Plan 9

Еще материалы

  • Процедуры вычисления приоритета потока -

    Вычисления приоритета, использованные в алгоритме кратковременного планирования, разбросаны в различных частях системы. Периодически запускаются две процедуры, schedcpuQ и roundrobinQ. SchedcpuQ пересчитывает приоритеты потоков раз в секунду, используя формулу 4.2, и обновляет значение kg_slptime для потоков, заблокированных вызовом sleepQ. Процедура roundrobinQ запускается 10 раз в секунду и заставляет систе­му перепланировать потоки в (непустой) очереди с самым высоким приоритетом в режиме карусели, что дает каждому потоку квант времени в 100 миллисекунд.

  • Управление процессами - общая информация -

    Процесс представляет собой выполняющуюся программу. У процесса должны быть системные ресурсы, такие, как память и лежащий в основе процессор. Ядро поддержи­вает иллюзию одновременного выполнения множества процессов, распределяя сис­темные ресурсы среди набора процессов, которые готовы к выполнению. На много­процессорной машине несколько процессов могут действительно выполняться парал­лельно.

  • Сетевая коммуникация -

    Некоторые из коммуникационных доменов, поддерживаемые механизмом I2С сокетов, предоставляют доступ к сетевым протоколам. Эти протоколы реализованы в виде отдельного программного уровня, находящегося в ядре логически ниже программного обеспечения сокетов. Ядро предоставляет много дополнительных служб, таких, как управление буферами, маршрутизация сообщений, стандартизированные интерфейсы к протоколам и интерфейсы к драйверам сетевых интерфейсов для использования раз­личных сетевых протоколов.

  • Межпроцессное взаимодействие -

    Межпроцессное взаимодействие в FreeBSD организовано в коммуникационные доме­ны. Важнейшие домены, поддерживаемые в настоящее время, включают локальный домен для взаимодействия процессов, выполняющихся на одной машине; домен IPv4 для взаимодействия процессов с использованием набора протоколов TCP/IP (четвертой версии) и домен IPv6, который является новейшей версией протоколов Интернета.

  • Терминалы -

    Исторически пользователи взаимодействовали с системой, используя подключенные к компьютеру через жестко запаянные линии связи терминалы. Хотя фиксированные терминалы в значительной степени остались в истории, обработка символов, осуществляе­мая для ввода/вывода с клавиатуры, по-прежнему важна. Наиболее обычный вид сеанса пользователя в FreeBSD использует псевдотерминал. Псевдотерминал состоит из пары устройств, называемых ведущим (master) и ведомым (slave) устройствами.