Přístup procesů do paměti
Z MiS
Obsah |
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ší.
Postup při práci s pamětí
- Ř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á).
- Při práci s operační pamětí proces vždy odkazuje na adresu ve své virtuální paměti.
Na schématu dále je virtuální paměť jednotlivých procesů znázorněna modrými sloupci. U každého sloupce je uvedeno číslo procesu (PID) procesu, jemuž tato virtuální paměť patří.
- Přístup do operační paměti nemůže proces řešit přímo, ale vždy musí využít služeb operačního systému.
Toto omezení je řešeno přímo na úrovni hardware procesoru:
- Procesor má při provádění instrukcí procesu informaci o tom, zda se jedná o běžný proces, nebo zda se jedná o systémový proces — součást jádra operačního systému. Podle toho procesor řeší požadavky na práci s operační pamětí odlišně. Proto žádný proces nemůže omylem ani záměrně tuto kontrolu obejít.
- Problém by mohl nastat jedině tehdy, kdy by operační systém při spouštění procesu špatně nastavil příznak a spustil běžný proces jako systémový.
- Postup při alokaci paměti
- Proces zažádá operační systém o přidělení paměti. Používá přitom adresy v&bnsp;rámci virtuální paměti (VPFN — Virtual Page Frame Number).
- Operační systém si uloží informaci:
- který proces žádal (PID)
- jakou adresu (VPFN) ve virtuální paměti chce proces obsadit,
- kam data skutečně budou zapsána ve fyzické paměti (PFN — Page Frame Number).
- Postup při čtení/zápisu z/do paměti
- Proces oznámí procesoru adresu VPFN, kterou chce použít (zapíše ji do odpovídajícího registru).
- Procesor dohledá v tabulce (kterou vytvořil operační systém) odpovídající PFN a vyzvedne/upraví data.
Schéma zápisu do paměti
- Modré sloupce — virtuální paměť procesů
- Modré sloupce reprezentují virtuální operační paměť jednotlivých procesů.
- U každého sloupce je uvedeno číslo procesu (PID), kterému daná virtuální paměť patří.
- Žlutý blok — skutečná operační paměť
- Do ní smí zapisovat pouze operační systém.
- Operační systém si v ní mimo jiné vede tabulku, pomocí které překládá požadavky procesů na práci s VPFN na skutečné adresy PFN.
- Některé paměťové bloky lze dokonce dočasně přesunout na disk (swappování) — před dalším použitím ale musí být přeneseny zpět do operační paměti.
Swappování — co když se data do (fyzické) paměti nevlezou?
- V takovém případě je třeba data procesů, které právě neběží, odložit na pevný disk — to označujeme jako swappování.
- Než budou procesy opět spuštěny, bude třeba data znovu načíst do operační paměti.
- Takto můžeme mít „uloženo v operační paměti“ více dat, než kolik je celková kapacita operační paměti.
- Nevýhody swappování
- Výrazně zpomaluje přepínání procesů a&nbps;tím i celkovou odezvu systému.
- Zabírá kapacitu pevného disku.
- To je jeden z důvodů, proč si operační systémy obvykle část kapacity (obvykle 10 %) pevného disku blokují.
- Může se vám tedy stát, že počítač odmítne vytvářet další soubory či přidávat data, i když na disku ještě zůstává třeba 8% volného místa.