"Зверек другого рода"

"Зверек другого рода"

Ядро имеет некоторые отличия в сравнении с обычными пользовательскими приложениями, эти отличия хотя и не обязательно приводят к серьезным усложнениям при программировании, но все же создают специфические проблемы при разработке ядра.

Эти отличия делают ядро зверьком другого рода. Некоторые из старых правил при этом остаются в силе, а некоторые правила являются полностью новыми. Хотя часть различий очевидна (все знают, что ядро может делать все, что пожелает), другие различия не так очевидны. Наиболее важные отличия описаны ниже.

• Ядро не имеет доступа к библиотеке функций языка С.

• Ядро программируется с использованием компилятора GNU С.

• В ядре нет такой защиты памяти, как в режиме пользователя.

• В ядре нельзя легко использовать вычисления с плавающей точкой.

• Ядро использует стек небольшого фиксированного размера.

• Поскольку в ядре используются асинхронные прерывания, ядро является преемптивным и в ядре имеется поддержка SMP, то в ядре необходимо учитывать наличие параллелизма и использовать синхронизацию.

• Переносимость очень важна.

Давайте рассмотрим более детально все эти проблемы, так как все разработчики ядра должны постоянно помнить о них.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

(6.11) На сервере имеется две сетевые карты, каждая из них смотрит в свой сегмент локальной сети. Роутинг включен. Компьютеры из одного сегмента не видят компьютеры из другого сегмента, хотя всё пингуется.

Из книги Win2K FAQ (v. 6.0) автора Шашков Алексей

(6.11) На сервере имеется две сетевые карты, каждая из них смотрит в свой сегмент локальной сети. Роутинг включен. Компьютеры из одного сегмента не видят компьютеры из другого сегмента, хотя всё пингуется. Для того что бы компьютеры из разных сегментов видели друг друга в


(8.5) Постоянно зависает Adobe Photoshop 5.5 при вставлении из клипборда или импорте клипборда при переключении из другого софта.

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

(8.5) Постоянно зависает Adobe Photoshop 5.5 при вставлении из клипборда или импорте клипборда при переключении из другого софта. Эта проблема встречается на ограниченном количестве материнских плат, и связанна с ошибкой реализации MMX в Ph5.5. Для решения проблемы достаточно удалить


1.6.6. Правило расчетливости: пишите большие программы, только если после демонстрации становится ясно, что ничего другого не остается

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

1.6.6. Правило расчетливости: пишите большие программы, только если после демонстрации становится ясно, что ничего другого не остается Под "большими программами" в здесь подразумеваются программы с большим объемом кода и значительной внутренней сложностью. Разрешая


1.6.6 Правило расчетливости: пишите большие программы, только если после демонстрации становится ясно, что ничего другого не остается

Из книги VBA для чайников автора Каммингс Стив

1.6.6 Правило расчетливости: пишите большие программы, только если после демонстрации становится ясно, что ничего другого не остается Под "большими программами" в здесь подразумеваются программы с большим объемом кода и значительной внутренней сложностью. Разрешая


Назначение другого следующего оператора

Из книги C++. Сборник рецептов автора Диггинс Кристофер

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


8.7. Определение, является ли класс объекта подклассом другого класса

Из книги Понимание SQL автора Грубер Мартин

8.7. Определение, является ли класс объекта подклассом другого класса ПроблемаИмеется два объекта и требуется узнать, имеют ли их классы отношения на уровне базовый класс/производный класс, или они не связаны друг с другом.РешениеИспользуйте оператор dynamic_cast, который


Выполнение обещания зависит от другого человека X

Из книги автора

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