Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_А.Парамонов.doc
Скачиваний:
18
Добавлен:
08.09.2019
Размер:
7.82 Mб
Скачать

2.3.Разработка драйверов в ос Linux

2.3.1.Особенности ос Linux

В силу того, что исходные коды Linux распространяются свободно и общедоступны, к развитию системы с самого начала подключилось большое число независимых разработчиков. Благодаря этому на сегодняшний момент Linux — самая современная, устойчивая и быстроразвивающаяся система, почти мгновенно вбирающая в себя самые последние технологические новшества. Она обладает всеми возможностями, которые присущи современным полнофункциональным операционным системам типа UNIX:

  • реальная многозадачность – все процессы независимы; ни один из них не должен мешать выполнению других задач. Для этого ядро осуществляет режим разделения времени центрального процессора, поочередно выделяя каждому процессу интервалы времени для выполнения. Это существенно отличается от режима «вытесняющей многозадачности», реализованной в Windows, когда процесс должен сам «уступить» процессор другим процессам (и может сильно задержать их выполнение);

  • рождение новых процессов в системе организовано таким образом, что любой процесс запущенный пользователем, наследует права от процесса-родителя. А процесс-родитель обеспечивает вход пользователя под определенным логином (анонимного входа как в Windows нет). Таким образом, запустить процесс с привилегиями другого пользователя оказывается невозможно;

  • многопользовательский доступ;

  • страничная организация памяти;

  • загрузка выполняемых модулей «по требованию» - ядро Linux поддерживает выделение страниц памяти по требованию, при котором только необходимая часть кода исполняемой программы находится в оперативной памяти, а не используемые в данный момент части остаются на диске.

  • полное соответствие стандарту POSIX 1003.1;

  • поддержка различных форматов файловых систем;

  • поддержка различных организаций сетей и сетевых протоколов;

  • работа на различных аппаратных платформах на базе процессоров Intel, AMD, ARM, PowerPC, Motorola и др.

Т.о. ОС Linux обладает рядом преимуществ перед другими операционными системами в аспектах многозадачности, безопасности и эффективности.

2.3.2.Принципы работы драйверов в ос Linux

В основе операционной системы Linux лежат два пространства – пользовательское и пространство ядра [14]. Каждый драйвер Linux выполняется в пространстве ядра и предоставляет специальный интерфейс, с помощью которого процессы, работающие в пространстве пользователя, могут обращаться к аппаратуре и другим ресурсам операционной системы. Т.о. приложение посылает запросы операционной системе, а та в свою очередь их выполняет. Существование таких интерфейсов и тот факт, что приложение не может напрямую обращаться к ресурсам, является ключевым моментом в обеспечении многозадачности, стабильности системы и отсутствии конфликтов.

Интерфейсы драйверов Linux построены на системных вызовах, которые предназначены для достижения следующих целей:

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

  • гарантия безопасности и стабильности системы. Решение о предоставлении доступа к ресурсам в данном случае лежит не на пользователе, а на самой системе.

Рис. 2.19. Интерфейс системных вызовов в ОС Linux.

Организация интерфейса системных вызовов представлена на рис. Рис. 2 .19. Для получения доступа к соответствующему системному вызову используется библиотека C (GNU C Library). Этот язык используется для написания всех драйверов в ОС Linux.