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

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

Практически, если не в действительности, каждая операционная система типа UNIX сегодня делает различие между многопользовательским и однопользовательским режимами. Однопользовательский режим, как правило, предназначен для низкоуровневого обслуживания системы, которое не может быть выполнено, пока система работает нормально, даже с сокращенным набором служб (часто обслуживание файловой системы, которое обычно должно выполняться в автономном режиме).

Однако кто-то, очевидно, должен был написать первый код, который фактически отличал бы однопользовательский режим от многопользовательского.

Я подозреваю, что многопользовательский режим появился после однопользовательского режима, просто потому, что многопользовательский режим делает больше вещей, и имеет смысл изначально запускать систему в однопользовательском режиме и только потом переходить в многопользовательский режим (и именно так, по крайней мере, это делает Linux; ядро ​​работает в «однопользовательском» режиме, о чем свидетельствует переход, например, init=/bin/bashв него, а затем эффективное initпереключение в многопользовательский режим), но у меня такой вопрос:когда и в каком варианте/версии впервые было проведено различие между ними?

решение1

Unix проводил это различие с самого начала, то есть с момента выхода версии 1 в 1971 году.

Система загружалась в многопользовательском режиме (т.е. пользователи подключались к доступным последовательным интерфейсам, tty0но tty5была предусмотрена возможность добавления еще четырех tty).

Руководство по Unix v1положения для раздела 4, ttyстраница:

By appropriate console switch settings, it is possible to
cause UNIX to come up as a single—user system with I/O on
this device.

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

Позднее, с появлением Unix версии 7 (1979), вместо аппаратных переключателей система сначала загружалась в однопользовательском режиме, а когда однопользовательская оболочка выходила, она переключалась в многопользовательский режим.

Еще позже System III (1981) представила этот inittabфайл. С его помощью можно было лучше определять и настраивать несколько уровней запуска и выбирать тот, который использовать. Уровень запуска 1 был однопользовательским, а уровень запуска 2 — многопользовательским. Если файл inittab отсутствовал, система загружалась в однопользовательском режиме.

решение2

Первоначально init запускал оболочку на консоли в однопользовательском режиме, а когда эта оболочка завершалась, она запускала программу входа в систему (фактически getty) на последовательных портах, а также монтировала остальные файловые системы и запускала все демоны, настроенные для работы в этом режиме.

Все это контролировалось записями в /etc/inittab.

Все это присутствовало в версиях Unix PDP-11 в начале 1970-х годов, и, я полагаю, еще до этого.

Конечно, деталей бесконечное множество, но суть такова.

решение3

Наиболее вероятной причиной использования терминов single uservs. multi userявляется то, что сразу после загрузки UNIX имела только смонтированную корневую файловую систему, доступную только для чтения.

Следующее, что было сделано, — это проверка корневой файловой системы (примерно 1 МБ) и ее повторное монтирование для чтения/записи.

Затем /usrфайловая система была проверена и смонтирована.

Поскольку пользователи могут войти в систему только после /usr/монтирования, именно в этот момент UNIX стал способен поддерживать многопользовательскую среду.

Связанный контент