Správa procesů a paměti

Správa procesů a paměti

Správa procesů, paměti a souborových systémů v operačních systémech

Operační systém (OS) je prostředník mezi hardwarem a aplikacemi. Zajišťuje správu procesů (běh programů), správu paměti (přidělování a ochranu adresního prostoru) a správu souborového systému (organizaci dat na úložištích). Tyto tři oblasti se prolínají: plánovač procesů rozhoduje o běhu vláken, paměťový subsystém mapuje jejich adresní prostory do fyzické paměti a cache souborového systému efektivně propojuje I/O s virtuální pamětí.

Model procesů a vláken

Proces je instance programu v běhu se svým adresním prostorem, otevřenými popisovači a stavem. Vlákno je výpočetní jednotka uvnitř procesu sdílející jeho adresní prostor. Moderní OS podporují vícevláknové procesy a plánování na úrovni vláken pro lepší paralelismus na více jádrech CPU.

  • Stavy procesu: Running, Ready, Blocked (čekání na I/O, zámek), Terminated.
  • Kontext: registry, zásobník, ukazatel instrukcí, mapy paměti, deskriptory souborů, signály.
  • Kontrola přístupu: UID/GID, schopnosti (capabilities), limity (např. maximální počet otevřených souborů).

Tvorba a ukončování procesů

Proces vzniká forkováním či spouštěním binárky (Unix: fork + execve, Windows: CreateProcess). Při ukončení proces vrací návratovou hodnotu a uvolní prostředky; rodič získá status voláním wait. Některé OS používají copy-on-write pro efektivní vytvoření dítěte: stránky paměti jsou sdílené dokud nedojde k zápisu.

Plánování CPU (scheduler)

Plánovač přiděluje CPU běžícím vláknům. Cíle: spravedlnost, propustnost, latence, úspora energie.

  • Preemptivní plánování: běh vlákna je přerušen časovačem (kvantum) a plánovač vybere další vlákno.
  • Algoritmy: Round-Robin, Priority Scheduling (stárnutí, aby se předešlo vyhladovění), Multilevel Feedback Queue, u Linuxu CFS (Completely Fair Scheduler) s virtuálním časem.
  • Affinity a NUMA: přiřazování vláken jádrům a uzlům paměti pro minimalizaci latencí.
  • Realtime: třídy FIFO, RR s vyšší prioritou a deterministickou latencí (omezeno rizikem vyhladovění ostatních).

Synchronizace a mezivláknová komunikace

Současné vlákna musí koordinovat přístup ke sdíleným zdrojům, aby se zabránilo race conditions a deadlockům.

  • Primitiva: mutex, spinlock, semafor, bariéra, podmínková proměnná.
  • IPC: roury (pipes), sokety, fronty zpráv, sdílená paměť, signály, RPC.
  • Vyhýbání se deadlockům: pořadí zámků, timeouty, detekce a zotavení, lock-free struktury (CAS, RCU).

Virtuální paměť: koncepty a motivace

Virtuální paměť abstrahuje fyzickou RAM a poskytuje procesům izolované adresní prostory. Umožňuje ochranu (oddělení procesů), flexibilní přidělování, memory-mapped I/O a překrývání s diskovým prostorem (swap/pagefile).

  • Adresní prostor: rozdělen na segmenty (kód, data, zásobníky, heap), mapovaný pomocí stránek.
  • Stránkování: pevné bloky (typicky 4–16 KiB) + velké stránky (2 MiB, 1 GiB) pro snížení TLB missů.
  • MMU a TLB: hardwarová podpora překladů; TLB cache zrychluje mapování virtuálních adres.

Správa stránek, přidělování a uvolňování

Jádro vede tabulky stránek (page tables) a algoritmy, které rozhodují o umísťování a vysouvání stránek.

  • Algoritmy výměny: LRU a jeho aproximace (Clock, NRU), Working Set model.
  • Overcommit: OS může „slíbit“ více paměti než je fyzicky k dispozici a spoléhat na to, že aplikace vše nealokují současně.
  • Copy-on-write: stránky sdílené do zápisu; šetří alokace při fork a mapování souborů.
  • NUMA alokace: preferenční přiřazení stránek uzlu, kde běží vlákno, pro nižší latenci.

