Безопасность, свобода, бесплатность, открытый код, популярность, количество программного обеспечения, все это основные отличия Linux от Windows, которые чаще всего становятся причиной перехода пользователей на эту операционную систему. О них знают все, либо почти все пользователи. Но что если копнуть глубже, чем именно отличаются эти системы? В чем принципиальные технические отличия?
В этой статье мы рассмотрим чем отличается windows от linux с технической точки зрения, попытаемся разобраться почему Linux считается более безопасным, а также понять суть различий.
1. Ядро системы
Основной компонент каждой операционной системы — это ее ядро. И даже с этого, между операционными системами есть огромные отличия. Ядро Linux — монолитное, оно состоит из одного файла, а для расширения его функциональности можно использовать модули.
Все программы общаются с ядром через системные вызовы, они стандартизированы, поэтому одни и те же программы без переписывания смогут работать на разных платформах под управлением Linux, например, x86 и ARM.
Все драйверы встроены в ядро, но зато большинство программ находятся в пользовательском пространстве, в том числе графическая оболочка. Монолитная структура дает больше безопасности, поскольку если на этапе сборки ядра отключить поддержку модулей, выполнить свой код на уровне ядра будет невозможно.
Это главное, но не очевидное отличие Linux от Windows. Windows имеет совершенно другой тип ядра. Тут используется гибридное ядро, которое состоит из множества небольших частей — библиотек dll, каждая из которых отвечает строго за свою функцию.
Но и это еще не все, системные вызовы не используются, вместо них пользовательские программы вынуждены обращаться к документированным библиотекам user32.dll, gdi32.dll, kenel32.dll, advapi32.dll. Эти библиотеки вызывают функции из ntdll.dll, которая напрямую связана с ядром.
Драйверами управляет библиотека hal.dll и подключаются они к ядру отдельно. Выводом на экран управляет графическая подсистема ядра, туда входит вся работа с графикой, в том числе и с оболочкой. Возможность использования пользовательского режима ядра позволяет легко адаптировать систему к любому типу программ, например win16 или POSIX. Но за эту гибкость приходится платить производительностью.
2. Структура файловой системы и диски
То, что сильно отличается операционная система linux от windows структурой файловой системы вы заметите сразу. Linux предоставляет файловую систему более реально, такой как она есть на самом деле. Начинается структура файловой системы с корня, или, другими словами, основного каталога системного раздела, а уже туда подключаются все другие диски по нужных подкаталогах.
Файлы сортируются по каталогам в зависимости от типа, например, исполняемые — в /bin/, настройки — /etc/, а ресурсы — в /usr/. Получается что одна программа разделена по всей файловой системе, но это не выведывает трудностей из-за пакетного менеджера.
Устройства хранения в Linux именуются по алфавиту, а разделы на них — цифрами. Например, первый жесткий диск будет иметь имя sda, второй — sdb. А разделы на первом будут нумероваться — sda1, sda2, sda3 и так далее. Разделы могут свободно монтироваться в любую нужную папку, например, в качестве домашнего каталога или /var/.
Windows создает дополнительную абстракцию. Хотя диски и разделы именуются похожим образом, как и в Linux, но все это скрыто операционной системой. Пользователю же предоставляется такая абстракция, как диск C:, D:, E:, F: и так далее. Каждый из них — это раздел на жестком диске, а более подробную информацию от пользователя система скрывает. Это и к лучшему для новичков. Что касается распределения файлов, то одна программа находится в одной папке, со всеми исполняемыми файлами, настройками и ресурсами.
3. Хранение конфигурации и данных
В Linux все настройки хранятся в обычных файлах, которые расположены в файловой системе. Глобальные файлы настроек находятся в папке /etc/. Они применимы ко всем пользователям, которые используют этот компьютер. Настройки пользовательских программ находятся в скрытых подкаталогах домашнего каталога пользователя.
Такое хранение достаточно удобно, поскольку конфигурационные файлы легко перенести на другой компьютер, а децентрализованность увеличивает надежность системы. Каждая программа создает свой конфигурационный файл, со своим синтаксисом, и редактируются они, в основном, вручную. Почти все настройки можно выполнить через графический интерфейс, но часто графические утилиты создают очень запутанные конфигурации. Ручная работа всегда выглядит лучше.
Это тоже важное отличие linux от windows. Windows хранит все настройки приложений, системы и драйверов в специальной базе данных, под названием реестр Windows. Все настройки разделены по ветвях и ключах, а программы могут очень быстро получить к ним доступ.
Такой способ предоставления дает по умолчанию безопасность настроек, возможность удаленного изменения и легкого их изменения с помощью графических программ. Но тут кроются и большие недостатки: настройки нельзя перенести на другой компьютер, централизованная система настроек может быть повреждена и это повредит всю систему.
К тому же программы очень быстро переполняют реестр и он начинает занимать слишком много, поэтому на его начальную загрузку нужно много времени. Трудно сказать какая технология лучше, но это тоже разница между linux и windows и только вам выбирать что использовать.
4. Управление пользователями и права
Linux изначально был разработан как многопользовательская система. Файлы имеют три категории доступа — это пользователь-владелец, группа пользователей и все остальные. Также есть три параметра доступа — чтение, запись и выполнение. С помощью комбинации этих простых параметров и осуществляется контроль доступа ко всем файлам в системе, а поскольку в Linux — все есть файл, значит ко всему.
Со временем начали считать что такая система устарела и были доработаны списки доступа ACL, SELinux и AppArrmor — они полностью удовлетворяют все нужды в безопасности. Но они так и не набрали большой популярности.
Windows была предназначена для работы только одного пользователя, изначально из-за этого возникало очень много проблем с безопасностью. Но потом система пользователей была доработана многопользовательская система, которая, кроме владельца, группы и остальных включает подробные ACL списки доступа. Можно сказать, что тут различие windows и linux не так велико.
5. Управление программами и обновление
Продолжим сравнение windows и linux. Управление программами и их обновлением это огромная разница windows и linux, настолько все реализовано по-другому.
В Linux существуют репозитории пакетов программ. Там есть если не все, то почти все необходимые программы, драйвера и компоненты системы. У вас почти не будет необходимости качать программы из интернета, хотя такая возможность тоже есть.
Использование централизованных репозиториев дает большую безопасность и надежность, а также возможность обновления. Как только новая версия программы появилась в репозитории, вы можете ее обновить. Процесс обновления выполняется одной командой сразу для всей системы, тогда, когда вам это удобно.
В Windows нет репозиториев, вам придется искать все необходимые программы в интернете и устанавливать их вручную. Каждая программа будет обновляться сама, когда будет считать нужным, в том числе и система. Для обновления системы понадобиться перезагрузка, причем в вопросе установки обновлений Windows бывает очень настойчивой.
Выводы
В этой статье мы попытались раскрыть именно технические подробности, насколько это возможно в такой небольшой статье. Если вы только стоите перед выбором операционной системы, надеюсь это сравнение Windows и Linux было для вас полезным.
Можно ли иметь на компьютере одновременно и windows, и Linux. И переключаться по желанию с одной ОС на другую?