- •Fedora Core 5 (Bordeaux)
- •2007 Оглавление
- •Многообразие ядер Linux
- •Чуть ближе к истории
- •Хронология
- •Нумерация версий
- •Поддержка
- •Стабильные версии
- •Загрузочные параметры ядра
- •Параметры корневой файловой системы
- •Параметры загрузки управления памяти
- •Параметры управления ram-диском
- •Другие параметры ядра
- •Процессы Немного об архитектуре процессов
- •Общие сведения о процессах
- •Системные вызовы fork() и ехес()
- •Нити Что такое нить?
- •Создание нити и идеология posix api
- •Завершение нити, особенности главной нити
- •Жизненный цикл нити
- •Синхронизация с использованиеmutex Что такое mutex?
- •Использование mutex
- •Проблема тупиков
- •Решение проблемы тупиков
- •Общая схема управления процессами
- •Команды управления процессами Команда ps
- •Команда top
- •Изменение приоритета процесса - команда nice
- •Взаимодействие процессов(ipc)
- •Семафоры
- •Файловая система Видимая сторона файловой системы
- •Имена файлов и каталогов
- •Каталоги
- •Стандартные каталоги
- •Типы файлов
- •Файлы физических устройств
- •Наиболее часто используемые стандартные имена устройств
- •Жесткие и символические ссылки
- •Именованные каналы
- •Права доступа к файлам и каталогам
- •Команды работы с файлами и каталогами
- •Команды chown и chgrp
- •Команда cat
- •Команда cp
- •Команда mv
- •Команды rm и rmdir
- •Команды more и less
- •Команда find и символы шаблонов для имен файлов
- •Команда split — разбиваем файл на несколько частей
- •Сравнение файлов и команда patch
- •Изнанка файловой системы
- •Типы файловых систем, поддерживаемых в Linux
- •Файловая система ext2fs – предшественница ext3fs
- •ReiserFs
- •Файловая система ext3 Введение в файловую систему ext3.
- •Журналируемая файловая система
- •Файловая система ext3
- •Различные журналируемые режимы в файловой системе ext3
- •Управление памятью
- •Аппаратно-независимый уровень управления памятью
- •Страничное замещение основной памяти и swapping
- •Свопинг
- •Управление пространством на устройстве выгрузки
- •Выгрузка процессов
- •Выгрузка при выполнении системной функции fork
- •Выгрузка с расширением
- •Загрузка (подкачка) процессов
- •Подкачка по запросу
- •Структуры данных, используемые подсистемой замещения страниц
- •Функция fork в системе с замещением страниц
- •Сборщик" страниц
- •Управление вводом/выводом
- •Взаимодействие драйверов с программной и аппаратной средой
- •Конфигурация системы
- •Программы обработки прерываний
- •Дисковые драйверы
- •Список используемой литературы
- •Приложение Низкоуровневый ввод/вывод Обзор механизмов ввода/вывод вLinux
- •Файловые дескрипторы
- •Открытие файла: системный вызовopen()
- •Закрытие файла: системный вызов close()
- •Чтение файла: системный вызов read()
- •Запись в файл: системный вызов write()
- •Произвольный доступ: системный вызов lseek()
Многообразие ядер Linux
Ядро Linux - это центральная часть большой и сложной операционной системы. При этом, несмотря на колоссальные размеры, оно имеет четкую структурную организацию в виде подсистем и уровней. В работе мы расскажем об общей структуре ядер Linux и ознакомим вас с его основными подсистемами и базовыми интерфейсами. Поскольку цель данной части - познакомиться с ядром Linux и дать обзор его архитектуры и основных компонентов, начнем с краткого обзора истории ядра Linux, затем рассмотрим архитектуру ядра Linux "с высоты птичьего полета", и, наконец, обсудим его основные подсистемы. Ядро Linux насчитывает свыше шести миллионов строк, поэтому данное введение не может быть исчерпывающим.
Хотя Linux, по всей видимости, является самой популярной операционной системой с открытым исходным кодом, на самом деле ее история в сравнении с другими операционными системами относительно коротка. На заре компьютерной эры программисты разрабатывали свои программы для "голой" аппаратуры, используя языки, понятные для этой аппаратуры. В отсутствие операционной системы использовать всю большую и дорогую вычислительную машину в каждый конкретный момент времени могло только одно приложение (и один пользователь). Первые операционные системы были разработаны в 1950-е годы, чтобы облегчить жизнь разработчиков. В качестве примера можно назвать General Motors Operating System (GMOS), разработанную для IBM 701, и FORTRAN Monitor System (FMS), созданную North American Aviation для IBM 709.
В 1960-е годы в Массачусетском Технологическом институте (MIT) и в ряде компаний была разработана экспериментальная операционная система Multics (Multiplexed Information and Computing Service) для машины GE-645. Один из разработчиков этой ОС, компания AT&T, отошла от Multics и в 1970 году разработала свою собственную систему Unics. Вместе с этой ОС поставлялся язык C. При этом C был разработан и написан так, чтобы обеспечить переносимость разработки операционной системы.
Двадцать лет спустя Эндрю Танненбаум (Andrew Tanenbaum) создал микроядерную версию UNIX® под названием MINIX (minimal UNIX), которая могла работать на небольших персональных компьютерах. Эта операционная система с открытым исходным кодом вдохновила Линуса Торвальдса (Linus Torvalds) на разработку первой версии Linux в начале 1990-х (см. рисунок 1 - Краткая история основных выпусков ядра Linux).
Рисунок 1
Linux быстро превратился из инициативы энтузиаста-одиночки во всемирный проект, в котором участвуют тысячи разработчиков. Одним из важнейших решений в судьбе Linux стало принятие лицензии GNU General Public License (GPL). GPL защитила ядро Linux от коммерческой эксплуатации и одновременно открыла путь к использованию разработок сообщества пользователей проекта GNU, основанного Ричардом Столлменом (Richard Stallman), объемы кода которого значительно превосходят даже объем ядра Linux. Это позволило использовать в Linux такие полезные приложения, как комплекс компиляторов GNU Compiler Collection (GCC) и различные командные оболочки.