Přístup procesů do paměti
Z MiS
(Rozdíly mezi verzemi)
(Dodán popis obecný) |
(Přepsán úvod.) |
||
Řádka 1: | Řádka 1: | ||
[[Category:VSE]][[Category:Informatika]][[Category:Procesy]][[Category:Stránky s obrázky]] | [[Category:VSE]][[Category:Informatika]][[Category:Procesy]][[Category:Stránky s obrázky]] | ||
− | == Pravidla == | + | == Pravidla pro běh více procesů == |
− | * Proces | + | * Proces nemůže a nesmí být ovlivněn činností jiných procesů. |
− | * Programátor při psaní kódu | + | * 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 | + | * 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 [[Plánování procesů | 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 == | == Přístup procesu do paměti == |
Verze z 6. 10. 2020, 08:17
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í).