
- •1. Определение ос. Функции ос. Процессы и потоки. Классификация ос. История развития.
- •1.1 Определение ос.
- •Уровни вс.
- •Микроархитектура.
- •Машинный язык.
- •Системное и прикладное по.
- •1.2 Основная функция ос.
- •Основные ресурсы вс.
- •Дополнительная функция ос.
- •1.3 Мультипрограммирование.
- •Процессы и потоки.
- •Варианты мультипрограммирования.
- •Приоритетное обслуживание.
- •Динамический приоритет.
- •Поддержка многопользовательского режима.
- •Многопроцессорная обработка.
- •Виды мультипроцессирования.
- •Системы пакетной обработки.
- •Системы разделения времени.
- •Системы реального времени.
- •Гибридные системы.
- •Структурная организация операционных систем.
- •Монолитная структура.
- •Многоуровневая структура.
- •Понятие ядра.
- •Модульное ядро.
- •Микроядро.
- •Достоинства и недостатки микроядра.
- •Ооп: достоинства и недостатки.
- •1.5 Эволюция операционных систем. Появление ос.
- •Первый “баг”.
- •Этапы эволюции.
- •1 Этап (1940-60).
- •2 Этап (1965-75).
- •3 Этап (1970-80).
- •4 Этап (1980-90).
- •5 Этап (1990 – …).
- •2. Операционная система ms Windows 2000 и выше. Общая характеристика и основные функции. Структура ms Windows 2000-2003. Объекты в ms Windows 2000-2003.
- •2.2 Основная характеристика Windows 2000-2008.
- •2.3 Архитектура ос Windows 2000-2003. Краткая характеристика.
- •Структура ядра.
- •2.4 Объекты Windows 2000-2008.
- •Назначение объектов.
- •Типы объектов Windows 2000-2008.
- •Структура объектов Windows 2000-2003.
- •Удержание объектов.
- •Учет использования ресурсов.
- •Защита объектов.
- •Избирательный доступ.
- •3. Основы файловых систем. Файлы и их атрибуты. Каталоги. Логическая организация фс. Логическая, физическая организация файлов. Кэширование. Raid - системы.
- •4. Основы файловых систем. Файлы и их атрибуты. Каталоги. Логическая организация фс. Логическая, физическая организация файлов. Способы учёта свободного дискового пространства.
- •3.1 Основы файловых систем.
- •3.2, 3.3 Файлы и их атрибуты. Каталоги.
- •3.4 Логическая организация фс.
- •3.5 Логическая, физическая организация файлов.
- •3.6 Кэширование.
- •Кэширование диска.
- •3.7 Raid - системы.
- •Raid - 0.
- •Raid - 1.
- •Raid - 4.
- •Raid – 5.
- •Сравнение raid-систем.
- •5. Файловые системы fat и fat32. Структура логического диска. Элемент каталога. Логическая, физическая организация файлов. Хранение длинных имён. Raid – системы.
- •5.1 Файловая система fat16.
- •5.2 Структура логического диска fat.
- •5.3 Элемент каталога fat16.
- •5.4 Логическая организация данных.
- •Фрагментация и дефрагментация.
- •Размеры разделов и кластеров fat16 для Windows 95-2000.
- •Файловая система vfat.
- •Long File Names.
- •Элемент каталога vfat.
- •Пример длинного имени.
- •6.1 Файловая система ntfs.
- •6.2 Тома ntfs.
- •6.3 Mft и ее структура.
- •6.4 Атрибуты файлов.
- •6.5 Хранение файлов.
- •6.6 Сжатие файлов.
- •6.7 Защита целостности данных.
- •6.8 Дополнительные возможности.
- •7. Сравнение структуры логического диска fat32 и тома ntfs . Функции win32 api для работы с файлами.
- •8. Сравнение структуры логического диска Fat32 и тома ntfs. Варианты организации асинхронной работы с файлами.
- •7.1 Файловая система ntfs vs. Fat.
- •7.2 Функции win32 api для работы с файлами.
- •9. Методы распределения памяти с использованием дискового пространства. Стратегии управления виртуальной памятью.
- •Классификация методов распределения памяти.
- •9.1 Методы распределения памяти с использованием дискового пространства.
- •Страничное распределение.
- •Сегментное распределение.
- •Сегментно-страничное распределение.
- •9.2 Стратегии управления виртуальной памятью (свопинг).
- •Понятие «trashing».
- •10. Архитектура памяти ms Windows 2000. Менеджер вп. Виртуальное ап. Средства защиты памяти. Страничное преобразование. Реализация свопинга в ms Windows 2000-2003.
- •Архитектура api управления памятью.
- •11. Архитектура памяти ms Windows 2000-2003. Организация «статической » виртуальной памяти. Блоки адресов. Состояния блоков адресов. Функции Win32 api.
- •12. Архитектура памяти в ms Windows 200-2003. Организация «динамической» виртуальной памяти. Назначение и преимущество по сравнению с кучами ansi c. Функции Win32 api.
- •13. Архитектура памяти в ms Windows 2000-2003. Проецируемые файлы, назначение и использование. Функции Win32 api.
- •Проецируемые файлы.
- •14. Объекты управления центральным процессором и объединения ресурсов в ms Windows 2000-2003. Атрибуты процессов и потоков. Классы приоритетов.
- •14.1, 14.2 Управление центральным процессором и объединение ресурсов.
- •Атрибуты процессов и потоков.
- •Объекты Windows .
- •Процессы.
- •Потоки.
- •Задание (job).
- •Волокна (fibers).
- •14.3 Классы приоритетов.
- •15. Общие принципы диспетчеризация (планирование загрузки) в ms Windows 2000-2003. Классы приоритетов. Относительные приоритеты. Динамическое изменение приоритетов.
- •15.1 Общие принципы диспетчеризация (планирование загрузки) в ms Windows 2000-2003.
- •Планирование загрузки однопроцессорной системы.
- •15.3 Относительные приоритеты потоков.
- •15.4 Динамическое изменение приоритетов.
- •16. Граф состояний потоков в ms Windows 2000-2003. Поток простоя. Принципы адаптивного планирования.
- •16.1 Граф состояний потоков в ms Windows 2000.
- •16.2 Поток простоя.
- •16.3 Принципы адаптивного планирования.
- •17. Граф состояний потоков в ms Windows 2000-2003. Особенности планирования в многопроцессорных системах.
- •17.2 Особенности планирования в многопроцессорных системах.
- •18. Граф состояний потоков в ms Windows 2000-2003. Особенности планирования в ос ms Windows Vista и Server 2008.
- •18.2 Особенности планирования в ос ms Windows Vista и Server 2008.
- •19. Планирование загрузки процессорного времени в ms windows 2000-2003. Функции win 32 api создания и завершение процессов и потоков, управление потоками
- •20. Планирование загрузки процессорного времени в ms windows 2000-2003. Функции win 32 api создания и завершения потоков.
- •Управление потоками.
- •21. Критические секции и состязания. Семафоры, Мьютексы. Задача о читателях и писателях. Предотвращение критических ситуаций и средства синхронизации процессов
- •23. Синхронизация потоков с использованием объектов ядра ms Windows 2000-2003. Основные принципы синхронизации. События. Семафоры. Функции win 32 api.
- •24. Синхронизация потоков с использованием объектов ядра ms Windows 2000-2003. Основные принципы синхронизации. Таймеры ожидания. Мьютексы. Функции win 32 api.
- •25. Межпроцессорное взаимодействие. Передача информации в ms Windows 2000-2003. Анонимные каналы. Почтовые ящики. Функции win 32 api.
- •26. Межпроцессорное взаимодействие. Передача информации в ms Windows 2000-2003. Именованные каналы. Почтовые ящики. Функции win 32 api.
Отдельные состояния страниц:
Valid – страница используется процессом. Она реально существует в ОП и помечена в PTE как присутствующая в рабочем множестве процесса (P=1, D=0,1).
Modified – содержимое страницы было изменено (D=1). В PTE страница помечена как отсутствующая (P=0) и переходная (T=1).
Standby – содержимое страницы не изменялось (D=0). В PTE страница помечена как отсутствующая (P=0) и переходная (T=1).
Free – страница, на которую не ссылается ни один PTE. Страница свободна, но подлежит обнулению, прежде чем будет использована.
Zeroed – свободная и обнуленная страница, пригодная к непосредственному использованию любым процессом.
Bad – страница, которая вызывает аппаратные ошибки и не может быть использована ни одним процессом.
T
D
P
Page state
0
-
0
Invalid page (Free)
-
0
1
Valid page
-
1
1
Valid dirty page
1
0
0
Invalid page in transition (Standby)
1
1
0
Invalid dirty page in transition (Modified)
Реализация свопинга:
11. Архитектура памяти ms Windows 2000-2003. Организация «статической » виртуальной памяти. Блоки адресов. Состояния блоков адресов. Функции Win32 api.
Работа приложений с виртуальной памятью:
Резервирование и выделение памяти производится блоками. Начальный адрес блока должен быть выровнен на границу 64K (округляется вниз), а размер кратен размеру страницы (округляется вверх). При выделении память обнуляется.
Блок адресов в адресном пространстве процесса может находиться в одном из трех состояний:
Выделен (committed) – блоку адресов назначена физическая память либо часть файла подкачки.
Зарезервирован (reserved) – блок адресов помечен как занятый, но физическая память не распределена.
Свободен (free) – блок адресов не выделен и не зарезервирован.
Функции API для работы виртуальной памятью:
Для резервирования региона памяти в адресном пространстве процесса или выделения ее используется функция VirtualAlloc, а для освобождения – функция VirtualFree. Для работы в адресном пространстве произвольного процесса необходимо использовать функции VirtualAllocEx и VirtualFreeEx.
Выделенные страницы можно заблокировать в памяти, т.е. запретить их вытеснение в файл подкачки. Для этих целей служит пара функций VirtualLock и VirtualUnlock. Процессу не разрешается блокировать более 30 страниц.
Для изменения атрибутов защиты регионов используются функции VirtualProtect и VirtualProtectEx. Причем, первая позволяет изменять атрибуты защиты в адресном пространстве текущего процесса, а вторая – произвольного.
LPVOID VirtualAlloc (
LPVOID lpAddress, // адрес, по которому надо зарезервировать
// или выделить память
DWORD dwSize, // размер выделяемого региона
DWORD flAllocationType, // тип распределения памяти
DWORD flProtect // тип защиты доступа
);
LPVOID VirtualAllocEx (
HANDLE hProcess, // дескриптор процесса
LPVOID lpAddress, // адрес, по которому надо зарезервировать
// или выделить память
DWORD dwSize, // размер выделяемого региона
DWORD flAllocationType, // тип распределения памяти
DWORD flProtect // тип защиты доступа
);
Функции API для работы с ВП: VirtualAlloc
Параметр flAllocationType может принимать следующие значения:
MEM_RESERVE - резервирует блок адресов без выделения памяти;
MEM_COMMIT - отображает ранее зарезервированный блок адресов на физическую память или файл подкачки, выделяя при этом память. Может комбинироваться с флагом MEM_RESERVE для одновременного резервирования и выделения;
MEM_TOP_DOWN - выделяет память по наибольшему возможному адресу. Имеет смысл только при lpAddress = NULL. В Windows 95 игнорируется.
MEM_DECOMMIT - освободить выделенную память;
MEM_RELEASE - освободить зарезервированный регион. При использовании этого флага параметр dwSize должен быть равен нулю.
Параметр flProtect - тип защиты доступа выделяемого региона:
PAGE_READONLY - допускается только чтение;
PAGE_READWRITE - допускается чтение и запись;
PAGE_EXECUTE - допускается только выполнение;
PAGE_EXECUTE_READ - допускается исполнение и чтение;
PAGE_EXECUTE_READWRITE - допускается выполнение, чтение и запись;
PAGE_GUARD - дополнительный флаг защиты, который комбинируется с другими флагами. При первом обращении к странице этот флаг сбрасывается и возникает исключение STATUS_GUARD_PAGE. Этот флаг используется для контроля размеров стека с возможностью его динамического расширения;
PAGE_NOCACHE - запрещает кэширование страниц. Может быть полезен при разработке драйверов устройств (например, данные в видеобуфер должны переписываться сразу, без кэширования).
BOOL VirtualFree (
LPVOID lpAddress, // адрес региона, который надо освободить
DWORD dwSize, // размер освобождаемого региона
DWORD dwFreeType // тип освобождения
);
dwSize – размер, если мы будем использовать тип освобождения, как MEM_RELEASE, то размер должен быть установлен в 0.
dwFreeType – будет определять какая операция произойдет с памятью:
MEM_RELEASE – освобождена;
MEM_DECOMMIT – зарезервирована, но не используется.
При успешном выполнении функция вернет TRUE в случае успеха и FALSE - в случае неудачи.
BOOL VirtualFreeEx (
HANDLE hProcess, // дескриптор процесса
LPVOID lpAddress, // адрес региона, который надо освободить
DWORD dwSize, // размер освобождаемого региона
DWORD dwFreeType // тип освобождения
);
Для изменения атрибутов защиты регионов используются функции VirtualProtect и VirtualProtectEx.
VirtualProtect позволяет изменять атрибуты защиты в адресном пространстве текущего процесса.
VirtualProtectEx позволяет изменять атрибуты защиты в адресном пространстве произвольного процесса.
BOOL VirtualProtect (
LPVOID lpAddress, // адрес региона для установки флага DWORD dwSize, // размер региона DWORD flNewProtect, // флаг
PDWORD lpflOldProtect // адрес для сохранения старых флагов
);
Функция VirtualLock() позволят предотвратить запись памяти на диск.
BOOL VirtualLock (
LPVOID lpAddress, // адрес начала памяти
SIZE_T dwSize // количество байтов
);
Если фиксация больше не нужна, то ее можно убрать функцией VirtualUnlock().
BOOL VirtualUnlock (
LPVOID lpAddress, // адрес начала памяти
SIZE_T dwSize // количество байтов
);
При успешном выполнении обе функции возвращают ненулевое значение.
Функции VirtualQuery и VirtualQueryEx позволяют определить статус указанного региона адресов.
Процессу не разрешается блокировать более 30 страниц.
Для настройки рабочего множества процесса может использоваться и функция SetProcessWorkingSetSize, которая может снять это ограничение.
SetProcessWorkingSetSize позволяет задать для процесса минимальный и максимальный размер рабочего множества процесса.
BOOL SetProcessWorkingSetSize (
HANDLE hProcess, // дескриптор процесса
DWORD dwMinimumWorkingSetSize, // мин. размер рабочего мн-ва процесса, в байтах
DWORD dwMaximumWorkingSetSize // макс. размер рабочего мн-ва процесса, в байтах
);
Если и dwMinimumWorkingSetSize и dwMaximumWorkingSetSize имеют значение – (минус) 1, функция временно урезает рабочее множество процесса до нуля. Это, по существу, выносит процесс за пределы физической оперативной памяти.
Аналогичный результат достигается с помощью функции EmptyWorkingSet.
Дескриптор процесса должен иметь права доступа PROCESS_SET_QUOTA.
Если значения dwMinimumWorkingSetSize или dwMaximumWorkingSetSize больше, чем текущий размер рабочего множества памяти процесса, данный процесс должен иметь привилегию SE_INC_BASE_PRIORITY_NAME.
Получение справочной информации по ВП процесса:
GetProcessWorkingSetSize – получение текущих значений минимального и максимального размера рабочего множества процесса.
GetProcessMemoryInfo – получение расширенной статистики по использованию ВП процесса, например:
количество страничных прерываний;
текущий и пиковый размер рабочего множества процесса;
текущее и пиковое использование файла подкачки.