
- •Системное по. Цели, задачи, классификация
- •Операционная система. Основные функции ос. Структура операционной системы.
- •Общая характеристика операционных систем Microsoft: семейства dos, Windows
- •Интерфейс прикладных программ (api). Apidos (программные прерывания) и Win32
- •Дисковая подсистема в архитектуре ibmpc
- •Низкоуровневая организация дисковой памяти. Сервис bios доступа к дисковой подсистеме.
- •Понятие файловой системы. Назначение, требования, функции. Способы организации фс.
- •Объекты файловой системы: файлы, директории, логические устройства, другие виды объектов.
- •Файловые системы на основе fat
- •X.2 Файловая система ntfs
- •Служебные структуры fat и их использование
- •Программный интерфейс файловой системы (функции для взаимодействия с фс, файлового ввода-вывода) – dos, Windows Функции общего назначения
- •Файловый ввод-вывод
- •14. Адресное пространство процесса (задачи).
- •15. Приложения Windows (Win 32), разновидности. Структура оконных приложений
- •1. Основные определения
- •2. Особенности приложений Win 32.
- •3. Событийное управление
- •4. Структура приложения
- •16. Окно Win32: назначение, виды, свойства. Оконные классы.
- •17. Создание и управление окнами.
- •18. Событийное управление в Win32. Сообщения и очереди сообщений Windows (Windowsmessages): назначение, структура, отсылка, доставка, обработка Сообщения и очереди сообщений.
- •19. Цикл обработки сообщений. Оконная процедура: назначение, выполнение, способы активизации и завершения.
- •20. Многозадачность, многозадачные операционные системы, особенности выполнения приложений в многозадачной среде. Модель многозадачности Win 32
- •21. Состояния процессов (многозадачная среда). Состояния процессов (потоков)
- •22. Многозадачность в win32. Планирование и выполнения программ в win32
- •23. Процессы win32. Атрибуты и состояния процессов. Порождение процессов и управление ими. Основы управления процессами Win32
- •24. Потоки и многопоточные приложения. Порождение потоков, состояние потоков, управление ими. Основы управления потоками Win32
- •25. Нити – альтернативное управление выполнением программы Управление нитями
- •26. Распределение времени выполнения программ в многозадачной системе. Приоритеты. Распределение времени между потоками (управление приоритетами)
- •27. Приоритеты процессов и потоков win32. Управление приоритетами.
- •28. Взаимодействие процессов/потоков, взаимное исключение, синхронизация (базовые сведения)
- •29. Реализация взаимного исключения. Механизм criticalsection.
- •30. Синхронизация при управлении процессами и потоками
- •31. Функция ожидания
- •32. Использование каналов и почтовых ящиков для обмена данными
- •33. Использование файловой системы для обмена данными
- •X.2.6. Использование сообщения wm_copydata
- •34. Графическая подсистема win32 – общая характеристика, основные принципы.
- •35. Основные объекты win32 gdi. Средства векторной и растровой графики
- •Растровая графика
- •36. Подсистема памяти. Основные задачи, функции, требования
- •37. Виртуальное адресное пространство, управление памятью.
- •38. Динамическое распределение памяти программами (heap). HeapApiWin32.
- •Функции работы с кучами (heap-область)
- •39. Подсистема памяти win32. Регионы(области) памяти. Группы функций api подсистемы памяти. Адресное пространство процесса.
- •40. Управление на уровне менеджера вирнуальной памяти. (vmm)
- •41. Отображение файлов в память Проецирование файлов в память
- •42. Системный реестр windows: назначение, организация, доступ
32. Использование каналов и почтовых ящиков для обмена данными
Неименованные транспортеры (Anonymous Pipe)
Один из классических способов взаимодействия процессов, известный еще в UNIX. С помощью функции CreatePipe процесс создает два описателя: один для чтения, другой для записи. Эти описатели аналогичны описателям файлов в том смысле, что с ними можно работать файловыми функциями ReadFile и WriteFile. Если породить дочерний процесс так, чтобы он наследовал описатели, то можно использовать описатели транспортера для взаимодействия процессов. Можно предложить следующую схему взаимодействия:
Именованные транспортеры (NamedPipes)
Аналогичны предыдущим за исключением того, что при создании транспортеру присваивается уникальное глобальное имя вида \\.\pipe\<pipename>. Процесс, породивший транспортер называется сервером. Процесс, который присоединяется к транспортеру, называется клиентом. Клиент может присоединяться к серверу, находящемуся на удаленном компьютере в сети. Для обслуживания одновременно нескольких клиентов обычно порождаются несколько потоков.
Именованный трубопровод создается функцией CreateNamedPipe, возвращающей описатель (тип HANDLE) созданного объекта. Для дальнейшего использования его необходимо открыть функцией CreateFile по данному ранее имени, либо применяя специфические функции работы с трубопроводами, например, ConnectNamedPipe или TransactNamedPipe. Созданный объект удаляется универсальной функцией CloseHandle.
Почтовые ящики (MailSlots)
Подобны именованным транспортерам, но предоставляют более простой однонаправленный интерфейс. Процесс-сервер может создать почтовый ящик и дать ему имя, глобальное в сети. Любой клиент может с помощью операций работы с файлами отправить данные в этот ящик. Сервер по мере необходимости читает переданные ему данные. Возможна также широковещательная передача информации клиентом всем серверам домена.
Почтовый ящик создается функцией CreateMailslot, причем используется имя вида \\.\mailslot\[<path>\]<slotname>, где собственно имя ящика может включать символы ‘\’, не имея соответствия в реальной структуре каталогов (т.н. псевдодиректории). Для доступа к ящику файловыми функциями его надо открыть функцией CreateFile с использованием следующих вариантов имени файла:
\\.\mailslot\<slot_name> – локальныйящик;
\\<computer_name>\mailslot\<slot_name> – удаленныйящик;
\\<domain_name>\mailslot\<slot_name> – используядоменноеимя;
\\*\mailslot\<slot_name> – используяпервичный (primary) доменсистемы.
В ящик, открытый через доменное имя, нельзя записывать более 400 байт в один прием.
Если ящик будет использоваться более чем одним процессом (владельцем), то CreateFile должен задавать флаг доступа FILE_SHARE_READ.
Созданный ящик существует до тех пор, пока существует процесс-владелец, либо пока владелец или его потомок не удалят его описатель вызовом CLOSE_HANDLE.
Сокеты (Socket).
Существующий практически во всех сетевых ОС механизм межпроцессного взаимодействия в локальных системах и в сети, предусмотренных моделью взаимодействия открытых систем (OSI). Для идентификации участника взаимодействия используются пара параметров: сетевое имя или адрес машины плюс номер порта. Адреса записываются в соответствии с требованиями одного из семейств адресов (addresses family), например, IP-адресации. Таким образом, сокеты являются программной надстройкой на унифицированном сетевом интерфейсе портов сеансового уровня модели OSI..
Сокеты обеспечивают решение практически всех задач межпроцессного (межпрограммного) взаимодействия независимо от физического размещения программ:
– взаимное обнаружение и идентификация;
– синхронизация;
– передача данных без установления соединения (пакетная, датаграммная);
– передача с установлением соединения (потоковая, виртуальный канал).
В Win 32 сокет является системным объектом, доступным посредством его описателя, тип данных SOCKET, совместим с HANDLE. Предоставляется ряд функций API для работы с ними.
socket – создание сокета. Задаются семейство адресов, тип сокета и протокол.
closesocket – закрытие сокета (действие системного объекта прекращается функцией CloseHandle).
bind – связывание сокета с ресурсом системы.
listen – включение "прослушивания" порта, что дает возможность обнаруживать запросы на соединение.
accept – подтверждение соединения.
send – посылка через сокет с установленным соединением.
sendto – посылка с явным указанием адресата. Предварительное установление соединения не требуется.
recv – прием из сокета с установленным соединением.
recvfrom – прием из сокета с явным указанием корреспондента. Предварительное установление соединения не требуется.
ioctlsocket – управление сокетом
а также вспомогательные функции для анализа текущего состояния сокета, конфигурирования, преобразования имен, адресов и форматов данных.
Пока что доп. информацию см. в MSDN и курсах "ОСиС", "ВСиС".