
- •Призначення та основні функції операційної системи.
- •Моделі операційних систем.
- •Класифікація операційних систем.
- •Виникнення та розвиток Unix - подібних систем.
- •Принципи структуризації побудови ос.
- •Підходи до архітектурної ос.
- •Основні функціональні підсистеми сучасних ос.
- •Підсистема управління пам'яттю
- •Апаратна підтримка функціонування ос.
- •Призначення та принципи роботи основних функціональних підсистем.
- •Інтерфейс системних викликів, статичні та динамічні бібліотеки.
- •Процес. Дескриптор процесу. Створення та завершення процесів.
- •Порядок запуску програм засобами базового інтерфейсу управління процесами.
- •Основні можливості та функції базового інтерфейсу управління процесами.
- •Ідентифікатор процесу. Основні атрибути процесу. Оперування атрибутами процесу.
- •Організація взаємодії між батьківським та дочірніми процесами.
- •Створення та завершення процесів. Поняття про дескриптор процесу.
- •Отримання ідентифікаторів процесів. Стани процесу.
- •Загальний порядок та фізичний зміст створення нового процесу.
- •Поняття процесу з позиції концепції багатопотокового виконання.
- •Поняття про життєвий цикл процесу.
- •Основні можливості та функції базового інтерфейсу управління сигналами. Диспозиція сигналу процесу.
- •Загальний порядок генерування та доставки сигналів процесу. Типи та властивості сигналів.
- •Основні можливості та функції базового інтерфейсу управління потоками.
- •Порядок створення та завершення потоків.
- •Принципи застосування базового інтерфейсу введення/виведення. Порядок роботи з файлом.
- •Основні можливості та функції стандартної бібліотеки введення/виведення.
- •Принципи застосування стандартної бібліотеки введення/виведення. Порядок роботи з файлом.
- •Поняття файлу. Типи файлів. Дані та метадані файлу.
- •Особливості застосування базового інтерфейсу та стандартної бібліотеки введення/виведення.
- •Загальні концепції синхронізації задач.
- •Сутність проблеми змагань між задачами. Умови виникнення змагань. Критичний код, критичний ресурс.
- •Загальні відомості про інтерфейси користувача ос.
- •Графічний інтерфейс
- •Порівняння графічного інтерфейсу та інтерфейсу командного рядка.
- •Приклади графічних середовищ користувача. Організація текстового сеансу роботи користувача.
- •Загальний порядок завантаження ос. Ланцюгове завантаження.
- •Досистемний етап завантаження.
- •Системний етап завантаження. Реалізація системного етапу завантаження Linux.
- •Процес init. Файли /etc/inittab, /etc/rc.D/rc.Sysinit.
- •Сценарії ініціалізації ос. Приклади системних демонів.
- •Командний інтерпретатор. Базовий синтаксис команд. Шаблони вибору імен файлів.
- •Багатозадачність. Види реалізації багатозадачності.
- •Операційне середовище користувача та прикладних програм. Основні елементи операційного середовища. Організація сеансу роботи користувача через інтерфейс командного рядка.
- •Інструментальні засоби програмування. Основні відомості про мови програмування.
- •Загальні відомості про особливості розробки командних сценаріїв та програм на мові, що передбачає компіляцію.
- •Компіляція та компоновка. Основні прийоми розробки початкових текстів, компіляції і компоновки програм. Статична компоновка. Динамічне зв’язування.
- •Створення та підключення бібліотек. Види бібліотек. Управління вибором способу підключення бібліотек, наявних у двох варіантах.
- •Види бібліотек та порядок створення бібліотек.
- •Поняття файлу та файлової системи. Імена файлів. Символічне посилання на файл.
- •Фізична організація файлових систем. Типи фізичної організації файлових систем. Поняття фрагментації даних.
- •Типи файлів. Власники файлів. Права доступу до файлів.
- •Основні атрибути файлів.
- •Призначення та приклади використання утиліт: mkdir, mknod, mkfifo, cp, mv, rename.
- •Типи користувачів. Облікові даних користувачів. Групи користувачів.
- •Призначення та зміст файлів, що утворюють традиційну базу обліку користувачів Unix. Псевдокористувачі.
- •Призначення та приклади застосування базових утиліт управління обліком користувачів Unix: useradd, usermod, userdel, groupadd.
- •Призначення та приклади застосування базових утиліт управління обліком користувачів Unix: groupmod, groupdel, passwd, gpasswd.
- •Програма, задача, процес. Привілейовані та непривілейовані процеси.
- •Ідентифікатор процесу. Родинні відносини між процесами.
- •Призначення та приклади застосування базових утиліт управління задачами Unix: ps, kill, nice, renice, su, sudo.
- •Поняття мережевої та розподіленої ос. Вимоги до розподілених ос.
- •Поняття обчислювального кластера. Розподілена подільна пам’ять.
- •Принципи та обмеження основних способів оповіщення задач про настання подій (синхронізації).
- •Основні програмні інтерфейси синхронізації виконання процесів.
- •Командний сценарій. Потоки введення/виведення, конвеєри.
- •Стандартне виведення
Загальні концепції синхронізації задач.
Задача – це динамічний об’єкт, який виникає в комп’ютерній системі після того, як користувач ОС вирішує запустити систему на виконання.
Запущена на виконання програма породжує в системі один або більше процесів (або задач). Синхронізація необхідна для координації порядку виконання паралельних задач.
Сутність концепції багатопотокового виконання:
Традиційні послідовні задачі розбиваються на потоки, які виконуються паралельно. Після такого розбиття послідовна задача стає процесом у сенсі концепції багатопотокового виконання;
Потоки можуть спільно використовувати ресурси, які надані процесу і частинами якого вони є.
Синхронізація задач (процесів) – це приведення двох або декількох процесів або потоків до такого їхнього протікання, коли певні стадії різних процесів здійснюються в певному порядку, або одночасно, для уникнення конкуренції потоків або взаємного блокування. Синхронізація дозволяє контролювати виконання потоків і процесів.
Властивості процесів в концепції багатопотокового виконання:
процес завжди складається принаймні з одного потоку;
процесорний час не надається процесам безпосередньо, інші ресурси (пам’ять) можуть надаватись;
процесорний час розподіляється між потоками.
Властивості потоків в концепції багатопотокового виконання:
неможливість паралельного виконання будь-яких частин потоків;
потік завжди є частиною певного процесу, або належить певному процесу;
процесорний час розподіляється безпосередньо між потоками, а не між процесами.
Синхронізація необхідна в будь-яких випадках, коли процесам, що паралельно виконуються необхідно взаємодіяти. Для її організації використовуються засоби міжпроцесорної взаємодії. Серед найбільш часто використовуваних засобів - сигнали і повідомлення, семафори, канали, пам'ять, що спільно використовується.
Сутність проблеми змагань між задачами. Умови виникнення змагань. Критичний код, критичний ресурс.
Запущена на виконання програма породжує в системі один або більше процесів (або задач). Процеси в UNIX невід'ємно пов'язані з двома найважливішими ресурсами системи - процесором і оперативною пам'яттю. Як правило, цих ресурсів ніколи не буває багато, і в операційній системі відбувається активна конкурентна боротьба за право володіння процесором і пам'яттю.
Планування процесів в UNIX засноване на пріоритеті процесу. Змагання між процесами виникають, коли планувальнику необхідно розподілити системні ресурси між процесами та визначити пріоритет кожного процесу.
Планувальник процесів, вирішує конфлікти між процесами в конкуренції за системні ресурси (процесор, пам'ять, пристрої введення / виведення). Планувальник запускає процес на виконання, стежачи за тим, щоб процес монопольно не захопив системні ресурси, що розділяються між усіма.
Планувальник завжди вибирає процес з найвищим пріоритетом. Пріоритет процесу не є фіксованим і динамічно змінюється системою в залежності від використання обчислювальних ресурсів, часу очікування запуску і поточного стану процесу. Якщо процес готовий до запуску і має найвищий пріоритет, планувальник призупинить виконання поточного процесу (з більш низьким пріоритетом), навіть якщо останній не "використав" свій тимчасовий квант.
Критичний ресурс - це ресурс, який дає обслуговування тільки одного процесу за один раз. Якщо кілька процесів хочуть використовувати критичний ресурс в режимі поділу, то їм слід синхронізувати свої дії, щоб ресурс завжди знаходився в розпорядженні не більше, ніж одного з них. Такими ресурсами можуть бути як зовнішній пристрій, так і якась змінна, значення якої може змінюватися різними процесами.
Критичний ділянку коду, або хот-спот (від англ. Hot spot - «гаряче місце» або «гаряча точка») - ділянка коду в програмі, виконання якого займає тривалий час у порівнянні з його розмірами або, що те ж саме, на нього припадає істотна частка виконаних інструкцій.