Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
spo_samoe.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2 Мб
Скачать
☆
  1. Файлы, проецируемые в память. Области применения. Этапы проецирования. Назначение каждого этапа, используемые функции Win32.

Файлы, проецируемые в память (с памятью которых объекты, которые расположены на диске могут быть перемещены в оперативную память без операций ввода/вывода).

Проецируемые файлы применяются для:

  • загрузки и выполнения EXE- и DLL-файлов Это позволяет существенно экономить как на размере страничного файла, так и на времени, необходимом для подготовки приложения к выполнению,

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

  • разделения данных между несколькими процессами, выполняемыми на одной машине (В Windows есть и другие методы для совместного доступа разных процессов к одним данным — но все они так или иначе реализованы на основе проецируемых в память файлов.)

Read (F, MS) – размещение F в ОП, фактически в ВАП, затем будет размещена в ОП.

Этапы:

  1. Создать (открыть) объект ядра-файл

Handle F=CreateFile(F, условие доступа, …)

  1. Создание объекта ядра «проекция файла». Система зарезервировала в ВАП участок для размещения файла.

Handle P = CreateFileMapping(Handle F, …);

  1. Выполн. проекции файла (проецировать)

pointer=MapViewOfFile(Handle P, …);

(физ.память)

  1. Обработка данных, исполн. Pointer

  2. Разорвали связь между физ.памятью и ВАП

MnMapViewOfFile(…);

  1. CloseHandle(Handle P);

  2. CloseHandle(Handle F);

(+ картинки в лк.)

  1. Динамически загружаемые библиотеки. Области применения. Основные dll ms Windows. Достоинства и недостатки dll. Создание dll.

DLL (dynamic-link library) – динамически загружаемая библиотека, позволяющая многократное использование различными программными приложениями.

Преимущества:

  1. Экономия памяти -1 DLL может быть исполнена различными приложениями, и в ОП кажд. ф-я присутствует в 1 экземпляре

  2. Упрощение локализации – добавление фраз на национ.языке

  3. Расширение функциональности приложения

  4. Разработка приложений на различных языках программирования

Недостатки:

  1. Проблема совместимости версий DLL

  2. Упадок быстродействия

Исполн. манифеста определяет, какому приложению какая соответствует:

  1. После удаления остаются DLL в памяти

Модификатор и Квалификатор используют для описания функций, чтобы они были видны

Модификатор определяет, каким образом будут задаваться имена. Имеет вид extern “с“.

Он указывает компилятору, как описать имя.

Квалификатор имеет вид _ _ declspec(dllexport)

В мастере задаются:

  1. Тип проекта Win32

  2. Тип приложения DLL

Bool WinAPI Main()

{…

}

extern “с“ _ _ declspec(dllexport) int count=0;

extern “с“ _ _ declspec(dllexport) int Add (int n)

{count +=n;

return count;

}

  1. Способы передачи данных между процессами. Схема передачи данных между процессами без использования средств ос и с использованием средств ос. Обмен сообщениями. Каналы и почтовые ящики.

Потоки одного процесса не имеют доступа к адресному пространству другого процесса. Однако существуют специализированные механизмы для передачи данных между процессами.

Некоторые из способов:

-Буфер обмена(clipboard)

-Каналы (pipes)

-Сокеты (sockets)

-Почтовые ящики (mailslots)

Pipes (каналы) – локальная сеть:

- неименованные

-именованные

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

Для создания именованного канала Pipe вы должны использовать функцию CreateNamedPipe.

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

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