В 1991 году Линус Торвальдс, финский студент, чрезвычайно увлекся идеей написать совместимое с UNIX ядро операционной системы для своего персонального компьютера с процессором ставшей очень широко распространенной архитектуры Intel 80386. Прототипом для будущего ядра стала операционная система MINIX: совместимая с UNIX операционная система для персональных компьютеров, которая загружалась с дискет и умещалась в очень ограниченной в те времена памяти персонального компьютера. Именно полноценное ядро для своего ПК и хотел сделать Линус Торвальдс. Название своему ядру он дал freax, но позже оно было изменено хозяином ftp сервера на Linux – гибрид имени создателя и слова UNIX.
Ключевым решением Линуса стала публикация исходных текстов ещё малоработоспособной первой версии ядра под свободной лицензией GNU GPL. Благодаря этому очень многие получили возможность самостоятельно компилировать и тестировать это ядро, участвовать в обсуждении и исправлении ошибок, а также присылать исправления и дополнения к исходным текстам Линуса. Теперь, когда над ядром работал уже не один человек, разработка пошла быстрее и эффективнее.
В 1992 году версия ядра Linux достигла 0.95, а в 1994 году вышла версия 1.0, что свидетельствовало о том, что разработчики наконец сочли, что ядро в целом закончено и все ошибки исправлены. С каждым годом количество разработчиков росло, также рос размер и возможности ядра.Операционная система GNU/Linux является комплексом программных средств, предоставляющим для пользовательских приложений программный интерфейс с аппаратным обеспечением. Будучи многозадачной и многопользовательской операционной системой, Linux выполняет следующие функции:
1. Взаимодействует с пользователями системы, позволяя им выполнять их задачи посредством пользовательского интерфейса (например, командной строки оболочки).
2. Обеспечивает управление ресурсами компьютера (например, оперативной памятью), обеспечивая одновременное выполнение в компьютерной системе различных пользовательских и системных процессов.
3. Управляет заданиями в системе и предоставляет возможность обмена информацией между процессами.
4. Предоставляет возможности длительного хранения информации с помощью файловой системы.
5. Управляет операциями ввода/вывода.
6. Управляет аппаратным обеспечением.
7. Производит мониторинг состояния системы.
8. Обеспечивает взаимодействие системы c другими вычислительными системами посредством сетевых протоколов.
9. Предоставляет пользователям системы возможность использования системных библиотек для создания программ.
10. Обеспечивает разграничение уровней и прав доступа к данным для различных пользователей системы.
Операционная система Linux, на самом деле состоит из нескольких частей:
1. Ядро.
2. Системные библиотеки.
3. Системные утилиты и команды.
4. Системы программирования и отладки программ.
Командные оболочки.C точки зрения архитектуры, ядро Linux представляет собой монолитное ядро. Все коды ядра и структуры данных, в том числе драйверы устройств, коды распределения ресурсов и виртуальной памяти, сетевой поддержки, а так же файловая система – хранятся в едином адресном пространстве. В Linux все ядро работает в привилегированном режиме – режиме ядра. Никакая часть кода не работает в режиме пользователя. Фрагменты поддержки ОС, не требующие запуска в режиме ядра, помещаются в раздел системных библиотек (рис. 3.3.).
Преимуществом такой структуры является то, что не требуется никаких переключений при запросах процессами системных ресурсов или прерываниях от различных устройств. Общее адресное пространство, однако, не препятствует модульности системы. По мере необходимости Linux подгружает в память либо выгружает из нее указанные модули. Можно сказать, что ядро Linux является модульно-монолитным.
Все модули ядра работают в адресном пространстве ядра и могут пользоваться всеми функциями, предоставляемыми ядром. Они легко позволяют расширить возможности ядра по мере необходимости. Для этого ядро системы предоставляют особый программный интерфейс (API) для связывания модулей с ядром, для обеспечения динамической подгрузки и выгрузки модулей.