Верно ли что python идеально подходит для написания драйверов устройств

Обновлено: 04.07.2024

Хорошо известно, что Python это модульный язык, в котором импортируется множество полезных операций из его стандартной библиотеки. Очевидно, что без этого программировать на Python совершенно невозможно. Во многом популярность этого языка основана на открытом коде и том, что вся разработка ведется под лицензией OSI (Open Software License). Вы можете совершенно бесплатно скачать и установить на любом компьютере все инструменты Python. Это все доступно в различных сборках, при этом поддерживается 21 операционная система, что делает язык Python поистине универсальным.

Пакеты драйверов для баз данных на языке Python

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

Этот пакет содержит клиентскую библиотеку Python MySQL, основанную на стандарте PEP 249.

Большинство открытых API-интерфейсов совместимы с mysqlclient и MySQLdb.

ЗАМЕЧАНИЕ: PyMySQL не поддерживает низкоуровневые API-запросы, которые есть в _mysql, а именно data_seek, store_result и use_result . Вы должны использовать высокоуровневые API-запросы, определенные в стандарте PEP 249. Но некоторые API-запросы, такие как autocommit и ping , все же поддерживаются, поскольку PEP 249 никак не регламентирует их применение.

Это библиотека интерфейса базы данных, разработанная специально для PostgreSQL и Python / asyncio.

asyncpg требует Python версии 3.5 или новее и поддерживается для PostgreSQL начиная с версии 9.2 и заканчивая версией 12.

В этом проекте добавлена ​​поддержка Python 3 и исправлен ряд ошибок. Мы надеемся, что этот форк будет снова объединен со своей родительской библиотекой. Это было бы так же логично, как объединение дистрибутива и программы для его установки.

Современная, многофункциональная и гибконастраиваемая клиентская библиотека Python для Apache Cassandra (1.2+) и DataStax Enterprise (3.1+). Она использует исключительно бинарный протокол Cassandra и язык запросов Cassandra Query Language v3.

Простой интерфейс баз данных на языке Python, который строится поверх FreeTDS и предоставляет интерфейс Python DB-API (PEP-249) для Microsoft SQL Server.

Это многофункциональная библиотека Python, предназначенная для использования SQLite в Python компанией Plasticity. Построена она на основе apsw.

SuperSQLite также содержит предварительно скомпилированные собственные бинарные файлы для SQLite и всех его расширений (практически для любой платформы). Это сделано чтобы избежать возможных ошибок компилятора C / C ++ во время установки.

могут ли драйверы Windows быть написаны на Python?

да. Вы не можете создать "классические" драйверы режима ядра. Однако, начиная с XP, Windows предлагает Пользовательский Режим Driver Framework. Очевидно, они не могут делать все - любой драйвер, используемый при загрузке ОС, очевидно, должен быть в режиме ядра. Но с UMDF вам нужно только реализовать com-компоненты.

помимо драйверов времени загрузки, вы также не можете писать драйверы UMDF, которые:

  • обрабатывать прерывания
  • сразу оборудование доступа, как прямой доступ к памяти (DMA)
  • имеют строгие временные циклы
  • используйте невыгружаемый пул или другие ресурсы, зарезервированные для режима ядра

окончательный ответ не без встраивания интерпретатора в ваш в противном случае драйвер c/assembly. Если у кого-то есть рамки, то ответ нет. Как только у вас есть интерпретатор и привязки на месте, остальная часть логики может быть выполнена в Python.

однако написание драйверов является одной из вещей, для которых C лучше всего подходит. Я предполагаю, что полученный код Python будет выглядеть очень похоже на код C и победит цель интерпретатора накладные расходы.

хороший способ получить представление о том, почему это практически невозможно, - это прочитать совет Microsoft об использовании C++ в драйверах. Как производная от C, использование C++ кажется простым. На практике это не так.

например, вы должны решить для каждой функции (и действительно для каждой инструкции по сборке), находится ли она в подкачиваемой или не подкачиваемой памяти. Это требует расширения до C, тщательного использования новых функций C++ или в этом случае специального расширения для язык Python и виртуальная машина. Кроме того, ваша совместимая с драйверами виртуальная машина также должна иметь дело с различными IRQLs-существует иерархия "уровней", которые ограничивают то, что вы можете и не можете сделать.

Python работает на виртуальной машине, поэтому нет.

вы можете написать компилятор, который переводит код Python на машинный язык. Как только вы это сделаете, вы сможете это сделать.

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

никогда не говори никогда, Но да.. нет!--1-->

вы можете взломать что-то вместе, чтобы запустить пользовательские части драйверов в python. Но материал в режиме ядра может быть выполнен только в C или сборке.

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

  1. интерфейс с API на основе C
  2. компиляции в машинный код

