Главная » Ядро Linux

Множество большого-тета

Добавлено Дата: 3 April, 2012 категория: Ядро Linux

Когда  говорят об  обозначении большого-О,  то  чаще  всего  имеют  в виду  то, что Дональд Кнут   (Donald  Knulh)  описывал с  помощью обозначения  "большого-тета". Обозначение "болыпого-О" соответствует верхней границе. Например,  число  7 — это верхняя граница числа  6, кроме  того, числа  9, 12 и  65— это  тоже  верхние границы числа  6. Когда  рассматривают рост  функции, то обычно наиболее интересна наименьшая верхняя  граница или  функция,  которая моделирует как  верхнюю, так  и  нижнюю границу’.  Профессо р  Кнут  описывает это  с  помощью обозначения  большого-тета следующим образом.

Читать »

Виртуальная файловая система

Добавлено Дата: 2 April, 2012 категория: Ядро Linux

Жесткий диск

с файловой системой ext3

VFS                                     CP(1)

Гибкий диск

с файловой системой ext2

Рис.  12.1.  Подсистема VFS  в действии: использование команды ср (1)   для  копирования данных  с жeсткого диска,  на  котором монтируется файловая система, ext3, на гибкий диск, на котором монтируетсяфайловаясистемаext2

Читать »

Средства запрещения преемптивности

Добавлено Дата: 2 April, 2012 категория: Ядро Linux

Так как ядро является  вытесняемым,  процесс,  работающий в режиме ядра, может прекратить  выполнение  в любой момент,  чтобы позволить выполняться  более высокоприоритетному процессу.  Это означает,  что новое задание может начать выполняться  в том же критическом  участке, в котором выполнялось  вытесненное  задание. Для того чтобы предотвратить такую возможность,  код, который отвечает за преемптивность  ядра, использует спин-блокировки в качестве маркеров,  чтобы отмечать участки "непреемптивности".  Если спин-блокировка захвачена, то ядро является невытесняемым.  Так как проблемы,  связанные  с параллелизмом, в случае SMP и преемптивного  ядра одинаковы,  то, если ядро уже является безопасным для SMPобработки,  такое простое дополнение  позволяет также сделать ядро безопасным  и при вытеснении.

Читать »

Буферы и заголовки буферов

Добавлено Дата: 2 April, 2012 категория: Ядро Linux

Когда  блок  хранится в памяти (скажем, после  считывания или  в ожидании записи), то  он  хранится в  структуре  данных, называемой  буфером   (buffer).    Каждый буфер связан строго  с  одним   блоком.  Буфер   играет  роль  объекта,  который  представляет блок  в оперативной памяти. Вспомним,  что  блок  состоит  из  одного  или  больше  секторов, но  по  размеру  не  может  быть  больше  одной  страницы памяти.  Поэтому одна страница  памяти  может  содержать  один   или  больше   блоков.   Поскольку для  ядра требуется  некоторая управляющая информация,  связанная  с  данными  (например, какому   блочному устройству   и  какому   блоку  соответствует буфер),  то  каждый   буфер связан со  своим  дескриптором.  Этот  дескриптор называется заголовком,  буфера  (buffer head)  и  представляется  с  помощью  структуры   struc t   buffer_head .

Читать »

Генерация заплат

Добавлено Дата: 2 April, 2012 категория: Ядро Linux

Все изменения исходного кода ядра Linux распространяются в виде заплат (patch). Заплаты представляют собой результат вывода утилиты GNU  diff(1 )  в формате, который может подаваться на вход программы patc h (1) . Наиболее просто сгенерировать заплату можно в случае, когда имеется два дерева исходных кодов ядра: одно — стандартное, а другое — с вашими изменениями. Обычная схема имен состоит в том, что каталог, в котором находится стандартное ядро, называется 1inux-x.у. z (каталог, в который разворачивается архив дерева исходного кода в формате tar), a

Читать »

Уровень блочного ввода-вывода

Добавлено Дата: 2 April, 2012 категория: Ядро Linux

стройства  блочного  ввода-вывода  (блочные  устройства,  устройства ввода-вывода  блоками, block  devices)  — это  аппаратные устройства, которые позволяют случайным  образом  (т.е.  не  обязательно  последовательно)  осуществлять доступ  к фрагментам данных фиксированного  размера, называемых блоками. Наиболее часто встречающееся устройство блочного впода-вывода — это  жесткий диск,  но  существуют  и другие  блочные устройства,  например  устройства работы   с  гибкими дисками, оптическими компакт-дисками (CD-ROM)  и флеш-памятью. Следует  обратить внимание, что файловые системы монтируются с таких  устройств. Именно таким  образом

Читать »

Механизм отложенных прерываний (softirq) – ЧАСТЬ 2

