Osnova přednášky Programové prostředky řízení
n
Operační systémy I
n n
Co je operační systém? Procesy a thready Správa paměti
Pavel Balda Západočeská univerzita v Plzni, FAV, KKY
2
Úvod n
Co je operační systém?
Struktura typického počítačového systému Bankovní Bankovní Výpočetní Výpočetní systém systém systém systém Překladače Překladače
Editory Editory
Webový Webový prohlížeč prohlížeč Interpreter Interpreter příkazů příkazů
Operační Operační systém systém (často (často vv kernel/supervisor kernel/supervisor módu) módu)
Na operační systém (OS) se lze dívat dvěma způsoby: n Rozšířený stroj (extended machine), virtuální stroj (virtual machine)
Aplikační programy
n
n
Systémové programy
n
n
Strojový Strojový jazyk jazyk
(instrukce (instrukce pro pro assembler) assembler)
Mikroarchitektura Mikroarchitektura
(CPU, (CPU, registry, registry, mikroprogramy) mikroprogramy)
n
Manažer zdrojů (resource manager) n
Hardware
n
Fyzická Fyzická zařízení zařízení
(zdroj, (zdroj, integr. integr. obvody, obvody, plošné plošné spoje,…) spoje,…) 3
Zavádí abstrakci poskytovaných služeb, skrývá pro uživatele implementační detaily Sjednocuje rozhraní pro programování pomocí tzv. systémových volání Abstrakce pro příklad harddisku: otevření souboru, čtení/zápis souboru, zavření souboru Abstrakce skrývá skutečnou nízkoúrovňovou (low-level) obsluhu zařízení: interrupty, časovače, správa paměti, apod. Multiplexování v čase – sdílení jednoho zařízení více uživateli, např. přidělování CPU (Central Processing Unit) různým programům Multiplexování v prostoru – rozdělení jednoho zdroje několika programům po částech, např. přidělování paměti nebo prostoru na disku a udržování informací o tom, jakou část má který program přidělenu 4
1
Historie operačních systémů n
1. Generace počítačů (1945-1955) n
n
n
(1/3)
Historie operačních systémů n
Velmi pomalé, založené na relé a později elektronkách, zabírající několik místností, milionkrát pomalejší než nejlevnější PC, velmi poruchové Programování pomocí absolutních adres a propojovacích desek, neexistovaly žádné programovací jazyky, ani assembler. Později zavedení děrných štítků
n n
n
n
n
n
n n
n
načtení několika úloh (jobs) ze štítků na magnetickou pásku na malém (a levném) stroji přenesení pásky na větší (a drahý) počítač, spuštění úloh a zápis jejich výstupů na jinou pásku Přenesení výstupní pásky na malý počítač pro tisk výsledků na tiskárnu
n
n
n
Vznik jazyka FORTRAN, použití hlavně pro vědecko-technické výpočty, offline Programování ve FORTRANU a assembleru. Operační systémy: FMS (Fortran Monitor System) a IBSYS firmy IBM
n
5
Historie operačních systémů n
Mikroprocesory, mikropočítače, osobní počítače Zpočátku dominoval OS CP/M (Control Program for Microcomputers)
n
1980 – IBM PC
n
n
n n n
n
n
n
n n
n
n
Gary Kildall jej původně vyvinul pro Intel 8080; připojil k němu 8 palcovou disketovou mechaniku. Pak založil firmu Digital Research pro další vývoj CP/M n
n
Windows 3.11, Windows 95, 98, Millenium Windows NT, 2000, XP … - NT (New Technology). Vedoucí architekt David Cutler, který byl vývojářem VAX VMS.
Současný trend – síťové a distribuované operační systémy
7
(1 program counter)
Např. v jednom programu počítat, v druhém číst z disku ve třetím vypisovat na tiskárnu
AA BB
Toho lze dosáhnout principiálně dvěma způsoby: n
n
Přepínání procesů
Proces – abstrakce běžícího programu. Proces je klíčovým konceptem OS Moderní počítače umí dělat několik věcí „najednou“ n
Apple Macintosh – první operační systém s grafickým uživatelským rozhraním (GUI – Graphical User Interface) Windows – první verze silně ovlivněné Macintoshem, posazené na MS-DOS
Spooling (Simultaneous Peripheral Operation On Line) – jakmile probíhající job skončil, OS mohl načíst další job do uvolněné paměti a hned jej spustit Timesharing – varianta multiprogramming kde každý uživatel měl svůj terminál. Interaktivní obsluha požadavků uživatelů, práce na velkých jobech na pozadí Vznik minipočítačů (počítače řady PDP firmy DEC) Vznik operačních systémů UNIX (později z něj vyšel Linux), Systém 5 (AT&T) a BSD (Berkley Software Distribution). Systémy byly navzájem nekompatibilní, proto IEEE vyvinulo standard POSIX, který dnes splňuje většina implemenací UNIXu
Procesy n
Bill Gates licencoval IBM svůj BASIC, jako OS doporučil CP/M Kildall odmítl se setkat s IBM, poslal na schůzku svého podřízeného IBM se obrátilo na Gatese, ten koupil DOS (Disk Operating System) od Seattle Computer Products údajně za $ 50000,Pro požadované úpravy najal autora DOSu Tima Patersona do rodící se firmy Microsoft. Upravený systém byl nazván MS-DOS
Rozdělení paměti na několik oblastí, každá oblast přidělena jinému jobu (vyžaduje ochranu paměti) Pokud nějaký job čekal na vstupně-výstupní operaci (čtení dat, tisk), využíval CPU jiný job
6
(3/3)
4. Generace počítačů (1980-dnes) n
Integrované obvody, reprezentantem je řada IBM 360 Sjednocení přístupů k celé modelové řadě, stejný (přenositelný) kód, stejný OS. To vedlo k přílišné složitosti, práce tisíců programátorů v assembleru, mnoho aktualizací a oprav Multiprogramming n
Transistorové, mnohem spolehlivější Úspora času pomocí dávkového systému (batch system): n
n
3. Generace počítačů (1965-1980) n
2. Generace počítačů (1955-1965) – mainframes
(2/3)
Přepínáním mezi programy po desítkách (nebo stovkách) milisekund, tzv. pseudoparalelismus Skutečným hardwarovým paralelismem víceprocesorových systémů (multiprocessor systems), kdy více procesorů sdílí společnou fyzickou paměť
Model procesu n
n
n
Veškerý spouštěný software na daném počítači (někdy včetně OS) se skládá z několika sekvenčních procesů Proces je prováděný program, včetně aktuálních hodnot programového čítače (program counter), registrů a proměnných Multiprogramming - rychlé přepínání mezi procesy
CC D D
D C B A čas 8
2
Vytvoření procesu n
Procesy jsou principiálně vytvářeny následujícími způsoby: n
n
n
n
n
Procesy na popředí (Foreground processes) – interagují s uživatelem Procesy na pozadí (Background processes) – obvykle vykonávají v systému nějaké specifické služby, např. příjem emailu, obsluhu tisku, komunikace po síti, apod. V systémech Windows jsou službami (services), v systémech UNIX se nazývají démony (daemons)
n
n
Inicializací dávkového jobu (batch job) – jen na mainframe systémech
System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.Start("NotePad.exe“, "c:\\MujSoubor.txt");
n
n
n
n
n
10
Thready (vlákna) n
Běžící (running) – právě v daném okamžiku používá CPU Připravený (ready) – může být spuštěn, ale v daném okamžiku neběží kvůli běhu jiného procesu Blokovaný (blocked) – nemůže běžet, dokud nenastane nějaká externí událost (například čeká na vstup)
Mezi jednotlivými stavy existují následující přechody n n n n
1. 2. 3. 4.
Blokovaný Blokovaný
Běžící Běžící 3 4
n
n n n
Proces se zablokoval (požadavkem na vstup/výstup) Plánovač spustil jiný proces Plánovač spustil tento proces Proces se odblokoval (dočkal se splnění požadavku na vstup/výstup)
1
Zavoláním systémové funkce TerminateProcess() (Windows) nebo kill() (UNIX) Program, který ukončuje daný proces musí mít k tomu dostatečná oprávnění
9
Z hlediska provádění mohou být procesy ve třech stavech: n
Často způsobeno chybou programu, např. ilegální instrukcí, dělení nulou, odkazem na neexistující paměť, apod. V případě, že není taková výjimka ošetřena, je program ukončen
Ukončením jiným procesem – nedobrovolně n
Stavy procesů n
Spuštěný proces sám narazí na fatální chybu, např. překladač nenalezne překládaný soubor
Ukončení chybou – nedobrovolně n
V interaktivních systémech napsáním příkazu nebo kliknutím na ikonu
Tímto způsobem končí většina procesů poté co vykonají svou práci – funkce ExitProcess() (Windows), exit() (UNIX)
Fatální chyba – dobrovolně n
Nový proces se nazývá child process, původní parent process
Ve Windows Win32 API se procesy vytváří voláním funkce CreateProcess() s deseti parametry! Win32 obsahuje cca 100 funkcí pro práci s procesy Příklad vytvoření procesu v C# n
Normální ukončení (exit) – dobrovolně n
Požadavkem uživatele na vytvoření nového procesu n
n
Každý proces jednou skončí, jedním z následujících způsobů:
Vykonáním systémového volání pro vytvoření procesu běžícím procesem n
n
n
Při inicializaci (boot) systému – typicky je vytvořeno několik procesů n
n
Ukončení procesu
n
n
Procesy mají v tradičních OS svůj adresový prostor a v něm běží jedna posloupnost instrukcí (thread of control). Často se vyskytují situace, kdy by bylo vhodné v jednom adresovém prostoru kvazi paralelně spouštět více posloupností instrukcí, jako by byly samostatné procesy (až na sdílený paměťový prostor) Takový „odlehčený“ proces (lightweight process) se nazývá thread Multithreading označuje možnost spouštění více threadů v jednom procesu Příklad: a) tři procesy, každý s jedním threadem, b) jeden proces se třemi thready Největší výhoda threadů: jednoduché vytvoření (cca 100x rychlejší než u procesu) a velká výkonnost Pozn.: Přesněji by thread měl být překládán jako nit. Vlákno, tj. fiber je něco trochu jiného! Proces1 Proces2 Proces3
2
Thready
Připravený Připravený 11
Proces
Thready
Jádro Jádro OS OS (Kernel) (Kernel)
Jádro Jádro OS OS (Kernel) (Kernel)
a)
b)
12
3
Data procesů a threadů n
n
Thready spolupracují v rámci procesu, proto jsou některá data dostupná v celém procesu, některá vlastní pouze v daný thread Položky sdílené všemi thready procesu: n n n n n n n
n
Komunikace mezi procesy (a thready)
Adresovací prostor (address space) Globální proměnné (global variables) Otevřené soubory (open files) Dceřiné procesy (child processes) Obsluhované alarmy (pending alarms) Signály a obslužné funkce signálů (signals and signal handlers) Statistické informace (accounting information)
n
n n n
n n
Položky soukromě vlastněné každým threadem n n n n
Procesy často potřebují komunikovat s jinými procesy = Inter-Process Communication
Poslední dva body lze aplikovat i na thready Race Conditions – přístup ke sdílené paměti ze dvou a více procesů/threadů bez koordinace! n
Čítač instrukcí (program counter) Registry (registers) Zásobník (stack) Stav (state)
Přenos informací z jednoho procesu do druhého Synchronizace přístupu ke sdíleným datům Synchronizace běhu (např. čekání jednoho procesu na data vyráběná jiným procesem)
n
Jaké situace mohou nastat? Jak je řešit? Proces Proces AA
Sdílená paměť
Proces Proces BB 13
14
Kritická sekce
Zamykání (Lock) proměnných Proces 1
1 n
Jak se vyhnout race conditions? n n n
n
n
Zakázáním přístupu ke sdíleným datům více než jednomu procesu v daném čase Potřebujeme mechanismus „vzájemné výlučnosti“ (mutual exclusion) Části programu, kde se přistupuje ke sdíleným datům se říká kritická sekce (critical section) nebo kritická oblast (critical region)
n n
n
Korektní a účinné řešení vyžaduje splnění následujících podmínek: n n n n
Předpokládejme, že budeme čekat na opuštění kritické sekce v cyklu
Žádné dva procesy nesmějí být současně ve svých kritických sekcích Nejsou třeba žádné předpoklady o rychlosti a počtu CPU Žádný proces běžící mimo svou kritickou sekci nemůže blokovat jiné procesy Žádný proces by neměl čekat věčně na vstup do své kritické sekce
n
n
n n
Proces A
n
B se pokouší vstoupit do kritické sekce
B vstupuje do kritické sekce
B opouští kritickou sekci
T2 B je blokován T3
T4
n
čas 15
1. Je spuštěn Proces 1, který chce vstoupit do kritické sekce 2. Po otestování proměnné lock je plánovačem odstaven 3. Je spuštěn Proces 2. Vstoupí do kritické sekce (v lock je 0) 4. V kritické sekci Procesu 2 dojde k odstavení Procesu 2 a spuštění Procesu 1, který také vstoupí do kritické sekce!!!
Vzniklou situaci lze řešit instrukcí „Test and Set Lock“ n
Proces B T1
n
Mějme sdílenou proměnnou lock, nastavenou v inicializaci na 0 Chce-li proces vstoupit do kritické sekce, otestuje nejprve proměnnou lock Je-li 0, nastaví ji na 1 a vstoupí do kritické sekce. Při ukončení své kritické sekce vrátí proces hodnotu na 0 Je-li 1 (v kritické sekci je jiný proces), počká proces na shození 2 hodnoty na 0.
lock==0 + lock=1
–
Kritická sekce lock=0
Může však nastat situace z obrázku: n
A vstupuje do kritické sekce A opouští kritickou sekci
Nekritický kód
TSL RX,LOCK Čte obsah paměti z proměnné LOCK do registru RX a nastaví LOCK na nenulovou hodnotu. Čtení a nastavení je nedělitelné (atomické)
Proces 2
3
4
Nekritický kód –
lock==0 + lock=1
Kritická sekce lock=0
16
4
Semafory n
Mutexy
E. W. Dijkstra (1965) navrhl počítat počet vzbuzení (wakeups) v celočíselné proměnné n n n n
n
n
0 indikuje, že žádné vzbuzení není uloženo >0 říká, že 1 nebo víc vzbuzení právě probíhá Dále byly navrženy operace down a up. Operace down kontroluje, zda je hodnota >0. Pokud ano, dekrementuje ji. Pokud je hodnota nulová, je proces uspán (sleep), aniž by operace down byla dokončena. Zjištění hodnoty, její změna a uspání je provedeno jako nedělitelná atomická akce Operace up inkrementuje hodnotu semaforu. Pokud jeden nebo několik procesů bylo na tomto semaforu uspáno (a nemohlo dokončit dřívější operaci down), je jeden z nich vybrán (např. náhodně) a je mu umožněno dokončit svou operaci down. V takovém případě bude po up hodnota semaforu stále nulová, ale bude na něm spát o jeden proces méně. Operace inkrementace semaforu a vzbuzení jednoho procesu je též nedělitelná
Mutex (mutually- exclusive) je zjednodušená verze semaforu, když není potřeba čítání (někdy je nazýván binárním semaforem) n n n n n
n
n
Používají se pro výlučný přístup k nějakému zdroji nebo části kódu Mutex je proměnná, která může nabývat dvou stavů: unlocked a locked Chce-li thread nebo proces vstoupit do kritické oblasti, volá mutex_lock Je-li mutex unlocked, volání je úspěšné a do kritické oblasti se vstoupí Pokud je mutex už locked, je volající thread blokován dokud jiný thread, který je v kritické oblasti není hotov a nezavolá mutex_unlock Je-li mutexem blokováno více threadů, je jeden z nich vybrán (náhodně) a je mu dovoleno získat zámek (lock)
Mutex je podobný kritické sekci n n n
Pro synchronizaci threadů nelze však používat čekání ve smyčce (busy waiting) Thread čekající ve smyčce nic neodstaví, vznikla by nekonečná smyčka Místo toho se čekající thread vzdá procesoru do další aktivace procesu
17
18
Deadlock n
K některým zdrojům (resources) v operačním systému musí být umožněno přistupovat exkluzivně. n
n
Příklady: Kdyby dva procesy současně zapisovaly do téhož souboru, výsledkem by byl poškozený soubor. Podobně „současný“ tisk ze dvou procesů by vedl k „promíchání“ textu.
Problém nastává, v případě naznačeném na obrázku:
Plánovač (Scheduler) 1
Proces 1
n
Nekritický kód
Plánovač je součást operačního systému, určující, jaký proces má být spuštěn. n
Exkluz. přístup k tiskárně
1. Spuštěn Proces 1, který si exkluzivně zamkne přístup k Exkl. přístup 2 tiskárně k CD n 2. Ještě než stihl proces 1 si též exkuzivně zamknout přístup k CD, byl odstaven plánovačem n 3. Je spuštěn proces 2, který si exkluzivně zamkne přístup k CD. Proces 2 Chce si zamknout ještě přístup k tiskárně, ta je už zamčena, 3 takže musí čekat (nebo se vzdát svého času) Nekritický kód n 4. Plánovač aktivuje Proces 1, který chce zamknout přístup k CD, rovněž už zamčenému! Exkluz. přístup Deadlock nastává, když dva nebo více procesů chce k CD
n
n
n
n
současně exkluzivně přistupovat k několika zařízením a blokují se navzájem. n n
Vzniká při opačném pořadí exkluzivního zamykání více zařízení Trvá „navěky“, nelze se z něj vlastním přičiněním dostat
Exkl. přístup k tiskárně 19
Používaný algoritmus se nazývá plánovací algoritmus (scheduling algorithm) Existuje celá řada těchto algoritmů podle účelu OS pro který se používají“. Podle typu prostředí optimalizují různá kritéria:
n n
4
n
Dávkové prostředí (Batch) – optimalizace průchodnosti systému, např. maximalizace počtu jobů za hodinu, maximalizace využití CPU Interaktivní prostředí – optimalizace doby odezvy Prostředí reálného času – optimalizace vyhovění mezním termínům (meeting deadlines) pro dokončení úloh, zamezení ztrátám dat, předvídatelnost systému
Podle způsobu obsluhy periodických přerušení (interrupt) od časovače lze rozlišit dva základní druhy plánovacích algoritmů: n
n
Nepreemptivní – spustí proces a ponechá jej běžet dokud není zablokován (vstupně-výstupní operací nebo jiným procesem) nebo dokud se dobrovolně nevzdá CPU Preemptivní – spustí proces a nechá jej běžet maximálně nějaký pevný čas (time slice). Pak jej odstaví a spustí jiný proces. Tento přístup je řešen obsluhou přerušení od systémového časovače 20
5
Round-Robin Scheduling n
Jeden z nejjednodušších, nejstarších a nejčastěji implementovaných plánovacích algoritmů
n
Každému procesu je přiřazen časový interval (kvantum, time-slice), po který může běžet. Pokud proces běží na konci časového intervalu, je odstaven a je puštěn další proces. Pokud je proces zablokován nebo ukončen dříve, přepíná se další proces ihned. Předpokládá, že všechny procesy mají stejnou „důležitost“
n
n
n
n
n
Plánování podle priority
n n
n
n
Plánovač udržuje seznam spustitelných procesů Proces, který vyčerpal svůj čas je zařazen na konec seznamu Příliš krátké kvantum (např. pod 1 ms) vede k velké režii způsobené častým ukládáním stavu procesů Rozumný kompromis je obvykle 10 až 50 ms (Windows mají 20 ms, WCE 25 ms)
n n
n
n n
n n n
Inverze priorit
3. 4. 5. 6.
n
Task L (proces nebo thread) s nízkou prioritou vstoupí do kritické sekce Plánovač spustí Task H s vysokou prioritou, který je zablokován při pokusu vstoupit do téže kritické sekce jako Task L Mezitím je aktivován Task M se střední prioritou. Může běžet do té doby, dokud sám neskončí, neboť Task H je blokován Teprve po ukončení běhu Tasku M dokončí kritickou sekci Task L Teprve pak je odblokován Task H. Přestože měl Task H nejvyšší prioritu, musel čekat na uvolnění kritické sekce tasku s nejnižší prioritou. Během tohoto čekání může běžet několik tasků s prioritami „uprostřed“
Tato situace je nebezpečná zejména pro řídicí systémy reálného času priorita
2
Task L
Paměť je důležitý zdroj, který musí být pečlivě spravován n n n n
n
O správu paměti se stará tzv. Memory Manager Sleduje, jaké části paměti jsou používány a jaké jsou volné Přiděluje paměť procesům a uvolňuje ji při jejich skončení Zařizuje „přehazování“ (swapping) paměti na disk, není-li dostatek místa pro všechny procesy
Nejjednodušší správa paměti je pro jednoprogramové systémy (viz obr.) n
n
Legenda:
3 1
n
Variantu c) používal i MS-DOS. (Proslulo omezení horní hranice uživatelského programu na 640 KB) Pro víceprogramové systémy existuje podobná správa s pevně rozdělenými oblastmi pro n programů
5
Task H Task M
Třídy priorit (priority classes) pro celé procesy (určují důležitost procesu) Priority jednotlivých threadů v rámci dané třídy Priority jsou v rámci dané třídy dynamicky modifikovány, aby byl umožněn běh i dalších procesů. Algoritmus modifikace se liší mezi jednolivými verzemi Windows 22
Správa paměti (Memory Management)
Nebezpečnou situaci nazývanou inverze priorit znázorňuje následující obrázek 1. 2.
Např. na každém tiku časovače může být priorita běžícího procesu snížena o 1. Tím se za čas dostane priorita běžícího procesu pod prioritu procesu s druhou nejvyšší prioritou a tento proces se spustí Nebo každý proces má k dispozici maximální časové kvantum, po které může běžet. Po jeho uplynutí je dána šance dalšímu procesu.
Priority lze přiřazovat staticky a dynamicky Windows implementují dvouúrovňové zpracování priorit
21
n
Každý proces má přidělenu prioritu. Ze všech spustitelných procesů je spuštěn ten s nejvyšší prioritou
Aby neběžely v systému jen procesy s vysokou prioritou, může plánovač modifikovat prioritu běžícího procesu n
Jednoduchá implementace n
Různá „důležitost“ jednotlivých procesů vedla k zavedení plánování podle priority (priority scheduling)
Vstup do kritické sekce
Uživatelský Uživatelský program program
Ukončení kritické sekce
4 6
čas
OS OS vv ROM ROM
Ovladače Ovladače vv ROM ROM (BIOS) (BIOS)
Uživatelský Uživatelský program program
Uživatelský Uživatelský program program
OS OS vv RAM RAM 23
a)
OS OS vv RAM RAM b)
c)
0xFFF…
0
24
6
Přemisťování a ochrana paměti n
Multiprogramování přináší dva zásadní problémy: n
n n
n
n n n
Je velmi nežádoucí, aby jeden program mohl zapisovat do oblasti paměti vyhrazené jinému programu (úmyslně nebo v důsledku chyby)
n
n
n
Base register. Při přepnutí do procesu je do registru zavedena počáteční adresa paměti procesu a k ní jsou všechny adresy přičítány Limit register je naplněn délkou oblasti paměti. Každý přístup do paměti je hardwarově kontrolován vzhledem k tomuto registru
Nevýhodou byla časová náročnost. Proto původní procesor použitý v IBM PC – Intel 8088 implementoval pouze bázové registry. 25
Virtuální paměť n
n n n n
n n n
n
V paměti není celý program najednou, ale jen jeho část Podobnou technikou bylo rozdělení programu na postupně zaváděné části (overlays) Většina systémů virtuální paměti využívá techniky stránkování (paging) Adresy mohou být generovány za použití indexování, bázových a segmentových registrů Takové adresy se nazývají virtuální adresy. Virtuální adresy tvoří virtuální adresový prostor. Virtuální adresový prostor je rozdělen na menší části nazývané stránky (pages) Odpovídající prostor ve fyzické paměti se nazývá stránkové rámce (page frames) Memory Management Unit (MMU) – mapuje virtuální adresy na fyzické adresy
n
n
n
n
n
Paměť MMU
CC
CC
CC
BB
BB
BB
BB
AA
AA
AA
OS OS
OS OS
OS OS
OS OS
D D OS OS
CC
CC
D D OS OS
D D OS OS
AA
26
Memory Management Unit (MMU) – mapuje virtuální adresy na fyzické adresy
n
CPU
V paměti časem vznikají „díry“, které lze „spojovat“ do větších přesunem procesů co nejvíce k nižším adresám. Tato technika se nazývá memory compaction. Je však velmi náročná na čas
Memory management unit
Práce s virtuální pamětí je druhou technikou pro řešení nedostatku hlavní paměti n
Každý proces je přenesen jako celek do hlavní paměti Na chvíli je spuštěn Pak je vrácen (jako celek) na disk Pokud je uvažována možnost měnit využití paměti za běhu, nechává se při zavádění z disku určitá rezerva (snížení režie)
Počet, umístění a velikost oblastí (partitions) v paměti se mění dynamicky n
Oba problémy lze řešit zavedením speciálních registrů: n
Swapping je jednou ze strategií pro řešení nedostatku hlavní paměti n
Program může být vždy umístěn do jiné oblasti paměti Proto musí být vyřešeno přeadresování všech skoků (např. modifikací instrukcí) Tím není řešena ochrana paměti
Ochrana paměti (protection) n
n
n
Přemisťování paměti (relocation) n
n
Swapping
Řadič disku
n
...
Adresa v programu není přímo fyzickou adresou, ale na fyzickou adresu je konvertována až v MMU. Mapování si lze představit jako tabulku přiřazení virtuálních stránek odpovídajícím fyzickým stránkám (page frames) Pokud chce program přistoupit na nenamapovanou stránku, vznikne výjimka nazývaná page fault. Při její obsluze zavolá CPU službu OS. OS vybere nějakou málo používanou stránku a zapíše ji na disk. Na její místo načte odkazovanou stránku, aktualizuje mapu a znovu provede instrukci, která vyvolala výjimku
Typická velikost stránek je 4 až 64 KB. Místo obrovských tabulek stránek v paměti mají některé systémy implementovány víceúrovňové stránkování paměti
Sběrnice 27
28
7