- •Операционные системы и их интерфейсы.
- •Графические ос
- •Речевые ос
- •Динамически подключаемые библиотеки.
- •Потоки и процессы.
- •Локальная память потока
- •Потоки в Windows.
- •Сервисы в Windows
- •7. Процессы в виндовс
- •8.Работа с сервисами виндовс
- •Синхронизация.
- •Система информационной безопасности
- •Синхронизация потоков в Windows
- •Управление безопасностью в Windows
- •3. Управляемый доступ к сети
- •13. Взаимоисключающий доступ к переменным
- •Управление пользователями
- •Управление группами
- •Структура консольного приложения
- •Работа с идентификаторами безопасности
- •19, Работа с консолью
- •20. Работа с дескрипторами безопасности
- •21. Работа с окном консоли
- •Часть III. Программирование консольных приложений
- •22. Работа со списками управления доступом на высоком уровне
- •23. Работа с буфером экрана
- •24. Работа с привилегиями
- •Ввод-вывод на консоль
- •Работа с маркерами доступа
- •Первичный маркер доступа
- •Имперсонализирующие маркер доступа
- •Передача данных
- •Работа со списками управления доступом на низком уровне
- •Работа с анонимными каналами в Windows
- •Управление безопасностью объектов на низком уровне
- •Глава 45. Управление безопасностью объектов на низком уровне 993
- •31) Работа с именованными каналами в Windows
- •32) Win32 и Win64. Программирование в среде Win64.
- •33) Работа с почтовыми ящиками в Windows
- •34) Использование файловой системы и функций символьного ввода/вывода Windows
- •35) Фреймовая обработка исключений
- •36) Усовершенствованные средства для работы с файлами и каталогами и знакомство с реестром
- •37. Финальная обработка исключений
- •38. Обработка исключений
- •39. Виртуальная память
- •40 . Управление памятью, отображение файлов и библиотеки dll
- •41. Работа с виртуальной памятью в windows
- •42.Управление процессами
- •43. Работа с кучей в Windows
- •44. Потоки и планирование выполнения
- •45. Общие концепции управления файлами
- •46. Синхронизация потоков
- •47. Работа с файлами в Windows
- •48. Влияние синхронизации на производительность и рекомендации по ее повышению
- •49) Работа с каталогами (папками) в Windows
- •50) Усовершенствованные методы синхронизации потоков
- •51) Асинхронный вызов процедур
- •52) Взаимодействие между процессами
- •53) Асинхронный доступ к данным.
- •54) Сетевое программирование с помощью сокетов Windows
- •55)Порты завершения
- •57)Работа с ожидающим таймером
- •58)Асинхронный ввод/вывод и порты завершения
- •Порты завершения ввода-вывода
- •59)Отображение файлов в память.
- •Достоинства метода. Альтернативой отображению может служить прямое чтение файла или запись в файл. Такой способ работы менее удобен по следующим причинам:
- •60)Безопасность объектов Windows
- •Операционные системы и их интерфейсы.
Передача данных
Под обменом данными между параллельными процессами понимается пересылка данных от одного потока к другому потоку, предполагая, что эти потоки выполняются в контекстах разных процессов. Поток, который посылает данные другому потоку, называется отправителем. Поток, который получает данные от другого потока, называется адресатом или получателем. Если потоки выполняются в одном процессе, то для обмена данными между ними можно использовать глобальные переменные и средства синхронизации потоков. Дело обстоит сложнее в том случае, если потоки выполняются в разных процессах — потоки не могут обращаться к общим переменным и для обмена данными между ними существуют специальные средства операционной системы. Если говорить концептуально, то для обмена данными между процессами создается канал передачи данных. Канал данных включает входной и выходной буферы памяти, потоки ядра операционной системы и общую память, доступ к которой имеют оба потока ядра. Работает канал передачи данных следующим образом:
первый поток ядра операционной системы
читает данные из входного буфера В1 и записывает их в общую память М;
второй поток ядра читает данные из общей
памяти М и записывает их в буфер B2.
Пользовательские потоки Т1 и T2 посредством вызова функций ядра операционной системы имеют доступ к буферам В1 и В2 соответственно. Поэтому пересылка данных из потока Т1 в поток Т2 происходит следующим образом:
пользовательский поток Т1 записывает
данные в буфер В1, используя специальную функцию ядра операционной системы;
поток К1 ядра операционной системы
читает данные из буфера В1 и записывает их в общую память М;
поток K2 ядра операционной системы
читает данные из общей памяти М и записывает их в буфер В2;
пользовательский поток T2 читает данные
из буфера B2.
Отсюда видно, что в любом случае обмен данными может быть организован только через цепочку взаимодействующих потоков, которые обмениваются между собой данными через общую, только для них, память.
Работа со списками управления доступом на низком уровне
При работе со списком управления доступом на низком уровне сам список хранится в непрерывной области памяти, которая структурирована следующим образом. Начинается список управления доступом с заголовка, за которым следуют элементы, контролирующие доступ к объекту. Заголовок списка управления доступом имеет следующую структуру:
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
