Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpora_ROD_1.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

1 31 6 Типы операций:

Type(1) -> type(1)

Type(2)->type(2)

Type(3)->type(1)

21

41

Type(4)->type(2)

7 1

Type(5)->type(1)

Type(6)->type(1)

51

Type(7)->type(2)

Type(8)->type(1)

87 1

Рис. 4. Цепочечное планирование ASAP; t(1)= t(3)= t(5)= t(6)= t(8)=1; t(2)= t(4)= t(7)=2; tstep=2; общее время решения задачи 6 единиц (при простом планировании 8 единиц)

Билет №20

1. Задача минимизации ресурсов при заданном времени реализации плана

2. Таблица виртуальных функций

Реализация позднего связывания. Позднее связывание выполняется компилятором. Он устанавливает необходимый механизм при обработке чисто виртуальных функций и абстрактных базовых классов. Для каждого класса, содержащего виртуальные функции, создается таблица vtbl. В класс неявно включается указатель pInterface, указывающий на таблицу vtbl объекта класса.

Таблица виртуальных функций. Определяя чисто абстрактный базовый класс, мы фактически определяем структуру некоторого блока памяти. Все реализации чисто абстрактных базовых классов являются блоками памяти однотипной структуры. Пусть Iopers – интерфейс, объявляющий три чисто виртуальные функции:

interface Iopers {

virtual void __stdcall operT1(int, int, int*) = 0;

virtual void __stdcall operT2(int, int, int*) = 0;

virtual void __stdcall operT3(int, int, int*) = 0;

};

Реализация интерфейса Iopers выполняется посредством класса Copers:

class Copers : public Iopers {

public:

virtual void __stdcall operT1(int a, int b, int *c) { accum =a+b; *c=accum; }

virtual void __stdcall operT2(int a, int b, int *c) { accum =a-b; *c=accum; }

virtual void __stdcall operT3(int a, int b, int *c) { accum =a*b; *c=accum; }

Copers () : accum(0) {}

~Copers () {}

int accum;

};

Пусть функция main создает два компонента класса Copers:

void main() {

Copers *pC1=new Copers;

Copers *pC2=new Copers; …

}

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

В таблице vtbl размещаются адреса всех виртуальных функций класса, при этом первые три элемента vtbl являются общими для всех интерфейсов СОМ. Они содержат адреса реализации трех функций-членов класса IUnknown.

Задача - Дать пример DEF файла

Создание файла DEF. Главным содержимым файла с расширением .def является имя динамической библиотеки и состав экспортируемых из нее функций. Пример файла:

LIBRARY cmpnt0.dll

DESCRIPTION '(c) BNTU 2011 ROD'

EXPORTS

CreateInstance @1 PRIVATE

В строке LIBRARY указывается фактическое имя DLL. В разделе EXPORTS перечисляются экспортируемые из нее функции. При помощи программы dumpbin.exe можно получить листинг символов, экспортированных из DLL.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]