Heap, zásobník a alokátory

Vedle stránek řeší OS/uživatelská knihovna jemnozrnnou alokaci.

  • Zásobník (stack): roste/diminuuje automaticky dle volání funkcí; chráněn guard stránkou proti přetečení.
  • Heap: spravován alokátorem (glibc ptmalloc, jemalloc, tcmalloc); strategie: buddy system, segregované třídy, slabické alokátory, per-thread cache.
  • Fragmentace: interní/externí; zmírnění pomocí slábků, compaction a zpětné vracení stránek OS.

Ochrana paměti a bezpečnost

Jádro aplikuje ochrany na úrovni stránek a segmentů pro zamezení zneužití.

  • R/W/X bity: zásada W^X (paměť není současně zapisovatelná a spustitelná).
  • ASLR: randomizace adres pro ztížení exploitu (knihovny, zásobník, heap).
  • Guard stránky a stack canary: detekce přetečení zásobníku.
  • IOMMU: izolace DMA přístupů zařízení do paměti.

Mapování souborů do paměti (mmap) a stránkovací cache

Souborový systém a virtuální paměť se potkávají v mechanismech page cache a mmap. Čtení/zápis souborů prochází cache, která ukládá často používané bloky v RAM. Memory-mapped files umožňují aplikacím přistupovat k souborům jako k paměti, čímž snižují kopírování a latenci I/O.

Architektura souborových systémů

Souborový systém (FS) organizuje data do stromu adresářů a souborů s metadaty (práva, časová razítka, odkazy). Systémová vrstva (např. VFS v Unixech) nabízí sjednocené API nad konkrétními FS (ext4, XFS, NTFS, APFS, ZFS) a nad pseudo-FS (procfs, sysfs).

  • Inody a adresáře: inod nese metadata a mapování bloků; adresáře mapují jména na inody.
  • Žurnálování: logování metadat/dat pro odolnost vůči výpadkům (journaling modes: metadata-only, ordered, writeback).
  • Kopírování při zápisu (COW): ZFS, Btrfs a APFS zapisují nové verze bloků a udržují snapshoty bez přepisování.
  • ACL a extended attributes: jemnozrnná oprávnění a rozšířená metadata.

Cache, writeback a konsistence

I/O trasa zahrnuje více úrovní cache: page cache v OS, cache řadiče disku, SSD cache (SLC/TLC), NVRAM. Writeback proces periodicky flushuje špinavé stránky na úložiště; bariéry (FUA, flush) a objednávání zápisů zajišťují konzistenci s žurnálem nebo COW schématem.

Alokace a organizace bloků

FS se snaží o lokálnost a nízkou fragmentaci:

  • Extenty: popis rozsahu po sobě jdoucích bloků místo seznamu bloků.
  • Allocators: buddy a bitmapové alokátory, zóny (XFS AG), delayed allocation (oddálené přidělení pro lepší rozložení).
  • TRIM/Discard: informování SSD o uvolněných blocích pro udržení výkonu.

Integrita, RAID a odolnost

Podkladové storage vrstvy ovlivňují spolehlivost FS.

  • RAID: 1/5/6/10/50/60 – kompromisy mezi kapacitou, výkonem a odolností; write hole řešeno cache s BBU nebo COW FS.
  • Kontrolní součty: ZFS a Btrfs validují data i metadata end-to-end a automaticky provádí self-healing (z redundance).
  • Snapshoty a klony: okamžité konzistentní body v čase; efektivní základy pro zálohování a testy.

Názvový prostor a mountování

VFS umožňuje připojit více FS do jednoho stromu. Mount namespace v kontejnerech izoluje pohled na souborový strom. Bind mounts, overlay FS (např. pro kontejnery) a network FS (NFS, SMB, 9P) rozšiřují flexibilitu.

Oprávnění a bezpečnost souborového systému

