Параллельное программирование, мультипрограммирование и многозадачность
Лекция 9
Тема 4.2 Программирование систем реального времени. Методы программирования: параллельное программирование, мультипрограммирование и многозадачность. Приоритеты процессов и производительность системы. Управление ресурсами. Обмен информацией между процессами.
Последовательное программирование и программирование задач реального времени
Программа представляет собой описание объектов — констант и переменных — и операций, совершаемых над ними. Таким образом, программа — это чистая информация. Ее можно записать на какой-либо носитель, например на бумагу или на дискету.
Программы можно создавать и анализировать на нескольких уровнях абстракции (детализации) с помощью соответствующих приемов формального описания переменных и операций, выполняемых на каждом уровне. На самом нижнем уровне используется непосредственное описание — для каждой переменной указывается ее размер и адрес в памяти. На более высоких уровнях переменные имеют абстрактные имена, а операции сгруппированы в функции или процедуры. Программист, работающий на высоком уровне абстракции, не должен думать о том, по каким реальным адресам памяти хранятся переменные, и о машинных командах, генерируемых компилятором.
Последовательное программированиеявляется наиболее распространенным способом написания программ. Понятие "последовательное" подразумевает, что операторы программы выполняются в известной последовательности один за другим. Целью последовательной программы является преобразование входных данных, заданных в определенной форме, в выходные данные, имеющие другую форму, в соответствии с некоторым алгоритмом — методом решения
|
|
Таким образом, последовательная программа работает как фильтр для исходных данных. Ее результат и характеристики полностью определяются входными данными и алгоритмом их обработки, при этом временные показатели играют, как правило, второстепенную роль. На результат не влияют ни инструментальные (язык программирования), ни аппаратные (быстродействие ЦП) средства: от первых зависят усилия и время, затраченные на разработку и характеристики исполняемого кода, а от вторых — скорость выполнения программы, но в любом случае выходные данные будут одинаковыми.
Программирование в реальном времениотличается от последовательного программирования — разработчик программы должен постоянно иметь в виду среду, в которой работает программа, будь то контроллер микроволновой печи или устройство управления манипулятором робота. В системах реального времени внешние сигналы, как правило, требуют немедленной реакции процессора. В сущности, одной из наиболее важных особенностей систем реального времени является время реакции на входные сигналы, которое должно удовлетворять заданным ограничениям.
|
|
В большинстве случаев применение обычных приемов последовательного программирования не позволяет построить систему реального времени. В таких системах независимые программные модули или задачи должны быть активными одновременно, т. е. работать параллельно, при этом каждая задача выполняет свои специфические функции. Такая техника известна под названием параллельного программирования. В названии делается упор на взаимодействие между отдельными программными модулями. Параллельное исполнение может осуществляться на одной или нескольких ЭВМ, связанных распределенной сетью. В этой главе будут рассмотрены принципиальные вопросы, относящиеся к обоим случаям.
Программы и процессы
Основным объектом в системах реального времени является процессилизадача. Между программами и процессами имеется существенное различие. Программы представляют собой информацию о том, как обрабатывать и преобразовывать исходные данные, а процессы суть программы, исполняемые процессором. Процесс состоит из кода, т. е. инструкций программы — области кода, области данных, в которой хранятся переменные и константы, свободной динамически распределяемой рабочей области памяти — кучии стека(рис. 10.2). Два последних механизма зависят от конкретной реализации. Область стека примыкает к куче и расширяется за ее счет. Программа, написанная на одном и том же языке высокого уровня, а затем откомпилированная и исполняемая на разных ЭВМ, порождает различные процессы, каждый из которых имеет собственные области команд и данных, кучу и стек.
|
|
Частным типом процессов являются потоки. Они представляют собой часть программы, которая может независимо исполняться на том же сам или другом процессоре. Потоки порождаются процессом и выполняются параллельно, т. е. поток — это дочерний процесс. В отличие от процессов, потоки используют общую область данных, т. е. переменные породившего их процесса.
Последовательность преобразования программы в процесс состоит из сохранения исходного текста на компьютерном носителе (магнитная лента или диск), компиляции, связывания, каждый поток имеет собственный контекст, включающий отдельные область кода и стек. Потоки играют важную роль в операционных системах UNIX и Windows NT
|
|
загрузки (loading) и исполнения (execution). Эти шаги детально описываются в учебниках по программированию и операционным системам и здесь рассматриваться не будут.
Параллельное программирование, мультипрограммирование и многозадачность
Программирование в реальном времени требует одновременного исполнения нескольких процессов или задач на одной ЭВМ. Эти процессы используют совместно ресурсы системы, но более или менее независимы друг от друга.
Мультипрограммирование (multiprogramming) или многозадачность (multitasking) есть способ одновременного исполнения нескольких процессов. Такого эффекта можно добиться как для одного, так и для нескольких процессоров: процессы исполняются либо на одном, либо на нескольких связанных между собой процессорах. В действительности многие современные вычислительные системы состоят из нескольких процессоров, связанных между собой либо сетью передачи данных, либо общей шиной.
Иногда в технической литературе термин "параллельное программирование" используется как синоним мультипрограммирования. Однако эти понятия несколько различаются по смыслу. Параллельное программирование — это абстрактный процесс разработки программ, которые потенциально могут исполняться параллельно, вне зависимости от программно-аппаратной среды. Иными словами, предполагается, что каждая задача реализуется на собственном виртуальном процессоре. С другой стороны, мультипрограммирование представляет собой практический способ исполнения нескольких программ на одном центральном процессоре или в распределенной вычислительной системе. Параллельное программирование более трудоемко, чем последовательное, поскольку способности человека следить за развитием связанных процессов и исследовать их взаимодействие ограничены.
Программирование в реальном времени основано на параллельном программировании и включает в себя технику повышения эффективности и скорости исполнения программ — управление прерываниями, обработку исключений и непосредственное использование ресурсов операционной системы. Кроме того, программы реального времени требуют специальных методов тестирования.
Дата добавления: 2018-04-04; просмотров: 694; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!