Технологии Microsoft в теории и практике программирования


Технологии Microsoft в теории и практике программирования - стр. 50


Реализованы программные средства, позволяющие построить модель и проинтерпретировать её на инструментальной машине. Для этого применяется компилятор и линкёр, строящие первичную модель, средства захвата профилей и трасс и добавления статистических данных, полученных из них, в первичную модель.

Иерархическая модель программы определяется как набор направленных графов, где каждой функции (методу) соответствует её граф потока управления. Каждая вершина графа снабжена заполненным списком атрибутов A. В списке есть атрибут, определяющий время выполнения данной вершины. Вершина представляет собой базовый блок одного из следующих типов: линейный участок – линейная последовательность операторов Java-программы (последним оператором такого базового блока может быть оператор ветвления), вызов метода, вызов коммуникационного метода MPI, вызов служебного метода MPI, вызов метода JDK. Для каждого типа вершины время её выполнения определяется соответствующим образом. Для линейных участков кода и библиотечных функций общего вида время работы определяется заранее – например, через замер. Для коммуникационных функций MPI время работы может быть определено с помощью коммуникационной модели, такой как LogGP. Вершина отвечающая вызову пользовательской функции, получает определённый атрибут как результат символьной интерпретации этой функции.

Символьная интерпретация выполняется через построение цепочки вершин графа управления, по которым пройдёт выполнение программы. Но построение цепочки, в случае большой программы, может выполняться недопустимо долго. Для ускорения интерпретации построение цепочки необходимо сочетать со свёртками подграфов.

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

У программ, написанных на языке Java, граф потока управления сводим, что гарантирует возможность применить операции свёртки.


- Начало -  - Назад -  - Вперед -