Книга: Разработка ядра Linux
Почему не нужно создавать системные вызовы
Почему не нужно создавать системные вызовы
Новый системный вызов легко реализовать, тем не менее это необходимо делать только тогда, когда ничего другого не остается. Часто, для того чтобы обеспечить новый системный вызов, существуют более подходящие варианты. Давайте рассмотрим некоторые "за" и "против" и возможные варианты.
Для создания нового интерфейса в виде системного вызова могут быть следующие "за".
• Системные вызовы просто реализовать и легко использовать.
• Производительность системных вызовов в операционной системе Linux очень высока.
Возможные "против".
• Необходимо получить номер системного вызова, который должен быть официально назначен в период работы над разрабатываемыми сериями ядер.
• После того как системный вызов включен в стабильную серию ядра, он становится "высеченным в камне". Интерфейс не должен меняться, чтобы не нарушить совместимости с прикладными пользовательскими программами.
• Для каждой аппаратной платформы необходимо регистрировать отдельный системный вызов и осуществлять его поддержку.
• Для простого обмена информацией системный вызов — это "стрельба из пушки по воробьям".
Возможные варианты.
• Реализовать файл устройства и использовать функции read()
и write()
для этого устройства, а также использовать функцию ioctl()
для манипуляции специфическими параметрами или для получения специфической информации.
• Некоторые интерфейсы, например семафоры, могут быть представлены через дескрипторы файлов. Управлять этими устройствами также можно по аналогии с файлами.
• Добавить информационный файл в соответствующем месте файловой системы sysfs
.
Для большого числа интерфейсов, системные вызовы — это правильный выбор. В операционной системе Linux пытаются избегать простого добавления системного вызова для поддержки каждой новой, вдруг появляющейся абстракции. В результате получился удивительно четкий уровень системных вызовов, который принес очень мало разочарований и привел к малому числу не рекомендованных к использованию и устаревших (deprecated) интерфейсов (т.е. таких, которые больше не используются или не поддерживаются).
Малая частота добавления новых системных вызовов свидетельствует о том, что Linux — это стабильная операционная система с полным набором функций. Очень немного системных вызовов было добавлено во время разработки серий ядер 2.3 и 2.5. Большая часть из новых системных вызовов предназначена для улучшения производительности.
- Почему необходима миграция
- Глава 7 Чего нужно опасаться при моделировании бизнес-процессов. Проектные риски моделирования бизнеспроцессов
- Почему так важен справедливый процесс?
- Почему потенциальные покупатели лгут?
- Системные переменные ROWS_AFFECTED, GDSCODE, SQLCODE, TRANSACTIONJD, CONNECTIONJD
- Пример применения метода «пять почему»
- Почему я написал эту книгу
- Системные вызовы и драйверы устройств
- ГЛАВА 5. СИСТЕМНЫЕ ОПЕРАЦИИ ДЛЯ РАБОТЫ С ФАЙЛОВОЙ СИСТЕМОЙ
- Системные вызовы управления процессорной привязкой
- Глава 14. Почему потребительский опыт играет важную роль в выстраивании клиентских взаимоотношений
- Что нужно для того, чтобы компьютер проработал долго и надежно