Что такое Linux? Его преимущества

  Дмитрий Бушуев  | 

  Обновл. 28 Янв 2021  | 

 4777

 ǀ   8 

Linux — это семейство Unix-подобных операционных систем (сокр. «ОС»), использующих ядро Linux, которое разработал финно-американский программист Линус Торвальдс. ОС, использующие ядро Linux, называются дистрибутивами Linux, и они являются такими же операционными системами как Microsoft Windows, Apple macOS, iOS, но с одной очень важной особенностью, а именно — их исходные коды являются открытыми, так как они распространяются под лицензией GNU GPL, которая подразумевает создание бесплатного и открытого программного обеспечения (open-source software). Это означает, что у любого пользователя есть право изучать и изменять исходный код. Детально об истории Unix, Linux, а также о появлении проекта GNU мы говорили на уроке по истории Linux.

Примечание: Стоит отметить, что есть также и платные дистрибутивы Linux, например, Red Hat Enterprise, Astra Linux Special Edition и др., которые активно используются для серверов в военных организациях и крупных финансовых учреждениях.

Операционная система — это программное обеспечение, являющееся связующим звеном между аппаратным оборудованием и прикладными программами. Она передает процессору необходимые для обработки входные данные и затем, при помощи аппаратного обеспечения компьютера, отображает выходной результат вычислений. Описанный процесс является основной функцией операционной системы. Стоит отметить, что она также выполняет и множество других не менее важных задач (но это уже выходит за рамки данной статьи).

Linux существует вокруг нас с середины 1990-х годов. Вы можете встретить его повсюду: в наших телефонах, ноутбуках, в наручных часах, в суперкомпьютерах, автомобилях и даже в холодильниках. Он обрел известность, как среди разработчиков, так и среди обычных пользователей компьютеров.

Ядро Linux было разработано в 1991 году программистом Линусом Торвальдсом. Об этом снят документальный фильм «Revolution OS» (2001 г.).

GNU/Linux или Linux?

В сообществе программистов существует спор об именовании операционных систем, использующих ядро Linux и программное обеспечение, разработанное под лицензией GNU GPL. Поскольку ядро Linux само по себе не является работающей операционной системой, то многие предпочитают использовать термин «GNU/Linux».

Важно! Поскольку статьи цикла «Уроки по Linux» нацелены на максимальный охват аудитории (а не только лишь на узкопрофильных программистов) и имеют цель донести простыми словами о системе Linux и её использовании для начинающих, то ради сохранения простоты и лаконичности мы будем использовать термин «Linux», обозначающий операционные системы, работающие на базе ядра Linux.

Вы же можете использовать как просто «Linux», так и «GNU/Linux».

Структура Linux


Linux состоит из следующих компонентов:


Ядро

Ядро — это своего рода главная программа, являющаяся основной частью операционной системы. Оно выступает в роли посредника между устройствами компьютера (процессором, видеокартой, оперативной памятью и т.д.) и его программным обеспечением, абстрагируя от обычных программ и пользователей сложную, низкоуровневую работу с «железом» компьютера, предоставляя взамен простой, понятный и удобный в использовании интерфейс. Для этого в код ядра были включены драйверы устройств, которые могут, как загружаться в память вместе с ядром ОС, так и подключаться по мере возникновения потребности в ресурсах необходимого устройства.

Как вы наверняка знаете, на компьютере может быть запущено сразу несколько программ: какие-то из них работают в фоновом режиме, другие могут ожидать определенных действий от пользователя, а третьим необходимо получать информацию из другой запущенной программы. В такой ситуации именно ядро берет на себя функцию оптимального распределения ресурсов компьютера между запущенными программами и организацию параллельной работы множества различных процессов. Оно первым загружается в оперативную память компьютера и всегда находится в запущенном состоянии, постоянно взаимодействуя с его аппаратным обеспечением и установленными программами.

Как правило, большинство ядер делятся на три типа:

   микроядра;

   монолитные;

   гибридные.

Микроядро — это ядро, состоящее из нескольких подгружаемых в память по мере надобности независимых модулей, выполняющихся в отдельных адресных пространствах. По сути, грубо говоря, в таком варианте исполнения оно не сильно отличается от обычных прикладных программ. К достоинствам данного ядра можно отнести теоретически большую надежность в сравнении с другими архитектурами (в действительности же — не всё так радужно и гладко) и его модульность (легкость в подключении дополнительных частей ядра). К минусам же микроядерной архитектуры относится то, что ядро, построенное по такой схеме, получается очень медленным (ведь ему нужно постоянно переключаться между отдельными частями).

Монолитное ядро — это полная противоположность микроядра, т.к. в памяти компьютера всегда находится весь (или почти весь) код ядра. Вследствие чего, скорость его работы выше в сравнении с микроядром.

Гибридное ядро — это ядро, сочетающее в себе элементы как монолитной, так и микроядерной архитектур.