Добавлено Дата: 1 April, 2012 категория: Ядро Linux

Главная причина использования  отложенных прерываний — масштабируемость. Если  нет  необходимости  масштабироваться  на  бесконечное количество процессоров, то лучше  использовать механизм тасклетов. Тасклеты — это  отложенные прерывания, для  которых обработчик не  может  выполняться  параллельно на  нескольких процессорах.

Читать »

Реализация  потоков в ядре  Linux

Добавлено Дата: 1 April, 2012 категория: Ядро Linux

Многопоточность — это  популярная сегодня  программная абстракция. Она  обеспечивает выполнение нескольких потоков в совместно используемом адресном пространстве памяти.  Потоки  также  могут  совместно использовать открытые файлы и другие  ресурсы. Многопоточность используется для  параллельного программирования (concurrent programming),  что  на  многопроцессорных  системах  обеспечивает истинный параллелизм.

Читать »

Задержка выполнения

Добавлено Дата: 1 April, 2012 категория: Ядро Linux

Часто  коду  ядра  (особенно драйверам) необходимо задерживать выполнение действий  на  некоторый период   времени без  использования  таймеров или  механизма нижних половин.  Это  обычно необходимо для  того,  чтобы  дать  аппаратному обеспечению время  на  завершение выполнения задачи.   Такой интервал времени обычно достаточно короткий. Например,  в спецификации сетевой  интерфейсной платы может  быть  указано время  изменения режима работы  Ethernel-контроллера,  равное

Читать »

Заплаты, разработка и сообщество

Добавлено Дата: 1 April, 2012 категория: Ядро Linux

дно  из  самых   больших  преимуществ  операционно й  системы  Linux  — это связанно е  с  не й  большо е  сообществ о  пользователе й  и  разработчиков . Сообщество  предоставляет множество  глаз  для  проверки кода  и  множество пользователей  для  тестирования и отправки сообщений об ошибках. Наконец,  сообщество решает, какой код  включать в основное ядро.  Поэтому важно  понимать, как  это  все

Читать »

Страничный кэш и обратная запись страниц

Добавлено Дата: 31 March, 2012 категория: Ядро Linux

ядре  операционной системы Linux  реализован один  главный дисковый кэш, который называется страничным (page cache).  Назначение этого кэша— минимизировать количество дисковых операций ввода-вывода путем  хранения в памяти тех данных, для  обращения к которым необходимо выполнять дисковые операции,

Читать »

Типы ktyp e

Добавлено Дата: 31 March, 2012 категория: Ядро Linux

Объекты kobjec t могут быть связаны с определенным типом, который называется ktype. Типы  ktype представляются с помощью структуры struc t  kobj_type, определенной в файле <linux/kobject.h > следующим образом.

struct kobj_type {

void (*release)(struct kobject *) ; struct sysfs_ops       *sysfs_ops; struct attribute       **default_attrs;

Читать »

Версии ядра Linux

Добавлено Дата: 31 March, 2012 категория: Ядро Linux

Ядро  Linux  поставляется  в двух  вариантах-:  стабильном  (stable)   и  разрабатываемом  (development).  Версии стабильного ядра  это  выпуски продукции промышленного уровня,  которая готова  для  широкого использования.  Новые стабильные версии ядра  обычно выпускаются для  исправления ошибок и  для  предоставления новых  драйверов устройств. Разрабатываемые версии ядра,  наоборот,  подвержены быстрым изменениям.  По  мере  того  как  разработчики экспериментируют с новыми решениями, часто  вносятся радикальные изменения в ядро.

Читать »

Блокировки в вашем коде

Добавлено Дата: 31 March, 2012 категория: Ядро Linux

Обеспечение  безопасности кода при SMP-обработке — это не то,  что можно  откладывать  на потом.  Правильная синхронизация, блокировки без тупиковых  ситуаций,  масштабируемость  и ясность   кода  все это  следует учитывать  при  разработке с самого  начала и до самого  конца.  При  написании кода ядра,  будь то новый  системный  вызов или  переписывание драйвера устройства,  необходимо,  прежде всего,  позаботиться  об обеспечении  защиты  данных  от конкурентного доступа.

Читать »

Планировщики  ввода-вывода

Добавлено Дата: 29 March, 2012 категория: Ядро Linux

Простая  отправка запросов на устройство ввода-вывода в том же порядке,  в котором эти запросы направляет  ядро, приводит к очень плохой производительности. Одна из наиболее медленных операций,  которые вообще могут быть в компьютере,— это поиск по жесткому диску. Операция  поиска — это позиционирование головки жесткого диска на определенный  блок,  которое  может запять много миллисекунд. Минимизация количества операций  поиска чрезвычайно  критична для производительности всей системы.

Читать »