- •Основні концепції операційних систем. Поняття операційної системи, її призначення та функції.
- •Керування процесами і потоками. Базові поняття процесів і потоків. Процеси і потоки в сучасних ос. Моделі процесів і потоків. Складові елементи процесів і потоків.
- •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.
- •Планування процесів і потоків. Види планування. Довготермінове планування. Середньотермінове планування. Короткотермінове планування. Стратегії планування.
- •Короткотермінове планування
- •Міжпроцесова взаємодія на основі інтерфейсу файлової системи. Файли, що відображаються у пам'ять.
- •Взаємодія потоків.Базові механізми синхронізації потоків.
Архітектура операційних систем. Реалізація архітектури операційних систем. Монолітні системи.
Монолітні системи ОС, у яких усі базові функції сконцентровані в ядрі, називають монолітними системами. У разі реалізації монолітного ядра ОС стає продуктивнішою (проце сор не перемикається між режимами під час взаємодії між її компонентами), але менш надійною (весь її код виконується у привілейованому режимі, і помилка в кожному з компонентів є критичною). Монолітність ядра не означає, що всі його компоненти мають постійно перебу вати у пам'яті. Сучасні ОС дають можливість динамічно розміщувати в адресному просторі ядра фрагменти коду (модулі ядра). Реалізація модулів ядра дає можли вість також досягти його розширюваності (для додання нової функціональності досить розробити і завантажити у пам'ять відповідний модуль).
Керування процесами і потоками. Програмний інтерфейс керування потоками posix.
Керування потоками є частиною стандарту POSIX. Усі типи даних і функції, визначені стандартом, мають префікс pthread, для їхнього в Розглянемо структуру керуючого блоку процесу в Linux і відмінності його реалі-
зації у традиційних UNIX-системах [58, 95J.
Керуючий блок процесу в Linux відображається структурою даних task_struct.
До найважливіших полів цієї структури належать поля, що містять таку інформацію:
♦ ідентифікаційні дані (зокрема pid - ідентифікатор процесу);
♦ стан процесу (виконання, очікування тощо);
♦ покажчики на структури предка і нащадків;
♦ час створення процесу та загальний час виконання (так звані таймери процесу);
♦ стан процесора (вміст регістрів і лічильник інструкцій);
♦ атрибути безпеки процесу (uid, gid, euid, egid).икористання необхідно підключати заголовний файл pthread.h. Щоб додати новий потік у поточний процес, у POSIX використовують функцію pthread_create() :
#include<pthread.h>
int pthread_create(pthread_t 4h. pthread_attr_t *attr. void *(*thread_fun)(void *). void *arg):
th — покажчик на заздалегідь визначену структуру типу pthread_t, яка далі бу де передана в інші функції роботи з потоками
attr - покажчик на структуру з атрибутами потоку
thread_fun - покажчик на функцію потоку, що має описуватися як #include<pthread.h>
void *mythread_fun(void *value) { // виконання коду потоку }
arg - дані, що передаються у функцію потоку (туди вони потраплять як пара метр value).
Для завершення потоку достатньо дійти до кінця його функції потоку thread_fun() або викликати з неї pthread_exit():
void pthread_exit(void *retval);
Параметр retval задає код повернення. Наведемо приклад завершення потоку:
void *thread_fun(void *num) {
printf ("потік номер $d\n". (int)num); pthread_exit (0): }
Приєднання потоків POSIX. Для очікування завершення виконання потоків використовують функцію pthread _join(). Вона має такий синтаксис: int pthread_join(pthread_t th. void **status); Ця функція блокує потік, де вона була викликана, доти, поки потік, заданий дескриптором th, не завершить своє виконання. Потік, на який очікують, має існувати в тому самому процесі й не бути від'єднаним. Якщо status не є нульовим покаж чиком, після виклику він вказуватиме на дані, повернені потоком . Якщо потік уже завершився до моменту виклику функції pthread_join(), його інформація має бути зчитана негайно.Від'єднані потоки. Задання атрибутів потоків POSIX Для того, щоб отримати від'єднаний потік, треба задати відповідні атрибути потоку, виконавши такі дії.
Описати змінну для їхнього зберігання (атрибути потоку відображає структура даних pthread_attr_t): pthread_attr_t attr:
Ініціалізувати цю змінну так: pthread_attr_init(&attr);
Задати атрибут за допомогою виклику спеціальної функції (різним атрибутам відповідають різні функції). Для задання атрибута, який визначає, чи буде цей потік від'єднаним чи ні, ви користовують таку функцію: pthread_attr_setdetachstate(pthread_attr_t attr. int detachstate); Другим параметром може бути одне зі значень:PTHREAD_CREATE_JOINABLE (приєднуваний потік);РТНREAD_CREATE_DETACHЕD (від'єднаний потік). Ось приклад задання атрибута і його використання під час створення від'єд наного потоку: pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr. PTHREAD_CREATE_DETACHED): pthread_create(&th. &attr. ...): Завершуються такі потоки виходом із функції потоку.
