Для облегчения понимания давайте разделим компьютерные системы на компоненты. Сначала разделим все по слоям или, как их еще называют уровням. Слой или уровень — это группирование компонентов в зависимости от расположения между пользователями и железом ПК.
В ОС на базе Linux обычно выделяют три основных слоя или уровня. Эти слои представлены на схеме ниже.
Аппаратные средства.
На первом (основном) уровне находятся аппаратные средства. Это центральный процессор(ы), память, жесткие диски, сетевые интерфейсы. Так же сюда можно отнести перефирийные устройства, такие как принтеры, мыши и т.д.
Уровень ядра. Пространство ядра.
На следующем уровне находится ядро ( а по факту это и есть то, что называют Linux). Ядро расположено в памяти компьютера и его главная задача — это выступать в качестве интерфейса между аппаратными средствами и пространством пользователя. По сути оно дает команды процессору, который в свою очередь выполняет вычисления и делает запросы на чтение из памяти и записи в нее.
Уровень пользователя. Пользовательское пространство.
На последнем и самом верхнем уровне находятся процессы, запущенные пользователем. Этот уровень еще называют пространством пользователя. Здесь все то, с чем мы контактируем в процессе работы. Это и графическая оболочка, и прикладные программы, и браузеры, и даже терминал — все работает на верхнем уровне в пользовательском пространстве. Именно пользовательским пространством в основном и отличаются дистрибутивы.
Резюме.
Очень важно различать процессы пользователя и процессы, запущенные в режиме ядра. Код, который работает на уровне ядра, обладает неограниченным доступом к процессорному времени и оперативной памяти. Процессы, запущенные на уровне пользователя, имеют лишь ограниченный объем памяти. Для таких процессов так же разрешены только безопасные инструкции для процессора. Это сделано для того, что если какой-то пользовательский код завершится с ошибкой, то ее последствия будут ограниченными и ядро с легкостью сможет избавиться от них. Например, сбой в работе текстового редактора, будет аккуратно устранен ядром, не задев работу других приложений.
Такое взаимодействие процессов позволяет устранить существенный вред системе. Но тут надо для себя решить, что именно понимается под существенным вредом. Например, может ли пользовательский процесс удалить все данные на жестком диске? Отвечу так, все зависит от настроек разрешения. И это на самом деле может быть опасным. Поэтому будьте внимательнее в том, что именно вы делаете в системе, и отдавайте себе отчет по каждому запущенному приложению, что бы потом не было мучительно больно за потраченное время над восстановлением данных.
Помните, разделение на уровни и абстракции различных компьютерных систем сделано для упрощения их понимания и не защитит Вас, если Вы захотите что-то поломать.
Was this helpful?
0 / 0