Bezpečnost se opírá o modely práv a audit.

  • POSIX práva: rwx pro uživatele, skupinu a ostatní; umask určuje výchozí práva.
  • ACL: jemnější řízení pro více subjektů; rozšíření nad POSIX či NTFS DACL.
  • Šifrování: na úrovni FS (eCryptfs, fscrypt), na úrovni bloku (dm-crypt/LUKS, BitLocker) či na aplikační úrovni.
  • Audit: auditd, USN Journal (NTFS), rozšířená metadata a logy pro forenzní analýzu.

Správa vstupně/výstupních operací (I/O) a plánování

Bloková vrstva používá fronty a plánovače (deadline, BFQ, kybernetika I/O řízení) k vyhlazení latencí a prioritizaci zátěží. Asynchronní I/O, io_uring a DMA redukují režii systémových volání a kopírování dat.

Interakce OS s úložišti: HDD vs. SSD vs. NVMe

SSD/NVMe mají vysokou paralelitu a nízkou latenci; OS využívá více front, více frontových hloubek a dotazování s minimální režií. HDD preferují sekvenční přístup; FS s delayed allocation a extentovým designem minimalizují seeky.

Propojení s kontejnery a virtualizací

Virtualizace přidává vrstvy: hypervizor plánuje vCPU nad pCPU, host OS spravuje paměť a souborový systém, zatímco hosté (VM) mají vlastní plánovače a FS. Ballooning a memory deduplication (KSM) efektivně sdílejí paměť mezi VM. V kontejnerech kernel sdílí plánovač a paměťový subsystém; izolace je zajištěna jmennými prostory a cgroups (CPU, memory, I/O).

Monitorování a ladění

  • Procesy: metriky CPU (user/system), běžící/čekající vlákna, kontextové přepínání, latence plánovače.
  • Paměť: využití RSS/VSZ, page faults (major/minor), tlak na paměť (kswapd), TLB missy.
  • Souborový systém: hit-rate page cache, špinavé stránky, IOPS/propustnost/latence, front-depth.
  • Nástroje: perf, eBPF sondy (kprobes, uprobes), iostat, vmstat, sar, strace, ftrace, Windows Performance Analyzer.

Výkonové kompromisy a anti-patterny

  • Thundering herd: příliš mnoho vláken čekajících na stejný zdroj → použít epoll/kqueue/IOCP a back-pressure.
  • Malé náhodné I/O: zhoršuje výkon HDD i SSD → batching, readahead, přeuspořádání bloků.
  • Přehnaná fragmentace heapu: stabilizovat výběrem alokátoru a poolů, recyklovat objekty.
  • Neřízené overcommitment: může vést k OOM killeru v Linuxu či drastickému swapování.

Spolehlivost, zotavení a konzistence

OS musí zachovat konzistenci po pádu: žurnálování minimalizuje fsck; COW přináší atomické snapshoty a rychlé rollbacky. Mechanismy jako watchdog, soft-lockup detekce a panic-on-oops chrání před tichými chybami.

Bezpečnostní aspekty správy procesů a paměti

  • Sandboxing: seccomp, AppArmor/SELinux, Job Objects/Integrity Levels; omezují systémová volání a oprávnění procesů.
  • Omezení zdrojů: cgroups/rlimit brání vyčerpání CPU, paměti a I/O (DoS).
  • Ochrana před ROP/JOP: DEP/NX, ASLR, Control-Flow Integrity, shadow stack.

Trendy a směřování

  • Heterogenní architektury: plánování na CPU/GPU/DPUs; offload I/O a kryptografie na smartNIC.
  • Persistní paměť: DAX a přímé mapování NVMe-over-Fabrics, nové FS optimalizované pro byte-addressable NVM.
  • eBPF-first observabilita: dynamické sondování bez změny jádra a nižší režie.

Závěr

Správa procesů, paměti a souborového systému tvoří jádro funkce operačního systému. Efektivní plánování CPU, robustní virtuální paměť a moderní souborové systémy s žurnálem či COW zajišťují výkon, spolehlivost a bezpečnost. Pochopení jejich interakcí – od page cache přes plánovač až po I/O plánování a bezpečnostní model – je klíčové pro návrh i provoz škálovatelných a odolných systémů.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *