ОСОБЛИВОСТІ РЕАЛІЗАЦІЇ БАГАТОЗАДАЧНОСТІ НА ПЛАТФОРМАХ RASPBERRY PI ТА ARDUINO
Ключові слова
Анотація
Найпопулярнішими платформами для розробників вбудованих систем серед початківців є Arduino та Raspberry Pi. Ці платформи різні та мають різне призначення, проте на обох може виникнути потреба виконувати кілька операцій паралельно. В роботі розглянуто способи реалізації багатозадачності на вищезазначених платформах. Оскільки Arduino базуються здебільшого на одноядерних AVR мікроконтролерах, з досить низькою частотою тактування, то багатозадачність у цієї платформи лише умовна. Тривалі в часі операції будуть займати єдине ядро та єдиний потік мікроконтроллера, що не дозволить виконувати щось інше. Це не стосується апаратних блоків мікроконтроллера, таких як таймери, що працюють незалежно від програмної частини і дозволяють реалізувати виконання коротких завдань з фіксованим періодом. Для простого написання програми, що використовує такі можливості контролера, існують бібліотеки. Найвідомішою з них є TimedAction, що може бути знайдена на офіційному сайті Arduino. Також у більшості мікроконтролерів є апаратний вхід, за допомогою якого можна створювати переривання. Під час переривання також можна виконувати операції, після завершення яких буде відновлена робота головного циклу програми. На Raspberry Pi, як і на подібних мікрокомп’ютерах під керуванням операційної системи Linux, повноцінно можна розглянути потоки та процеси. Процес є екземпляром програми та створюється операційною системою. Окремі процеси не мають спільного об’єму пам’яті. Паралельні процеси використовуються, коли потрібно прискорити складні обчислення. Потоки є підзадачами, яких може бути декілька усередині процесу. Між кількома потоками є спільний об’єм пам’яті, що дозволяє зручно обмінюватись даними. Паралельні потоки використовують, коли потрібно виконувати тривалі операції вводу/виводу. У мові Python, що широко використовується у вбудованих системах, для реалізації багатопоточності використовують бібліотеку Threading. Особливістю багатозадачності у Python є Global Interpreter Lock. Цей механізм гарантує, що в один момент часу буде виконуватись код лише одного процесу програми. У цієї особливості Python є прихильники та противники, як відповідно переваги та недоліки.
