- •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.Синхронізація. Використання семафорів для розподілу множини ресурсів
45)Синхронізація потоків. Функції та використання моніторів.
Монитор используется для предотвращения взаимного исключения ,когда один ресурс одновременно может использоваться только одним процессом. Монитор – это обьект специального типа. Установка и снятие блокировки выполняется с помощью функций монитора. Функции монитора выполняются в режиме взаимного исключения. Монитор имеет функцию инициализации (формирует начальные значения внутренних переменных), блокирования (посылает сообщение модулю ОС о необходимости блокирования процесса), исправления состояния (возвращает значение, есть ли процессы, которые ждут доступа к ресурсу) и функции. Сигнализации процесса (извещает ОС об освобождении заданного ресурса). Пример использования монитора, когда каждый процесс имеет свою критическую секцию:
CSBegin()(if(!Busy)Busy = true; else CriticalSection.Wait();)
CSEnd(|(Busy == false; Critical Section.Signed();)
Структура процессов с критическими секциями:
46)Синхронізація. Поняття та використання семафора для критичної секції.
Дейкстра ввел два примитива, используемые для связи процессов. Эти примитивы оперируют неотрицательными целыми числами, которые называются семафорами. Для семафоров определены операции inc(V(S)) и dec(P(S)), которые должны быть неделимыми, то есть во время выполнения этих операций не должно быть перехода на другой процесс. P(S) соответствует выделению ресурса, V(S) – освобождению. Если несколько процессов требуют одновременного выполнения разных операций над одним и тем же семафором, то эти операции выполняются последовательно в произвольном порядке. В данном случае семафор называется двоичным семафором. Он используется как замок, который запрещает прерывание КС для выполнения такой же секции в другом процессе. Этот метод легко распространять на следующие случаи:
- количество конкурирующих процессов более двух.
- количество ресурсов более одного
Использование семафора в критической секции:
Semaphore s = 1;
// Процесс 1 // Процесс 2
P(S); P(S);
// Критическая секція // Критическая секция
… …
V(S); V(S);
47. Синхронізація потоків. Атомарний доступ.
Для атомарного доступа используется специальный класс Interlocked функций. Эти функции позволяют, например:
— изменить значение переменной, заданной своим адресом на заданную величину;
— обменять значения двух переменных, заданных своими адресами;
— проверить значение переменной и изменить его в заданном случае.
Адреса всех переменных, которые задаются в функциях этого класса, должны быть выровнены на границу 32-битного слова, т.е. быть кратными 4. Для переменных, объявленных в языке С++, это гарантируется.
Рассмотрим примеры этих функций:
1. Для присвоения заданного значения переменной в режиме эксклюзивного доступа используется функция InterlockedExchange:
LONG InterlockedExchange(
LONG volatile* Target,
LONG Value);
2. Для изменения значения переменной на постоянную величину (х += а) в режиме эксклюзивного доступа используется функция InterlockedExchangeAdd:
LONG IntertockeOExchangeAdd(
LPLONG volatile Addend,
LONG Value);
3. Для присвоения переменной значения другой переменной используется функция InterlockedExchangePointer:
PVOID InterlockedExchangePointer(
PVOID volatile* Target,
PVOID Value);
В этой функции оба параметра являются адресами переменных, исходной (Value) и результата (Target).
Пример использования функции:
volatile LONG IVar = 0;
LONG Value = 5;
lnterlockedExchangePointer( &IVar, &Value);
Функция InterlockedCompareExchange
LONG lnterlockedCornpareExchange(
LONG volatile* Destination,
LONG Exchange,
LONG Comperand);
Функция сравнивает значения Destination и Comperand. Если
Destination == Comperand, то значение Exchange записывается
в Destination, в противном случае Destination не изменяется.
