Назначение и основные свойства ОС
Связующим звеном между аппаратными средствами и пользователем выступают программы самого различного уровня сложности, которые все вместе образуют программное обеспечение (ПО) ПК. ПО ПК можно условно разделить на два больших класса:
Системное – операционные системы и системы программирования;
Прикладное – пакеты прикладных программ (ППП).
Часть ПО, наиболее тесно взаимодействующая с аппаратными средствами ПК - это ОС. В состав ОС входят средства, обеспечивающие первичную загрузку системы, интерпретацию команд, управление файлами, управление ввода-вывода, планирование заданий, управление памятью и некоторые другие функции. ОС – это сложный комплекс программ, осуществляющий управление всеми ресурсами ПК. Под ОС понимают комплекс управляющих и обрабатывающих программ, который, с одной стороны, вступает как интерфейс между оборудованием компьютера и пользователем с его задачами, а с другой – предназначен для наиболее эффективного использования ресурсов вычислительной системы и организации надежных вычислений.
Под операционной системой понимают комплекс управляющих и обрабатывающих программ, который, с одной стороны, выступает как интерфейс между оборудованием компьютера и пользователем сего задачами, а с другой – предназначен для наиболее эффективно распределения ресурсов системы и организации надежных вычислений.
Машинно-зависимые свойства ОС:
планирование процессов;
обработка прерываний;
обслуживание ввода-вывода;
управление памятью.
Машинно-независимые свойства ОС:
работа с файлами;
планирование заданий;
распределение ресурсов;
защита данных.
Общесистемные свойства системы.
Надежность.
ОС должна быть в состоянии производить определение и диагностирование ошибок, а также восстановление после большинства характерных ошибок, произошедших по вине пользователя. Иными словами, система защищает пользователей от их не собственных ошибок или по крайней мере должна минимизировать вред, который они могут оказать на все окружение.
Защита.
Система должна защищать выполняющиеся задачи пользователей от взаимного влияния друг на друга. Она должна минимизировать возможность порчи программ и данных одного пользователя другим пользователем. До некоторой степени система должна защищать как себя, так и пользователей от ошибок, сделанных пользователями.
3.Предсказуемость.
Система должна отвечать на запросы пользователей предсказуемым образом. Время, необходимое для выполнения программ пользователя, не должно варьироваться слишком сильно. Результат выполнения команд пользователя должен быть одним и тем же вне зависимости от последовательности, в которой эти команды посылаются на исполнение.
4. Удобство.
Система предлагается пользователям потому, что она облегчает работу и освобождает от времени по распределению различных ресурсов и задач по управлению этими ресурсами.
5. Эффективность.
При распределении ресурсов система должна максимально повысить эффективность их использования пользователем. Сама система не должна использовать большое количество ресурсов, т.к. эти ресурсы становятся необходимыми для удовлетворения запросов пользователей.
6. Общие системные услуги.
Система обеспечивает пользователя именно тем обслуживанием, которое ему нужно. Пользователь не должен оказаться в не выгодном положении из-за того, что он не воспользовался дополнительными возможностями системных услуг, если они неподходящие для задачи. В тоже время, если обслуживание системы не обеспечено возможностями, предоставляющими пользователю средства для выполнения необходимых ему работ, то такая система не приемлема.
7. Гибкость.
Системные операции могут настраиваться для согласования с поведением пользователя. Ресурсы могут быть увеличены (уменьшены) для того, чтобы увеличить эффективность и доступность системы.
8. Расширяемость.
В процессе эволюции к системе могут добавляться новые средства. Т.к. пользователь нуждается в изменениях, никакое прикладное окружение не является статистическим. Следовательно, для того чтобы оставаться жизнеспособным инструментом, должна изменяться также и ОС.
9. Ясность.
Пользователь может оставаться в брошенном неведении относительно вещей, существующих ниже уровня интерфейсной системы. В тоже время, он должен иметь возможность узнать о системе столько, сколько он хочет.
Для классификации ОС имеется много различных схем. Классификация помогает лучше понять, для чего служит ОС. Поэтому классифицировать ОС будем с точки зрения пользователя, т.к. восприятия пользователя непосредственно влияет на использование данной системы.
ОС ПАКЕТНОЙ ОБРАБОТКИ.
На ранних стадиях развития вычислительной технике ЭВМ предоставлялась в распоряжение одного пользователя на время, необходимое для установки и выполнения задач. Основные затраты времени приходились на процедуру установки и снятия задач. Введение мониторов (т.е. специального набора, процедур и структур данных, разделенных между процессами. В каждый момент времени монитор может обслуживать только один процесс) пакетного режима автоматизировало процедуру подготовки ЭВМ для выполнения задания. Первичная цель ОС пакетной обработки заключалась в том, чтобы повысить эффективность ЭВМ за счет последовательного выполнения заданий без вмешательства человека.
Монитор пакетной обработки был осуществлен как небольшое ядро программного кода плюс нерезидентная часть.
Загрузочные работы представлялись для монитора пакетной обработки в виде потока заданий. Каждое задание отделялось от следующего записью ОПИСАНИЕ ЗАДАНИЯ, содержащей основную информацию относительно идентификации пользователя, который он хотел использовать. Каждое задание включало программу и некоторые данные, предназначенные для обработки, и заканчивалось записью КОНЕЦ ЗАДАНИЯ, которая сигнализировала монитору, что он должен переинициализировать себя для загрузки задания следующего пользователя.
Выполняя задание, монитор пакетной обработки интерпретировал запись описания задания и внешней памяти. Компилятор транслировал программу пользователя в объектный модуль, который размещался в оперативной памяти. Объектный модуль загружался в оперативную память на место компилятора, после чего ему передавалось управление Т.О., оперативная память разделялась между двумя подсистемами, однако в определенный момент времени только одна подсистема могла быть резидентной и находиться в состоянии выполнения.
Недостатками ОС пакетной обработки является то, что оператору вначале приходилось загружать в память машины с внешнего носителя резидентную часть – программу монитор, и в последствии управлять состоянием машины. Кроме того, монитор не имел никакого контроля над исполняемой программой. Если объектная программа «выскакивала» на недопустимую команду «остановки», или же программа входила в бесконечный цикл, то оператор должен был остановить машину и перезагрузить систему.
Популярность мониторов пакетной обработки способствовала развитию стандартных систем управления файлами и автоматизации управления периферийными устройствами.
Многие современные системы сохраняют базовые принципы пакетной обработки. Работая за терминальным устройством, пользователь может создать командный файл заданий и передать его на выполнение подсистеме пакетной обработке.
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ (СРВ)
Одной из основных областей применения современных вычислительных систем является управление процессами и взаимодействие с внешней средой. Система управления процессом характеризуется необходимостью принимать информацию с цифрового или аналогового вводного датчика, анализировать ее и затем посылать сигналы, которые изменяют процесс, находящийся под ее управлением. Все это должно происходить в реальном времени, где реальное время, по существу, есть время реакции данного процесса.
Ограничения по времени, связанные с управлением процессом, налагают свои специфические требования на ОС. Эти требования и привели к созданию СРВ. СРВ выглядит как строго определенным образом ориентированные на выполнение конкретных работ сокращенные версии более сложных ОС с минимальным набором обслуживающих программ.
МНОГОПРОЦЕССОРНЫЕ СИСТЕМЫ (МПС)
МПС состоят из двух или более ЦП, осуществляющих параллельное выполнение команд. Каждый процессор может работать в пакетном режиме, мультипрограммном режиме или режиме разделения времени. Два (или более) процессора могут быть связаны непосредственно или гибкой связью.
Системы с непосредственной связью преимущественно используются в больших и средних ЭВМ второго-третьего поколения.
МПС с гибкой связью разделяют между собой коммуникационные средства или устройства прямого достигнута. Два гибко связанных ЦП могут быть соединены друг с другом через синхронную линию, причем каждый ЦП выглядит для другого как некоторый вид коммуникационного терминального устройства. Другой подход для двух ЦП заключается в том, что они разделяют между собой устройство внешней памяти при помощи возможности дуального входа. В этом случае каждый ЦП имеет доступ к диску через свою собственную шину ввода-вывода, несмотря на то, что устройство разделяется между двумя ЦП.
Отличительная характеристика этого метода в том, что не существует прямого управления ресурсом одного процессора другим процессором; каждый ЦП работает независимо.
СИСТЕМЫ С РАЗДЕЛЕНИЕ ВРЕМЕНИ И СИСТЕМЫ МУЛЬТИПРОГРАММИРОВАНИЯ (СсРВ и СМП)
СсРВ на начальном этапе развития ОС являлись попыткой предоставить каждому пользователя свою персональную ЭВМ путем эффективного использования ресурсов относительно большой вычислительной машины.
Другими словами, с помощью разделения ресурсов машины среди нескольких одновременно работающих пользователей можно достиг лучшего использования оборудования. Т.к. большинство ЭВМ имеет ограниченное число периферийных устройств, содержание в оперативной памяти нескольких программ пользователей дает возможность одной программе использовать ЦП во время, когда другая программа ожидает передачи данных с периферийного устройства. Этот подход известен как мультипрограммирование.
СМП характеризуются концепцией параллельности – в определенный момент времени в ЭВМ может выполняться более чем одна программа. Т.к. существует только один ЦП, очевидно, что в любом случае в каждый фиксированный момент времени может выполняться только одна программа. Программы попеременно используют ЦП (в соответствии с некоторой стратегией), и, таким образом, существуют в различных стадиях выполнения. Однако программа имеет свою совокупную порцию ресурсов на все время выполнения. ОС должна решить, какая система готова к выполнению, и дать ей доступ к ЦП.
Концепции мультипрограммирования и разделения времени взаимно дополняют друг друга. Практически все современные ПК сочетают в себе возможности мультипрограммирования с возможностями интерактивного разделения времени. Кроме того, при мультипрограммировании возможно использование подхода приоритетных – фоновых задач.
Существенной особенностью СсРВ является работа ЭВМ в диалоговом режиме. Существуют два типа диалогов, оказывающих сильное влияние на гибкость и сложность ОС:
¨ полный диалоговый режим, при котором в течении всего времени выполнение программы пользователь может передавать информацию программе, равно как и программа может передавать информацию пользователю;
¨ полудиалоговый режим, при котором программа может передавать информацию пользователю, однако единственный контроль над программой, находящейся в распоряжении пользователя, - это возможность остановить программу и отменить ее дальнейшее выполнение.
С точки зрения природы доступа СсРВ могут быть классифицированы следующим образом:
ССРВ специального назначения.
Эти системы обычно дают возможность пользователям подготавливать и выполнять программы на ограниченном числе языков.
СсРВ общего назначения.
Эти систем делают акцент на быстрых ответах пользователям, в то же время обесе6чивая доступ к файловой системе к вместе с тем возможность использования разнообразных средств математического обеспечения. Они характеризуются предоставлением пользователям возможности создавать дополнительные средства.
СИСТЕМЫ МУЛЬТИПРОГРАММИРОВАНИЯ ДЛЯ ПАКЕТНОЙ ОБРАБОТКИ
Подобные системы обеспечивают непосредственны доступ к ресурсам ПК, причем акцент делается скорее на максимальной производительности, чем на быстроте ответов системы. Они могут обслуживать ограниченное число пользователей и обеспечивать некоторые или даже все средства, доступные в среде пакетной обработки.
ИНФОРМАЦИОННЫЕ СИСТЕМЫ С НЕПОСРЕДСТВЕННЫМ ДОСТУПОМ
Эти в высокой степени специализированные системы характеризуются ограниченным спектром запросов к общей информационной базе.
Основное внимание мы будем уделять мультипрограммным системам общего назначения.
Для таких систем характерны следующие состояния через которые проходит программа, выполняющаяся в СсРВ.
Пользователь устанавливает связь с СсРВ с помощью специальной последовательности команд в систему, осуществляющих открытие сеанса. После выполнения этих команд сеанс переводится в командное состояние, означающее, что все, что пользователь будет вводить с клавиатуры будет интерпретироваться как команда для системы. Когда система загружает программу в память, сеанс находится в состоянии «ожидания команды». Когда команда готова для выполнения, она переходит в рабочее состояние. Когда программе предоставляется ЦП, говорят, что она находится в состоянии выполнения. Программа обычно переходит из рабочего состояния в состояние выполнения и обратно до тех пор, пока ей не потребуется выполнить операцию ввода-вывода. Возможны три типа операций ввода-вывода с соответствующими им состояниями. Если программа пытается считать строку с консоли пользователя, любая строка находящаяся на входном буфере, будет передана программе, и выполнение программы будет продолжено. Если в буфере нет строки, программа переходит в состояние ожидания ввода и будет находиться в этом состоянии до тех пор, пока пользователь не введет с клавиатуры законченную строку. Программа может также оказаться в состоянии ожидания вывода, что происходит в случае, когда выходной буфер переполнен чрезмерным числом выводных строк. Кроме того, программа может перейти в состояние ожидания файла, в случае, когда она не может получить доступ к файлу, который в данный момент используется другой программой. Когда условие ожидания удовлетворено, программа автоматически переходит в рабочее состояние. И наконец, когда выполнение программы завершено, она переводится супервизором в пассивное состояние.
СЕТЕВЫЕ ОС РАСПРЕДЕЛЕННОЙ ОБРАБОТКИ
Появление технологии распределенной обработки и сетей ЭВМ как ценного метода для обеспечения пользователей всеми необходимыми ресурсами привело к созданию сетевых операционных систем (СОС). Работа СОС основывается на пяти основополагающих положениях:
обеспечение единообразных для всех пользователей видов ресурсов;
модульная расширяемость;
управление связями «Сервер – сеть – ЭВМ»;
распределение глобальных ресурсов сети между удаленными;
режим реализации.
Основные задачи решаемые СОС:
Коммуникация пользователя.
Пользователи (и подчиненные им процессы) нуждаются в коммуникациях в распределенной сети. Коммуникации подразумевают пять категорий сервисных программ: создание, координация, пересылка, сигнализация и обработка событий. Используя эти сервисные программы, пользователь может участвовать в удаленных диалоговых сеансах.
Миграции данных.
Миграции данных дают возможность процессу, выполняющемуся на одной узловой ВМ, получить доступ к данным, находящихся на одной или нескольких других удаленных условиях ЭВМ. Самый простой процесс заключается в том, что процесс запрашивает только помимо файла, содержащего данные, которые ему нужны для дальнейшей работы. Этот файл целиком передается с удаленного ПК на местную ЭВМ. Для реализации этих процессов необходимо, чтобы компьютеры были либо непосредственно (шина к шине), либо гибко (сетевыми картами или модемами) связаны.
Выполнение задания в сети и управление.
Задание в сети представляет собой набор процессов, выполняющихся параллельно или последовательно на одном или нескольких узловых ПК. Для выполнения задания в сети необходимо:
назначение процесса и управления им;
обработка процесса;
управляющий язык СОС;
обеспечение межпроцессорных коммуникаций.
Совместно перечисленные требования обеспечивают удовлетворение потребностей и синхронизацию между процессами.
2. Общие принципы взаимодействия пользователя с ОС
Взаимодействие с пользователями осуществляется через интерфейс пользователя (это и есть первая основная функция ОС), который поддерживается ОС. Интерфейс пользователя, предоставляемый ОС, предназначен для обеспечения нужд различных групп людей, работающих на ПК. Например, в некоторых случаях для работы на ПК пользователю предоставляется набор команд, посредством которых он может получать доступ к системным программам (трансляторам, редакторам, загрузчикам), осуществлять управление файлами и внешними устройствами. Подобный командный язык достаточно прост в использовании; обычно имеется возможность в диалоге с машиной получить подсказку или посмотреть меню, содержащее варианты команд.
В более сложных системах существует несколько различных языков общения с ОС. Непрофессиональным программистам предоставляется возможность работать на простом языке директив. Профессиональные программисты имеют возможность использовать более мощный и сложный язык, называемый языком управления заданиями. Кроме того, обычно, существует специальный язык взаимодействия операторов с ЭВМ, позволяющий допускать и останавливать задания, выяснять их состояние и состояние системных ресурсов, управлять внешними действиями.
В идеале интерфейс пользователя представляет собой систему общения с компьютером, отвечающую любым вопросам самого пользователя.
Для выполнения часто встречающихся задач ОС предоставляют программам определенный набор услуг. Например, для чтения из файла некоторого набора данных программа Р может использовать стандартную сервисную программу.
Сервисные программы могут рассматриваться как часть операционного окружения задач, находящихся в решении. Само же операционное окружение состоит из ряда сервисных программ, которые могут быть использованы для управления ресурсами вычислительной системы, выделяя их пользователю по мере надобности.
В качестве примера услуг, предоставляемых операционным окружением, рассмотрим функцию ввода-вывода. Почти все ОС имеют стандартные программы, помогающие осуществлению таких операций. Предположим, что программа работает под управлением однопрограммной системы. Тогда, чтобы прочитать байт без помощи ОС, программа должна содержать цикл, в котором анализируется состояние устройства и выполняется соответствующая команда. Обнаружение и устранение ошибок, в этом случае, также возложено на саму программу.
Наличие поддержки со стороны ОС сильно облегчает задачу. Программа пользователя может просто инициализировать стандартную программу, задав устройство, которое должно быть использовано. За всеми нюансами, такими как опрос состояния и подсчет переданных байтов, проследит ОС. Она же примет необходимые меры по исправлению ошибок.
Стандартная сервисная программа, подобная описанной выше, может восприниматься как расширение базовой машины. Типичная ОС содержит много подобных программ. Вместе взятые, они составляют расширенную машину, которая и используется во время выполнения программы. Программам не нужно опускаться до уровня базовых аппаратных средств, поскольку все функции и возможности представляет расширенная машина. Она, как правило, проще в использовании, чем реальная. Иногда расширенную машину называют «виртуальной машиной» (будет рассмотрена позже).
Операционное окружение мультипрограммных ОС содержит также программы, которые управляют ресурсами ЭВМ, выделяя их по необходимости. Например, оперативная память распределяется между заданиями, одновременно находящимися в решении, центральный процессор представляется заданиям согласно заранее выбранной стратегии. За исключением конкретных запросов ОС заданиям пользователей нет необходимости иметь дело с управлением ресурсами. Благодаря операционному окружению каждое задание выполняется как бы на отдельной расширенной машине, хотя в действительности базовая машина может быть распределена между несколькими пользователями.
В некоторых системах программа пользователей могут вызывать функции ОС, обращаясь непосредственно к фиксированным областям памяти. В документации таким ОС для пользователя дается описание областей, назначенные для данных, и входных точек вместе с их реальными адресами.
Способ запроса связи с ОС при помощи обращения к фиксированной области памяти используется в некоторых ПЭВМ. Однако этот метода часто неудобен и является источником ошибок, но, с другой стороны, он может предоставить пользователю возможность обойти средства защиты, встроенные в ОС.
В развитых, современных системах пользователи запрашивают функции ОС в основном при помощи специальных машинных команд, таких как вызов супервизора. Выполнение команд супервизора вызывает прерывание, в результате которого управление передается сервисной стандартной программе ОС.
Как правило, в машине любое прерывание вызывает перевод ЦП из режима пользователя в режим супервизора. В режиме супервизора могут быть использованы все команды и средства машины. Многие части ОС работают в этом режиме. При этом в режиме пользователя недопустимо выполнение некоторых команд. К таким командам, например, могут относиться функции ввода-вывода, установка флагов защиты или переключение ЦП из одного режима в другой. Ограничения, накладываемые на выполнение привилегированных команд, заставляют программу пользователя обращаться к услугам операционного окружения. Т.О., вместо непосредственного использования базового аппаратного обеспечения программы имеют дело с интерфейсом расширенной машины. Ограничения так же не дают программам пользователей вмешиваться случайно или намерено в функции управления ресурсами, осуществленные ОС. Привилегированный режим, равно как и режим пользователя / супервизора, необходим практически для всех систем, поддерживающих одновременную работу более чем одного пользователя.
3. Обзор современных ОС и операционных оболочек
MVS, OS/390, z/OS
Первые две ОС этого семейства вышли в 1966 г., вскоре после анонса аппаратной архитектуры System/360. Это были РСР (Primary Control program -первичная управляющая программа) и DOS/360 (Disk Operating System). Архитектура обеих систем была типична для вычислительных систем второго поколения — это были пакетные мониторы, рассчитанные на работу одной прикладной программы без защиты памяти (первые компьютеры серии System/360 не имели диспетчеров памяти). В 1967 г. были выпущены версии РСР: MVT (Multiprogramming with a Variable number of Tasks — многопрограммная [система] с переменным числом задач) и MFT (Multiprogramming with a Fixed number of Tasks — то же, но с фиксированным числом задач). Обе системы реализовывали вытесняющую многозадачность в едином адресном пространстве — MFT использовала разделы памяти, a MVT — относительную загрузку с базовым регистром. Позднее, к MVT была добавлена подсистема работы с несколькими терминалами в режиме разделения времени TSO (Timesharing Option — возможность разделения времени), ASP (Asymmetric Multiprocessing System — асимметричная многопроцессорность) и ряд других прикладных подсистем. В 1972 г., после появления машин System/370 с диспетчером памяти, была выпушена переходная система OS/SVS (Single Virtual Storage — единая виртуальная память), которая позволяла использовать страничную подкачку, но не защиту заданий друг от друга. Наконец, в 1974 г. была выпушена MVS (Multiple Virtual Storage — множественная виртуальная память), которая предоставляла каждой задаче собственное виртуальное адресное пространство объемом до 2 Гбайт (в System/360 и первых моделях System/370 адрес был 24-разрядным). Большая часть дополнительных подсистем MVT была включена в стандартную поставку MVS. MVS предоставляла:
· раздельные адресные пространства;
· пакетный и интерактивный (разделение времени) запуск задач;
· вытесняющую многозадачность;
· выполнение нитей в общем адресном пространстве (нити в этой системе называются единицей обслуживания (service unit));
· многопоточное ядро;
· примитивы взаимоисключения — замки (lock);
· симметричную многопроцессорность;
· динамическое подключение и отключение процессоров (как центральных, так и канальных) и их горячую замену;
· библиотеки — аналог вложенных каталогов;
· последовательные, блочные и индексно-последовательные файлы;
· отображение файлов, в том числе и индексно-последовательных, в адресное пространство (VSAM);
· систему безопасности на основе ACL;
· развитые средства системного мониторинга;
· сетевые средства — поддержку стека протоколов SNA (Standard Network Architecture).
MVS воплотила все наиболее прогрессивные функции и архитектурные концепции своего времени. MVS была основным продуктом IBM вплоть до середины 90-х, когда вышла новая версия системы — OS/390. В OS/390 основные архитектурные принципы MVS не подверглись пересмотру [redbooks.ibm.com sg245597]. Новшества заключались в добавлении следующих возможностей:
· поддержка многомашинных кластеров (Parallel Sysplex);
· развитие сетевых средств равноправного (peer-to-peer) взаимодействия;
· поддержка сетевых протоколов семейства TCP/IP (ранее взаимодействие с сетями TCP/IP и NETBIOS осуществлялось посредством включения в состав вычислительного комплекса модуля с процессором х86 под управлением OS/2);
· совместимость с системами семейства Unix [redbooks.ibm.comsg245992| (в 1998 г.OS/390 прошла набор тестов Unix 95 консорциума Х/Open и получила право называться UNIX[www.opengroup.org xu007|).
В 1999 г., в связи с началом выпуска 64-разрядного семейства компьютеров z900, вышла 64-разрядная версия системы z/OS[www.ibm.com zOS]. Системы под управлением OS/390 и z/OS применяются главным образом в качестве серверов транзакций и СУБД масштаба предприятия и составляют становой хребет вычислительных систем большинства крупных компаний.
Семейство Unix
Обширное и бурно развивающееся семейство Unix оказало огромное идейное влияние на развитие операционных систем в 80-е и 90-е годы XX столетия. Генеалогия систем семейства опубликована на сайте [perso.wanadoo.fr] и слишком обширна для того, чтобы ее можно было полностью привести в книге. Применения систем семейства крайне разнообразны, начиная от встраиваемых приложений реального времени, включая графические рабочие станции для САПР и геоинформационных систем, и заканчивая серверами класса предприятия и массивно параллельными суперкомпьютерами. Некоторые важные рыночные ниши, например передачу почты и другие структурные сервисы Internet, системы семейства занимают практически монопольно. Родоначальником семейства следует, по-видимому, считать не первую версию Unix, a Multics, совместно разрабатывавшуюся в 1965—1969 гг. General Electric и Bell Laboratories. За это время General Electric выделило подразделение, занимавшееся работами над Multics и аппаратной платформой для нее (GE-645), в отдельную компанию Honeywell. Multics была первой из промышленных систем, предоставлявших:
· создание процессов системным вызовом fork;
· страничную виртуальную память;
· отображение файлов в адресное пространство ОЗУ;
· вложенные каталоги;
· неструктурированные последовательные файлы;
· многопользовательский доступ в режиме разделения времени;
· управление доступом на основе ограниченных ACL (колец доступа).
Multics оказала огромное влияние не только на разработчиков Unix — значительные следы идейного влияния этой системы прослеживаются так же в RSX-11 и VAX/VMS фирмы DEC. Последние Multics-системы были доступны в Internet в 1997 г. В 1969 г. Bell Laboratories отказалась от работ над Multics и начала разработку собственной ОС для внутренних нужд. По-видимому, основной причиной этого шага было осознание несоответствия между амбициозными целями проекта Multics (ОС была весьма требовательна к ресурсам и могла работать только на больших компьютерах Honeywell), в то время как материнской компании Bell Labs — American Telephone & Telegraph — требовалась единая операционная среда, способная работать на различных миникомпыотерах, используемых в подразделениях телефонной сети США.
В Bell Laboratories был объявлен внутренний конкурс на разработку переносимой ОС, способной работать на миникомпыотерах различных поставщиков. К проекту были предъявлены следующие основные требования:
· многоплатформенность;
· вытесняющая многозадачность;
· многопользовательский доступ в режиме разделения времени;
· развитые телекоммуникационные средства.
Один из участников работ над Multics, К. Томпсон, разработал крайне упрощенное ядро ОС, названное UNIX, для миникомпьютера PDP-7. К 1972 г. К. Томпсон и Д. Ритчи переписали ядро системы в основном на языке С и продемонстрировали возможность переноса ОС на миникомпьютеры PDP-11. Это обеспечило выполнение всех требований конкурса, и UNIX была признана основной платформой для вычислительных систем, эксплуатируемых в AT&T.
Легенды доносят до нас более колоритные детали ранних этапов истории новой системы. Так, одна из очень популярных легенд, излагаемая в той или иной форме несколькими источниками, утверждает, что история UNIX началась с разработанной для Multics игровой программы под названием Star Wars (звездные войны — сама эта программа и даже правила игры до нас не дошли). Уволенный из группы разработчиков Multics за разгильдяйство (мы приводим здесь наиболее радикальный вариант легенды, не заботясь о его согласовании с историческими фактами), Томпсон занялся "оживлением" неиспользуемой PDP-7, стоявшей в углу машинного зала. Оживление заключалось в написании ядра ОС, реализующего подмножество функциональности Multics, достаточное, для того чтобы перенести и запустить его любимые Star Wars [Бах 1986]. Первые версии UNIX были рассчитаны на машины без диспетчера памяти. Процессы загружались в единое адресное пространство. Ядро системы размещалось в нижних адресах ОЗУ, начиная с адреса 0, и называлось сегментом реентерабельных процедур. Реентерабельность обеспечивалась переустановкой стека в момент системного вызова и запретом переключения задач на все время исполнения модулей ядра. На машинах с базовой адресацией выполнялось перемещение образов процессов по памяти и сброс образа процесса на диск (задачный своппинг). В Multics и современных системах Unix fork реализуется посредством копирования страниц при модификации. Ранние версии UNIX физически копировали образ процесса. Большая часть (по некоторым оценкам, до 90%) fork немедленно продолжается исполнением системного вызова exec, поэтому одной из первых оптимизаций, придуманных в университетских версиях системы, было введение системного вызова vfork. Порожденный этим вызовом процесс исполнялся на самом образе родителя, а не на его копии. Создание нового образа процесса происходило только при исполнении exec. Для того чтобы избежать возможных проблем взаимоисключения (например, при вызове нереентерабельных функций стандартной библиотеки), исполнение родителя приостанавливалось до тех пор, пока потомок не выполнит exec или не завершится. Выделяют [Баурн 1986] следующие отличительные особенности системы.
· Порождение процессов системным вызовом fork, который создает копию адресного пространства в пользовательской области процесса.
· Результат завершения процесса хранится в его дескрипторе и может быть считан только родителем. В списке процессов такой дескриптор выглядит как процесс в специальном состоянии, называемом зомби (zombie).
· Процессы-сироты (продолжающие исполнение после завершения родителя) усыновляются процессом с идентификатором, равным 1.
· Процесс с идентификатором 1 запускается при загрузке системы (по умолчанию это /bin/ink) и запускает все остальные обязательные задачи в системе. Наличие такого процесса иногда объявляют необходимым и достаточным критерием для причисления той или иной системы к семейству Unix.
· Древовидная структура пространства имен файловой системы: дополнительные ФС монтируются в те или иные точки корневой ФС и идентифицируются затем точкой монтирования, а не именем устройства, на котором расположены.
· Файлы рассматриваются ОС как неструктурированные потоки байтов и не типизованы на уровне ОС (в частности, на уровне ОС нет деления файлов на записи).
· Файловая система поддерживает множественные имена файлов в виде жестких и, у более поздних версий, символических связей.
· Отложенное удаление файлов: если процесс открыл файл, а другой процесс его удалил, то первый процесс может продолжать работу с файлом, и физическое удаление происходит только после того, как первый процесс его закроет.
· Лозунг "все — файл", который, впрочем, последовательно реализован только в экспериментальной системе Plan 9 — в реальных Unix системах практически всегда присутствуют объекты, к которым не применимы файловые операции: переменные среды, структуры данных ядра в ранних версиях (позднее они были оформлены в виде псевдофайловой системы /ргос), объекты SysV IPC и примитивы взаимоисключения POSIX Thread Library в современных системах.
· Своеобразный командный язык, основанный на широком применении переназначения ввода-вывода и конвейеров (последовательностей задач, соединенных трубами).
Некоторые из перечисленных особенностей были позаимствованы другими ОС. Так, переназначение ввода-вывода и конвейеры реализуются командными процессорами ОС семейства СР/М, начиная с MS DOS 3.30. cmd.exe — командный процессор OS/2 и Windows NT/2000/XP — даже правильно понимает конструкцию cmdiine | more 2>&1. Стандартные командные процессоры UNIX портированы практически на все современные ОС. Функциональный аналог Korn Shell включен в стандартную поставку Windows 2000. Жесткие связи файлов (однако, без отложенного удаления) поддерживаются FCS2 (файловой системой VAX/VMS), NTFS и jfs при использовании под OS/2. Точки монтирования (подключение дополнительных ФС в дерево каталогов существующей ФС) реализованы в Windows 2000 и Toronto Virtual File System для OS/2. Системный вызов CreateProcess Windows NT/2000/XP может имитировать семантику fork: для этого достаточно передать в качестве имени программы для нового процесса пустой указатель. Библиотека ЕМХ для OS/2 реализует fork при помощи собственного обработчика страничного отказа.
Дата добавления: 2017-11-04; просмотров: 2636;