
- •А.Н. Езин операционные системы
- •2009 Содержание
- •Пояснительная записка
- •Лабораторная работа № 1. Мультипрограммные вычислительные процессы Цель работы
- •Краткие теоретические сведения
- •1. Получение обобщенной информации о компонентах вычислительного процесса.
- •2. Просмотр и анализ информации о процессах и потоках.
- •3. Детальное исследование вычислительного процесса.
- •4. Управление журналами счетчиков и журналом оповещения.
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Лабораторная работа № 2. Управление процессами и потоками вWin32api. Организация взаимодействия между процессами и потоками вWin32api Цель работы
- •Краткие теоретические сведения
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Лабораторная работа № 3. Синхронизация потоков вWin32api Цель работы
- •Краткие теоретические сведения
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Лабораторная работа № 4. Управление памятью Цель работы
- •Краткие теоретические сведения
- •1. Получение обобщенной информации об использовании оперативной памяти.
- •2. Управление файлом подкачки.
- •3. Оптимизация виртуальной памяти.
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Лабораторная работа № 5. Управление виртуальной памятью вWindowsприложениях вWin32api Цель работы
- •Краткие теоретические сведения
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Лабораторная работа №6. Управление файловой системой и системой ввода/вывода Цель работы
- •Краткие теоретические сведения
- •1. Установка, диагностика работы и настройка драйверов устройств.
- •2. Управление дисками и обслуживание файловой системы.
- •3. Диагностика и мониторинг устройств компьютера.
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Лабораторная работа № 7. Управление файловой системой вWindowsприложениях вWin32api Цель работы
- •Краткие теоретические сведения
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •2. Команды управления файловой системой Windows.
- •3. Основы разработки командных (пакетных) файлов.
- •2. Использование программы Debug
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Лабораторная работа №9. Пользовательский интерфейс командной строки в Linux (Unix) Цель работы
- •Краткие теоретические сведения
- •1. Интерфейс командной строки ос Unix.
- •2. Командные файлы в Linux.
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Лабораторная работа № 10. Организация графического пользовательского интерфейса вWindowsприложениях вWin32api
- •Краткие теоретические сведения
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Лабораторная работа № 11. Организация обмена данными между приложениями вWindows
- •Краткие теоретические сведения
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •2. Защита системных файлов.
- •3. Проверка системных файлов (System File Checker).
- •4. Верификация цифровой подписи файлов.
- •5. Откат драйверов.
- •6. Безопасный режим загрузки.
- •7. Точки восстановления системы.
- •8. Резервное копирование и восстановление.
- •9. Аварийное восстановление системы.
- •10. Консоль восстановления.
- •11. Загрузочная дискета.
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Лабораторная работа №13. Системный реестр и системные службы Цель работы
- •Краткие теоретические сведения
- •1. Назначение и структура реестра.
- •2. Средства управления реестром.
- •3. Резервное копирование и восстановление реестра.
- •4. Очистка реестра.
- •5. Редактирование реестра.
- •6. Системные службы.
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Лабораторная работа №14. Обеспечение безопасности компьютерной системы Цель работы
- •Краткие теоретические сведения
- •1. Защита от вторжений. Брандмауэры.
- •2. Отключение ненужных служб.
- •3. Защита от спама.
- •4. Защита от вредоносных программ и вирусов.
- •5. Защита конфиденциальной информации.
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •План представляемого студентом отчета.
- •Материально-техническое обеспечение дисциплины
- •Литература
Лабораторная работа № 5. Управление виртуальной памятью вWindowsприложениях вWin32api Цель работы
Изучение функций управления виртуальной памятью процесса в Windows приложениях.
Изучение функций механизма отображения файлов в память в Windows приложениях.
Изучение функций управления динамически распределяемой памятью в Windows приложениях.
Овладение навыками использования функций по управлению памятью при разработке Windows приложений.
Краткие теоретические сведения
Операционные системы, основанные на Win32, реализуют три механизма управления с памятью:
виртуальная память (virtual memory) – наиболее подходящая для операций с большими массивами объектов или структур;
файлы, проецируемые в память (memory-mapped files) – наиболее подходящие для операций с интенсивными потоками данных (обычно из файлов) и для обеспечения процессам совместного доступа к данным;
кучи (heaps) – наиболее подходящие для операций с большим количеством малых объектов.
Виртуальная память процесса может находиться в одном из трех состояний:
свободная – память, которая может быть зарезервирована или размещена;
зарезервированная – память в некотором диапазоне адресов, которая зарезервирована для будущего использования (защищена от последующих запросов на выделение памяти, но остается недоступной поскольку физическая память этому диапазону адресов еще не выделена);
размещенная – память, которая была зарезервирована и которой выделена физическая память.
Адресное пространств, выделенное процессу в момент создания, практически все свободно (не зарезервировано). Чтобы воспользоваться какой-либо его частью, нужно выделить в нем определенную область – зарезервировать регион. Регион всегда состоит из целого числа страниц и начинается с 64-килобайтной страницы (по объему может быть меньше 64 Кбайт). Для использования зарезервированного региона ему нужно выделить физическую память и спроецировать ее на этот регион. Такая операция называется передачей физической памяти (размещением). Физическая память может быть передана и не всему региону, а лишь части его страниц. Если физическая память региону больше не нужна, она может быть освобождена. Региону могут быть назначены любые допустимые атрибуты защиты.
Основные функции управления виртуальной и физической памяти:
VirtualAlloc – зарезервировать или фиксировать область;
VirtualFree – освободить область или отменить фиксацию области;
VirtualProtect – изменить режим доступа к области;
VirtualQuery – узнать состояние области;
VirtualLock – сделать область резидентной в памяти (запрещает вытеснение этой области в страничный файл);
VirtualUnlock – разрешить выгрузку области в страничный файл;
Как и виртуальная память, проецируемые файлы позволяют резервировать регион адресного пространства и передавать ему физическую память. Различие между этими механизмами заключается в том, что в последнем случае физическая память не выделяется из страничного файла, а берется из файла, уже находящегося на диске. Как только файл спроецирован в память, к его данным можно обращаться так, будто он целиком в неё загружен, то есть по указателям.
Проецируемые файлы применяются в следующих случаях:
загрузка и выполнение EXE- и DLL- файлов. Это позволяет существенно экономить как на размере страничного файла, так и на времени, необходимом для подготовки приложения к выполнению;
организация доступа к файлу данных, размещенному на диске. При этом можно исключить операции файлового ввода-вывода и буферизацию его содержимого;
разделение данных между несколькими процессами, выполняемыми на одной машине.
Для того, чтобы спроецировать на адресное пространство процесса файл данных нужно выполнить следующие операции: создать или открыть объект ядра «файл», идентифицирующий дисковый файл, который предполагается использовать, как проецируемый в память; создать объект ядра «проекция файла»; указать системе, как спроецировать в адресное пространство процесса объект «проекция файла» - целиком или частично.
Закончив работу с проецируемым в память файлом, следует выполнить следующие операции: отменить проецирование на адресное пространство процесса объекта ядра «проекция файла»; закрыть объект «проекция файла»; закрыть объект «файл».
Функции механизма отображения файла в память:
CreateFile – открыть или создать файл;
CreateFileMapping – выделить адресное пространство виртуальной памяти для отображения открытого файла, то есть создать проекцию файла;
MapViewOfFile – спроецировать файл или его часть на адресное пространство процесса;
MapViewOfFileEx – то же;
OpenFileMapping – получить доступ к проекции файла, созданном в другом процессе;
FlushViewOfFile – записать на диск все измененные страницы;
UnmapViewOfFile – отключить файл от адресного пространства процесса;
CloseHandle – закрыть проекцию файла либо файл.
Куча (динамически распределяемая область памяти) – это регион зарезервированного адресного пространства. Первоначально большей его части физическая память не передается. По мере того как программа занимает эту область под данные, специальный диспетчер, управляющий кучами (heap manager), постранично передает ей физическую память из страничного файла. При освобождении блоков в куче диспетчер возвращает системе соответствующие страницы физической памяти. Преимущество динамически распределяемой памяти заключается в том, что она позволяет игнорировать гранулярность выделения памяти и размер страниц и сосредоточиться непосредственно на задаче. Кучи часто используются для обработки списков и деревьев. Недостатком куч является более медленное выделение и освобождение памяти.
Основные функции по управлению динамически распределяемой области памяти:
HeapCreate – создать кучу;
HeapAllocate – выделить блок памяти в куче;
HeapReAllocate – изменить размер блока памяти в куче;
HeapFree – освободить блок памяти в куче;
GetProcessHeap – получить дескриптор кучи процесса;
GlobalAlloc – выделить блок памяти (из кучи процесса);
GlobalReAlloc – изменить размер блока памяти;
GlobalSize – возвратить размер блока памяти;
GlobalLock – зафиксировать блок памяти;
GlobalUnlock – снять фиксацию блока памяти;
GlobalFree – освободить блок памяти.
Информацию о памяти можно получить вызовом функций GetSystemInfo и GlobalMemoryStatus.