Linux
История
В 1990-1991 году Линус Торвальдс, вдохновленный книгой Танненбаума об операционной системе MINIX (unix-подобная ОС), начинает разработку ядра (Kernel) новой многопоточной операционной системы, первое сообщение об этом датируется апрелем 1991. Версия 1.0.0 вышла в 1994 (спустя три года), однако первые доступные релизы Linux, собранные на базе промежуточных версий, появились уже в 1992 году. С подробной хронологией можно ознакомиться на Википедии.
Unix (и, как следствие, Linux) имеет следующие характерные особенности:
- использование простых текстовых файлов для настройки и управления системой;
- широкое применение утилит, запускаемых из командной строки;
- взаимодействие с пользователем посредством виртуального устройства — терминала;
- представление физических и виртуальных устройств и некоторых средств межпроцессного взаимодействия в виде файлов;
- использование конвейеров из нескольких программ, каждая из которых выполняет одну задачу;
- соответствует стандартам POSIX (см. ниже);
- распространяется по лицензии GNU GPL.
GNU General Public License (переводят как Универсальная общественная лицензия GNU, Универсальная общедоступная лицензия GNU или Открытое лицензионное соглашение GNU) — лицензия на свободное программное обеспечение, созданная в рамках проекта GNU в 1988 г., по которой автор передаёт программное обеспечение в общественную собственность.
POSIX
POSIX (англ. Portable Operating System Interface — переносимый интерфейс операционных систем) — набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API), библиотеку языка C и набор приложений и их интерфейсов. Стандарт создан для обеспечения совместимости различных UNIX-подобных операционных систем и переносимости прикладных программ на уровне исходного кода, но может быть использован и для не-Unix систем.
Задачи набора стандартов:
- Содействовать облегчению переноса кода прикладных программ на иные платформы.
- Способствовать определению и унификации интерфейсов заранее при проектировании, а не в процессе их реализации.
- Сохранять по возможности и учитывать все главные, созданные ранее и используемые прикладные программы.
- Определять необходимый минимум интерфейсов прикладных программ для ускорения создания, одобрения и утверждения документов.
- Развивать стандарты в направлении обеспечения коммуникационных сетей, распределённой обработки данных и защиты информации.
- Рекомендовать ограничение использования бинарного (объектного) кода для приложений в простых системах.
Состав стандартов:
- Основные определения (англ. Base definitions) — список основных определений и соглашений, используемых в спецификациях, и список заголовочных файлов языка Си, которые должны быть предоставлены соответствующей стандарту системой.
- Оболочка и утилиты (англ. Shell and utilities) — описание утилит и командной оболочки sh, стандарты регулярных выражений.
- Системные интерфейсы (англ. System interfaces) — список системных вызовов языка Си.
- Обоснование (англ. Rationale) — объяснение принципов, используемых в стандарте.
Kernel
Ядро Linux - программный код, обеспечивающий взаимодействие между устройствами, программами и пользователем. Сам по себе не является операционной системой, выполняет следующие функции:
- Управление процессами
- Управление сетевым взаимодействием
- Управление файловыми системами
- Предоставление приложениям аппаратных ресурсов и управление их взаимодействием (процессорное время, память, устройства ввода-вывода и пр).
Символом Kernel (и, следовательно, всех основанных на нем операционных систем) был выбран пингвин Tux.