Ядро Linux хоть и относится к монолитным ядрам, но оно также заимствует и некоторые идеи из микроядерной архитектуры, что означает, что вся операционная система работает в пространстве ядра, а драйвера устройств (в виде модулей) могут быть легко загружены (или выгружены) прямо во время работы операционной системы.

На следующем рисунке показана архитектура системы Linux:

Рассмотрим детально:

   «Железо» — аппаратное обеспечение компьютера (процессор, видеокарта, оперативная память и т.д.) со всеми его периферийными устройствами.

   Ядро — является основным компонентом операционной системы, взаимодействует непосредственно с аппаратным обеспечением, играя роль посредника между низкоуровневым «железом» и компонентами верхнего уровня.

   Оболочка (или «командный интерпретатор») — интерфейс для взаимодействия между пользователями системы и ядром ОС, абстрагирующий внутреннее устройство системы. Принимает команды от пользователей и запускает на выполнение соответствующие функции.

   Утилиты (vi, cat, sed, date и т.д.) — служебные программы, которые предоставляют пользователю большую часть функциональных возможностей операционной системы.

У ядра есть четыре обязанности:

   Управление устройствами. Система имеет множество подключенных к ней устройств, таких как: процессор, устройство памяти, звуковые карты, графические карты и т.д. Ядро хранит все данные, относящиеся ко всем устройствам, в драйвере устройства (без этого ядро не сможет управлять устройствами). Таким образом, ядро знает, что может сделать каждое устройство и как им манипулировать, чтобы добиться наилучшей производительности. Оно также управляет связью между всеми устройствами. Ядро имеет определенный набор правил, которым должны следовать все устройства.

   Управление памятью. Ядро отслеживает используемую и неиспользуемую память и с помощью механизма виртуальной памяти следит за тем, чтобы процессы не манипулировали данными друг друга.

   Управление процессами. Ядро управляет процессами, выделяя для их работы требуемое количество времени и наделяя их необходимым приоритетом выполнения. Оно также имеет дело с информацией о правах доступа, ограничениях безопасности и владельце каждого процесса.

   Обработка системных вызовов. Обработка системных вызовов означает, что программист может написать запрос к ядру или попросить ядро выполнить задачу.

Системные библиотеки

Системные библиотеки — это специальные программы, которые помогают получить доступ к функциям ядра. Для выполнения какой-либо задачи ядро сначала должно получить системный вызов, и этот вызов исходит от приложений. Но приложения должны знать, как выполнить данный вызов, потому что каждое ядро имеет свой набор системных вызовов. Для этого программистами была разработана стандартная библиотека процедур для взаимодействия с ядром, описывающая набор системных вызовов для каждой конкретной операционной системы.

Самой известной системной библиотекой для Linux является библиотека glibc (GNU C library).

Системные утилиты

В Linux имеется набор утилит, представляющий собой простые команды. Используя эти команды, вы можете, например, получить доступ к своим файлам и каталогам: редактировать и манипулировать данными, хранящимися в них, изменять расположение файлов и пр.

Утилиты разработки ПО

С помощью вышеперечисленных трех компонентов ваша ОС может запускаться и работать. Но для обновления системы и создания для нее новых программ у вас должны быть дополнительные инструменты и библиотеки. Данный набор инструментов называется toolchain. Toolchain — это жизненно-важный набор программ, утилит и инструментов, используемый разработчиками для создания рабочего приложения из исходных кодов.

Пользовательские программы

Подобные программы не относятся к обязательным компонентам операционной системы, и часто их пишут сами пользователи. Они нужны для того, чтобы пользователь мог задать компьютеру какую-то конкретную работу. К таким утилитам относятся: инструменты графического дизайна, офисные пакеты, браузеры, различные плееры и т.д.

Почему именно Linux?

Это один из самых часто задаваемых вопросов о Linux-системах. Почему мы используем другую и сложную операционную систему, если у нас есть более простая, такая как Windows? Система Linux имеет несколько отличительных особенностей. Linux может стать для вас идеальным вариантом в вопросе выбора операционной системы, если вы хотите избавиться от вирусов, вредоносных программ, различным сбоев и многого другого. Кроме того, Linux предоставляет различные преимущества по сравнению с другими операционными системами, и нам не нужно платить за это. Давайте рассмотрим некоторые из этих преимуществ:


Свободная и открытая операционная система

Большинство операционных систем поставляются в скомпилированном виде, что означает, что их основной исходный код был пропущен через компилятор, переводящий код системы на машинный язык, понятный компьютеру. Изменение данного скомпилированного кода — сложная и тяжелая работа. Вдобавок, лицензионное соглашение используемой программы может явно запрещать декомпиляцию и изменение своих файлов.

Но с open-source всё совсем иначе. Исходный код системы (или программы) поставляется вместе с её скомпилированной версией и предоставляет возможность изменять его любому, кто обладает достаточными знаниями. Это дает нам свободу запускать программу, свободу изменять код в соответствии с нашим потребностями, свободу распространять копии кода и свободу распространять копии, которые были подвержены нашим изменениям.

