История UNIX

Операционная система UNIX широко использовалась в течение свыше 30 лет и помогла определить многие области вычислительной техники. Первая версия системы UNIX была разработана в Bell Laboratories в 1969 г. Кеном Томпсоном (Ken Thompson) в качестве частного исследовательского проекта для ис­пользования с PDP-7, не имевшей операционной системы. К Томпсону вскоре присое­динился Денис Ритчи (Dennis Ritchie), который не только внес вклад в создание проек­та и реализацию системы, но также создал язык программирования С. В дальнейшем система была полностью переписана на С, почти без ассемблера. Оригинальный эле­гантный дизайн системы [Ritchie, 1978] и разработки в течение первых 15 лет [Ritchie, 1984а; Compton, 1985] сделали UNIX важной и мощной операционной системой [Ritchie, 1987]. Ритчи, Томпсон и другие ранние разработчики UNIX в Bell Laboratories работали до этого над проектом Multics [Peirce, 1985; Organick, 1975], который сильно повлиял на эту более новую операционную систему. Даже имя UNIX является просто калам­буром с Multics; в областях, в которых Multics пытался выполнять множество задач, UNIX старался выполнить лишь одну задачу, но сделать это хорошо. Базовая организа­ция файловой системы UNIX, идея использования процесса пользователя для команд­ного интерпретатора, общая организация интерфейса файловой системы и многие другие характеристики системы пришли непосредственно из Multics. Были внедрены также идеи из других операционных систем, таких как CTSS Мас-сачусетского технологического института (Massachusetts Institute of Technology - MIT). Операция fork для создания новых процессов пришла из операционной системы GENIE Беркли (SDS-940, позже XDS-940). Возможность недорогого создания процес­сов для пользователя вела к использованию одного процесса на команду, вместо ис­пользования для команд вызовов процедур, как было сделано в Multics.

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

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

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

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

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

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

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

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

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

  • Терминалы -

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