Параллельное программирование, мультипрограммирование и многозадачность



Лекция 9

Тема 4.2 Программирование систем реального времени. Методы программирования: параллельное программирование, мультипрограммирование и многозадачность. Приоритеты процессов и производительность системы. Управление ресурсами. Обмен информацией между процессами.

 

Последовательное программирование и программирование задач реального времени

Программа представляет собой описание объектов — констант и переменных — и операций, совершаемых над ними. Таким образом, программа — это чистая ин­формация. Ее можно записать на какой-либо носитель, например на бумагу или на дискету.

Программы можно создавать и анализировать на нескольких уровнях абстракции (детализации) с помощью соответствующих приемов формального описания перемен­ных и операций, выполняемых на каждом уровне. На самом нижнем уровне использует­ся непосредственное описание — для каждой переменной указывается ее размер и адрес в памяти. На более высоких уровнях переменные имеют абстрактные имена, а операции сгруппированы в функции или процедуры. Программист, работающий на высоком уров­не абстракции, не должен думать о том, по каким реальным адресам памяти хранятся переменные, и о машинных командах, генерируемых компилятором.

Последовательное программированиеявляется наиболее распространенным способом написания программ. Понятие "последовательное" подразумевает, что операторы программы выполняются в известной последовательности один за другим. Целью последовательной программы является преобразование вход­ных данных, заданных в определенной форме, в выходные данные, имеющие другую форму, в соответствии с некоторым алгоритмом — методом решения

Таким образом, последовательная программа работает как фильтр для исходных данных. Ее результат и характеристики полностью определяются входными данны­ми и алгоритмом их обработки, при этом временные показатели играют, как правило, второстепенную роль. На результат не влияют ни инструментальные (язык програм­мирования), ни аппаратные (быстродействие ЦП) средства: от первых зависят уси­лия и время, затраченные на разработку и характеристики исполняемого кода, а от вторых — скорость выполнения программы, но в любом случае выходные данные бу­дут одинаковыми.

Программирование в реальном времениотличается от последовательного программирования — разработчик программы должен постоян­но иметь в виду среду, в которой работает программа, будь то контроллер микро­волновой печи или устройство управления манипулятором робота. В системах ре­ального времени внешние сигналы, как правило, требуют немедленной реакции процессора. В сущности, одной из наиболее важных особенностей систем реального времени является время реакции на входные сигналы, которое должно удовлет­ворять заданным ограничениям.

В большинстве случаев применение обычных приемов последовательного программирования не позволяет построить систему реального времени. В таких системах независимые программные модули или задачи должны быть активными одно­временно, т. е. работать параллельно, при этом каждая задача выполняет свои специфические функции. Такая техника известна под названием параллельного программирования. В названии делается упор на взаимодействие между отдельными программными модулями. Параллельное исполнение может осуществляться на одной или нескольких ЭВМ, связанных распределенной сетью. В этой главе будут рассмотрены принципиальные вопросы, относящиеся к обоим случаям.

Программы и процессы

Основным объектом в системах реального времени является процессилизадача. Между программами и процессами имеется существенное разли­чие. Программы представляют собой информацию о том, как обрабатывать и преоб­разовывать исходные данные, а процессы суть программы, исполняемые процессо­ром. Процесс состоит из кода, т. е. инструкций программы — области кода, области данных, в которой хранятся переменные и константы, свободной динамически распределяемой рабочей области памяти — кучии стека(рис. 10.2). Два последних механизма зависят от конкретной реализации. Область стека примыкает к куче и расширяется за ее счет. Программа, написанная на одном и том же языке высокого уровня, а затем откомпилированная и исполняемая на разных ЭВМ, порождает различные процессы, каждый из которых имеет собственные области ко­манд и данных, кучу и стек.

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


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

загрузки (loading) и исполнения (execution). Эти шаги детально описываются в учебниках по программированию и операцион­ным системам и здесь рассматриваться не будут.

Параллельное программирование, мультипрограммирование и многозадачность

Программирование в реальном времени требует одновременного исполнения не­скольких процессов или задач на одной ЭВМ. Эти процессы используют совместно ресурсы системы, но более или менее независимы друг от друга.

Мультипрограммирование (multiprogramming) или многозадачность (multitasking) есть способ одновременного исполнения нескольких процессов. Такого эффекта мож­но добиться как для одного, так и для нескольких процессоров: процессы исполняются либо на одном, либо на нескольких связанных между собой процессорах. В действи­тельности многие современные вычислительные системы состоят из нескольких про­цессоров, связанных между собой либо сетью передачи данных, либо общей шиной.

Иногда в технической литературе термин "параллельное программирование" используется как синоним мультипрограммирования. Однако эти понятия не­сколько различаются по смыслу. Параллельное программирование — это абст­рактный процесс разработки программ, которые потенциально могут исполнять­ся параллельно, вне зависимости от программно-аппаратной среды. Иными словами, предполагается, что каждая задача реализуется на собственном вирту­альном процессоре. С другой стороны, мультипрограммирование представляет собой практический способ исполнения нескольких программ на одном цент­ральном процессоре или в распределенной вычислительной системе. Параллель­ное программирование более трудоемко, чем последовательное, поскольку спо­собности человека следить за развитием связанных процессов и исследовать их взаимодействие ограничены.

Программирование в реальном времени основано на параллельном программиро­вании и включает в себя технику повышения эффективности и скорости исполнения программ — управление прерываниями, обработку исключений и непосредственное использование ресурсов операционной системы. Кроме того, программы реального времени требуют специальных методов тестирования.


Дата добавления: 2018-04-04; просмотров: 694; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!