- •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()
Загрузочные параметры ядра
Рассмотрим основные параметры, которые модно задать ядру на начальной стадии загрузки. Большинство из них необходимы для сообщения ядру характеристики устройств, которые оно не может или не должно определить само.
Если ядро загружается средствами BIOS (например, с дискеты), то передать ему параметры невозможно: нужно использовать какой-либо загрузчик Linux.
Синтаксис строки параметров следующий:
имя [=значение1] [, значение2...] [имя2 [=значение2.1] [, значение2.2...] ]
Значения разделяются запятой без пробелов, а параметры — пробелами.
Пример строки параметров:
root=/dev/hdal ether=9,0x300,OxdOOOO,0xd4000,ethO
Параметры корневой файловой системы
Этот параметр сообщает ядру какое устройство будет использовано в качестве корневой ФС во время загрузки. По умолчанию, эта установка имеет значение корневого устройства системы, на котором было построено ядро. Например, если рассматриваемое ядро было построено в системе, в которой корневым разделом был `/dev/hda1', то по-умолчанию корневым устройством будет `/dev/hda1'. Чтобы изменить значение по-умолчанию и выбрать в качестве корневого устройства флоппи-диск, нужно использовать `root=/dev/fd1'.
Допустимыми корневыми устройствами могут быть следующие:
/dev/hdaN до /dev/hddN, которые являются разделами N на ST-506 совместимом диске `от a до d'.
/dev/sdaN до /dev/sdeN, которые являются разделами N на SCSI совместимом диске `от a до e'.
/dev/xdaN до /dev/xdbN, которые являются разделами N на XT совместимом диске `от a до b'.
/dev/fdN, т.е. привод флоппи-диска с номером N. Номер N=0 соответствует устройству DOS `A:', а N=1 -- `B:'.
/dev/nfs, не являющееся реальным устройством, а флагом, заставляющим ядро получить корневую ФС по сети.
Также допускается более неуклюжая и менее совместимая числовая спецификация вышеперечисленных возможных дисковых устройств в формате major/minor (т.е. /dev/sda3 -- старший (major) 8, младший (minor) 3, таким образом, вы можете использовать в качестве альтернативы root=0x803).
Это один из немногих параметров загрузки ядра, которые хранят значение по-умолчанию в образе ядра и которые, таким образом, могут быть изменены утилитой rdev.
rо: требует монтировать корневую файловую систему в режиме только чтение. Используется по умолчанию;
rw: задает монтирование корневой файловой системы в режиме чтение/запись. При использовании этого параметра нельзя запускать программы типа fsck. Перед запуском программы fsck нужно перемонтировать корневую файловую систему в режиме rо.
Параметры загрузки управления памяти
Следующие параметры определяют действия Linux по обнаружению или управлению физической и виртуальной памятью вашей системы.
Параметр `mem='
У этого параметра два назначения: изначально он использовался для указания объема установленной памяти (или меньшего значения, если вы хотите ограничить объем памяти, доступный Linux). Второе (и более используемое) назначение -- указать mem=nopentium, сообщающий ядру Linux не использовать функцию эффективности таблицы 4МБ страниц (4MB page table performance feature).
Подпрограмма BIOS, описанная в спецификации PC и возвращающая количество установленной памяти, была разработана для максимум 64 МБ. (Да, еще одно неточное предположение, как и с 1024 цилиндрами дисков... ох!) При загрузке для определения количества установленной памяти Linux использует эту подпрограмму . Если у вас установлено более 64 МБ памяти, вы можете использовать этот параметр загрузки, чтобы сообщить Linux о количестве имеющейся памяти. Ниже приведено высказывание Линуса об использовании параметра mem=.
«Ядро примет любое значение параметра `mem=xx', которое вы укажите, но если обнаружится, что вы солгали, то рано или поздно это приведет к ужасному краху. Параметр определяет самый верхний адрес ОЗУ, т.е., например, `mem=0x1000000' означает, что вы используете 16 МБ памяти. Для машины с 96 МБ это будет `mem=0x6000000'. Если вы сообщите Linux, что памяти имеется больше, чем установлено в действительности, случится неприятность: возможно не сразу, но, в конечном счете, обязательно».
Следует учесть, что аргумент не обязательно должен быть шестнадцатиричным, а для обозначения килобайтов и Мегабайтов можно использовать соответственно суффиксы `k' и `M' (регистр влияет). (`k' вызовет сдвиг вашего значения на 10 бит, а `M' - на 20 бит.) Типичным примером для машины с 128 МБ может быть "mem=128m".
Пример:
Иногда нужно указать объем ОЗУ, отличный от того, который имеется на самом деле. Например, у вас чипсет Intel 810 с интегрированной видеоплатой, тогда нужно указать объем ОЗУ на 1 Мб меньше (а иногда даже на 2 Мб). Это связано с аппаратной особенностью чипсета.
Объем установленной памяти можно указать с помощью параметра mem:
mem= <число>
Число определяет объем памяти, установленной в компьютере, например, mem=16384K или mem=16M.
Параметр `swap='
Он позволяет пользователю настраивать некоторые параметры виртальной памяти (VM), относящейся к своппингу на диск. Он может иметь следующие восемь значений:
MAX_PAGE_AGE
PAGE_ADVANCE
PAGE_DECLINE
PAGE_INITIAL_AGE
AGE_CLUSTER_FRACT
AGE_CLUSTER_MIN
PAGEOUT_WEIGHT
BUFFEROUT_WEIGHT
Параметр `buff='
Параметр, похожий на `swap=', позволяет пользователю настроить некоторые параметры, связанные с управлением буферной памятью. Он может имесь следующие шесть значений:
MAX_BUFF_AGE
BUFF_ADVANCE
BUFF_DECLINE
BUFF_INITIAL_AGE
BUFFEROUT_WEIGHT
BUFFERMEM_GRACE