Přístup procesů do paměti
Z MiS
Pravidla pro běh více procesů
- Proces nemůže a nesmí být ovlivněn činností jiných procesů.
- Programátor při psaní kódu nemusí řešit, kolik a jakých procesů v paměti bude.
- Každý proces funguje tak, jako by byl v počítači jediný.
- Fakt, že byl proces „uspán“ a mezitím běžely jiné procesy nesmí proces nijak poznat — veškerá data, která měl k dispozici, musí zůstat stejná.
Jak data ochránit?
- Obsah registrů procesoru → uloží se do paměti
- Co se týče obsahu registrů procesoru, je situace jednoduchá.
- Při změně kontextu („přepnutí procesu“) se obsah všech registrů (řádově jsou to stovky byte) uloží na vyhrazené místo do operační paměti.
- Při přepínání procesů se hodnota registrů procesoru aktualizuje tak, aby po opětovném „probuzení“ měl proces své hodnoty registrů, které si nastavil před „usnutím“.
- Obsah operační paměti → musí zůstat
- Obsah operační paměti ale nemůžeme někam „zazálohovat“. Teoreticky by šla uložit na pevný disk, ale operační paměť má velkou kapacitu a ukládání tak velkého množství dat na disk by přepínání procesů nepřípustně zdrželo — nezapomeňte, že přepínání desítek procesů se musí stíhat tak rychle, aby si uživatel myslel, že všechny procesy běží zároveň.
- Data procesů v operační paměti tedy musí zůstat a musíme zajistit, aby žádný proces nemohl číst ani zasahovat oblast, která mu nepřísluší.
Přístup procesu do paměti
- Řešení
- Každý proces se chová, jako by měl svou virtuální paměť jen pro sebe (množství je pro daný operační systém pevně dané, programátor se tedy o množství paměti nestará).
- Každý požadavek na přístup do paměti neřeší přímo proces, ale využívá služeb operačního systému.
- Postup při alokaci paměti
- Proces zažádá operační systém o přidělení paměti.
- Operační systém si uloží informaci:
- který proces žádal (PID)
- jakou adresu (VPFN) ve své virtuální paměti chce obsadit,
- kam data skutečně ukládá ve fyzické paměti (PFN).
- Postup při čtení/zápisu z/do paměti
- Proces vyžádá od operačního systému zadanou adresu (VPFN).
- Operační systém dohledá v tabulce odpovídající PFN a vyzvedne data.
- Co když se data do (fyzické) paměti nevlezou?
- V takovém případě je třeba data odložit na pevný disk — ( swappování).