- •Призначення та основні функції операційної системи.
- •Моделі операційних систем.
- •Класифікація операційних систем.
- •Виникнення та розвиток 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/Linux являє собою одиницю роботи обчислювальної системи, якої операційна система виділяє ресурси. З деякою мірою наближення можна визначити процес як виконувану програму. Кожен процес в системі має свій унікальний ідентифікатор процесу (PID), що цілим числом.
Кожному процесу в операційній системі відповідає запис у таблиці процесів і адресний простір процесу. Запис у таблиці процесів (і її розширення в адресному просторі процесу) містить керуючу інформацію про ресурсах, виділених процесу, і про стан процесу. Адресний простір містить коди і дані процесу.
Новий процес породжується системним викликом fork, який створює дочірній процес - копію батьківського. У нащадку виконується та ж програма, що і в батьківському, і коли дочірній процес починає виконуватися, він виконується з точки повернення з системного виклику fork. Системний виклик fork возвращает батьківського процесу PID дочірнього процесу, а дочірнього процесу - 0. За кодом повернення виклику fork дочірній процес може "усвідомити себе як дочірній. Свій PID процес може отримати при допомогою системного виклику getpid, а PID батьківського процесу - за допомогою системного виклику getppid. Якщо потрібно, щоб у нащадку виконувалася програма, відмінна від програми батьківського процесу, процес може змінити виконувану в ньому програму за допомогою одного з системних викликів сімейства exec. Всі виклики цього сімейства download для виконання в процесі програму з заданого в виклик файлу і відрізняються один від одного способом передачі параметрів цієї програмі.
Поняття процесу з позиції концепції багатопотокового виконання.
Потоком (потік керування, нитка, thread) називанють набір послідовно виконуваних команд процесора, які використовують загальний простір процесу. Оскільки в системі може одночасно бути багато потоків, завдання ОС є організація перемикання процесора між ними і планування їхнього виконання. У багатопроцесорних системах код окремих потоків може виконуватися на окремих процесорах. Таким чином, процесом називають сукупність одного або декількох потоків і захищеного адресного простору, у якому ці потоки виконуються. Захищеність адресного простору процесу є його найважливішою характеристикою. Код і дані процесу не можуть бути прямо прочитані або перезаписані іншим процесом; у такий спосіб захищаються від богатьох програмних помилок і спроб несанкціонованого доступу. Природно, що неприпустимим э тыльки прямий доступ (наприклад, запис у пам’ять за допомогою простої інструкції перенесення даних); обмін даниими між процесами принципово можливий, але для цьго мають бути використані спеціальні засоби, які називають засобами міжпроцесової взаємодії. Такі засоби складніше за прямий доступ і працюють повільніше, але при цьому забезпечують захист від випадкових помилок у разі доступу до даних.
Поняття про життєвий цикл процесу.
Життєвий цикл процесу в ОС UNIX може бути розбитий на кілька станів. Перехід з одного стану в інше відбувається в залежності від настання певних подій в системі. Можливі наступні стани процесу: Процес виконується в режимі користувача. При цьому процесором виконуються прикладні інструкції даного процесу. Процес виконується в режимі ядра. При цьому процесом виконуються системні інструкції ядра від імені процесу. Процес не виконується, але готовий до запуску, як тільки планувальник вибере його (стан runnable). Процес знаходитися в черзі на виконання і володіє всіма необхідними йому ресурсами, крім процесора. Процес перебувати в стані сну (asleep), очікуючи недоступного в даний момент ресурсу, наприклад завершення операції вводу-виводу. Процес повертається з режиму ядра в режим задачі, але ядро перериває його і виробляє перемикання контексту для запуску більш пріоритетного процесу. Процес тільки що створений системним викликом fork і знаходиться в перехідному стані: він існує, але не готовий до запуску і не перебувати в стані сну. Процес виконав системний виклик exit і перейшов в стан зомбі (zombie, defunct). Як такого процесу не існує, але залишаються записи, що містять код повернення і тимчасову статистику його виконання, доступну для батьківського процесу. Цей стан є кінцевим в життєвому циклі процесу.
