Материал из Википедии — свободной энциклопедии
Операционная система, ОС (англ. operating system) — базовый комплекс компьютерных программ, обеспечивающий интерфейс с пользователем, управление аппаратными средствами компьютера, работу с файлами, ввод и вывод данных, а также выполнение прикладных программ и утилит.
ОС позволяет абстрагироваться от деталей реализации аппаратного обеспечения, предоставляя разработчикам программного обеспечения минимально необходимый набор функций. С точки зрения обычных пользователей компьютерной техники ОС включает в себя и программы пользовательского интерфейса.
Функции
Основные функции (простейшие ОС):
Загрузка приложений в оперативную память и их выполнение;
Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода);
Управление оперативной памятью (распределение между процессами, виртуальная память);
Управление доступом к данным на энергонезависимых носителях (таких как Жесткий диск, Компакт-диск и т. д.), как правило с помощью файловой системы;
Пользовательский интерфейс;
Сетевые операции, поддержка стека протоколов
Дополнительные функции:
Параллельное или псевдопараллельное выполнение задач (многозадачность);
Взаимодействие между процессами: обмен данными, взаимная синхронизация;
Защита самой системы, а также пользовательских данных и программ от действий пользователей (злонамеренных или по незнанию) или приложений;
Разграничение прав доступа и многопользовательский режим работы (аутентификация, авторизация).
Объекты ядра ОС
Процессы
Файлы
События
Потоки
Семафоры
Мьютексы
Каналы
Файлы, проецируемые в память.
Понятие операционной системы
Существуют две группы определений ОС: «совокупность программ, управляющих оборудованием» и «совокупность программ, управляющих другими программами». Обе они имеют свой точный технический смысл, который, однако, становится ясен только при более детальном рассмотрении вопроса о том, зачем вообще нужны операционные системы.
Есть приложения вычислительной техники, для которых ОС излишни. Напр., встроенные микрокомпьютеры содержатся сегодня во многих бытовых приборах, автомобилях (иногда по десятку в каждом), сотовых телефонах и т. п. Зачастую такой компьютер постоянно исполняет лишь одну программу, запускающуюся по включении. И простые игровые приставки — также представляющие собой специализированные микрокомпьютеры — могут обходиться без ОС, запуская при включении программу, записанную на вставленном в устройство «картридже» или компакт-диске. Тем не менее, некоторые микрокомпьютеры и игровые приставки все же работают под управлением особых собственных ОС. В большинстве случаев, это UNIX-подобные системы (последнее особенно верно в отношении программируемого коммутационного оборудования: фаерволов, маршрутизаторов).
Операционные системы, в свою очередь, нужны, если:
вычислительная система используется для различных задач, причем программы, исполняющие эти задачи, нуждаются в сохранении данных и обмене ими. Из этого следует необходимость универсального механизма сохранения данных; в подавляющем большинстве случаев ОС отвечает на нее реализацией файловой системы. Современные ОС, кроме того, предоставляют возможность непосредственно «связать» вывод одной программы с вводом другой, минуя относительно медленные дисковые операции;
различные программы нуждаются в выполнении одних и тех же рутинных действий. Напр., простой ввод символа с клавиатуры и отображение его на экране может потребовать исполнения сотен машинных команд, а дисковая операция — тысяч. Чтобы не программировать их каждый раз заново, ОС предоставляют системные библиотеки часто используемых подпрограмм (функций);
между программами и пользователями системы необходимо распределять полномочия, чтобы пользователи могли защищать свои данные от несанкционированного доступа, а возможная ошибка в программе не вызывала тотальных неприятностей;
необходима возможность имитации «одновременного» исполнения нескольких программ на одном компьютере (даже содержащем лишь один процессор), осуществляемой с помощью приема, известного как «разделение времени». При этом специальный компонент, называемый планировщиком, «нарезает» процессорное время на короткие отрезки и предоставляет их поочередно различным исполняющимся программам (процессам);
наконец, оператор должен иметь возможность, так или иначе, управлять процессами выполнения отдельных программ. Для этого служат операционные среды, одна из которых — оболочка и набор стандартных утилит — является частью ОС (прочие, такие, как графическая операционная среда, образуют независимые от ОС прикладные платформы). Таким образом, современные универсальные ОС можно охарактеризовать, прежде всего, как
использующие файловые системы (с универсальным механизмом доступа к данным),
многопользовательские (с разделением полномочий),
многозадачные (с разделением времени).
Многозадачность и распределение полномочий требуют определенной иерархии привилегий компонентов самой ОС. В составе ОС различают три группы компонентов:
ядро, содержащее планировщик; драйверы устройств, непосредственно управляющие оборудованием; сетевую подсистему, файловую систему;
системные библиотеки и
оболочка с утилитами.
Большинство программ, как системных (входящих в ОС), так и прикладных, исполняются в непривилегированном («пользовательском») режиме работы процессора и получают доступ к оборудованию (и, при необходимости, к другим ядерным ресурсам, а также ресурсам иных программ) только посредством системных вызовов. Ядро исполняется в привилегированном режиме: именно в этом смысле говорят, что ОС (точнее, ее ядро) управляет оборудованием.
В определении состава ОС значение
имеет критерий операциональной
целостности (замкнутости): система
должна позволять полноценно использовать
(включая модификацию) свои компоненты.
Поэтому в полный состав ОС включают и
набор инструментальных средств (от
текстовых редакторов до компиляторов,
отладчиков и компоновщиков).
Эволюция операционных систем и основные идеи
Предшественником ОС следует считать служебные программы (загрузчики и мониторы), а также библиотеки часто используемых подпрограмм, начавшие разрабатываться с появлением универсальных компьютеров 1-го поколения (конец 1940-х годов). Служебные программы минимизировали физические манипуляции оператора с оборудованием, а библиотеки позволяли избежать многократного программирования одних и тех же действий (осуществления операций ввода-вывода, вычисления математических функций и т.п.).
В 1950-60-х годах сформировались и были реализованы основные идеи, определяющие функциональность ОС: пакетный режим, разделение времени и многозадачность, разделение полномочий, реальный масштаб времени, файловые структуры и файловые системы.
Пакетный режим
Необходимость оптимального использования дорогостоящих вычислительных ресурсов привела к появлению концепции «пакетного режима» исполнения программ. Пакетный режим предполагает наличие очереди программ на исполнение, причем ОС может обеспечивать загрузку программы с внешних носителей данных в оперативную память, не дожидаясь завершения исполнения предыдущей программы, что позволяет избежать простоя процессора.
Разделение времени и многозадачность
Уже пакетный режим в своем развитом варианте требует разделения процессорного времени между выполнением нескольких программ.
Необходимость в разделении времени (многозадачности, мультипрограммировании) проявилась ещё сильнее при распространении в качестве устройств ввода-вывода телетайпов (а позднее, терминалов с электронно-лучевыми дисплеями) (1960-е годы). Поскольку скорость клавиатурного ввода (и даже чтения с экрана) данных оператором много ниже, чем скорость обработки этих данных компьютером, использование компьютера в «монопольном» режиме (с одним оператором) могло привести к простою дорогостоящих вычислительных ресурсов.
Разделение времени позволило создать «многопользовательские» системы, в которых один (как правило) центральный процессор и блок оперативной памяти соединялся с многочисленными терминалами. При этом часть задач (таких, как ввод или редактирование данных оператором) могла исполняться в режиме диалога, а другие задачи (такие, как массивные вычисления) — в пакетном режиме.
Разделение полномочий
Распространение многопользовательских систем потребовало решения задачи разделения полномочий, позволяющей избежать возможности модификации исполняемой программы или данных одной программы в памяти компьютера другой (содержащей ошибку или злонамеренно подготовленной) программы, а также модификации самой ОС прикладной программой.
Реализация разделения полномочий в ОС была поддержана разработчиками процессоров, предложивших архитектуры с двумя режимами работы процессора — «реальным» (в котором исполняемой программе доступно все адресное пространство компьютера) и «защищенным» (в котором доступность адресного пространства ограничена диапазоном, выделенном при запуске программы на исполнение).
Реальный масштаб времени
- Основная статья: Операционная система реального времени
Применение универсальных компьютеров для управления производственными процессами потребовало реализации «реального масштаба времени» («реального времени») — синхронизации исполнения программ с внешними физическими процессами.
Включение функции реального масштаба времени в ОС позволило создавать системы, одновременно обслуживающие производственные процессы и решающие другие задачи (в пакетном режиме и (или) в режиме разделения времени).
Файловые системы и структуры
Постепенная замена носителей с последовательным доступом (перфолент, перфокарт и магнитных лент) накопителями произвольного доступа (на магнитных дисках).
Существующие операционные системы
- Основная статья: Список операционных систем
Вымышленные операционные системы
Несуществующие операционные системы, упоминаемые в шутках, книгах, фильмах, компьютерных играх и т. п.
ALTIMIT OS — из вселенной .hack.
Hyper OS — из Patlabor.
Wheatonix — первоапрельская шутка.
Digitronix — из The Hacker Files.
Luna/X — первоапрельская шутка системы Google за 2004 год.
SEXLinux — первоапрельская шутка linuxcenter.ru (система на основе Gentoo).
GLaDOS — из игры Portal.
Finux — из книги Нила Стивенсона «Криптономикон» («написанная финнами»).
Windows Home — из серии книг Сергея Лукьяненко «Лабиринт Отражений».
«Macrohard Nondows Twista» компании «Мелкософт» — из компьютерной игры «Космические Рейнджеры 2: Доминаторы. Перезагрузка».
«Windows 96» — в переводе на русский известный как «Окна 96» из мультсериала «Смешарики».
REXXOS - REXXOS -- http://rexxos.netlabs.org
Unix, стандартизация ОС и POSIX
К концу 1960-х годов отраслью и научно-образовательным сообществом был создан целый ряд ОС, реализующих все или часть очерченных выше функций. К ним относятся Atlas (Манчестерский университет), CTTS и ITSS (Массачусетский технологический институт, MIT), THE (Эйндховенский технологический университет), RS4000 (Университет Орхуса) и др. (всего эксплуатировалось более сотни различных ОС).
Наиболее развитые ОС, такие как OS/360 (IBM), SCOPE (CDC (англ.)) и завершенный уже в 1970-х годах MULTICS (МТИ и Bell Labs), предусматривали возможность исполнения на многопроцессорных компьютерах.
Эклектичный характер разработки ОС привел к нарастанию кризисных явлений, прежде всего, связанных с чрезмерными сложностью и размерами создаваемых систем. ОС были плохо масштабируемыми (более простые не могли использовать все возможности крупных вычислительных систем; более развитые неоптимально исполнялись на малых или не могли исполняться на них вовсе) и тотально несовместимыми между собой, их разработка и совершенствование затягивалась.
Задуманная и реализованная в 1969 году Кеном Томпсоном при участии нескольких коллег (включая Денниса Ричи и Брайана Кернигана), ОС Unix (первоначально UNICS, что обыгрывало название MULTICS) вобрала в себя многие черты более ранних ОС, но обладала целым рядом свойств, отличающих ее от большинства предшественниц:
простая метафорика (два ключевых понятия: вычислительный процесс и файл);
компонентная архитектура: принцип «одна программа — одна функция» плюс мощные средства связывания различных программ для решения возникающих задач («оболочка»);
минимизация ядра (кода, выполняющегося в «реальном» (привилегированном) режиме процессора) и количества системных вызовов;
независимость от аппаратной архитектуры и реализация на машиннонезависимом языке программирования (язык программирования Си стал побочным продуктом разработки Unix);
унификация файлов.
Unix, благодаря своему удобству прежде всего в качестве инструментальной среды (среды разработки), была тепло принята сначала в университетах, а затем и в отрасли, получившей прототип единой ОС, которая могла использоваться на самых разных вычислительных системах и, более того, могла быть быстро и с минимальными усилиями перенесена на любую вновь разработанную аппаратную архитектуру.
В конце 1970-х годов сотрудники Калифорнийского университета в Беркли внесли ряд усовершенствований в исходные коды UNIX, включая работу с протоколами TCP/IP. Их разработка стала известна под именем BSD (Berkeley Software Distribution).
Задачу разработать независимую (от авторских прав Bell Labs) реализацию той же архитектуры поставил и Ричард Столлмен, основатель проекта GNU.
Благодаря конкурентности реализаций архитектура ОС Unix стала вначале фактическим отраслевым стандартом, а затем обрела статус и стандарта юридического — ISO/IEC 9945.
ОС, следующие стандарту или опирающиеся на него, называют «POSIX-совместимыми» (чаще встречается словоупотребление «Unix-подобные» или «семейство Unix», но оно противоречит статусу торгового знака «Unix», принадлежащего консорциуму The Open Group и зарезервированному для обозначения ОС, строго следующих стандарту) благодаря названию стандарта — POSIX. Сертификация на совместимость со стандартом стоит некоторых денег, из-за чего некоторые системы не проходили этот процесс, однако считаются POSIX-совместимыми, просто потому что это так.
К Unix-подобным ОС относятся системы, базирующиеся на последней версии Unix, выпущенной Bell Labs (System V), на разработках университета Беркли (FreeBSD, OpenBSD, NetBSD), а также ОС GNU/Linux, разработанная в части утилит и библиотек проектом GNU и в части ядра — сообществом, возглавляемым Линусом Торвальдсом.
Стандартизация ОС гарантирует возможность безболезненной замены самой ОС и/или оборудования при развитии вычислительной системы или сети и дешевого переноса прикладного программного обеспечения (строгое следование стандарту предполагает полную совместимость программ на уровне исходного текста; из-за профилирования стандарта и его развития некоторые изменения бывают все же необходимы, но перенос программы между POSIX-совместимыми системами обходится на порядки дешевле, чем между альтернативными), а также преемственность опыта пользователей.
Самым заметным эффектом существования этого стандарта стало эффективное разворачивание Интернета в 1990-х годах.
«Post Unix» архитектуры ОС
Коллектив, создавший ОС «Юникс», развил концепцию унификации объектов ОС, включив в исходную концепцию UNIX "устройство - это тоже файл" также и процессы, и любые другие системные, сетевые и прикладные сервисы, создав новую концепцию: "что угодно - это файл". Новый концепт получил название «Plan9» (название было позаимствовано из фантастического триллера "План 9 из глубокого космоса" Эдварда Вуда-младшего), и сменил "рабочую лошадку" UNIX System V на компьютерах сети Bell Labs в 1992 году.
Кроме реализации всех объектов ОС в виде файлов и размещения их на едином и персональном для каждого терминала вычислительной сети пространстве (namespace), были пересмотрены другие архитектурные решения UNIX. Например, в Plan9 отсутствует понятие "суперпользователь", и, соответственно, исключаются любые нарушения режима безопасности, связанные с нелегальным получением прав суперпользователя в системе. Для представления (хранения, обмена) информации Роб Пайк и Кен Томпсон разработали универсальную кодировку UTF-8, на сегодняшний день ставшую стандартом де-факто. Для доступа к файлам используется единый универсальный протокол 9P, по сети работающий поверх сетевого протокола (TCP или UDP). Таким образом для прикладного ПО сети не существует - доступ к локальным и к удаленным файлам единообразен. 9P - байт-ориентированный протокол, в отличии от других подобных протоколов, являющихся блок-ориентированными. Это также результат работы концепции: доступ побайтно - к унифицированным файлам, а не поблочно - к разнообразным и сильно изменяющимися с развитием технологий устройствам. Для контроля доступа к объектам не требуется иных решений, кроме уже существующего в ОС контроля доступов к файлам. Новая концепция системы хранения избавила администратора системы от изнурительного труда по сопровождению архивов и предвосхитила современные системы управления версиями файлов.
ОС, созданные на базе или идеях UNIX, такие как всё семейство BSD и GNU/Linux систем, постепенно перенимают новые идеи из Bell Labs. Возможно в будущем эти новые идеи, ждет большое будущее и признание ИТ-разработчиков.
Новые концепции были использованы Робом Пайком в «Inferno».
На основе «Plan9» в Испании разрабатываются
ОС «Off++» и «Plan B», носящие экспериментальный
характер.
К попыткам создать постюниксовскую архитектуру можно также отнести разработку системы программирования и операционной среды «Оберон» в Швейцарском федеральном технологическом институте (ETH Zurich) под руководством проф. Никлауса Вирта.