- •Основні концепції операційних систем. Поняття операційної системи, її призначення та функції.
- •Керування процесами і потоками. Базові поняття процесів і потоків. Процеси і потоки в сучасних ос. Моделі процесів і потоків. Складові елементи процесів і потоків.
- •3.Системний реєстр Windows xp. Логічна структура реєстру. Фізична організація реєстру. Програмний інтерфейс доступу до реєстру.
- •Основні концепції операційних систем. Операційна система як розширена машина. Операційна система як розподілювач ресурсів.
- •Логічна організація файлових систем. Загальні відомості про файлові операції. Файлові операції posix.
- •Основні концепції операційних систем. Історія розвитку операційних систем. Класифікація сучасних операційних систем.
- •Керування процесами і потоками. Створення процесів. Ієрархія процесів. Керування адресним простором під час створення процесів. Створення процесів
- •Логічна організація файлових систем. Загальні відомості про файлові операції. Файлові операції WinApi.
- •Основні концепції операційних систем. Функціональні компоненти операційних систем.
- •Керування процесами і потоками. Синхронне й асинхронне виконання процесів.
- •Логічна організація файлових систем. Організація інформації у файловій системі. Розділи. Каталоги. Зв'язок розділів і структури каталогів.
- •Архітектура операційних систем. Механізми і політика.
- •Керування процесами і потоками. Створення і завершення потоків. Особливості створення потоків
- •Міжпроцесова взаємодія на основі інтерфейсу файлової системи. Файлові блокування.
- •Архітектура операційних систем. Ядро системи. Привілейований режим і режим користувача.
- •Керування процесами і потоками. Керування процесами в unix і Linux.
- •Міжпроцесова взаємодія на основі інтерфейсу файлової системи. Файли, що відображаються у пам'ять.
- •Архітектура операційних систем. Реалізація архітектури операційних систем. Монолітні системи.
- •Керування процесами і потоками. Програмний інтерфейс керування потоками posix.
- •Міжпроцесова взаємодія на основі інтерфейсу файлової системи. Поіменовані канали
- •Архітектура операційних систем. Реалізація архітектури операційних систем. Багаторівневі системи.
- •Керування процесами і потоками. Керування процесами у Windows. Складові елементи процесу. Структури даних процесу.
- •Реалізація файлових систем. Інтерфейс віртуальної файлової системи vfs.
- •Архітектура операційних систем. Реалізація архітектури операційних систем. Системи з мікроядром.
- •Керування процесами і потоками. Керування процесами у Windows. Створення процесів. Завершення процесів.
- •Реалізація файлових систем. Файлові системи ext2fs і ext3fs.
- •Архітектура операційних систем. Реалізація архітектури операційних систем. Концепція віртуальних машин
- •Керування процесами і потоками. Програмний інтерфейс керування процесами WinАрі.
- •Реалізація файлових систем. Файлова система /ргос.
- •Архітектура операційних систем. Операційна система та її оточення. Взаємодія ос і апаратного забезпечення
- •Керування процесами і потоками. Керування потоками у Windows. Складові елементи потоку.
- •Динамічний розподіл пам'яті. Послідовний пошук підходящого блоку. Порівняння алгоритмів послідовного пошуку підходящого блоку.
- •Архітектура операційних систем. Взаємодія ос і апаратного забезпечення. Взаємодія ос і апаратного забезпечення
- •Керування процесами і потоками. Керування потоками у Windows. Створення потоків.
- •Динамічний розподіл пам'яті. Алгоритм найкращого підходящого. Алгоритм найкращого підходящого.
- •1)Архітектура операційних систем. Взаємодія ос і виконуваного програмного коду.
- •2).Керування процесами і потоками. Керування потоками у Windows.Особливості програмного інтерфейсу потоків
- •3) Динамічний розподіл пам'яті. Алгоритм першого підходящого.
- •Архітектура операційних систем. Особливості архітектури unix.
- •2.Взаємодія потоків. Основні принципи взаємодії потоків. Основні проблеми взаємодії потоків. Проблема змагання. Критичні секції та блокування. Базові механізми синхронізації потоків.
- •3.Динамічний розподіл пам'яті. Ізольовані списки вільних блоків. Проста ізольована пам'ять.
- •2.Взаємодія потоків. Семафори.
- •3.Основи технології віртуальної пам'яті
- •Взаємодія потоків. М'ютекси.
- •Основи технології віртуальної пам'яті. Фрагментація пам'яті. Логічна і фізична адресація пам'яті. Підхід базового і межового регістрів.
- •Міжпроцесова взаємодія. Види міжпроцесової взаємодії.
- •Взаємодія потоків. Умовні змінні.
- •Основи технології віртуальної пам'яті. Сегментація пам'яті. Особливості сегментації пам'яті. Реалізація сегментації в архітектурі іа-32.
- •Міжпроцесова взаємодія. Методи розподілюваної пам'яті. Методи передавання повідомлень.
- •Взаємодія потоків. Концепція монітора.
- •Основи технології віртуальної пам'яті. Сторінкова організація пам'яті. Базові принципи сторінкової організації пам'яті. Порівняльний аналіз сторінкової організації пам'яті та сегментації.
- •Міжпроцесова взаємодія. Технологія відображуваної пам'яті
- •Взаємодія потоків. Блокування читання-записування. Синхронізація за принципом бар'єра.
- •Основи технології віртуальної пам'яті. Багаторівневі таблиці сторінок. Реалізація таблиць сторінок в архітектурі іа-32
- •Взаємодія з диском підчас керування пам'яттю. Поняття підкачування. Проблеми реалізації підкачування сторінок.
- •Взаємодія з диском підчас керування пам'яттю. Заміщення сторінок. Оцінка алгоритмів заміщення сторінок.
- •Взаємодія потоків. Синхронізація процесів користувача у Linux. Ф'ютекси.
- •Керування процесами і потоками. Програмний інтерфейс керування потоками posix
- •Взаємодія з диском підчас керування пам'яттю. Алгоритм fifo. Оптимальний алгоритм.
- •Взаємодія потоків.Програмний інтерфейс взаємодії WinАрі.
- •Взаємодія з диском підчас керування пам'яттю. Годинниковий алгоритм.
- •Взаємодія потоків.Взаємодія потоків у Linux.
- •1.Взаємодія з диском підчас керування пам'яттю. Блокування сторінок у пам'яті. Фонове заміщення сторінок. Блокування сторінок у пам'яті
- •Взаємодія потоків.Взаємодія потоків у Linux.
- •Планування процесів і потоків. Види планування. Довготермінове планування. Середньотермінове планування. Короткотермінове планування. Стратегії планування.
- •Короткотермінове планування
- •Міжпроцесова взаємодія на основі інтерфейсу файлової системи. Файли, що відображаються у пам'ять.
- •Взаємодія потоків.Базові механізми синхронізації потоків.
Взаємодія потоків.Програмний інтерфейс взаємодії WinАрі.
Функції очікування
Для всіх об’єктів організація очікування зводиться до викликання потоком курування функції очікування, що приймає як параметр дескриптор об’єкта і перевіряє, чи не відбулася сигналізація цього об’єкта.
У разі невиконання умови сигналізації потік переходить у стан очікування, витрачаючи дуже мало ресурсів, доти поки сигналізація всетаки не відбудеться або поки не мине максимальний час очікування, якщо він був заданий. Для очікування сигналізації одного об’єкта у WIN32 використовують уже знайому функцію Waitforsingleobject()
Мютекси
Найпростішим синхронізаційними об’єктами із дескрипторами є мютекси. Для створення мютекса використовують функцію CreateMutex();
Імя мютекса задавати не обов’язково якщо потрібно звертатися до мютекса тільки у рамках цього процесу.
Коли мютекс зайнятий то поточний потік очікує поки його не буде звільнено. У першому він блокує мютекс у другому ні.Звільнення мютексу здійснює функція releasemutex(mutex).вони є рекурсивними.
Події засоби сигналізації об’єктів для виклику деяких дій відповіддю на події звичайно є поновлення одного або кількох потоків. Фактично події можна розуміти як спробу реалізувати функціональність умовних зиінних без інтеграції з мютексом.
3 Функціональні компоненти операційних систем
Операційну систему можна розглядати як сукупність функціональних компонен-
тів, кожен з яких відповідає за реалізацію певної функції системи. У цьому розділі
описані найважливіші функції сучасних ОС і компоненти, що їх реалізують.
Спосіб побудови системи зі складових частин та їхній взаємозв'язок визначає
архітектура операційної системи. Підходи до реалізації архітектури ОС будуть
розглянуті в розділі 2.
Білет №23
Взаємодія з диском підчас керування пам'яттю. Годинниковий алгоритм.
Годинниковий алгоритм.
(алгоритму другого шанс) наближення алгоритму LRU, - один з найефективніших реально застосовуваних алгоритмів. Його основою є наявність біта використання сторінки. Опис алгоритму. Сторінки мають бути організовані в кільцевий список (їх можна зобразити у вигляді циферблата годинника). Покажчик, який використовують під час сканування списку сторінок, ще називають стрілкою (подібно до стрілки годинника).
Спочатку беруть сторінку, що найдовше перебуває у пам'яті (як для FIFO). Якщо її біт використання (R) дорівнює 0, то сторінку негайно замінюють, помі-
щаючи на її місце нову. Якщо ж біт R дорівнює 1 (до сторінки зверталися), то
його покладають рівним 0 (начебто ця сторінка тільки що завантажена у пам'ять), і прохід за списком триває далі, поки не буде знайдена сторінка з R =
0 (а доти біт R для всіх сторінок покладають рівним 0). Знайдену сторінку замінюють, після чого для нової сторінки задають R = 1 і наставляють на неї стрілку (рис. 9.6). У найгіршому випадку (якщо для всіх сторінок біт R дорівнює одиниці) почнеться друге коло обходу списку (другий шанс) і буде замінена найстарша сторінка із тих, що були пройдені на першому колі. У цьому разі алгоритм зводиться до алгоритму FIFO.
Взаємодія потоків.Взаємодія потоків у Linux.
Взаємодія потоків у Linux
Бібліотеки підтримки потоків Linux (LinuxThreads і NPTL) надають програмам
користувача набір синхронізаційних примітивів, визначених стандартом POSIX
(м'ютекси, умовні змінні, семафори, блокування читання-записування, бар'єри).
Крім того, у NPTL допускають використання цих примітивів у поєднанні з відображуваноюабо розподілюваною пам'яттю для реалізації міжпроцесової синхронізації.Описані примітиви реалізовані на основі базових механізмів синхронізації,доступних через системні виклики (у ядрі версії 2.6 до них належать ф'ютекси).Крім того, код ядра може використовувати спеціальні механізми синхронізації,доступні тільки у ядрі.Далі розглянемо базові механізми синхронізації ядра і застосувань користувача.
Механізми синхронізації ядра Linux
Ядро Linux є реентерабельним. Це означає, що одночасно в режимі ядра може виконуватисякод кількох процесів. В однопроцесорних системах процесор у конкретниймомент виконує код тільки одного процесу, інші перебувають у стані очікування.У багатопроцесорних системах код різних процесів може виконуватисяпаралельно. Для досягнення реентерабельності всередині ядра повинна бути реалізованатака сама синхронізація, що і між потоками одного процесу. Для цьогоу ядрі передбачені механізми взаємного виключення, які забезпечують безпечнийдоступ до спільно використовуваних даних ядра.
Аналогом потоків у ядрі виступають шляхи передачі керування ядра (kernel
control paths). Таким шляхом є послідовність інструкцій, виконуваних ядром дляреалізації реакції на системний виклик або обробку переривання. Така послідовністьзвичайно зводиться до виконання кількох функцій ядра. Наприклад, дляобробки системного виклику шлях передачі керування починають з виклику функціїsystem_cal ІО і завершують викликом ret_system_call О. Надалі іноді говоритимемоне про шляхи керування, а про процеси в режимі ядра, маючи на увазі шляхипередачі керування, що відповідають системним викликам, виконаним процесами.
3.Динамічний розподіл пам'яті. Системи двійників.
Системи двійників
(buddy system), – підхід до динамічного розподілу пам'яті, який дає змогу рідше розбивати на частини більші блоки для виділення пам'яті під блоки меншого розміру, знижуючи цим зовнішню фрагментацію. Вона містить у собі
два алгоритми: виділення та вивільнення пам'яті. Розглянемо найпростішу бінарну систему двійників (binary buddy system).
У разі використання найпростішої бінарної системи двійників (binary buddy
system) пам'ять розбивають на блоки, розмір яких є степенем числа 2: 2K, L≤K≤ U, де 2L – мінімальний розмір блоку; 2U — максимальний розмір блоку (він може бути розміром доступної пам'яті, а може бути й меншим).
Білет №24
