Mikroprocesory - Skripta
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
Problém nastává při multiprogrammingu, kdy je v operační paměti umístěno více procesů
(proces = běžící program). Předpokládejme, že máme v paměti dva procesy – proces A a proces
B, kterým je střídavě přidělován procesor. Když proces A provádí V/V operaci, je procesor
přidělen procesu B, a naopak, když proces B provádí V/V operaci je procesor přidělen procesu
B (princip multiprogrammingu). Kromě procesů A a B je v operační paměti umístěn i operační
systém. Pro jednoduchost předpokládejme, že programy byly přeloženy tak, aby používaly
paměťový prostor v rozsahu 0 až 0x0FFFFF.
Dva procesy však nelze umístit na stejná paměťová místa. To by při zavádění do paměti
program, který by byl zaváděn jako druhý, přepsal instrukce a proměnné programu, který byl
zaveden jako první. Jednotlivé procesy musíme při zavádění umístit do různých oblastí paměti
– paměťových prostorů, které se vzájemně nepřekrývají. Např. proces A bude mít paměťový
prostor 0 – 0x0FFFFF a proces B paměťový prostor 0x100000 – 0x1FFFFF. Samotný proces
A by běžel bez problémů, ale pokud proces B vykoná např. instrukci skoku JMP 0x080000,
skočí do paměťového prostoru procesu A. Pokud bude se na adrese 0x080000 nacházet číslo,
které může procesor interpretovat jako operační znak (ve skutečnosti se však může jednat o
data procesu A), vykoná instrukci začínající na adrese 0x080000, jinak se vyvolá výjimka
neplatná instrukce. Obdobně pokud bude instrukce procesu B zapisovat např. na adresu
0x002000, přepíše data nebo instrukci procesu A. Problém lze řešit třemi způsoby: