МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра БІТ
З В І Т
до лабораторної роботи №5
з курсу: «Операційні системи»
на тему «Робота з процесами ОС GNU/LINUX»
Варіант № 20
Львів 2023
Мета роботи: набути базових навиків роботи з процесами в ОС GNU/Linux. Ознайомитись із порядком створення, розгалуження, виконання, зупинки та завершення процесів; навчитися аналізувати ієрархію процесів, встановлювати пріоритет виконання, створювати групи процесів.
Теоретичні відомості
Процеси – це одна з найбільш фундаментальних абстракцій (після файлів) в UNIX-подібних операційних системах. Якщо розглядати процеси як об'єкти виконуваного коду – активної програми, що працює – вони є чимось більшим, ніж набір асемблерних інструкцій, і складаються з даних, ресурсів, внутрішнього стану і віртуального процесора. Надалі розглянемо головні складові процесу, від створення до завершення.
Принципи, що були закладені при проектуванні UNIX, з часом майже не змінились. Особливо це можна спостерігати в управлінні процесами, саме тут проявляється далекоглядність початкової концепції UNIX. Так в концепції UNIX створення нового процесу відділяється від завантаження нового бінарного образу. Хоча в більшості випадків ці дії виконуються спільно, поділ дозволяє експериментувати і відкриває широкі можливості для розвитку кожної задачі. Таким чином, ця концепція (яка доволі рідко зустрічається) збереглася до наших днів, в той час як більшість операційних систем пропонують один системний виклик для запуску однієї програми, в UNIX потрібні два: fork і ехес.
Бінарний модуль - це скомпільований, виконуваний код, що знаходиться в якому-небудь сховищі даних, наприклад на диску. Щодо нього можна також використовувати термін «програма»; великі й значні бінарні модулі часто називають додатками (applications). І /bin/ls і /usr/bin/X11 є бінарними модулями. Процесом є програма, що запущена на виконання. Процес включає в себе бінарний образ, що завантажується в пам'ять, і ресурси його виконання: віртуальну пам'ять, ресурси ядра, наприклад відкриті файли, а також запуск одного або декількох потоків. Потік - це одна з дій всередині процесу. Кожний потік має власний віртуальний процесор, що включає в себе стек, стан процесора, наприклад регістри, а також командні покажчики.
Якщо в процесі тільки один потік, то процес і є потоком, у нього тільки один екземпляр віртуальної пам'яті і один віртуальний процесор. В багатопотокових процесах потоків декілька. Віртуальна пам'ять зв’язана з процесом, тому всі потоки одночасно використовують один і той самий адресний простір пам'яті.
Порядок виконання роботи
1. Перегляньте список процесів користувача (Вас).
/
2. Перегляньте повний список процесів, запущених у системі. При цьому гарантуйте збереження інформації від зникнення з екрана (якщо процесів багато). Зверніть увагу на ієрархію процесів. Простежте через поля PID і PPID всю ієрархію процесів тільки що запущеної Вами команди, починаючи з початкового процесу init. Зверніть увагу на формування інших полів виводу.
/
/
3. Запустіть ще один командний інтерпретатор. Перегляньте повний список процесів, запущених вами, при цьому зверніть увагу на ієрархію процесів і на їхній зв'язок з терміналом. Використовуючи команду kill, завершіть роботу в цій оболонці.
/
4. Перегляньте список задач у системі і проаналізуйте їхній стан.
/
5. Запустіть фоновий процес командою find / -name "*.c" -print > file 2> /dev/null &
/
6. Визначте його номер. Відправте сигнал призупинення процесу. Перегляньте список задач у системі і проаналізуйте їхній стан. Продовжіть виконання процесу. Знову перегляньте список задач у системі і проаналізуйте його зміну. Переведіть процес в активний режим, а потім знову у фоновий. Запустіть цей процес із пріоритетом 5.
/
/
/
7. Виведіть на екран список усіх процесів, запущених не користувачем root.
/
8. Організуйте вивід на екран календаря року через 1 хвилину після поточного моменту часу.
/
9. Організуйте періодичне (щоденне) видалення в домашньому каталозі усіх файлів з розширенням *.bak і *.tmp.
/
/
Висновки
Лабораторна робота з процесами в операційній системі GNU/Linux дозволила набути базові навички роботи з процесами. Я ознайомився з створенням, розгалуженням, виконанням, зупинкою та завершенням процесів. Також я вивчив аналіз ієрархії процесів, встановлювали пріоритет виконання і створювали групи процесів. Ці навички є важливими для роботи з операційною системою Linux та управління процесами у ній.