Обзор архитектуры и возможностей системы Linux: архитектура, ядро, распространение и лицензирование, принципы проектирования, управление процессами
Презентацию к данной лекции Вы можете скачать здесь.
Введение
Данная и следующая лекции посвящены обзору возможностей одного из самых популярных семейств операционных систем – Linux. В настоящей лекции и "Обзор архитектуры и возможностей системы Linux: управление памятью, ресурсами, файловые системы, драйверы устройств, сети, безопасность" рассмотрены следующие вопросы:
- История Linux
- Принципы проектирования Linux
- Модули ядра Linux
- Управление процессами в Linux
- Планирование в Linux
- Управление памятью в Linux
- Файловые системы в Linux
- Ввод и вывод в Linux
- Взаимодействие процессов в Linux
- Структура сети в Linux
- Безопасность в Linux.
История Linux
Linux – современная, свободно распространяемая ОС, основанная на стандартах и традициях UNIX.
История Linux берет свое начало с 1983 г., когда Ричард Столмен (Richard Stallman) начал проект GNU, а в 1985 г. основал некоммерческую организацию Free Software Foundation. Основная цель – разработка UNIX-подобной системы, которая состояла бы только из свободно распространяемого программного обеспечения.
Впервые Linux разработана как небольшое, но самодостаточное ядро ОС в 1991 Линусом Торвальдсом (Linus Torvalds), с основной целью добиться совместимости с UNIX.
История Linux – это история многолетнего (удаленного) взаимодействия пользователей всего мира, которое осуществляется почти исключительно через Интернет.
Система была cпроектирована с целью эффективного и надежного использования на распространенных персональных компьютерах, но она также используется и на многих других аппаратных платформах.
Основная часть ОС Linux полностью оригинальна, но на ней может также исполняться значительная часть свободно распространяемого программного обеспечения для UNIX, и в результате в распоряжении пользователей имеется оригинальная, свободно распространяемая, совместимая с UNIX система, в которой нет корпоративного конфиденциального кода.
Ядро Linux
Версия 0.01 (май 1991) не содержала сетевых средств, выполнялась только на 80386-совместимых Intel – процессорах, имела очень ограниченный набор драйверов устройств и поддерживала только файловую систему MINIX (MINIX – операционная система типа UNIX, разработанная Andrew Tannenbaum).
Версия Linux 1.0 (март 1994) включала следующие новые возможности:
- Поддержку стандартных для UNIX сетевых протоколов TCP/IP
- BSD-совместимый интерфейс сокетов для сетевого программирования
- Поддержку драйверов устройств для использования IP в сетях типа Ethernet
- Расширенную файловую систему
- Поддержку большого диапазона SCSI – контроллеров для высокопроизводительного доступа к дискам.
Версия Linux 1.2 (март 1995) была последней версией ядра Linux только для персональных компьютеров.
Версия Linux 2.0 выпущена в июне 1996, со следующими новыми возможностями:
- Поддержкой нескольких аппаратных архитектур, включая полный 64-разрядный перенос на рабочие станции Digital Alpha (первые 64-разрядные рабочие станции в мире)
- Поддержкой многопроцессорной архитектуры
- Улучшенным кодом для управления памятью
- Улучшенной производительностью TCP/IP
- Поддержкой внутренних потоков (threads) ядра ОС, используемых для обработки зависимостей между загрузочными модулями и для автоматической загрузки модулей по требованию.
- Стандартизованным конфигурационным интерфейсом.
Версия Linux 2.0 была доступна на процессорах Motorola 68000, Sun SPARC, PC (x86) и PowerMac.
Современное состояние Linux, дистрибутивы и лицензирование
ОС Linux использует многие инструменты, разработанные как части Berkeley BSD UNIX, системы X Window разработки MIT, а также проекта GNU некоммерческой ассоциации Free Software Foundation (FSF).
Минимальный набор системных библиотек был разработан как часть проекта GNU, с улучшениями, разработанными сообществом Linux.
Средства сетевого администрирования Linux были разработаны на основе версии 4.3 Berkeley Software Distribution (BSD) UNIX. Недавние производные от BSD (например, UNIX FreeBSD), в свою очередь, заимствовали код из Linux.
Система Linux поддерживается слабо связанной сетью разработчиков, взаимодействующих через Internet. Небольшое число публично доступных ftp-серверов используется как хранилища информации о де-факто стандартах.
Стандартный предварительно откомпилированный набор пакетов, или дистрибутивов, включает базовую систему Linux, утилиты для инсталляции системы и управления системой, а также готовые к инсталляции пакеты инструментов для UNIX.
Ранние дистрибутивы включали диалекты SLS и Slackware. Red Hat и Debian – популярные дистрибутивы, соответственно, основанные на коммерческих и некоммерческих исходных кодах.
Единый формат файла пакета - RPM обеспечивает совместимость между различными дистрибутивами Linux.
Что касается инсталляции Linux, то, по личному опыту автора, при частичных инсталляциях Linux в различных конфигурациях (например, workstation) и последующих "доинсталляциях" до полной версии возможны проблемы: инсталлятор "путает" фактический состав инсталлируемых пакетов (Linux Red Hat, 2003), по крайней мере, дополнить Linux до полной версии путем итеративных инсталляций не удается, и рекомендуется сразу же инсталлировать полную версию, т.е. явным образом изменить умолчания инсталлятора.
Ядро Linux распространяется на условиях GNU General Public License (GPL),которые установлены организацией Free Software Foundation.
Программист, использующий Linux, либо создающий свои собственные системы на базе Linux, не имеет права превращать свой продукт в коммерческий (ведомственный); программное обеспечение, распространяемое на основе GPL, не может распространяться только в виде двоичного кода (т.е. в поставку Linux должен быть включен исходный код). Это было одной из принципиальных целей проекта.
Linux в основном используется как серверная операционная система, ввиду ее высокой надежности. Что касается использования Linux как клиентской ОС, то доля ее использования очень мала, как показывает приведенная на рис. 25.1 диаграмма использования различных ОС как Web-клиентов.
увеличить изображение
Рис. 25.1. Использование различных операционных систем как Web-клиентов, март 2010.