Системное программирование. Конспект лекций

       

Тема 5. Кросс-системы


Исходная вычислительная система (ВС) - та ВС, на которой программа готовится к выполнению.

Целевая ВС - та ВС, на которой программа выполняется.

Эти две ВС не обязательно совпадают. Макропроцессор, Ассемблер, Редактор Связей - программы, обрабатывающие данные. Ассемблер, например, получает на входе одни код (текст) и производит на выходе другой код (объектный модуль). При этом Ассемблер не рассматривает свой выходной код как команды именно своей ВС, это просто некоторые данные. Ничто не мешает нам сделать Ассемблер, на выходе которого будут генерироваться коды не той ВС, в которой работает Ассемблер, а некоторой другой ВС.

Системы подготовки программ, в которых исходная ВС отличается от целевой, называются кросс-системами.

Для чего может понадобиться кросс-система?

  • Часто кросс-системы применяются для разработки программного обеспечения встроенных вычислительных систем. Для встроенных ВС характерен малый объем ресурсов: ограничение оперативной памяти, возможно, отсутствие внешней памяти (программы и постоянные данные размещаются в ПЗУ), отсутствие должного набора внешних устройств. Иногда ресурсов целевой ВС просто недостаточно для выполнения на ней системного программного обеспечения подготовки программ, тем более - для выполнения интерактивных систем программирования с развитым интерфейсом пользователя.
  • При разработке новых ВС создание программного обеспечения для них ведется параллельно с разработкой аппаратной части. Подготовка и отладка программ для проектируемой ВС должна вестись, когда целевой ВС еще не существует физически.

В простейшем случае процесс подготовки программы на кросс-системе аналогичен процессу их подготовки в однородной системе.

Загрузка и выполнение должна обязательно происходить на целевой системе, а предшествующие этапы (все или некоторые) могут быть перенесены на исходную систему. Любой из файлов-результатов выполнения очередного этапа подготовки может быть перенесен из исходной системы в целевую.

Однако, такая схема не в полной мере использует возможности кросс-системы.
Важным этапом подготовки программ является их отладка. Отладка также может проводиться на кросс-системе (частично или полностью)



Для отладки программ на исходной ВС применяется программа-Интерпретатор. Интерпретатор является программной моделью целевой ВС, которая обеспечивает выполнение программ в кодах целевой ВС. Интерпретатор строится по принципу имитационной программной модели, это означает, что отдельные компоненты целевой ВС моделируются соответствующими компонентами программной модели, которые имитируют поведение реальных компонентов.

Если исходная ВС обладает большими вычислительными ресурсами, чем целевая ВС, то отладка на исходной ВС может быть более удобной и функционально более полной, чем на целевой ВС. Это, впрочем, относится и к тому случаю, когда исходная ВС не превосходит целевую по объему ресурсов. В таком случае для отладки программы все равно может быть выделено больше ресурсов (возможно, виртуальных), чем при ее выполнении.

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


  • обращение по адресу несуществующей памяти
  • попытка записи в защищенную от записи память
  • модификация программой команд и констант
  • передача управления на данные
  • выборка неинициализированных данных
  • и т.п.


Модель целевой вычислительной системы состоит из компонентов, моделирующих программно-доступные компоненты целевой ВС (т.е. такие, с которыми работают команды отлаживаемой программы) и включает в себя следующие составляющие:


  • модель регистров
  • модель оперативной памяти
  • модель процессора
  • модель системы прерывания
  • модель системы ввода-вывода.



Содержание раздела