Время на прочтение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
Last Updated on February 2, 2022 by Dave Farquhar
At least two of the most popular operating systems of today are based on Unix. But what about Windows? Is Windows Unix based?
While Windows has some Unix influences, it is not derived or based on Unix. At some points is has contained a small amount of BSD code but the majority of its design came from other operating systems.
BSD code in Windows
BSD is a form of Unix. The University of California at Berkeley started working with Unix in 1974, extending its capabilities to meet its needs. By 1978, Berkeley was sharing its changes with other universities.
By 1991, BSD no longer contained any AT&T-owned code, so technically it could be distributed on the University of California’s terms, not AT&T’s terms. But the University of California had no rights to the Unix trademark. That stopped them from from calling it BSD Unix.
There was some legal wrangling between AT&T and the University of California. One reason why Linux is more popular than FreeBSD is because Linux was a clean-room implementation and spread freely during the early 1990s while the BSD family was tied up in court.
What does any of this have to do with Windows? Well, once BSD was free and clear, it could be distributed on the University of California’s terms. Their terms were generous. You could copy it all you wanted, including reusing the code in closed-source projects, as long as the copyright message remained intact.
When Microsoft decided to include standard Internet utilities in Windows, it just recompiled the BSD tools. This included the copyright message, which was required by law. This confused people, but Microsoft wasn’t doing anything underhanded. Why didn’t they bother to remove the message? They couldn’t.
The Windows 10 versions of these tools no longer have the message. But they did in NT4.
The POSIX subsystem
POSIX is a Unix standard for interoperability. Anyone who’s dealt with more than one type of Unix will tell you it’s a fragmented mess. Sure, if you understand one you can understand another, but the details can vary in maddening ways.
POSIX was a US government initiative to ensure a certain amount of interoperability. As long as your Unix implemented that baseline, the government would be able to work with it. This kept the government from being tied to a single computer vendor, which was good for everyone. It kept bidding competitive, didn’t lock anyone out, and kept the government from becoming beholden to a single vendor like IBM.
Microsoft included a POSIX subsystem in Windows NT. This layer made Windows NT just Unix-like enough that the government could run its software on it. This and a few other design decisions made Windows NT eligible for work that had previously been the exclusive realm of mainframes or Unix.
By the 2000s, the government was sometimes just writing native Windows software. Ironically, when I was a government contractor, I had to disable the POSIX functionality in Windows to reduce its attack surface. The very thing the government once required was something it wanted gone.
And this subsystem was layered on top of the base of Windows. Like the BSD networking components, these were bolted onto the chassis while Microsoft used its own drivetrain. Windows once was based on MS-DOS, but when Microsoft needed something more advanced, they wrote their own kernel and userspace, the NT kernel.
What about the Linux subsystem for Windows?
Windows 10 includes a Linux subsystem, allowing you to run full Linux distributions, including Linux applications, on top of Windows 10.
But this capability rides on top of a translation layer, translating the Linux system calls into the Windows equivalents. It’s still the Windows kernel under the hood.
The future
There has been some speculation that Microsoft could do a Linux subsystem in reverse, running the Windows userspace on a Linux kernel and translating the Windows calls into Linux equivalents. Some have argued Microsoft should do this, and that it would allow for a more efficient and more secure system overall.
So far, Microsoft has had no reason to try that. Nothing says they haven’t tried it internally in a lab, but they haven’t done it in anything consumers can get their hands on.
There’s no reason it’s not possible to do. But Microsoft won’t do it unless they have something to gain.
Other Microsoft Unix projects
Even though Windows isn’t based on Unix, Microsoft has dabbled in Unix in the past. Microsoft licensed Unix from AT&T in the late 1970s and used it to develop its own commercial derivative, which it called Xenix. When IBM approached Microsoft in 1980 to provide a programming language and an operating system for the IBM PC, Microsoft tried to get them to use Xenix. IBM wanted something more CP/M-like, and the rest was history.
In 1984, IBM released the 80286-based PC/AT, and Microsoft was excited that IBM finally had a machine powerful enough to run Xenix. But Xenix and DOS weren’t compatible and the industry wanted compatibility, so IBM and Microsoft developed OS/2 as their next-generation operating system. OS/2 led to Windows NT and the end of Microsoft’s Unix ambitions.
Microsoft sold Xenix to SCO, the company that helped it develop Xenix in the first place, in 1987. SCO developed products based on it for a few years, and eventually ended up owning many (but not all) of the rights to Unix itself, after purchasing them from Novell, who had in turn purchased them from AT&T. In 2002 it merged with Linux distributor Caldera, then turned around and sued IBM for $1 billion in 2003. Ironically, the case was over IBM’s contributions to the Linux kernel.
The case was decided in IBM’s favor in 2017, but the tattered remnants of SCO are still appealing the decision.
David Farquhar is a computer security professional, entrepreneur, and author. He has written professionally about computers since 1991, so he was writing about retro computers when they were still new. He has been working in IT professionally since 1994 and has specialized in vulnerability management since 2013. He holds Security+ and CISSP certifications. Today he blogs five times a week, mostly about retro computers and retro gaming covering the time period from 1975 to 2000.
«Чтобы найти истину, каждый должен хоть
раз в жизни освободиться от усвоенных
им представлений и заново построить
систему своих взглядов»
— Рене Декарт.
Статья, которая сейчас открыта в вашем браузере, посвящена детальному рассмотрению архитектуры 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
UNIX — это семейство операционных систем для компьютеров. Обычно эти системы используют на серверах, но есть версии, созданные и для персональных компьютеров. Когда-то UNIX была революционной ОС, а сейчас стала стандартом, по которому развивается большинство систем.
Название UNIX означает Uniplexed Information and Computing Service — единый информационный и вычислительный сервис. По-русски оно читается как «юникс».
История UNIX началась еще в 60-х: тогда она стала первой в мире ОС, с которой может одновременно работать несколько человек. В первой системе UNIX появились и многие другие возможности, которых не было в других ОС. Поэтому она стала прорывом, а со временем на ее основе разработали много других систем.
Как лицензирована и где применяется UNIX
- Во времена создания UNIX персональных компьютеров не существовало. Были только огромные профессиональные машины — мейнфреймы. Изначально система была предназначена именно для них.
- Позже, с развитием компьютеров, появилось много других версий UNIX, в основном серверных.
- Cейчас на базе этой ОС построены и некоторые прикладные системы для обычных пользователей.
Создатель UNIX — компания AT&T, и именно ей принадлежат права на систему. Программный код ядра оригинальной UNIX всегда был закрытым, но в 70-х компания передала исходный код нескольким университетам — а еще продала UNIX ряду компаний. Те в свою очередь создали свои версии UNIX, во многих из которых код уже был открытым. С тех пор разные UNIX-системы развивались параллельно.
Кто пользуется ОС UNIX
Классическую UNIX из 60-х сейчас встретить сложно. А вот системы на ее основе существуют и в наши дни. В первую очередь это серверные системы: в них нет визуального интерфейса, они предназначены для работы с профессиональными компьютерами, на которых хранятся сайты и разнообразные программы. С такими системами работают в основном профессионалы: разработчики, системные администраторы и другие.
Системы на основе UNIX могут использоваться и в персональных компьютерах. Windows к ним не относится, а вот macOS и BSD базируются на UNIX — и с ними может работать любой пользователь.
Особенности операционной системы UNIX
В современном мире некоторые особенности UNIX кажутся чем-то банальным. Но эта система была первопроходцем и установила стандарт: многие привычные нам вещи для нее стали инновационными и впервые появились именно в ней.
Ядро UNIX. В ядре этой системы практически всё представляется в виде файлов. Эта особенность сохранилась и в последующих операционных системах на базе UNIX и сильно повлияла на философию работы с ОС. Даже настройки программ хранятся в специальных файлах, которые можно открывать и редактировать как обычный текст. Сейчас конфигурационные файлы — не редкость, но впервые эту идею принес именно UNIX.
Архитектура UNIX. Это модульная операционная система — она состоит из множества взаимосвязанных частей. В ней есть огромное количество утилит, каждая из которых выполняет свою задачу. А общая командная оболочка объединяет утилиты и помогает ими управлять.
Файловая система. Когда-то UNIX стала первой в мире системой, где можно создавать папки и файлы разной степени вложенности: папка, внутри еще одна, и так далее. Сейчас это стало стандартом. Сами файловые системы в современных UNIX могут различаться, но практически все они древовидные и чувствительные к регистру.
Язык C. UNIX написана на языке C, который и сейчас используется в системном программировании. Для 60-х это была редкость, потому что тогда операционные системы писали в основном на языке ассемблера. Более того: язык C впервые появился именно в UNIX.
Мультиплатформенность. UNIX и подобные ей системы подходят практически для любого «железа». Это происходит как раз благодаря языку C: он позволяет адаптировать систему под разные процессоры. А вот системы на ассемблере были жестко заточены под конкретное железо.
Интерфейс и взаимодействие. Привычного нам визуального интерфейса в UNIX нет и не было. Зато в нём есть несколько особенностей, которые опять-таки стали стандартом для современных компьютеров:
- информация выводится на экран в виде текста. До UNIX единицей вывода был бит, а в бит помещалось только двоичное число. UNIX же стал работать с байтами, а в байт помещается буква. Так что эта система первой научилась показывать программисту не цифры, а текст. До этого людям приходилось вручную переводить двоичный код в буквы;
- настройки программ можно менять изнутри самих программ. Раньше поменять параметры программы можно было только извне, из командной строки. А сейчас в любой программе есть кнопка «Настройки», и это заслуга UNIX;
- операционная система сама считает размер файла. Даже такие вещи, как определение размера файла и выбор места для него на физическом диске, раньше делал человек вручную. В UNIX эту задачу впервые взяла на себя ОС.
А еще именно UNIX популяризовал работу с регулярными выражениями и протокол TCP/IP. Сейчас регулярные выражения — стандарт для поиска или вывода информации, а на TCP/IP построен весь интернет. Но когда-то они развились благодаря UNIX.
Современные системы UNIX
Технологиями и наработками, пришедшими из UNIX, пользуются многие ОС. Но не все из них имеют право называться UNIX, даже если очень на нее похожи. Существует спецификация SUS: набор требований, которым должна отвечать система, чтобы ее можно было считать полноценным UNIX. В современном мире этим требованиям отвечает несколько ОС:
- macOS — стандартная система для персональных компьютеров компании Apple. У нее собственное ядро XNU, но критериям UNIX она отвечает;
- HP-UX — проприетарная ОС от Hewlett-Packard, используется для серверов с определенной архитектурой;
- AIX — еще одна профессиональная ОС для серверов, на этот раз от компании IBM;
- Solaris — проприетарная система, которая сейчас принадлежит компании Oracle. Правда, в последние годы она не до конца отвечает спецификации SUS.
В основном сертифицированные UNIX-системы — серверные, исключение составляет только macOS.
Что такое UNIX-подобные системы
Операционные системы, которые очень похожи на UNIX, но не проходили сертификацию, называются UNIX-подобными. Это очень широкая группа ОС, и ее часто тоже называют «юниксами» — хотя технически права так называться эти системы не имеют. К UNIX-подобным системам относятся в первую очередь:
- Linux — самый известный UNIX-подобный проект и второе в мире по популярности семейство операционных систем;
- BSD — основан на коде UNIX, который AT&T передала университету Беркли, считается практически «полноценным» UNIX.
Есть и другие проекты, например OpenSolaris, но самыми известными стали именно эти два семейства операционных систем.
Отличие UNIX от Linux
Linux — это не UNIX, хотя системы похожи. Linux даже нельзя назвать версией UNIX: это совершенно самостоятельный продукт, который создан в рамках проекта GNU (что расшифровывается как GNU is not UNIX). Он реализует ту же философию и тот же подход, но код ядра Linux написан с нуля как «изначально свободный клон UNIX».
- Linux полностью бесплатный и открытый и всегда был таковым. UNIX изначально — проприетарная система с закрытым исходным кодом, а современные открытые решения считаются UNIX-подобными.
- Linux — фактически только ядро, а утилиты и оболочки могут быть очень разнообразными. Система очень гибкая, ее можно видоизменять под себя. Так появляются десятки разных дистрибутивов. В UNIX, кроме ядра, входит набор утилит и интерфейсов для взаимодействия — это изначально полноценная ОС, а не только ядро.
Linux сейчас более популярен, чем проприетарные UNIX-системы. В первую очередь — как серверная ОС, хотя с Linux часто работают и на персональных компьютерах. Системы UNIX же в большинстве случаев серверные, а среди обычных пользователей представлены только macOS.
Как начать работать с UNIX
Если вы владелец компьютера от компании Apple, — вы уже работаете с UNIX. Сейчас именно macOS считается наиболее популярной реализацией системы. Если же вы хотите перейти на UNIX-подобную систему, можете выбрать для персонального компьютера дистрибутив Linux или BSD.
Работа с современными UNIX-подобными системами на уровне пользователя мало чем отличается от привычной работы с Windows. Разница заметна в первую очередь опытному пользователю: в UNIX совсем другой подход к хранению файлов и организации процессов. Поэтому многие IT-специалисты предпочитают работать с UNIX-подобными системами или macOS, которые лучше отвечают их нуждам.
Вы можете узнать больше про операционные системы на наших курсах. Найдите профессию по вкусу и станьте востребованным IT-специалистом.