опять же, ничто не мешает вам написать компилятор, который переводит python в машинный код;)

Да. Вы не можете создавать "классические" драйверы режима ядра. Однако, начиная с XP, Windows предлагает "Рамка драйверов пользовательского режима" . Они не могут делать все, очевидно - любой драйвер, используемый при загрузке ОС, должен быть в ядре. Но с UMDF вам нужно только реализовать COM-компоненты.

Помимо драйверов загрузки, вы также не можете записывать драйверы UMDF, которые:

  • Обработка прерываний
  • Непосредственный доступ к оборудованию, например, прямой доступ к памяти (DMA)
  • имеют строгие циклы синхронизации.
  • Использовать невыгружаемый пул или другие ресурсы, зарезервированные для режима ядра.
Я собирался написать стандартный ответ «Writing driver in Python = Crazy» на этот вопрос, но я действительно думаю, что драйвер UMDF будет работать. Интересно! Я разработчик драйверов для Linux для своей компании, и сейчас мы изучаем python, чтобы сделать нашу платформу драйверов независимой. Предложенный высшим руководством и делающий это RND в эти дни. @sandundhammika: Этого не произойдет, если говорить в разговорной речи. Драйверы не являются независимыми от платформы, потому что ядро диктует, что они должны делать, а разные платформы имеют совершенно разные ожидания. Поэтому Windows ожидает, что драйверы UMDF будут взаимодействовать через COM, тогда как в Linux даже нет COM. @MSalters Первоначальная проблема - распространять один и тот же двоичный драйвер для разных дистрибутивов. Мы поставляем наш собственный двоичный выпуск C ++, но их имена библиотек зависят от платформы, поэтому даже тот же ABI нарушает имена библиотек. @sandundhammika: Похоже, что лучшим решением будет установщик драйверов, написанный на Python, с фактическим драйвером, все еще на C ++. Этого может быть достаточно, чтобы проверить желание вашего менеджера.

Хороший способ получить представление о том, почему это практически невозможно, - это прочитать совет Microsoft по использованию С++ в драйверах. Как производная от C, использование С++ представляется простым. На практике это не так.

Например, вы должны решить для каждой функции (и действительно каждой инструкции сборки), будь то в доступной для страниц или нестранимой памяти. Для этого требуются расширения для C, тщательное использование новых возможностей С++ или в этом случае специальное расширение для языка Python и виртуальной машины. Кроме того, ваша совместимая с драйвером VM также должна иметь дело с разными IRQL - там есть иерархия уровней, которые ограничивают то, что вы можете и чего не можете сделать.

Пару месяцев назад написал мышиный драйвер на С - и kernelspace, и userspace. Теперь хочу переделать userspace на Python, чтобы набраться опыта в этом языке. С Пайтоном мой драйвер не хочет работать, хотя сам драйвер отлично работает на С.

Подскажите, в чем ошибка в коде? Вот код userspace'a:

Вот вывод, который он выдает:

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Мышиный ресивер
Всем доброго времени суток. Стал интересен вопрос: как работает usbресивер от радиомышей? .

Скачал драйвер для ATI и при загрузке пишет не найден драйвер
Скачал драйвер для ATI и при загрузке пишет ненайден драйвер поиска,что делать7


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

Драйвер монитора, действительно ли драйвер?
Давно оспариваю такой вопрос - диск прилагаемый к монитору, в котором есть профиль цветовой, и.

Не, это просто неправильный код. :-)

Подход к USB-драйверу иной. Надо найти ProductID и VendorID мыши, затем адрес оконечной точки, затем получать от нее URB и расшифровывать его.

Я это сумел сделать на С, не без Гугла, конечно. :-)
Теперь нашел подходящий код на Пайтоне. Только там сначала надо библиотеку PyUSB установить.

Python - момент истины. Python - как оружие возмездие против системы
Какие модули в python мне нужны для взлома баз данных? Перехвата информации? Внедрения в систему? .

Запуск скрипта написанного на python на windows, где не установлен python
Не запускается скрипт на Windows, где не установлен python. Команда в коде на выполнение написана.

Как из Python скрипта выполнить другой python скрипт?
Как из Python скрипта выполнить другой python скрипт? Если он находится в той же папке но нужно.


Не могу получить ответ от python скрипта и на его основе создать список (зависимые списки js ajax python)
Привет! Есть необходимость сделать динамические списки при помощи js, ajax jQuery, Python. Данные.


Почему синтаксис Python 2.* и Python 3.* так отличается?
Привет! Решил на досуге заняться изучением Python'a. Читаю книгу по второму питону, а пользуюсь.

Читайте также: