Stack segment nebo jen stack je paměť dedikovaná podrutinám.

Nejdřív bych rád připomněl kapitolu o řetězení podrutin, konkrétně následující obrázek.

Řetězení podrutin

Call stack

Pro každé vlákno programu operační systém přiřadí call stack 1 což je jednoduše kus virtuální paměti, který se může nafukovat a zase smršťovat.

Call stack je něco jako nádoba, do které lze házet kostičky na sebe. Vyndat ale můžete jenom tu nejhornější kostičku. Tomu se také říká LIFO struktura 2 . Jednotlivým kostičkám se říká stack frame což je jen kus virtuální paměti dedikovaný pro dané volání podrutiny.

V rámci volací konvence vzniká pro každou volanou podrutinu stack frame.

Call stack

Celá věc začne dávat mnohem větší smysl s obrázkem pro řetězení podrutin.

Řetězení podrutin

⚠️ Důležité k zapamatování

  • Jakmile je podrutina dokončena, její stack frame se odstraní.
  • Jakmile skončí celé vlákno, odstraní se i celý jeho call stack.

  1. Nebo “thread stack” ale myslí se tím jedno a totéž. Do češtiny se nepřekládá. ↩︎

  2. Last In First Out - poslední uvnitř, první ven ↩︎