
- •1 Призначення та функції операційних систем.
- •2 Классификация ос:
- •3 Свойства ос:
- •4 Архитектура компьютерной системы Windows nt
- •5 Типы Windows-приложений:
- •6 Структура оконных вин приложений
- •7 Механизм сообщений Windows
- •8 Стандартні класи вікон у Windows.
- •10 Создание дочерних окон.
- •11 Организация адресного пространства. Виртуальная память
- •13 Страничная организация памяти в Windows
- •14.Алгоритм управления страницами
- •15. При выделении памяти необходимо учитывать следующие ограничения (принципы):
- •17.Выделение небольших блоков памяти
- •18. Механизмы работы с памятью. Использование виртуальной памяти.
- •19. Механизмы работы с памятью. Отображение файлов на память.
- •20. Механизмы работы с памятью. Использование «кучи».
- •21. Исследование виртуальной памяти. Системная информация.
- •22. Исследование виртуальной памяти. Статус виртуальной памяти.
- •23. Исследование виртуальной памяти. Определение состояния адресного пространства.
- •25 Компоненты файловой системы
- •26 Монтирование и демонтирование файловой системы
- •28 Ntfs
- •29 Поняття планування та диспетчеризації.
- •30 Алгоритм циклічного планування процесів.
- •31 Алгоритм пріоритетного планування процесів.
- •32 Алгоритм планування процесів з кількома чергами.
- •33 Алгоритм адаптивно-рефлекторного планування процесів.
- •34. Поняття політики планування процесів.
- •35. Класифікація процесів з погляду планування.
- •36. Поняття процесу. Пріоритети, порядок створення та завершення
- •37. Завдання. Обмеження, створення, статистична інформація.
- •38. Поняття потоку. Створення, призупинення, поновлення та завершення потоків.
- •39. Життєвий цикл процесу. Стан процесу. Переключення станів.
- •40. Абстрактне визначення та контекст процесу. Відносини між процесами.
- •41)Критичний ресурс. Критична секція. Використання спільної змінної.
- •42)Критичний ресурс. Критична секція. Почергове виконання критичної секції.
- •43)Критичний ресурс. Критична секція. Алгоритм Деккера.
- •44)Поняття синхронізації. Виявлення та запобігання тупиків (блокувань).
- •45)Синхронізація потоків. Функції та використання моніторів.
- •46)Синхронізація. Поняття та використання семафора для критичної секції.
- •47. Синхронізація потоків. Атомарний доступ.
- •48.Синхронізація потоків. Критична секція.
- •49. Синхронізація потоків. Функції очікування.
- •50. Синхронізація потоків. Події.
- •51. Синхронізація потоків. М’ютекси.
- •52 Синхронізація потоків. Семафори.
- •53. Понятие параллельного исполнения.
- •54 Можливості та особливості операційної системи Linux.
- •55 Особливості побудови та роботи файлових систем ос Linux.
- •56 Можливості та особливості роботи з командним рядком.
- •57. Назовите и охарактеризуйте структуру сетевых операционных систем.
- •58. Взаимодействий компонентов ос при взаимодействии компьютеров в сети.
- •59. Однорангові мережеві ос та ос з виділеними серверами.
- •60.Синхронізація. Використання семафорів для розподілу множини ресурсів
18. Механизмы работы с памятью. Использование виртуальной памяти.
Механизмы работы с памятью:
Виртуальная память (используется для работы с большими объемами памяти);
Отображение файлов на память (используется для быстрой работы с файлом, если необходимо его записиобрабатывать в произвольном порядке, для создания разделяемой памяти между процессами)№
«Кучи» (используются для выделения небольших обьемов памяти в приложении).
Использование виртуальной памяти:
Функция VirtualAlloc предназначена для выделения региона. Так как размер региона и его кратность определена гранулярность (65536), то выделять регион для области памяти размером меньше 65536 не имеет смысла.
LPVOID VirtualAlloc(
LPVOID lpAddress, //начальный адрес выделенной области
DWORD dwSize, //размер региона в байтах
DWORD flAllocationType, //тип операции выделения DWORD flProject //флаг защиты);
Возвращаемое значение:
Успех – адрес памяти.
Ошибка – NULL.
Обычно функция используется следующим образом. Сначала выделяется большой регион. Затем связывается с физической памятью один небольшой блок региона. Связь с физической памятью делается только для того участка, для которого необходимо.
Для возврата физической памяти используется функция VirtualFree.
BOOL VirtualFree(
LPVOID lpAddress, // адрес начала освобождаемой памяти
SIZE_T dwSize, // размер области
DWORD dwFreeType // определяет, какая оперция произойдет);
В процессе выполнения программы может потребовать изменение атрибутов защиты. Для изменения атрибутов защиты связанной памяти в процессе выполнения программы используется функция VirtualProtect или VirtualProtectEx (последняя функция позволяет сделать изменение для заданного процесса).
BOOL VirtualProtect(
LPVOID lpAddress, //адрес
DWORD dwSize, //размер
DWORD flNewProtect, //новый атрибут защиты
PDWORD lpflOldProtect, //адрес переменной, куда записывается старый Атрибут);
Как правило, вытесняется страница, которая наиболее долго не использовалась. Некоторые из страниц можно заблокировать функцией VirtualLock.
BOOL VirtualLock (
LPVOID lpAddress, //адрес начала области
DWORD dwSize //раз мер области);
Если для страниц задан режим PAGE_NOACCESS, блокирование невозможно. По умолчанию процесс может максимально блокировать 30 страниц.
Для разблокирования области используется функция VirtualUnlock. Заблокированные страницы автоматически разблокируются при завершении процесса.
19. Механизмы работы с памятью. Отображение файлов на память.
Механизмы работы с памятью:
Виртуальная память (используется для работы с большими объемами памяти);
Отображение файлов на память (используется для быстрой работы с файлом, если необходимо его записиобрабатывать в произвольном порядке, для создания разделяемой памяти между процессами)№
«Кучи» (используются для выделения небольших обьемов памяти в приложении).
В отличие от виртуальной памяти, которой всегда соответствует страничный файл, отображаемой памяти соответствует реальный файл. Используется при интенсивном обращении к файлу. Как только файл отображен на память, можно считать, что он весь в памяти.
Когда нужно использовать:
Загрузка и выполнение исполняемых файлов – время уменьшается за счет того, что не требуется копирование исполняемого файла в память.
Доступ к файлу как к обычной памяти – время уменьшается, так как ОС выполняет управление памятью в наиболее эффективном режиме.
Разделение данных между несколькими процессами.
Объект «Отображаемый файл File Mapping» является объектом ядра, хранится в памяти, доступной всем процессам, и может иметь имя, по которому процессы обращаются к нему.
Общий набор функций по работе с отображаемыми файлами:
Сначала файл открывается с помощью CreateFile(),
HANDLE CreateFile(
LPCTSTR lpFileName, //имя файла
DWORD dwDesiredAccess, //атрибут доступа к файлу
DWORD dwShareMode, //режим совместного использования файла
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //атрибуты защиты
DWORD dwCreationDistribution, // способ открытия файла
DWORD dwFlagsAndAttributes, //атрибут создаваемого файла
HANDLE hTemplateFile // файл шаблона, равен 0);
Если открытие прошло успешно, то идентификатором файла можно воспользоваться для создания отображенного файла CreateFileMapping(),
HANDLE CreateFileMapping(
HANDLE hFile, // дескриптор файла
LPSECURITY_ATTRIBUTES lpAttributes, // защита
DWORD flProtect, // атрибуты защиты
DWORD dwMaximumSizeHigh, // старшее слово размера
DWORD dwMaximumSizeLow, // младшее слово размера
LPCTSTR lpName // имя объекта);
После этого мы получим идентификатор отраженного файла, на основе которого мы можем проецировать файл в память с помощью функции MapViewOfFile().
LPVOID MapViewOfFile(
HANDLE hFileMappingObject, // дескриптор объекта
DWORD dwDesiredAccess, // режим доступа
DWORD dwFileOffsetHigh, // старшее DWORD смещения
DWORD dwFileOffsetLow, // младшее DWORD смещения
SIZE_T dwNumberOfBytesToMap // число отображаемых байтов);
Эта функция даст нам указатель LPVOID, который используется для последующих операций, в том числе и по отмене проецированного файла UnmapViewOfFile()
BOOL UnmapViewOfFile(
LPCVOID lpBaseAddress // начальный адрес отображаемого представления файла, отображение которого должно быть прекращено);
В том случае, если с отображенным файлом будут работать несколько приложений одно приложение создает файл проецированный на память CreateFileMaping(), а остальные открывают эту проекцию OpenFileMapping().