"Зверек другого рода"
"Зверек другого рода"
Ядро имеет некоторые отличия в сравнении с обычными пользовательскими приложениями, эти отличия хотя и не обязательно приводят к серьезным усложнениям при программировании, но все же создают специфические проблемы при разработке ядра.
Эти отличия делают ядро зверьком другого рода. Некоторые из старых правил при этом остаются в силе, а некоторые правила являются полностью новыми. Хотя часть различий очевидна (все знают, что ядро может делать все, что пожелает), другие различия не так очевидны. Наиболее важные отличия описаны ниже.
• Ядро не имеет доступа к библиотеке функций языка С.
• Ядро программируется с использованием компилятора GNU С.
• В ядре нет такой защиты памяти, как в режиме пользователя.
• В ядре нельзя легко использовать вычисления с плавающей точкой.
• Ядро использует стек небольшого фиксированного размера.
• Поскольку в ядре используются асинхронные прерывания, ядро является преемптивным и в ядре имеется поддержка SMP, то в ядре необходимо учитывать наличие параллелизма и использовать синхронизацию.
• Переносимость очень важна.
Давайте рассмотрим более детально все эти проблемы, так как все разработчики ядра должны постоянно помнить о них.