Skip to content

Лекція 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 “Процеси приходять і йдуть”

Процес має життєвий цикл: створюється, виконується, може чекати введення або ресурсу, а потім завершується. Після завершення програма-файл залишається на диску.

stateDiagram-v2
    [*] --> Створення: запуск програми
    Створення --> Виконання
    Виконання --> Очікування: чекає вводу або ресурсу
    Очікування --> Виконання: ресурс доступний
    Виконання --> Завершення: програма закінчила роботу
    Завершення --> [*]

program.py — файл. python3 program.py — команда запуску, після якої з’являється процес Python.

Якщо відкрити два вікна калькулятора, це можуть бути два окремі процеси однієї програми.

ps показує процеси, а top — динамічний список активності системи.

Linux-лабораторія: знайди живу програму

Section titled “Linux-лабораторія: знайди живу програму”

Створи:

sleeper.py
import time
print("Я працюю 60 секунд")
time.sleep(60)

У першому терміналі:

Terminal window
python3 sleeper.py

У другому:

Terminal window
ps aux | grep '[s]leeper.py'

Знайди PID. Дочекайся завершення й повтори пошук: процес має зникнути, а файл sleeper.py — залишитися.

Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.

  1. створи й запусти sleeper.py
  2. знайди його PID через ps
  3. перевір, що після завершення процес зникає
  4. перевір, що сам файл лишився
  5. запусти два екземпляри одночасно й перевір, чи мають вони різні PID
  • Чим програма відрізняється від процесу?
  • Що таке PID?
  • Чи може одна програма мати кілька процесів?
  • Що стається з файлом після завершення процесу?
  • Яка команда дозволяє переглядати процеси?
  • Програма — файл із інструкціями, що лежить на диску.
  • Процес — запущений, «живий» екземпляр програми зі своєю пам’яттю та станом.
  • PID (Process ID) — унікальний числовий номер процесу.
  • Життєвий цикл процесу — створення → виконання → завершення.
  • ps — команда перегляду процесів.
  • top — команда динамічного перегляду активності системи.

Чек-лист перед наступною лекцією

Section titled “Чек-лист перед наступною лекцією”
  • Чи можеш ти пояснити різницю між програмою та процесом?
  • Чи знаєш ти, як переглянути процеси за допомогою ps та top?
  • Чи розумієш ти, що таке PID та життєвий цикл процесу?

Що потрібно винести з лекції

Section titled “Що потрібно винести з лекції”
  • файл програми — збережені інструкції, процес — їхнє активне виконання
  • кожен процес має PID
  • ОС керує життєвим циклом багатьох процесів

Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.