Keď počúvaš hudbu, sťahuješ súbor a píšeš správy súčasne, zdá sa, že počítač robí tri veci naraz. V skutočnosti sa jedná o šikovný trik operačného systému nazývaný multitasking.
Čo je multitasking?
Multitasking (viacúlohové spracovanie) je schopnosť operačného systému spúšťať viac programov „súčasne". Ak má počítač jedno jadro CPU, robí to striedaním — veľmi rýchlym prepínaním medzi programami. Pri viac jadrách môže skutočne bežať viac programov naraz (paralelne).
Na jednojadrovom CPU beží v danom okamihu vždy len jeden proces. Ale keďže prepínanie trvá mikrosekundy, pre človeka vyzerá všetko ako súčasne. Tento jav sa nazýva pseudo-paralelizmus.
Procesy a vlákna
Proces je bežiaci program. Každý spustený program je aspoň jeden proces. Proces má:
- Vlastný pamäťový priestor
- Vlastné zdroje (otvorené súbory, sieťové spojenia)
- Aspoň jedno vlákno (thread)
Vlákno je najmenšia jednotka vykonávania v rámci procesu. Jeden proces môže mať viacero vlákien, ktoré zdieľajú pamäť a môžu bežať paralelne na rôznych jadrách.
import threading
import time
def uloha(meno, dlzka):
print(f"{meno} začal")
time.sleep(dlzka)
print(f"{meno} skončil")
# Spustenie dvoch vlákien súčasne
t1 = threading.Thread(target=uloha, args=("Sťahovanie", 3))
t2 = threading.Thread(target=uloha, args=("Prehrávanie hudby", 2))
t1.start()
t2.start()
t1.join()
t2.join()
print("Všetky úlohy dokončené")
Plánovač procesov (Scheduler)
Plánovač je časť OS, ktorá rozhoduje, ktorý proces dostane čas procesora a na ako dlho.
Časové kvantum (Time Slice)
OS rozdelí čas CPU na malé úseky — kvantá (zvyčajne 10–100 ms). Každý proces dostane svoje kvantum, potom sa prepne na ďalší proces.
Čas: |--10ms--|--10ms--|--10ms--|--10ms--|
Proces: | Hudba | Prehliadač | Sťahovanie | Hudba |
Stavy procesu
Každý proces môže byť v jednom z troch stavov:
| Stav | Popis |
|---|---|
| Bežiaci (Running) | Práve využíva CPU |
| Pripravený (Ready) | Čaká na pridelenie CPU |
| Blokovaný (Blocked/Waiting) | Čaká na I/O (disk, sieť) |
Keď program čaká na odpoveď z internetu (napr. načítava webovú stránku), je v stave „Blokovaný" a neukladá CPU čas. OS medzitým dá CPU iným procesom — tým sa efektívne využíva výkon počítača.
Priority procesov
Nie všetky procesy sú rovnako dôležité. OS priraďuje procesom priority:
- Vysoká priorita: systémové procesy, ovládače
- Stredná: bežné aplikácie (prehliadač, Word)
- Nízka: procesy na pozadí (zálohovanie, indexovanie)
Procesy s vyššou prioritou dostávajú CPU čas častejšie.
Správca úloh
Správca úloh (Task Manager — Windows, Activity Monitor — macOS) zobrazuje všetky bežiace procesy, ich využitie CPU, RAM a disku. Môžeš tam nájsť a ukončiť zamrznutý program.
Ak nútene ukončíš proces cez Správcu úloh, stratíš všetky neuložené zmeny v danom programe. Vždy najskôr skús normálne zavrieť program tlačidlom „X". Ak nereaguje, až potom ho ukonči násilne.
Cvičné príklady
Vysvetli rozdiel medzi skutočným paralelizmom (na viacjadrovom CPU) a pseudo-paralelizmom (na jednojadrovom CPU).
Zobraziť odpoveď
Proces sťahovanie súboru čaká na odpoveď zo servera. V akom stave sa nachádza a čo robí CPU počas tohto čakania?