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

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

  • первый поток ядра операционной системы

читает данные из входного буфера В1 и записывает их в общую память М;

  • второй поток ядра читает данные из общей

памяти М и записывает их в буфер B2.

Пользовательские потоки Т1 и T2 посредством вызова функций ядра операционной системы имеют доступ к буферам В1 и В2 соответственно. Поэтому пересылка данных из потока Т1 в поток Т2 происходит следующим образом:

  • пользовательский поток Т1 записывает

данные в буфер В1, используя специальную функцию ядра операционной системы;

  • поток К1 ядра операционной системы

читает данные из буфера В1 и записывает их в общую память М;

  • поток K2 ядра операционной системы

читает данные из общей памяти М и записывает их в буфер В2;

  • пользовательский поток T2 читает данные

из буфера B2.

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

  1. Работа со списками управления доступом на низком уровне

При работе со списком управления доступом на низком уровне сам список хранится в непрерывной области памяти, которая структурирована следующим образом. Начинается список управления доступом с заголовка, за которым следуют элементы, контролирующие доступ к объекту. Заголовок списка управления доступом имеет следующую структуру:

typedef struct _ACL {

BYTE AclRevision; // версия списка управления доступом

BYTE Sbzl; // равен О

WORD AclSize; // длина списка управления доступом в байтах

WORD AceCount; // количество элементов в списке

WORD Sbz2 ; // равен О

} ACL;

Также определяется тип:

typedef ACL *PACL;

В настоящее время версия списка управления доступом определяется символической константой acl_revision, которая и должна быть установлена

В ПОЛе AclRevision.

Система безопасности операционной системы Windows 2000 поддерживает следующие три типа элементов, которые могут храниться в списках управления доступом любого охраняемого объекта:

□ access_allowed_ace — разрешает доступ к объекту, хранится в списке DACL;

□ access_denied_ace — запрещает доступ к объекту, хранится в списке DACL;

□ system_audit_ace — обеспечивает генерацию аудиторской записи при доступе к объекту, хранится в списке SACL

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