Искусство программирования на Си (984073), страница 83
Текст из файла (страница 83)
Прерывания хптскт)ры, то нужно самостоятсльно нервности часпз ° Диналзичсскос распрсдслснис памяти Дополиитеятие темптиееееие рпм>епм л л Часть 1и Резюме В ЭТОЙ ГЛАВЕ Стефан Уилзнс В этой главе предо~валены базовые концепции встроенных систем — они прелставляют весьма тонкие и специфические элементы программирусмыл аппаратных средств, и каждая из них по-своему совершенно уникачьна. Очень важный шаг в програмлзировании встроенных систем состоит в получении хорошей среды разработки программного обеспечения с надежной полдержкой отладки. Лрсдпочтительным и наиболес обшим языком программирования является С, и большинство пол>фабрикатных модулей встроенных систем включают С-компилятор и набор инструментальных средств разработки.
В случае более крупных и более производительных систем для получения мошной и гибкой среды вьшолнения приложений могут использоваться конкретные операционные системы реального времени. Параллельная обработка ° Основные концепции ° Компьютеры н паръзлсльная обработка ° Лараллельнвя обработка в С В этои главе рассказывается о паржплсльнои обработке параллсливани 1, р . ' р я, и нведсм ~акой п имер.злсся~ь чсзо- И2-,.„.„, Дааа>наа>е>ьаыеамчатачеекие раадюы г»л 11 Компьютеры и параллельная подпроблемы должны быть достаточно независимы- опсрационная система может выполнять множество >а- полнение всех др>гих задач.
Операционные системы обработка ми, чтобы их можно было выполнять параллельно. дач, причем все задачи могут безопасно предполагать, >у>пг)о>ча 9х и >Х>>п>(ожь (»Т используют приоритетную что они ил>еют неограниченный доступ ко всем аппа- многозадачность. ° Программа люжст выполнять параллельнук> обработ- В случае с компьютерами вы встретитесь с двумя типа- ку с целью испояьзг нация мощных диспстчсрски» яя р ессная коммуникация ми парачлелизма: фактической и имитированнои парал- свойств операционной системы.
Часто более сложЕше одно слово о плани овании и п иоритстной ЕЖП ОЦ > р р р лельцой обработкой. Фактическая параллельная обра- ные программь> реализуют своиства, которые пред- многозадачности: они п ивязаны к операционной сис- Разделение программы на парещлсльныс залачи трсбуботка треб>ст наличия нескольких микропроцессоров, полагают ре>шизацию параллельных сяоиств. Напри- теме, которая в большинстве случаев является действи- ет, чтобы эти задачи совместно использовали данные которые в состоянии осуществлять связь друг с другом мер, вспомним текстовый процессор, который тельно корректной. Современные микропроцессоры илн обменивешись имн лля работы по направлению ь и совместно использовать оГ>ший набор данных.
При считывае> ввол пользователя и одновременно провсобычно имеют встроснн ю подле жку многозазачнос- р у одной обшей цели При многозадачности отдельные нмнншрованнай параллельной обработке используется ти, но операционная система должна контролировать и залачи не должны зависеть от степени предположения только один процессор лля обработки нескольких про- рсслизовывать этот механизм, хотя имеется несколько от осителыю того, что кажлая из них выполняется на >рамм, выполнение которых ли>вь кажется парюлель- предполо>китсль>'о Редки" искл ">деций ((»котора'е своем собственном процессоре Таким образом совменым. з)ля разделения времени обработки между парал- микропроцессоры сочетают свойстяо встроенной при- стное использование ланныл перестает быть вопросол>. лсльно выполняемыми программами используется сгвенном> расписанию, гарантирующему, что входо итстной многозалачности с плани ованием аппарат- Р ' Многопоточность является концептуальным решением циклический (илп кир) еельнын) механизм (говне) гоб>п).
ные данные нс потеряются, осоГ>анно если онп моных с сдств. Гакие мик оп оцсссо ы не нуждаются в Р' Р Р Р лля парю>лсльных программ, которые требуют совмес- В этом случае имеется некии диспетчер, обычно в фор- гут во >вращаться с разлнчнои скоростью, но никогда опс ацнонной системе л.ш сализацин многозадачнос- тного использования данных. С др>гой стороны, лля ме опсрационнои системы, которыи выделяет опрсдс- не гарантирующему, что обработка данных займет тп. Хо ощим п име ом может служить процессор обмена данными и информацией параллсльныс задаю ленное время лля обработки каждой программы в пос- столькс> времени, сколько нужно. Использование ПЧМОВ ТгапэРц>ег.
Тем не менее, везде далее в кншс мы используют коммуникационные связи. лсдовательностн ош>а за лругои. Действительный рс:ким парьллельныл задач и разрсшснис операционной си- ° ' Р У > Межпроцессная коммуникапия — это основной ме булем ссылаться на опе ационную систему как на глав- Лоаолаиатлиеие тем от аеее еие иа лаааи 1)оиалле чаае аа(т битка 1 Часть )Н Глава 28 различныс процессы, но при этом нужно учитывать реализации полного отделения коммуникационных ка- программистам эти свойства доступны с использовани- В следуюшей строке кода выполняется то же самое следующее: налов от обработки данных. Возможность разделения см специальных функций полдержки операционной в операционной системе уу!пг)огиз: ° Они нмеклт мкзо обшсго и д я Обл е з дз ны, дан х мсждУ иожеством ПОтокОВ приВодит к пРоблеауасат( "асахс /т Ьеззо.ахе " ); обхолимо использова~ь достаточно сложныс мсха- языка С.
Функции, структуры ланных и другис опрсДва потока, осушествляюших запись в один и тот же деления формируюз интерфейс АР) (Арр))сзг!Оп Чаше всего скрипты оболочки используются для запизмы. объект в памяти, будут, скорее всего, конфликтовать Ргоягашпзегз )пгег(асс) пзратлсльного программирова пуска вссл задач большого распараллеленного приложе° Они представляют скорее стзтичсскии меланизм лля между собои.
В случае использования буфера оба пото- ния В этом разделе используется один конкретный ния для операционнои системы. Специальные среды параллельной обработки. ка мог>т сделать запись в один и тот же слот буфера, интерфейс АР) а качестве примера для лемонстрации программирования, однако, часто формир>ют исключеДля обоих этих факторов имеется альтернатива, 'по приведет к катастрофической путанице в данных. того, как такой АР)можно использоватьдля реализации ние, особенно если на целевых аппаратных средствал называемая аитакими (гйгеаг)з) Потоки совлгестно ис Решением этой проблемы является так называемая сии- основных свойств параллельного программирования в С.
отсутствует операционная система или если операционпользуют олпу и ту же область в памяти, занятую лан- хдаеееезииия е)ист)ла: разДсление объектов памяти так, Для формирования своил примеров исходного кода я ная система является специальной реализацией для ными и программным кодом, и их легко можно запус- чтобы они были доступны одновременно только одно- использую набор инструментов 1ХМОВ уоо1бсг, Может встроенных систем. В таких системах для запуска задач кать и останавливать в пределах одной задачи.
му потоку. При эгон потоки должны иметьвозможность быть, этот АР1 не очень широко распространен, но он приложения используются специальныс механизмы. Представим себе поток кзк функцию, которая, будучи опрсдсяигь, лоступен ли в данный момшп буфер для очень проел, и сто легко использовать в реализации ба- Одни из них лля запуска задач поддерживают спепиальвызванной, выполняется параллельно с вызываюшсй записи в него нли чтения из него, лля резервирования зовых и усовершенствованных концепций параллелыю- ныс функции, друтис используют специальныс астро- функцией.
Потоки представляют па аллсльныссубком- доступа к буферу в течение всего врслесни, пока пото- Р го программирования. снные инструменты для колебинирования задач в целях поненты задачи. Недостатком этого является, конечно, кг' нспользу"зт сто В этом разделе демонстрируются след>юшие кон- формирования одной программы. то, что потоки вынуждены выполняться в той же самон Механизм синхронизации сам по себе должен быть цепции: Система 1ХМОВ Тоо!Вег, которая будет в основном среле, в которой выполняется породившая их задача. Воеаокобезолаеимм. Другими словами, представим себе ° многозадачность использоваться для исходного кода рассматриваемых ИИ- //ее 4 о 4ннп4 е 1»ные п4ема попе<<не р о »дези /!ори »»е.»ы»он парада»!<о ! ! Часть В! Глава лв ются ф> нкция РгосА)(осО для созлания процесса из ного процесса.
Рассмотрим в листинге 28.! простой при- Межпроцессная коммуникация в С обеспечения. Одно общее решение, подлсрживаемое функции и функция РгосКппΠ— лля запуска создан- мер программы, которая для печати произвольного комногими операционными системами, называется конличсства приветствий использует поток. КомчУникационныс каналы мог>т быть использованы венгром.
Эалачп запрашивают коммуникационный кав л бом м. тс, !де 3:ш'»н !4ли поток обмениваются н-ч о опс а виной сис ь! а истсма от ч живает Листинг 28.1. Использование потока для печати приветствий. нал от операционной системы, а система отеле данными. Они формируют главный механизм обмена ко а лва запроса соотвстств ют дру! дру!у, и обсспе< ', данными ллЯ задач. в то вРемЯ как потоки мо~уч выбп- чива т межлу соответствующими зчлачами прямую (1пс1иде <ргосеяя.ьь /» Расппревпя языка с дпя пспопьзоваапя потоков »/ рать, использовать им каналы или разделенные для сосвязь.