Короче говоря, Linux — это операционная система «от народа, для народа».

И мы можем погрузиться в изучение Linux (устанавливая его на любое количество компьютеров) без каких-либо финансовых затрат.

Безопасность

Linux поддерживает различные параметры безопасности, которые спасут вас от вирусов, вредоносных программ, замедлений, сбоев и пр. Кроме того, он будет защищать ваши данные. Именно это и составляет основную причину того, что он является наиболее выгодным вариантом для разработчиков. Конечно, он не является абсолютно безопасной ОС, но он менее уязвим, чем другие ОС. Действие каждого приложения должно быть авторизовано администратором системы. Вирус не будет запущен до тех пор, пока администратор сам не предоставит пароль доступа.

Выгодный выбор для разработчиков

Linux подходит для разработчиков, так как поддерживает почти все наиболее часто используемые языки программирования: C/C++, Java, Python, Ruby и другие. Кроме того, он облегчает работу с широким спектром полезных приложений для разработки ПО.

Разработчики считают, что терминал в Linux намного лучше командной строки в Windows. Менеджер пакетов в системе Linux поможет выполнить установку и обновление, как целых компонентов программного обеспечения, так и его отдельных частей. Bash-скрипты также будут очень полезны для программистов. Кроме того, поддержка SSH позволит быстро управлять серверами.

Гибкость

Linux — это гибкая ОС, которая может применяться где угодно: в настольных приложениях и серверах, во встроенных системах, в наручных часах, в суперкомпьютерах, в наших телефонах, ноутбуках, автомобилях и пр. Кроме того, Linux поддерживает различные варианты кастомизации.

Дистрибутивы

Многие фирмы и организации модифицировали операционную систему Linux, выпустив свои собственные дистрибутивы. На рынке существуют десятки (а может уже даже и сотни) различных Linux-дистрибутивов, предлагающие пользователям ознакомиться со своими уникальными разработками и преимуществами. На сегодняшний день, среди всех дистрибутивов Linux можно выделить несколько самых популярных, а именно: Ubuntu, Debian, Linux Mint, MX Linux, Arch Linux, Manjaro, Fedora, CentOS.

Ubuntu и Linux Mint являются отличным выбором для начинающих пользователей, а Debian, Fedora и Arch Linux придутся по душе опытным разработчикам.

Заключение


Linux поддерживает целый ряд аппаратных устройств от, как уже было упомянуто, телефонов и до суперкомпьютеров. Каждая операционная система на базе ядра Linux имеет ядро Linux и набор ПО для управления аппаратными ресурсами компьютера.

Кроме того, Linux включает в себя некоторые основные инструменты проекта GNU, позволяющие управлять ресурсами ядра, устанавливать программное обеспечение, настраивать параметры безопасности и производительности и многое другое. Все эти инструменты собраны в специальные пакеты, помогающие сделать операционную систему более функциональной.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (49 оценок, среднее: 4,88 из 5)
Загрузка...

Комментариев: 8

  1. Аватар Антонида:

    Большое спасибо за труд! Приятно, легко, и, что самое главное, интересно читать. Многие непростые темы по с++ стали для меня яснее именно благодаря вашим статьям. Надеюсь, что теперь и с Linux смогу подружиться с таким же удовольствием.

  2. Аватар Виктория:

    Замечательный сайт, превосходные, информативные и, что немаловажно, читабельные статьи!
    Очень дополняют вузовские лекции.
    Находка для меня, уже поделилась с друзьями.

  3. Аватар Ирасхан:

    Отличная статья! Надеюсь увидеть продолжение!

  4. Аватар Spardoks:

    Отличная статья! Надеюсь увидеть продолжение!

    1. Дмитрий Бушуев Дмитрий Бушуев:

      Спасибо большое. Продолжение уже в процессе… 🙂

  5. Аватар Стас:

    Думаю когда говоришь не о ядре, а об операционной системе в целом, стоит писать GNU/Linux. Ведь без ядра Linux проект GNU довольно быстро бы обзавёлся своим ядром, а вот Linux без GNU не факт, что вообще бы увидел свет. Именно поэтому правильно писать GNU/Linux, а не просто Linux, о чём и сам Линус Торвальдс не раз говорил.

    1. Аватар Олег г:

      Согласен. Но статья, видимо, писалась для людей, которые должны понять, как работает и чем отличается (точнее, отличаются) ОС на основе Linux. Но таких статей много. И, видимо, автор попытался лишь ещё раз освежить интерес пользователей к переходу на ПО, свободное от множества проблем.
      Я, как и автор, призываю людей сделать этот выбор. И делаю это такими же словами (почти).

    2. Дмитрий Бушуев Дмитрий Бушуев:

      В следующей статье мы как раз поговорим про историю развития Unix, Linux и проекта GNU, а также про то, почему система называется именно GNU/Linux, а не просто Linux.
      Всему своё время. 🙂

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *