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

Стратегия планирования

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

Стратегия (policy)  планирования— это  характеристики поведения  планировщика, которые определяют, что  и  когда  должно  выполняться. определяет глобальный характер   поведения системы и  отвечает  за  оптимальное  использование процессорного времени. Таким образом, это  понятие очень  важное.

Читать »

Обработка системных вызовов

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

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

Читать »

В заключение  о системных вызовах

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

В этой  главе было  рассмотрено,   что такое  системные  вызовы  и  как  они  соотносятся  с  вызовами  библиотечных  функций  и  интерфейсом   прикладных  программ (API).   После  этого  было  описано, как  системные вызовы  реализованы в ядре  Linux, а также была представлена  последовательность  событий  для выполнения   системного вызова:  программное  прерывание  ядра, передача  номера  системного  вызова  и  аргументов  системного  вызова,  выполнение  соответствующей  функции  системного  вызова  и  возврат   результатов работы   в пространстно пользователя.

Читать »

Таблицы страниц

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

Хотя пользовательские программы и  работают с  виртуальной памятью, которая отображается на физические адреса, процессоры работают непосредственно с этими  физическими адресами. Следовательно, когда приложение обращается к адресу виртуальной памяти,  этот адрес должен быть конвертирован  в  физический адрес, чтобы процессор смог выполнить запрос. Соответствующий поиск выполняется с помощью таблиц страниц. работают путем разбиения виртуального  адреса на части. Каждая часть используется в качестве индекса (номера) записи в таблице. Таблица содержит или указатель на другую таблицу, или указатель на соответствующую страницу физической  памяти.

Читать »

Обработка нижних половин и отложенные действия

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

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

Читать »

Страничный кэш

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

Как следует из названия, страничный кэш (page cache) — это кэш страниц; памяти. Соответствующие страницы памяти  получаются в результате  чтения  и записи  обычных файлов  на файловых системах,  специальных файлов  блочных  устройств  и файлов,  отображаемых в память.  Таким  образом, в страничном кэше  содержатся страницы  памяти, полностью заполненные данными из файлов, к которым  только  что производился доступ.  Перед  выполнением операции страничного ввода-вывода, как, например, read() 1 , ядро  проверяет, есть ли те данные, которые  нужно  считать,  в страничном кэше.  Если  данные  находятся  в кэше,  то ядро может  быстро  возвратить требуемую  страницу  памяти.

Читать »

Отправка сообщений об ошибках

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

Если вы  обнаружили ошибку, то  наилучшим решением будет  исправить ее, сгенерировать соответствующую заплату,  оттестировать и  отправить, как  это  будет  рассказано в следующих разделах. Конечно,  можно и  просто сообщить об  ошибке,  чтобы кто-нибудь исправил ее  для  вас.

Читать »

Сравнение спин-блокировок и семафоров

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

Понимание  того, когда использовать спин-блокировки, а когда семафоры является важным для написания  оптимального  кода. Однако во многих случаях выбирать очень просто. В контексте  прерывания  могут использоваться  только спин-блокировки,  и только семафор  может удерживаться процессом,  который находится в состоянии  ожидания.  В табл. 9.6 показан  обзор требований того, какой тип блокировок использовать.

Читать »

Какой способ выделения памяти необходимо использовать

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

Если необходимы смежные страницы физической памяти, то нужно  использовать один  из низкоуровневых интерфейсов выделения памяти, или функцию kmalloc() . Это стандартный способ  выделения памяти в ядре, и, скорее  всего, в большинстве случаев  следует  использовать именно его.  Необходимо вспомнить,  что два наиболее  часто  встречающихся флага, которые передаются этой  функции, это  флаги GFP_ATOMIC и GFP_KERNEL. Для высокоприоритетных операций выделения памяти, которые не переводят процесс в состояние ожидания, необходимо указывать  флаг GFP_ATOMIC. Это обязательно для обработчиков прерываний и других случаев, когда нельзя  переходить в состояние ожидания. В коде, который может  переходить в состояние ожидания, как, например код, выполняющийся в контексте процесса и не удерживающий спин-блокировку,  необходимо использовать флаг GFP_KERNEL. Такой флаг указывает, что должна  выполняться операция выделения памяти, которая при необходимости может  перейти в состояние ожидания для  получения необходимой памяти.

Читать »

Файловая система sysfs

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

 — это виртуальная файловая система, которая существует  только в  оперативной памяти и позволяет просматривать иерархию объектов kobject . Она позволяет пользопателям просматривать топологию устройств операционной системы в  виде простой файловой системы. Атрибуты объектов kobjec t могут экспортироваться  в  виде файлов, которые позволяют считывать значения переменных ядра, а также опционально записывать их.

Читать »

Информация  о времени  в ядре

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

Концепция времени для компьютера является несколько неопределенной. В действительности, для  того  чтобы  получать  информацию о времени и управлять  системным временем, ядро должно  взаимодействовать с системным аппаратным обеспечением. Аппаратное обеспечение предоставляет системный таймер, который используется ядром  для измерения времени. Системный таймер  работает  от электронного эталона времени, такого  как  цифровые электронные часы  или  тактовый генератор процессора. Интервал времени системного таймера  периодически истекает (еще говорят таймер срабатывает— hitting, popping) с определенной запрограммированнойчастотой.Этачастотаназываетсячастотойимпульсовтаймлра,(tickrate). Когда  срабатывает системный таймер, он генерирует прерывание, которое  ядро  обрабатывает с помощью специального обработчика прерывания.

Читать »