Лекція 25. Програма і процес — не одне й те саме
Лекція 25. Програма і процес — не одне й те саме
Section titled “Лекція 25. Програма і процес — не одне й те саме”Рівень 5: Оператор операційної системи
Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.
Що ми сьогодні розкриємо
Section titled “Що ми сьогодні розкриємо”- відрізняти файл програми від запущеного процесу
- зрозуміти PID
- знайти власний Python-процес у Linux
Зв’язок з попередніми лекціями
Section titled “Зв’язок з попередніми лекціями”У цій лекції ми використаємо поняття програми з лекції 8, щоб зрозуміти, чим програма відрізняється від запущеного процесу.
Програма — рецепт на диску, процес — виконання зараз
Section titled “Програма — рецепт на диску, процес — виконання зараз”Файл game.py може лежати на SSD і нічого не робити. Коли ти запускаєш python3 game.py, ОС створює процес — живий екземпляр виконання з власним станом, пам’яттю та ідентифікатором.
Один файл програми можна запустити кілька разів — з’являться кілька процесів.
PID — номер процесу
Section titled “PID — номер процесу”ОС дає процесам числові ідентифікатори — PID. Це дозволяє інструментам говорити саме про потрібний процес, навіть якщо кілька програм мають схожі назви.
Процеси приходять і йдуть
Section titled “Процеси приходять і йдуть”Процес має життєвий цикл: створюється, виконується, може чекати введення або ресурсу, а потім завершується. Після завершення програма-файл залишається на диску.
stateDiagram-v2
[*] --> Створення: запуск програми
Створення --> Виконання
Виконання --> Очікування: чекає вводу або ресурсу
Очікування --> Виконання: ресурс доступний
Виконання --> Завершення: програма закінчила роботу
Завершення --> [*]
Приклади
Section titled “Приклади”Приклад 1
Section titled “Приклад 1”program.py — файл. python3 program.py — команда запуску, після якої з’являється процес Python.
Приклад 2
Section titled “Приклад 2”Якщо відкрити два вікна калькулятора, це можуть бути два окремі процеси однієї програми.
Приклад 3
Section titled “Приклад 3”ps показує процеси, а top — динамічний список активності системи.
Linux-лабораторія: знайди живу програму
Section titled “Linux-лабораторія: знайди живу програму”Створи:
import timeprint("Я працюю 60 секунд")time.sleep(60)У першому терміналі:
python3 sleeper.pyУ другому:
ps aux | grep '[s]leeper.py'Знайди PID. Дочекайся завершення й повтори пошук: процес має зникнути, а файл sleeper.py — залишитися.
Місія для Марка
Section titled “Місія для Марка”Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.
- створи й запусти
sleeper.py - знайди його PID через
ps - перевір, що після завершення процес зникає
- перевір, що сам файл лишився
- запусти два екземпляри одночасно й перевір, чи мають вони різні PID
Перевір себе
Section titled “Перевір себе”- Чим програма відрізняється від процесу?
- Що таке PID?
- Чи може одна програма мати кілька процесів?
- Що стається з файлом після завершення процесу?
- Яка команда дозволяє переглядати процеси?
Терміни однією фразою
Section titled “Терміни однією фразою”- Програма — файл із інструкціями, що лежить на диску.
- Процес — запущений, «живий» екземпляр програми зі своєю пам’яттю та станом.
- PID (Process ID) — унікальний числовий номер процесу.
- Життєвий цикл процесу — створення → виконання → завершення.
ps— команда перегляду процесів.top— команда динамічного перегляду активності системи.
Чек-лист перед наступною лекцією
Section titled “Чек-лист перед наступною лекцією”- Чи можеш ти пояснити різницю між програмою та процесом?
- Чи знаєш ти, як переглянути процеси за допомогою
psтаtop? - Чи розумієш ти, що таке PID та життєвий цикл процесу?
Що потрібно винести з лекції
Section titled “Що потрібно винести з лекції”- файл програми — збережені інструкції, процес — їхнє активне виконання
- кожен процес має PID
- ОС керує життєвим циклом багатьох процесів
Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.