Время на прочтение7 мин
Количество просмотров111K
Введение
В последнее время наблюдается большой приток пользователей Linux. Как правило это люди уже имеющие вполне приличный опыт в общении с компьютером, но этот опыт в большинстве случаев ограничен одной системой. Естественно, что этой системой является самая распространенная на сегодня на дескотопах операционная система компании Microsoft MS Windows. Большое число пользователей Windows также ставят Linux, или запускают его с «Live CD» «на посмотреть».
И тут возникает сразу несколько проблем, связанных с тем, что новые пользователи Linux ожидают увидеть перед собой «еще один Windows». А Linux — это совсем не клон Windows, это совсем другая система, с другой основой, другими традициями, другими возможностями и другими требованиями к пользователю.
По моему убеждению именно это непонимание и является одним из источником такого количества так называемых «священных войн». Возможно данная статья позволит если не уменьшить количество таких войн, то хотя бы даст большее понимание позиций противников и снизит накал в войнах.
Очень глубоко лезть в устройство этих двух операционных систем нам, я думаю, ни к чему, будем рассматривать их в основном с точки зрения пользователя.
Экскурс в историю (очень краткий)
Для сравнения, думаю невредно освежить в памяти краткую историю сравниваемых операционных систем.
История Unix
Операционная система UNIX была создана еще до эры коммерческого софта. Она писалась инженерами, как система «для себя». Поэтому в нее были заложены передовые на то время концепции. В дальнейшем своем развитии при добавлении новых черт, обычно считалось, что делать нужно «правильно». Т.е. например если нужно было выбирать из двух решений, одно из которых было с инженерной точки зрения «неправильным», например повышало производительность сегодня, но могло принести затруднения в дальнейшем, как правило, такое решение отвергалось и выбиралось «правильное» решение, пусть и с определенной потерей производительности.
Первые версии UNIX были написаны на Ассеблере, затем система была переписана на СИ. Это дало системе уникальную переносимость. На PC UNIX был портирован, а точнее заново написан (Linux) сразу, как только развитие PC, а точнее выпуск PC на процессоре i386, позволило это сделать.
В 1985 году стартовал проект POSIX. Это стандарт на интерфейсы UNIX-подобных ОС. Во многом благодаря наличию такого стандарта, так быстро смог появится на свет и достигнуть зрелости Linux — свободная воплощение UNIX.
Развитие интернета с самого начала и до нашего времени неразрывно связано с серверами под управлением ОС UNIX. Сначала с коммерческими, а теперь все больше и больше со свободными.
С точки зрения коммерциализации развитие UNIX можно разделить на три этапа.
- Некоммерческое распространение в университетах.
- Распространение коммерческих UNIX систем.
- Появление свободных реализаций (Linux, FreeBSD) и вытеснение коммерческих систем (настоящий момент).
До появления системы X Window System UNIX была системой с текстовым интерфейсом, затем добавился графический, но традиционно текстовый интерфейс сохраняет важное значение.
Очень важно то, что UNIX с самого начала был многозадачной и многопользовательской системой. Т.е. на одной машине могут работать сразу несколько пользователей, и выполняться несколько программ одновременно.
Фирменной чертой всех UNIX-подобных ОС была и остается надежность.
Табличка:
| Год | Событие | Комментарий | Разр | Многопольз. | Многозадачн. |
| 1971 | Первая версия UNIX | На ассемблере | 32 | Есть | Есть |
| 1973 | Третья версия UNIX | На Си | 32 | Есть | Есть |
| 1983 | TCP/IP | — | 32 | Есть | Есть |
| 1983 | Проект GNU стартовал | Подготовил свободную обвязку для UNIX- подобных ОС | 32 | Есть | Есть |
| 1984 | X Window System | Оконная система | 32 | Есть | Есть |
| 1985 | Стартовал проект POSIX | Стандарты интерфейсов UNIX-подобных систем | 32 | Есть | Есть |
| 1991 | Появление Linux | Первая свободная реализация ядра UNIX для PC, 32 разрядная, сеть | 32 | Есть | Есть |
| 1993 | Появление FreeBSD | Еще одна свободная реализация ядра UNIX для PC, 32 разрядная, сеть | 32 | Есть | Есть |
История Windows
Истоки зарождения операционной системы Windows следует искать в предшествующей ей операционной системе той же самой фирмы — DOS. Все операционные системы компании Microsoft, это прежде всего коммерческие проекты. Об этом нужно помнить всегда, особенно, когда стараешься понять истоки тех или других решений, как коммерческого плана, так и технического.
Первой ОС из этого семейства была DOS. Может показаться, что DOS собственно имеет косвенное отношение к обсуждаемому предмету. Но, многие традиции, база пользователей и разработчиков, их привычки, идут именно оттуда.
DOS была однозадачной однопользовательской операционной системой с текстовым интерфейсом. Первая версия Windows представляла собой нечто, негодное для работы и распространения не получила. Работать стало в Windows стало возможно, начиная с версии 3. В версии Windows For Workgroups 3.1 появилась возможность работы с сетью. Winodws серии 3 представляли собой запускаемую поверх DOS систему. Отличались невысокой надежностью.
В 1995 годы вышла новая версия — Windows 95. Код частично был 32 разрядным, частично 16 разрядным, встроенная сеть. По сравнению с Windows серии 3 это был серьезный шаг вперед. Повысилась надежность, но до надежности UNIX-подобных ОС было еще далеко. В качестве рабочей станции с натяжкой конечно, надежности хватало, в качестве сервера, нет. Позже были выпущены еще две ОС этой линии, Windows 98 и Windows Me. После этого линия была закрыта.
В 1993 году вышла новая версия — Windows NT 3.1. Это уже была полностью 32 разрядная система. Разработана она была с нуля, для ее разработки были наняты известные специалисты. Были внедрены новые концепции. Это подняло надежность почти до уровня надежности UNIX-подобных систем. Эта ОС уже могла работать в качестве сервера. Продолжение этой линии, операционные системы Windows 2000, Windows XP и Windows Vista.
ОС линии NT были многозадачными, начиная с Windows XP появилась и возможность работать нескольким пользователям, хотя и более ограниченная и гораздо менее удобная, чем у UNIX-подобных ОС.
Табличка:
| Год | Событие | Комментарий | Разр | Многопольз. | Многозадачн. |
| 1981 | DOS | — | 16 | Нет | Нет |
| 1985 | Windows 1.0 | Надстройка над DOS | 16 | Нет | Нет |
| 1990 | Windows 3.0 | Надстройка над DOS | 16 | Нет | Есть |
| 1992 | Windows For Workgroups 3.1 | Надстройка над DOS, сеть | 16 | Нет | Есть |
| 1995 | Windows 95 | сеть | 16/32 | Нет | Есть |
| 1993 | Windows NT | сеть | 32 | с 1998 | Есть |
| 2000 | Windows 2000 | сеть | 32 | Есть | Есть |
| 2005 | Windows XP | сеть | 32 | Есть | Есть |
| 2007 | Windows Vista | сеть | 32 | Есть | Есть |
Техническое устройство с точки зрения пользователя
UNIX
С точки зрения пользователя UNIX устроен примерно так:
- Ядро. Работает с устройствами, управляет памятью и процессами.
- Текстовая подсистема, работа с системой через терминал. Причем для управления всеми возможностями ОС достаточно только текстовой подсистемы. Возможно вход через эту подсистему многих пользователей. Богатый набор как встроенных утилит, так и приложений, работающих в текстовом режиме.
- Графическая подсистема Xwindow. Запускается как процесс в системе.
- Система удаленного доступа в текстовом режиме. Позволяет полноценную работу с ОС в текстовом режиме. Потребляет мало ресурсов. Позволяет работать на сравнительно слабых компьютерах одновременно десяткам и сотням пользователей. Количество сессий ограничено ресурсами компьютеров.
- Система удаленного доступа в графическом режиме. Позволяет одновременно работать нескольким пользователям в графическом режиме. Количество сессий ограничено ресурсами компьютеров.
- Система передачи графического окна приложения на другой компьютер. Позволяет запустив приложение на одном компьютере, управлять им с другого компьютера, через окно приложения, передаваемое на этот другой компьютер. Количество сессий ограничено ресурсами компьютеров.
Windows
- Ядро. Работает с устройствами, управляет памятью и процессами, управляет графической подсистемой.
- Графическая подсистема. Обеспечивает интерфейс с пользователем. Приоритетная система для пользовательского интерфейса.
- Текстовая подсистема. Обеспечивает текстовый интерфейс с пользователем. Текстовый интерфейс весьма урезанный. Набор утилит текстового режима как встроенных, так и других производителей весьма куцый. Синтаксис и состав команд текстового режима меняется от версии к версии. Запускается только поверх графического режима.
- Система удаленного доступа. Появилась впервые, как встроенная в систему, в Windows NT Server 4.0. До этого были только продукты других фирм. В связи с тем, что запускается полноценная графическая сессия, кушает очень много ресурсов. Наличие системы удаленного доступа и количество одновременных сессий может вообще отсутствовать или быть ограничено в разных версиях из коммерческих соображений.
Сравнение концепций
Давайте теперь рассмотрим, чем отличается подход к работе в этих двух системах.
UNIX: Концепция «Toolbox»
Поскольку UNIX разрабатывалась инженерами и для инженеров, в ее основу была положена концепция toolbox (ящик с инструментами). Что это значит? Это значит, что при создании софта и встроенных утилит для UNIX не делали универсальные программы, каждая из которых выполняла бы внутри себя все, необходимые пользователю действия, а для каждой небольшой задачи создавалась своя утилита, которая выполняла свою задачу, только одну, но делала это хорошо. Дело пользователя было при помощи набора этих утилит выполнить операции, которые ему нужно сделать.
При этом из этого набора утилит можно составлять цепочки и последовательности действий, что позволяет легко автоматизировать рутинные, часто повторяющиеся операции.
Для того, чтобы утилиты могли обмениваться между собой результатами своей работы, в качестве носителя информации был выбран текстовый файл. Для обмена информацией между утилитами были изобретены «pipes» (трубы). При помощи «труб» информация с выхода одной команды может быть передана на вход второй, та ее обрабатывает, выдает свою информацию на выход, которая может быть передана на вход третьей и так далее.
В общем, в результате UNIX позволяет пользователю легко создавать простые программные комплексы, выполняющие повторяющиеся действия как по команде пользователя, так и в автономном режиме.
Такой подход имеет как плюсы, так и недостатки. С одной стороны он дает больший контроль над системой, гибкость в настройке, но при этом повышается порог вхождения в систему, или говоря простыми словами, прежде, чем что нибудь сделать, как правило, нужно изучить основы.
Windows: Концепция «Тостер»
В Windows доминирует другая концепция. Эта концепция — максимально облегчить вхождение пользователя в задачу. Программы в Windows как правило большие, на каждое действие есть пункт в меню или иконка. В системы программы связываются как правило с большим трудом.
Ухудшает ситуацию о построением комплексов на базе Windows то, что большинство программ — коммерческие и используют свои, бинарные и как правило закрытые форматы данных и файлов. Такой подход превращает компьютер в устройство, которое может выполнять ограниченный изготовителем ПО набор функций, в пределе в этакий своеобразный «тостер», который выполняет только то, что задумал его изготовитель.
Плюс такого подхода — легкость вхождения неподготовленного пользователя. Минус — то, что обманутый кажущейся легкостью пользователь вообще не хочет ничему учиться и не выполнять необходимых действий. На поводу идут и производители софта. Это одна из причин такого обилия документов отформатированных пробелами, пренебрежения безопасностью и как следствие вирусных эпидемий.
Заключение
Конечно, в обоих системах не доминирует свой подход на 100 процентов. Как в Windows есть возможность пользоваться текстовой консолью и создавать .bat файлы, так и в UNIX есть большой набор программ, со свойствами присущими скорее «тостерному» подходу. И все таки описанная разница в подходах есть и она достаточно ярко выражена.
Литература
1. http://ru.wikipedia.org/wiki/UNIX
2. http://ru.wikipedia.org/wiki/Windows
3. http://ru.wikipedia.org/wiki/ДОС
4. http://posix.ru/
5. http://ru.wikipedia.org/wiki/POSIX
«Чтобы найти истину, каждый должен хоть
раз в жизни освободиться от усвоенных
им представлений и заново построить
систему своих взглядов»
— Рене Декарт.
Статья, которая сейчас открыта в вашем браузере, посвящена детальному рассмотрению архитектуры UNIX и Windows. В ней мы постарались заглянуть внутрь этих двух операционных систем, опустившись на уровень ядра. Без внимания не остались и ошибки (исключения), которые могут возникнуть во время работы ОС. В заключение мы попросили сравнить различия между Windows и UNIX экспертов российской компании ASPLinux (www.asplinux.ru), которым каждый день на практике приходится сталкиваться с операционными системами на низком уровне.
Структуру UNIX проще всего представить в виде двух слоев. Первым является ядро. Оно непосредственно взаимодействует с железом и обеспечивает переносимость всего остального ПО на компьютеры с разным аппаратным обеспечением. Ядро предоставляет программам определенный набор системных API, с помощью которых производятся создание процессов, управление ими, их взаимодействие и синхронизация, а также файловый ввод/вывод. Вторым слоем является программное обеспечение, прикладное или системное: командный интерпретатор, графическая оболочка и т. д.
Структура ОС UNIX
Заглянем глубже в ядро системы. Оно позволяет всем остальным программам общаться с периферийными устройствами, регулирует доступ к файлам, управляет память и процессами. Ядро — это связной, к которому обращаются посредством системных вызовов (запрашивая какую-то услугу). Связь эта — не односторонняя: ядро может и возвращать в случае необходимости какие-то данные. Основным достоинством ядра является строгая стандартизация системных API. За счет этого во многом достигается переносимость кода между разными версиями UNIX и абсолютно различным аппаратным обеспечением.
Структура ядра UNIX
Все обращения к ядру системы можно разделить на две категории: программа вызывает подсистему управления файлами или подсистему управления процессами. Первая отвечает за все, что связано с файлами: управление, размещение, доступ. Процессы же — это, в общем случае, любые запущенные программы. Поэтому подсистема управления процессами служит для их жизнеспособности, синхронизации и управления. Важно так же и то, что файловая подсистема и подсистема управления процессов могут общаться друг с другом: любой процесс может вызывать системные API для работы с файлами. Прелесть UNIX состоит в том, что эти API универсальны (да и в Windows наблюдается та же картина). Вот самые главные из них: open, close, read, write, stat, chown, chmod (суть почти всех вызовов интуитивно понятна из названия, кроме, разве что, последних трех, поэтому поясню — они служат для управления атрибутами файлов, информации о владельце и прав доступа) и др. Каждый из этих системных вызовов в программе на языке С является обычной функцией. Информацию по любому из них можно запросто найти в man.
Подсистема управления файлами — почти единственная из всех работает с драйверами, которые являются модулями ядра. «Почти», потому что есть еще и сетевая подсистема, которая работает, например, с драйвером сетевой карты и с драйверами различных современных сетевых устройств. Ее, однако, мы рассматривать не будем. Обмен данными с драйверами может проходить двумя способами: с помощью буфера или потока. Суть первого метода заключается в том, что для информации выделяется кэш (или сверхоперативная память, как его называли раньше), в который заносится необходимый блок данных. Далее информация из кэша передается к драйверу. Драйвер — единственный элемент ядра, способный управлять периферийными устройствами. Но подсистема управления файлами может взаимодействовать с драйвером и через поток. Поток представляет собой посимвольную передачу данных драйверу. Следует отметить, что способ взаимодействия с драйвером определяется не пользователем и не приложением. Он является характеристикой того устройства, которым управляет драйвер. Очевидно, что потоковое общение позволяет взаимодействовать более оперативно, чем общение через буфер. Ведь на заполнение буфера тратится время и, следовательно, возрастает время отклика.
Теперь более подробно рассмотрим подсистему управления процессами. Она отвечает за синхронизацию и взаимодействие процессов, распределение памяти и планирование выполнения процессов. Для всех этих целей в подсистему управления процессами включены три модуля, которые наглядно продемонстрированы на схеме. Хорошим примером взаимодействия подсистем управления файлами и процессами является загрузка файла на исполнение. В этом случае подсистеме управления процессов требуется обратиться к коллеге, чтобы считать исполняемые файлы.
Чуть выше мы перечисляли системные API для управления файлами. Теперь рассмотрим вызовы, служащие для работы с процессами: fork (создает новый процесса), exec (выполняет процесс), exit (завершает исполнение процесса), wait (один из способов синхронизации), brk (управляет памятью, выделенной процессу), signal (обработчики исключений) и др.
Следующие два модуля являются очень важными в понимании всей подсистемы управления процессами. Первый — модуль распределения памяти, позволяет избежать нехватки оперативной памяти. Хотя механизм свопинга и файлов подкачки (технически правильно это, кстати, называется виртуальной памятью) уже ни для кого не секрет, в тени остается другой факт: операционная система (в лице описываемой подсистемы) может либо скидывать все данные, относящиеся к конкретному процессу, на диск, либо скидывать страницы памяти (страничное замещение). Таким образом, модуль распределения памяти выполняет очень важную функцию — он определяет какому процессу сколько выделить памяти.
Виртуальная память была изобретена в 1962 году, в Англии при создании суперкомпьютера Atlas. В большинстве современных компьютеров оперативная память не так велика, как используемое процессором адресное пространство. Размер ОЗУ типичного персонального компьютера варьируется от десятков до сотен мегабайт. При запуске программа загружается с какого-либо накопителя в оперативную память. Если же программа не помещается в ОЗУ, то те её части, которые в данный момент не выполняются, хранятся во вторичном запоминающем устройстве, чаще всего винчестере, и такая память называется виртуальной. Безусловно, перед выполнением необходимая часть программы должна быть перемещена в оперативную память. Данные функции выполняет ядро операционной системы (диспетчер виртуальной памяти, находящийся в микроядре). И для программы и для пользователя эти действия прозрачны. Естественно, на запросы к виртуальной памяти уходит гораздо большее время, нежели к ОЗУ.
Второй модуль — планировщик. Его задача не менее важна. UNIX — мультизадачная ОС, то есть одновременно может выполняться множество процессов. Мы, однако, знаем, что в фиксированный момент времени на одном процессоре может выполняться только одна команда. Именно поэтому нужен виртуальный рефери, который будет определять, какому процессу исполняться сейчас, а какому — через секунду. На практике же планировщик переключает контекст, то есть перед тем, как остановить исполнение какого-то процесса, он запоминает состояние регистров, памяти и т. д., а уже после этого запускает другой процесс в его собственном адресном пространстве. И еще один тонкий момент: каждый запущенный процесс «думает», что он единственный. Дополнительно существует механизм приоритетов. Очевидно, чем выше приоритет, тем быстрее начнет исполняться процесс. Процессы могут также обмениваться между собой информацией. В случае их синхронного взаимодействия синхронизацию осуществляет модуль взаимодействия (например, функция wait).
Вот мы и подошли к последнему уровню — аппаратному контролю. На данном уровне происходит обработка прерываний и связь ядра с железом. Здесь следует отметить лишь пару моментов, во-первых, прерывания могут «прерывать» работу процессора и требовать внимания к себе (после этого процессор без проблем возвращается к выполнению оставленных процессов), а, во-вторых, обработку прерываний осуществляют специальные функции ядра.
Windows 2000/XP построены на архитектуре микроядра (microkernel architecture). ОС Windows 95/98 используют монолитное (monolithic) ядро. Микроядра являются сравнительно небольшими и модульными. Благодаря последнему новые устройства зачастую добавляются как модули, которые можно загружать/выгружать на этапе исполнения без перекомпиляции ядра. На архитектуре микроядра построены также FreeBSD и Mac OS X. Монолитные же ядра используются еще и в Linux. Они оптимизированы для более высокой производительности с минимальными контекстными переключениями. Такая архитектура упрощает поддержку кода ядра для разработчиков, но требует перекомпиляции ядра при добавлении новых устройств. Следует отметить, что описанные здесь различия являются «классическими», на практике монолитные ядра могут поддерживать модульность (что зачастую и происходит), а микроядра могут требовать перекомпиляции.
Архитектура Windows
Структура Windows 2000/XP не отличается оригинальностью: ядро системы (исполняется на максимально приоритетном уровне процессора) и пользовательские подсистемы (исполняются на минимально приоритетном уровне).
Ядро системы является критичной частью кода, любые ошибки, происходящие в ядре, приводят к фатальному краху системы — «синему экрану». Фактически — это ошибки типа «Нарушение общей защиты». Как только код ядра начинает обращаться в запрещенные для него области памяти (попытка прочитать или записать данные, исполнить неверную инструкцию, переход на запрещенную область), срабатывает система защиты памяти процессора, и управление передается системному обработчику исключений. Обработчик исключений не может восстановить корректное поведение кода. Все, что он делает — это вывод дампа на синий экран с указанием типа ошибки и содержимого памяти в области, где сработала защита.
Пользовательские подсистемы не столь критично влияют на работу системы в целом, так как они изолированы друг от друга и от ядра средствами управления памятью и собственно процессором. Ошибки, возникающие в приложениях, исполняются на уровне пользователя, то есть на менее привилегированном уровне, нежели ядро. Поэтому, система в состоянии контролировать процесс. При возникновении же ошибки или сбоя управление передается обработчику ошибок, который называется «Doctor Watson». Он принудительно завершит приложение. Ядро системы и остальные подсистемы остаются в целости и сохранности.
Ядро UNIX/Linux имеет два вида исключений, которые обычно называют «oops» и «panic». Почти в каждой операционной системе паника происходит в тех случаях, когда ядро обнаруживает серьезную неисправность. Если система каким-либо образом повредила сама себя, ей требуется остановиться немедленно, пока она не произведет необратимых критических изменений (типа уничтожения файловой системы). Везде, где только возможно, UNIX/Linux пытается детектировать проблему и справиться с ней без остановки всей системы. Например, многие ситуации типа «oops» приводят к завершению процесса, который нормально запустился, но потом зациклил систему. Бывают, однако, ситуации, когда все настолько плохо, что полная паника является наилучшим выходом. Считается, что пользователи стабильных версий ядра не должны встречать ни «паник», ни «oops». Но в реальном мире они иногда происходят.
Недавно найденный «TF-баг» (смотрите здесь) является хорошим примером паники. Процессор пытается передать управление процессу, которого не существует. Это приводит к краху всей системы. В данном случае, у системы нет другой альтернативы, чем запаниковать.
Ядро, поставляемое с Red Hat Linux 7.3 (и некоторыми другими дистрибутивами), содержит баг в файловой системе ext3. Эта ошибка приводит к «oops», завершая время от времени некоторые процессы (также этот баг приводит к замедлению всей системы). Хотя данная ошибка уже исправлена (патч есть и в обновлении от Red Hat), этот случай познакомил многих пользователей с ошибками типа «oops».
Ядро Windows 2000/XP состоит из нескольких системных компонентов, каждый из которых отвечает за определенный набор задач. Основные компоненты ядра:
Микроядро (Microkernel) — компактный код, можно сказать, сердце системы. В рамках микроядра работают ключевые службы: диспетчер памяти, диспетчер задач и другие.
Слой абстрагирования (Hardware Abstraction Layer, HAL). Полностью абстрагирует код системы от конкретного аппаратного оборудования. Использование HAL позволяет обеспечить переносимость 99% кода системы между различным оборудованием.
Диспетчер Ввода/Вывода (Input/Output Manager). Полностью контролирует потоки обмена между системой и устройствами. Драйверы устройств работают в контексте I/O Manager. Если драйвер написан с ошибками и может привести к сбою — это вызовет фатальный крах ядра и всей системы. 70% случаев фатальных сбоев («синий экран») — есть результат некорректного поведения драйверов устройств.
Windows XP содержит встроенный механизм контроля драйверов: правильно написанный и тщательно протестированный драйвер поставляется с цифровой подписью (Driver Signing). Правильная настройка системы заключается в запрещении установки драйверов без корректной подписи.
Модуль управления объектами (Object Manager), управления виртуальной памятью (Virtual Memory Manager), управления процессами (Process Manager), управления безопасностью (Security Reference Monitor), управления локальными вызовами (Local Procedure Calls Facilities) — важные компоненты ядра системы подробно рассматриваться не будут.
Наконец, особое по значению и важности место в ядре системы занимает модуль графического интерфейса — Win32k.sys. Фактически — это часть подсистемы Win32, отвечающая за прорисовку и управление графическим интерфейсом. Этот модуль расположен в ядре специально для того, чтобы существенно повысить производительность графических операций ввода/вывода. Однако размещение столь критической части в ядре накладывает чрезвычайно строгие требования к корректности его исполнения. Фактически, ошибка в коде Win32k.sys приведет к краху системы. Разработчики Windows уделяют огромное внимание этому модулю, и именно он наиболее тщательно протестирован. Опыт эксплуатации систем Windows показывает, что код Win32k.sys работает абсолютно корректно и не содержит фатальных ошибок. Однако некорректный драйвер видеосистемы может все испортить.
В Windows также реализованы дополнительные функции для повышения стабильности работы ОС. Система защиты файлов Windows автоматически предотвращает случайные изменения системных файлов операционной системы, вносимые пользователем или приложениями, эффективно защищая всю систему в целом. То есть, когда какая-то программа внесла изменения или просто заменила системные файлы Windows, считая, что у программы более новые, Windows отслеживает изменения и уведомляет об этом пользователя, говоря, что для стабильности системы желательно восстановить исходные файлы. Так же существует поддержка нескольких версий DLL, что повышает совместимость приложений и повышает стабильность.
Итог
Различия между Windows и UNIX для нас прокомментировали разработчики из компании ASPLinux.
«Операционные системы Unix и Windows достаточно сильно отличаются в реализации различных сервисов и служб. В соответствии с темами, затронутыми в этой статье, можно отметить несколько глобальных различий.
В Unix/Linux графическая система существует отдельно от ядра и функционирует как обычное приложение. В операционных системах Windows графическая система интегрирована в ядро. В случае использования операционной системы на рабочей станции, особенно при запуске графикоемких приложений, возможно, лучше, когда графическая система входит в ядро — в этом случае она может быстрее работать. А при работе на сервере предпочтительней отделение графической системы от ядра ОС, так как она загружает память и процессор. В случае Unix/Linux графическую систему можно просто отключить, к тому же, если системный администратор ее все-таки хочет использовать, в Linux есть несколько графических оболочек на выбор, некоторые из них (например, WindowMaker) достаточно слабо загружают машину. Эта же особенность Unix-образных операционных систем позволяет запускать эти ОС на машинах с весьма скромными объемами ОЗУ и т.п. В случае Windows же графическая система слишком тесно интегрирована в ОС, поэтому она должна запускаться даже на тех серверах, на которых она вовсе не нужна.
Отметим также методику разделения прав доступа в Windows 2000 и Unix/Linux. В первом — разделение прав доступа основано на ACL (access control lists), то есть, к примеру, можно настроить систему таким образом, чтобы администратор не имел возможности управлять файлами пользователей. У Unix/Linux же всегда есть суперпользователь — root, который имеет доступ абсолютно ко всему. То есть теоретически модель безопасности в Windows лучше: чтобы полностью завладеть хорошо настроенной системой Windows, хакеру придется ломать больше, в Unix/Linux же достаточно взломать доступ к root. (В Unix/Linux используются более старые технологии, тем не менее, некоторые дистрибутивы Linux сейчас начинают поддерживать ACL, среди них — ASPLinux 7.3 Server Edition). Но теория несколько смазывается практикой с той стороны, что в Windows не так быстро, как в Linux, заделываются «дыры», что уже относится к плюсам открытой модели разработки. В результате оказывается, что в Windows по статистике больше дыр, через которые злоумышленник может пробраться в систему. Но, опять же, точно о количестве дыр в Linux и Windows можно будет сказать только тогда, когда количество пользователей обоих видов ОС будет примерно одинаковым.
В Linux поддерживаются несколько файловых систем, наиболее продвинутые — это Ext2, Ext3, XFS. ОС Windows завязана по большому счету на одну файловую систему — NTFS или FAT 32. Файловые системы Ext2, Ext3, XFS по оценкам работают быстрее. Принципиальное же отличие в том, что в UNIX/Linux вообще нет понятия диска, физического или логического. Вся работа с устройствами хранения данных организуется через специальные файлы устройств, которые отображают физический носитель (диск, лента и т. п ) или его части (разделы) в файловую систему.
Важное отличие — наличие в Windows технологии ActiveX, нечто подобное в Unix/Linux реализуется с помощью CORBA и Bonobo. Эта технология, с одной стороны, предоставляет пользователю множество удобств, с другой стороны — она же допускала в свое время такие вещи, как автоматический запуск Outlook’ом вируса, пришедшего по почте. Одно из важных отличий этих технологий в том, что элементы ActiveX могут внедряться в текст HTML, что имеет как ряд достоинств, так и недостатков.
Можно перечислить еще ряд отличий Unix-подобных операционных систем от Windows, например, встроенную поддержку удаленного доступа в Unix и отсутствие оной в Windows по умолчанию (она реализуется в серверных версиях Windows, а также с помощью дополнительных средств, например, Citrix). В Unix/Linux и Windows сильно различаются сетевые подсистемы (IP-stack), по ряду оценок сетевая подсистема Unix/Linux эффективнее.
Можно было бы упомянуть богатый набор ПО, которое может поставляться вместе с Linux, между тем, Windows также развивается в этом направлении. Дополнительные отличия же в архитектуре в основном сводятся к отличиям работы монолитных и модульных ядер, которые также зачастую не являются преимуществами или недостатками, а просто отличиями. При всем при этом можно с уверенностью сказать, что характеристики работы Windows или Linux гораздо больше зависят от аккуратности и квалификации пользователя, чем от архитектуры той или иной ОС».
Мы искренне надеемся, что нам удалось описать основные различия двух систем. Если вы считаете, что какой-то аспект «анатомии» Windows или UNIX незаслуженно пропущен, милости просим в наш форум. Автор статьи (e-mail в начале) с удовольствием выслушает все ваши мысли.
Самыми известными и популярными операционными системами общего назначения в настоящее время являются операционные
системы семействWindows и UNIX, а также их ответвления. Операционные системы семейства МХ являются одной из старейших
ветвей операционных систем, при этом до сих пор UNIX-подобные
операционные системы широко применяются и не теряют своей
актуальности.
Причина того, что речь идет о семействе операционных систем
UNIX, а не об одной операционной системе, заключается в том, что
UNIX-семейство развивалось значительное время в различных, за-
частую не связанных друг с другом, коллективах разработчиков.
Первый вариант ОС UNIX был создан в 1969 г. несколькими программистами лаборатории Bell Labs фирмы АТ&Т и работал на компьютере РОР-7. Операционная система использовалась для решения практических задач сотрудников лаборатории, и широкое ее
распространение не планировалось. Через некоторое время большая часть операционной системы была переписана с языка ассемблера на язык С, что дало возможность перенести ее на большое
количество разных платформ. В настоящее время МХ работает
на большинстве существующих архитектур и для многих из них является основной ОС.
Дальнейшее развитие УМГХ-систем, разработанных в АТ&Т,
и их производных называется System V (пятая версия), сокращенно
SysV (иногда используется название АТ&Т-версия UNIX).
В середине 1970-х гг. исходный код УМХ попал в университет
Беркли, где была создана своя версия ОМПХ, получившая название
BSD UNIX (Berkeley Software Distribution).
В настоящее время большинство вариантов МХ основаны или
на System V, или на BSD (рис. 1.3}.
Обе ветви в той или иной степени удовлетворяют различным
стандартам, в частности стандарту POSIX, и в последнее время вырабатываются единые стандарты. Наиболее современные варианты
UNIX, удовлетворяющие требованиям этих стандартов, нельзя чет-
ко отнести ни к той ни к другой ветви. В их число входят IRIX (разработка Silicon Graphics), Digital OSF (разработка DEC) и Linux,
ранние версии которой были основаны на MINIX, разработанной
Энди Таненбаумом.
Кроме того, к общему генеалогическому древу ОС семейства
ОМХ следует отнести отечественные разработки: операционные
системы МОС ЕС для ЕС ЭВМ. АЕМОС для ВС ЭВМ и СМ ЭВМ,
ИНМОС для СМ ЭВМ.
Совершенно другая ситуация наблюдается, когда речь заходит
об операционных системах семейства Windows. Данные операционные системы разрабатывались и разрабатываются однойединственной компанией — Microsoft— на протяжении вот уже
более 20 лет.
История операционных систем Windows начинает свой отсчет
с 1985 г., когда была разработана ОС Windows 1.0. Эта система
не являлась полноценной ОС, а была по большей части лишь графической оболочкой для операционной системы МS DOS. Она реализовывала ограниченную поддержку многозадачного режима для программ под ОС MS DOS. В это же самое время Microsoft совместно с фирмой IВМ разрабатывала полноценную многозадачную
операционную систему с графическим интерфейсом — ОS/2. Из-
начально именно операционная система ОS/2 была призвана заме-
нить устаревающую МS DOS, но в начале 1990-х гг. пути Microsoft
и IВМ разошлись и Microsoft сконцентрировалась исключительно
на развитии своей собственной операционной системы на основе
Windows.
В 1990 г. на свет появилась ОС Widows 3.0, которая стала существенным шагом в развитии операционных систем семейства
Windows. В 1992 г. вышла значительно переработанная версия ветки Windows 3.х — Windows 3.1, в которой появились поддержка
шрифтов TrueType, печать в режиме WYSVIG, была повышена
стабильность работы, добавлены мультимедийные свойства и т.д.
Следующим этапом в развитии ветви операционных систем
Windows является семейство Windows 9х. В это семейство входят три версии операционной системы: Windows 95, Windows 98
и Windows МЕ. Эти операционные системы привнесли обновленный пользовательский интерфейс, поддержку длинных имен файлов, поддержку 32-битных приложений, поддержку стека ТСР/IР.
Данные операционные системы вызывали достаточно большие нарекания в плане стабильности работы. Фактически ядро этих операционных систем поддерживало так называемую вытесняющую
многозадачность (свопинг), позволяющую изолировать процессы
друг от друга и в идеале исключить зависания системы из-за зависания одного-единственного процесса. Но из-за того, что реализация части ядра мало отличалась от ядра ОС Windows 3.х, зависание,
например, единственного 16-битного приложения в системе приводило к зависанию всей операционной системы.
Совершенно на других принципах создавались системы на основе ветви Windows NT (Net Technology). Разработка этой ветви операционных систем семейства Windows началась в 1988 г. Это семейство оказалось наиболее удачной ветвью в развитии операционных систем Windows.
Первая версия, Windows NT 3.1, появилась в 1993 г. Затем с разницей в год последовательно выходили версии Windows NT 3.5,
3.51, 4.0. Версия Windows NT 4.0 имела интерфейс в стиле Windows
935, но страдала отсутствием поддержки DirectX — библиотеки для
программирования игровых приложений.
В 2000 г. вышла новая версия операционной системы на основе
ядра Windows NT — Windows 2000. Эта система включала новый
пользовательский интерфейс, поддерживала файловую систему
NTFS 3.0, а также содержала другие существенные изменения.
В 2001 г. появилась операционная система Windows ХР. Эта вер-
сия была призвана заменить операционные системы Windows 2000,
а также предлагалась в качестве замены операционных систем
ветви Windows 9х, разработка которой к тому времени была прекращена. Эта операционная система получила новый графический
интерфейс, широкую поддержку всевозможных мультимедийных
функций. функции восстановления системы, улучшенную совместимость со старыми программами и играми,
В 2006 г. была выпущена в свет операционная система Windows Vista. Эта система поддерживала новый пользовательский интерфейс Windows Aero на основе DirectX, появилась система User
Account Control (UAC} для контроля за действиями, выполняемыми пользователями, применялись технологии предотвращения использования эксплойтов Data Execution Prevention и Address Space Layout Randomization (ASLR) и т.д.
Несмотря на все нововведения данная версия подвергалась широкой критике и не получила достаточно широкого распространения в мире. В качестве замены этой версии в 2009 г. была выпущена операционная система УЛп4 ом 7. Эта система получила новую,
11-ю, версию Windows, улучшилась совместимость со старыми приложениями (по сравнению с Windows Vista}, был снова изменен пользовательский интерфейс системы ит. д.
В 2012 г. фирма Microsoft подготовила к выпуску операционную
систему Windows 8. Эта система содержит дополнительные улучшения в механизмах распознавания голоса, улучшенную систему
защиты от внедрения вредоносных программ, измененный интерфейс, напоминающий интерфейс мобильной версии Windows Phone 7, и т.д.
Помимо пользовательских версий операционных систем семейство Windows содержит и специальные версии для серверов, больших центров обработки данных и т.п. Фактически выход каждой
новой версии пользовательской операционной системы Windows,
особенно на основе ядра Windows NT, сопровождается выходом
{практически на том же ядре} серверной версии операционной
системы. Так, были выпущены серверные версии Windows Server
2003, Windows
#статьи
-
0
Основы операционных систем: компоненты, виды и история развития
Коротко о главном помощнике в управлении компьютером и другими гаджетами для тех, кому лень читать Таненбаума.
Иллюстрация: Оля Ежак для Skillbox Media
Гуманитарий с техническим образованием и соответствующими скиллами. Любит ходить в горы и слушать рок-музыку. Пишет про IT и кайфует от этого.
Эксперт
Ведущий системный инженер в «Ростелекоме». Эксперт Skillbox по администрированию Windows и работе с PowerShell.
Преподаёт в МАИ.
Компьютер, смартфон или планшет — это совокупность «железа», к которому относятся, например, процессор и видеокарта, и программного обеспечения. Они так бы и оставались всего лишь железом, если бы не операционная система, которая позволяет запускать на устройствах приложения, обеспечивает их совместную слаженную работу и взаимодействие с пользователем. С большинством ОС вы уже хорошо знакомы — это Windows, Linux, Android, iOS и другие.
В этой статье мы расскажем о том, как в общем устроена операционная система, какими были первые операционки и как они эволюционировали.
Содержание
- Что такое операционная система
- Из чего она состоит
- Виды операционных систем
- История их развития
- Какие операционные системы самые популярные
Операционная система (ОС, OS, operating system) — это набор программ, обеспечивающих работу компьютера или другого устройства и взаимодействие с ним пользователя.
Любые компьютеры, будь то ПК, ноутбуки, смартфоны или планшеты, состоят из двух групп компонентов:
- Аппаратной части — процессора, оперативной памяти, клавиатуры, компьютерной мыши и так далее.
- Программного обеспечения — системного и прикладного софта.
Чтобы они понимали друг друга, а пользователь мог взаимодействовать с устройством (запускать приложения), необходим посредник — операционная система.
Инфографика: Майя Мальгина для Skillbox Media
ОС выполняет много функций:
- создаёт удобный для пользователя интерфейс;
- стандартизирует доступ к устройствам ввода и вывода, например к клавиатуре и дисплею;
- координирует распределение ресурсов между запущенным программным обеспечением;
- выполняет запросы софта к аппаратной части;
- фиксирует ошибки и проводит их отладку;
- обеспечивает многозадачность программ;
- и так далее.
Операционная система представляет собой многослойную структуру, в центре которой находится ядро. Поверх него располагаются драйверы и службы, а оболочкой выступает пользовательский интерфейс.
Инфографика: Майя Мальгина для Skillbox Media
Это основа операционной системы. Ядро представляет собой часть программного обеспечения, работающую напрямую с компонентами компьютера. Также оно отвечает за управление процессами, памятью компьютера, файловой системой, обработку входных и выходных данных.
Ядра бывают монолитными и модульными. В первых все инструменты, необходимые для работы, находятся внутри одной программы. Например, такое ядро использовалось в DOS. Но сейчас монолитных ядер почти не осталось, так как все операционные системы перешли на модульную архитектуру.
В модульном ядре все компоненты разделены на небольшие блоки, которые работают независимо друг от друга. Такая структура более стабильна, так как ошибки в одном компоненте не приводят к остановке всей системы. ОС с модульными ядрами в свою очередь бывают двух видов: с микроядрами, как, например, QNX и Symbian, и монолитные с подгружаемыми модулями — Windows и Linux.
Это программное обеспечение, благодаря которому операционная система работает с подключённым в устройстве «железом». Без драйверов она не узнает, что могут делать видеокарта, клавиатура, принтер и другие комплектующие и как правильно отправлять к ним запросы.
Бывает графическим (GUI) и командным (CLI).
Графический интерфейс (GUI) представляет собой визуальную среду с кнопками, иконками, меню и диалоговыми окнами. Именно он используется по умолчанию в Windows, macOS, Android, iOS и средах рабочих столов Linux.
Командный интерфейс (CLI) использовался в DOS, а сейчас реализован в виде терминала в Linux и macOS и командной строки в Windows, в которых пользователь вводит команды с клавиатуры. CLI даёт возможность гибко управлять системой, используя функции и скрипты. Его чаще всего используют разработчики и системные администраторы.
Все существующие ОС можно классифицировать по нескольким признакам: разрядности, типу лицензии и области применения.
32-битные (x32). Адресуют до 4 ГБ оперативной памяти и могут запускать программы, написанные только под 32-битную систему.
64-битные (x64). Ограничение по оперативной памяти — до 16 ТБ. Такие ОС поддерживают 64-битные программы, а 32-битные запускают через эмулятор.
Почему так
Битность операционной системы характеризует длину двоичных чисел, с которыми она способна работать (помним, что в компьютере вся информация, в том числе текст и изображения, представляется в виде 1 и 0). Чтобы рассчитать максимальную длину числа в 32-битной системе, нужно возвести 2 в 32-ю степень:
2^32 = 4 294 967 296
Это также означает, что максимальное значение адреса ячейки ОЗУ, к которой может обратиться 32-битная система, не может превышать 4 294 967 296. Отсюда и ограничение на объём оперативной памяти в 4 ГБ.
Все современные версии операционных систем на компьютерах и смартфонах являются 64-битными. 32-битные версии иногда используют в устройствах со слабым «железом».
Коммерческие. Это платные ОС, которые лицензируются за деньги. Как правило, у них закрытый исходный код, который принадлежит конкретной компании. Например, Windows от Microsoft или macOS от Apple.
Свободно распространяемые. Бесплатные для пользователей, но могут включать платную поддержку. Например, как у продуктов Red Hat или Canonical.
Такие ОС можно свободно скачивать, распространять и даже модернизировать под себя. Главный пример — Linux, вариантов которого насчитывается уже более 500.
Серверные операционные системы используются на серверах. Они включают в себя инструменты для обмена данными между компьютерами через сетевые соединения. Такими ОС являются Windows Server и Unix-системы для серверов.
Клиентские — системы для использования на автономных компьютерах или устройствах, подключённых к серверам. К примеру, Windows 11, macOS 14.3 или Ubuntu Linux.
Мобильные операционные системы разработаны для смартфонов и планшетов. Они позволяют работать с мобильными приложениями, управлять настройками сотовой сети и энергопотреблением. К ним относят Android и iOS.
История развития операционных систем насчитывает около 70 лет. За это время простейший набор заданий для мейнфреймов, написанный на перфоленте, эволюционировал в то, что сейчас мы видим на экране компьютера или смартфона.
Всю историю можно разделить на три этапа.
История операционных систем начинается в 1955 году, когда инженер General Motors Роберт Л. Патрик и программист North American Airlines Оуэн Мок разработали для IBM 704 GM-NAA I/O. Её иногда называли системой ввода — вывода.
GM-NAA I/O позволяла мейнфрейму автоматически выполнять задания по проведению сложных математических вычислений. Их результаты выводились на подключённый принтер. Благодаря этому операторы мейнфрейма могли проводить вычисления без постоянной смены специальных плат.
Фото: NASA
В 1964 году появилась ОС Multics, созданная совместными усилиями Мичиганского университета, General Electric и Bell Labs. В ней была реализована возможность параллельной работы нескольких программ, концепция виртуальной памяти и файловая система на основе дерева каталогов, используемые и сегодня.
В 1969 году в исследовательской лаборатории Bell Labs разработали ОС Unix. Она — основа современных операционных систем.
Unix поддерживала язык C и протокол TCP/IP. Это первая ОС, которую можно было установить на сервер. К ней могли подключиться компьютеры-клиенты, позволяя одновременно работать нескольким пользователям.
Изображение: Robert M. Supnik / WIkimedia Commons
В 1973 году компания Xerox разработала первую операционную систему с графическим интерфейсом — Alto OS. В ней была реализована оконная система с различными типами элементов управления, такими как кнопки, поля ввода и списки.
Так как Alto OS работала только на компьютерах Xerox Alto, которые были дорогими, она использовалась только внутри самой компании Xerox и в некоторых университетах.
Изображение: Xerox Corporation
В это время появляются персональные компьютеры, доступные не только корпорациям и университетам, но и обычным пользователям.
В 1984 году компания Apple выпускает первую систему для своих Macintosh под названием System 1, созданную на основе Alto OS. С её помощью Стив Возняк планировал избавить пользователей от сложности существующих ОС и вывести компьютеры компании на массовый рынок.
Изображение: Apple Inc.
Microsoft старалась не отставать и в 1985 году выпустила Windows 1.0. Операционная система не была инновационной, а представляла собой графическую оболочку для MS-DOS, предыдущего продукта, созданного для компании IBM.
Изображение: Microsoft Corporation
В 1991 году в игру включается независимый разработчик Линус Торвальдс. На основе Unix он создаёт собственную операционную систему Linux и выкладывает её в открытый доступ.
Так как исходный код Linux распространяется свободно, к развитию системы с самого начала подключается большое число независимых разработчиков. Но первая графическая оболочка для ОС GNOME появилась лишь в 1999 году.
Изображение: WIkimedia Commons
Операционные системы для смартфонов развивались параллельно. С 1998 года разрабатывалась Symbian — ОС для Nokia, а с 1999 года — BlackBerry OS для BlackBerry от компании RIM.
Из современных мобильных операционных систем первой в 2007 году появилась iOS, созданная на ядре Linux компанией Apple.
Инноваций было немного: первый мультитач в мобильном устройстве, виртуальная клавиатура, синхронизация с iTunes и браузер Safari. Главное преимущество той iOS — стабильная работа благодаря разработке под один конкретный девайс.
Изображение: Apple Inc.
Главным конкурентом iOS стала разработанная в 2008 году Android OS. Её выпустила компания Android Inc., которую позже приобрёл Google. Эта система также создана на ядре Linux, но распространяется с открытым исходным кодом.
Основное отличие Android от конкурентов — возможность кастомизации дизайна и настроек на любом устройстве. Первая версия ОС вышла на смартфоне HTC Dream.
Изображение: HTC Corporation
С момента разработки первой операционной системы прошло больше 60 лет. Было выпущено огромное количество разных ОС, но к сегодняшнему дню популярность обрели продукты компаний-гигантов и модификации операционных систем с открытым исходным кодом.
Инфографика: Майя Мальгина для Skillbox Media
Windows. Знакомая большинству операционная система с многолетней историей. Её главные преимущества — это дружелюбный интерфейс, обширная совместимость с программами, играми и периферией. Это сделало её самой популярной системой среди пользователей ПК и ноутбуков. Но она является платной, закрытой и требовательной к «железу».
macOS — ОС для Macbook и iMac. Компания Apple постаралась над архитектурой своей «оси» и максимально оптимизировала её под используемые комплектующие. В первые годы macOS преимущественно выбирали специалисты творческих профессий — видеомонтажёры, журналисты и другие, — но сейчас многие покупают устройства компании из-за их стабильной работы и личных предпочтений к дизайну.
Любителям тонкой настройки операционной системы и инструментов с открытым исходным кодом подойдут бесплатные Linux-подобные ОС. В них удобно администрировать серверы, работать с базами данных и вообще делать всё то же самое, что и в Windows и macOS.
Android распространяется с открытым исходным кодом. Большое количество компаний разрабатывают на его основе собственные интерфейсные оболочки для своих Android-смартфонов.
Такие преимущества ОС, как понятное управление, возможности широкой настройки интерфейса, большой магазин приложений, завоевали «Андроиду» популярность у производителей мобильных устройств и других портативных гаджетов.
iOS устанавливается только на мобильные устройства от Apple. Вместе они образуют единую экосистему, что является одновременно и плюсом, и минусом. Сами по себе они работают быстро и стабильно, отлично синхронизируясь с другими гаджетами компании. Но при взаимодействии со сторонними ОС могут возникать ошибки. Система является закрытой, поэтому кастомизировать её не получится, а приложения можно установить только из официального магазина — App Store.
Что мы сегодня узнали:
- Операционная система — это набор программ, обеспечивающих работу компьютера или другого устройства и взаимодействие с ним пользователя.
- Структурно ОС состоит из ядра, драйверов и пользовательского интерфейса.
- Сегодня преимущественно используются 64-битные операционные системы с модульной архитектурой.
- Самые популярные ОС для ПК — Windows и macOS, а для мобильных устройств — Android и iOS.
С чего начать путь в IT?
Получите подробный гайд в нашем телеграм-канале бесплатно! Кликайте по баннеру и заходите в канал — вы найдёте путеводитель в закрепе.
Забрать гайд>
