Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DiVM / OSISP / ОCиСП-Часть2 / Теория / Теория (ОСиСП).doc
Скачиваний:
32
Добавлен:
11.05.2015
Размер:
5.47 Mб
Скачать

Глава 7 Планирование потоков, приоритет и привязка к процессорам 131

Приостановка и возобновление потоков 133

Приостановка и возобновление процессов 134

Функция Sleep 135

Переключение потоков 136

Определение периодов выполнения потока 136

Структура CONTEXT 139

Приоритеты потоков 143

Абстрагирование приоритетов 144

Программирование приоритетов 148

Динамическое изменение уровня приоритета потока 151

Подстройка планировщика для активного процесса 152

Программа-пример Scheduling Lab 154

Привязка потоков к процессорам 155

Глава 8 Синхронизация потоков в пользовательском режиме 159

Атомарный доступ: семейство Inferlockect-функций 160

Кэш-линии 165

Более сложные методы синхронизации потоков 167

Худшее, что можно сделать 168

Критические секции 169

Критические секции: важное дополнение 173

Критические секции и спин-блокировка 175

Критические секции и обработка ошибок 176

Несколько полезных приемов 177

Глава 9 Синхронизация потоков с использованием объектов ядра 181

Wait-функции 183

Побочные эффекты успешного ожидания 185

События 187

Программа-пример Handshake 191

Ожидаемые таймеры 192

Ожидаемые таймеры и АРС-очередь 196

И еще кое-что о таймерах 198

Семафоры 199

Мьютексы 201

Отказ от объекта-мьютекса 202

Мьютексы и критические секции 203

Программа-пример Queue 204

Сводная таблица объектов, используемых для синхронизации потоков 206

Другие функции, применяемые в синхронизации потоков 207

Асинхронный ввод-вывод на устройствах 208

Функция WaitForlnputldle 208

Функция MsgWaitForMultipleObjects(Ex) 209

Функция WaitForDebugEvent 209

Функция SignalObjectAndWait 210

Глава 10 Полезные средства для синхронизации потоков 211

Реализация критической секции: объект-оптекс 212

Программа-пример Optex 214

Создание инверсных семафоров и типов данных, безопасных в многопоточной среде 215

Программа-пример lnterlockedType 220

Синхронизация в сценарии "один писатель/группа читателей" 220

Программа-пример SWMRG 222

Реализация функции WaitForMultipleExpressions 223

Программа-пример WaitForMultExp 225

ГЛАВА 11 Пулы потоков 230

Сценарий 1: асинхронный вызов функций 231

Сценарий 2: вызов функций через определенные интервалы времени 233

Программа-пример TimedMsgBox 237

Сценарий 3: вызов функций при освобождении отдельных объектов ядра 238

Сценарий 4; вызов функций по завершении запросов на асинхронный ввод-вывод 240

ГЛАВА 12 Волокна 241

Работа с волокнами 242

Программа-пример Counter 244

ЧАСТЬ III УПРАВЛЕНИЕ ПАМЯТЬЮ 247

ГЛАВА 13 Архитектура памяти в Windows 247

Виртуальное адресное пространство процесса 247

Как адресное пространство разбивается на разделы 248

Раздел для выявления нулевых указателей (Windows 2000 и Windows 98) 249

Раздел для совместимости с программами DOS и 16-разрядной Windows (только Windows 98) 249

Раздел для кода и данных пользовательского режима (Windows 2000 и Windows 98) 250

Закрытый раздел размером 64 Кб (только Windows 2000) 252

Раздел для общих MMF (только Windows 98) 252

Раздел для кода и данных режима ядра (Windows 2000 и Windows 98) 252

Регионы в адресном пространстве 253

Передача региону физической памяти 254

Физическая память и страничный файл 254

Физическая память в страничном файле не хранится 257

Атрибуты защиты 258

Защита типа «копирование при записи» 259

Специальные флаги атрибутов защиты 260

Подводя итоги 260

Блоки внутри регионов 264

Особенности адресного пространства в Windows 98 271

Выравнивание данных 277