
- •5. Хранение файлов и каталогов.
- •7. Защита целостности данных.
- •8. Дополнительные возможности ntfs.
- •7. Сравнение структуры логического диска fat (fat32) и тома ntfs.
- •10. Архитектура памяти ms Windows 2000. Менеджер вп. Виртуальное ап. Средства защиты памяти. Страничное преобразование. Реализация свопинга в ms Windows 2000-2003.
- •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. Использование локальной памяти потока. Функции Win32 api.
- •15. Архитектура памяти в ms Windows 2000-2003. Адресация расширенного адресного пространства. 64-разрядные операционные системы ms Windows.
- •16. Объекты управления центральным процессором и объединения ресурсов в ms Windows 2000-2003. Атрибуты процессов и потоков. Классы приоритетов.
- •16.1, 16.2 Управление центральным процессором и объединение ресурсов.
- •16.6 Классы приоритетов.
- •17. Общие принципы диспетчеризация (планирование загрузки) в ms Windows 2000-2003. Классы приоритетов. Относительные приоритеты. Динамическое изменение приоритетов.
- •17.1 Общие принципы диспетчеризация (планирование загрузки) в ms Windows 2000-2003.
- •17.4 Динамическое изменение приоритетов.
- •18. Граф состояний потоков в ms Windows 2000-2003. Поток простоя. Принципы адаптивного планирования.
- •18.1 Граф состояний потоков в ms Windows 2000.
- •18.2 Поток простоя.
- •18.3 Принципы адаптивного планирования.
- •19. Граф состояний потоков в ms Windows 2000-2003. Особенности планирования в многопроцессорных системах. Особенности планирования в ос ms Windows Vista и Server 2008.
- •19.2 Особенности планирования в многопроцессорных системах.
- •19.3 Особенности планирования в ос ms Windows Vista и Server 2008.
- •20. Планирование загрузки процессорного времени в ms windows 2000-2003. Функции win 32 api создания и завершение процессов и потоков, управление потоками
- •21. Атомарные операции и lockless программирование. Реализация многопоточности с
- •21.1 Атомарные операции и lockless программирование.
- •21.2 Реализация многопоточности с использованием технологии OpenMp
- •21.3 Реализация блокировок и синхронизация потоков в OpenMp
- •22. Критические секции и состязания. Семафоры, Мьютексы. Задача о читателях и писателях. Задача о философах. Взаимная блокировка (тупики).
- •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.
12. Архитектура памяти в ms Windows 200-2003. Организация «динамической» виртуальной памяти. Назначение и преимущество по сравнению с кучами ansi c. Функции Win32 api.
Кучи (heaps) – это динамически распределяемые области данных. При порождении процесса ему предоставляется куча размером 1 Мбайт по умолчанию. Ее размер может изменяться параметром /HEAP при построении исполняемого модуля. Функции библиотеки времени исполнения компилятора CRT (malloc(), free() и т. д.) используют возможности куч.
Создание дополнительных «куч»:
- для повышения эффективности управления памятью;
- для уменьшения рабочего множества процесса ;
- для повышения эффективности работы многонитевых приложений;
- для “защиты” друг от друга различных структур данных;
- для быстрого освобождение всей памяти в куче.
Повышение эффективности управления памятью:
В системах со страничной организацией отсутствует проблема фрагментации физической памяти. Однако существует проблема фрагментации адресного пространства. В 4Gb адресном пространстве эта проблема не актуальна, но она имеет значение в 1Mb куче. Если элементы какой-либо структуры имеют один размер, а элементы другой структуры - другой размер, то полезно размещать эти структуры в разных кучах.
Уменьшение рабочего множества процесса:
В соответствии с принципом локальности, работа с разными структурами, чаще всего, происходит не одновременно. Границы элементов разных структур не выровнены на границу страницы. Обращение к элементам одной структуры вызывает подкачку всей страницы, а, значит и элементов другой структуры. Это увеличивает рабочее множество процесса.
Функции создания и использования «куч»:
HANDLE GetProcessHeap (VOID ) – для получения дескриптора кучи по умолчанию;
LPVOID HeapAlloc (HANDLE hHeap, DWORD dwFlags, DWORD dwSize) – для выделения из кучи блока памяти заданного размера и возвращения указателя;
LPVOID HeapReAlloc (HANDLE hHeap, DWORD dwFlags, LPVOID lpOldBlock, DWORD dwSize) – для изменения размера выделенного блока памяти с возможностью перемещения блока при необходимости;
BOOL HeapFree (HANDLE hHeap, DWORD dwFlags, LPVOID lpMem) – для освобождения выделенного блока памяти кучи.
Создание и уничтожение «кучи»:
HANDLE HeapCreate (
DWORD dwFlags,
DWORD dwInitialSize,
DWORD dwMaximumSize
);
BOOL HeapDestroy ( HANDLE hHeap);
Создание «кучи» - dwFlags:
HEAP_GENERATE_EXCEPTIONS – указывает системе на то, что в случае возникновения ошибки необходимо генерировать исключительную ситуацию. Это будет происходить во всех случаях, когда функция должна была бы возвратить значение null.
HEAP_NO_SERIALIZE – указывает, что пока выполняется текущий вызов HeapAlloc, к куче не будут происходить обращения из других потоков (т.е. программист сам берет на себя исключение ситуаций одновременных обращений).
HEAP_ZERO_MEMORY – указывает, что выделяемая память должна инициализироваться нулями. В противном случае память не обязательно инициализируется нулями.
Дополнительные возможности по управлению «кучами»
UINT HeapCompact (HANDLE hHeap, DWORD fdwFlags);
BOOL HeapLock (HANDLE hHeap);
BOOL HeapUnlock (HANDLE hHeap);
BOOL HeapWalk (HANDLE hHeap, PPROCESS_HEAP_ENTRY pHeapEntry);