
- •Операционные системы и их интерфейсы.
- •Графические ос
- •Речевые ос
- •Динамически подключаемые библиотеки.
- •Потоки и процессы.
- •Локальная память потока
- •Потоки в 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
- •Операционные системы и их интерфейсы.
Локальная память потока
Динамическая локальная память потока (thread local storage, TLS) представляет собой массив указателей, доступ к которым осуществляется через индексы при помощи специальных функций Win32 API. Этот массив указателей
автоматически поддерживается операционной системой для каждого потока и содержит, по меньшей мере, tls_minimum_available указателей. Порядок
работы с локальной памятью потока следующий:
□ распределение указателя;
□ работа с указателем;
□ освобождение указателя.
Прежде чем использовать какой-либо указатель, его нужно распределить. Это делается при помощи функции TisAiioc. После распределения
указателя для каждого потока становится доступной своя копия этого указателя. Для работы с указателями локальной памяти потока используются функции TisSetvalue и TisGetvalue, которые соответственно записывают некоторое
значение и читают значение из локальной памяти потока. После окончания работы с указателем его нужно освободить, вызвав функцию TisFree. Если DLL (динамически подключаемая библиотека) загружается статически, то динамический вызов функций является не лучшим подходом к работе с локальной памятью потока, т. к. замедляет работу приложения. В случае статической загрузки DLL информация о необходимой локальной памяти для каждого потока может быть получена на эта[пе компиляции DLL. Для этого в компиляторе Visual C++ фирмы Microsoft введен спецификатор памяти declspec(thread), который может использоваться только с глобальными или статическими переменными. Естественно, что этот спецификатор может использоваться и в обычных программах, но там его использование не имеет смысла, т. к. в этом случае в каждом потоке можно определить локальные переменные как в обычных функциях. Если спецификатор declspec (thread) используется при объявлении некоторой переменной, то система создает отдельный экземпляр этой переменной для каждого потока приложения, в котором используется эта переменная. Память, выделяемая под такие переменные, называется статической локальной памятью потока.
Потоки в Windows.
Потоком в Windows называется объект ядра, которому операционная система выделяет процессорное время для выполнения приложения. Каждому потоку принадлежат следующие ресурсы:
□ код исполняемой функции;
□ набор регистров процессора;
□ стек для работы приложения;
□ стек для работы операционной системы;
□ маркер доступа, который содержит нформацию для системы безопасности.
Все эти ресурсы образуют контекст потока в Windows. Кроме дескриптора каждый поток в Windows также имеет свой идентификатор, который уникален для потоков выполняющихся в системе. Идентификаторы потоков используются служебными программами, которые позволяют пользователям системы отслеживать работу потоков.
В операционных системах Windows различаются потоки двух типов:
□ системные потоки;
□ пользовательские потоки.
Системные потоки выполняют различные сервисы операционной системы и запускаются ядром операционной системы. Пользовательские потоки служат для решения задач пользователя и
запускаются приложением. В работающем приложении различаются потоки двух типов:
□ рабочие потоки (working threads);
□ потоки интерфейса пользователя (user interface threads).
Рабочие потоки выполняют различные фоновые задачи в приложении.
Потоки интерфейса пользователя связаны с окнами и выполняют обработку сообщений, поступающих этим окнам. Каждое приложение имеет, по крайней мере, один поток, который называется первичным (primary) или главным
(main) потоком. В консольных приложениях это поток, который исполняет функцию main. В приложениях с графическим интерфейсом это поток, который исполняет функцию WinMain.