Ploché rozložení paměti

Ploché rozložení paměti nebo lineární rozložení paměti se vztahuje k adresování paměti v nižších programovacích jazycích, kde procesor může na přímo (a lineárně/sekvenčně) adresovat veškerou dostupnou paměť, aniž by se musel řídit nějakým druhem segmentace paměti nebo stránkovacími schématy.

Správa paměti a překlad logických adres na fyzické může stále být implementována nad plochým rozložením paměti s cílem usnadnit fungování operačního systému, ochrany paměti, multitaskingu nebo zvýšit kapacitu paměti nad rámec limitů procesorového fyzického adresního prostoru, ale hlavním cílem plochého rozložení paměti je, že celý adresovatelný prostor je lineární, sekvenční a spojitý počínaje adresou nula až po MaxBytes-1.

Správa paměti je proto volitelná: není nezbytná, ani není určena architekturou CPU:

  • V jednoúlohových operačních systémech, nebo jednoúčelových vestavěných systémech, kde rozšířená správa paměti není potřebná, je ploché rozložení paměti tím nejvhodnějším modelem. Poskytuje programátorovi nejjednodušší rozhraní pro přímý přístup k celému adresnímu prostoru a minimalizuje tak složitost návrhu aplikace.
  • V počítačových systémech pro obecné použití, které vyžadují multitasking a dynamickou alokaci a ochranu paměti, musí být ploché rozložení paměti rozšířeno o správu paměti, která je obvykle implementována kombinací hardwarových komponent (uvnitř nebo vně CPU) a softwarových součástí operačních systémů. Nicméně ploché rozložení paměti (na fyzické úrovni adresace) poskytuje nejlepší flexibilitu pro implementaci rozšířené správy paměti.

Převážná většina architektur procesorů používá ploché rozložení paměti, včetně většiny prvních 8bitových procesorů, série Motoroly 68000 a dalších. Původní procesor Intel 8086 (první 16bitový procesor od Intelu) byl výjimkou, neboť implementoval segmentové rozložení paměti, protože poskytovalo jednoduchou formu správy paměti s rozšiřitelnými hranicemi jednotlivých segmentů pro starší operační systémy, jako například DOS, a umožňovalo využití širšího adresního prostoru, než jaký by byl možný adresovat s 16bitovým procesorem.

Porovnání

Většina dnes používaných rozložení paměti spadá to jedné z těchto tří kategorií:

Ploché rozložení paměti

  • Jednoduché rozhraní pro programátory, přehledný návrh aplikací
  • Nejlepší flexibilita
  • Minimální nároky na hardware a CPU pro jednoúčelové aplikace
  • Nejrychlejší odezva
  • Nevhodné pro obecné počítačové systémy, nebo OS podporující multitasking bez hardwarového nebo softwarového rozšíření správy paměti.
  • Téměř všechny současné CISC procesory používají ploché rozložení paměti s hardwarovou nadstavbou rozšířené správy paměti a technologií ochrany paměti.

Stránkování paměti

  • Vhodné pro OS s multitaskingem, často v běžně používaných OS (Windows, Linux), dobrá ochrana paměti
  • Vhodné pro implementaci virtualizace paměti
  • Rozšířené možnosti pro CPU, nicméně bývá pomalejší
  • Více komplexní, ale také komplikované pro správu procesů
  • Pevná velikost stránek vede k menší efektivitě rozložení paměti
  • Řeší fragmentaci paměti, lepší optimalizace (RAM a HDD)
  • Využívají procesory Intel Pentium Pro a novější procesory architektury x68 používající 32bitové adresy v paměti pod názvem Physical Address Extension

Segmentace paměti

  • Podobné jako stránkování paměti, ale fyzická adresa se skládá jako segment:offset, kdy proces pracuje s offsetem a OS spravuje segmenty
  • Proměnná velikost segmentů, efektivnější a flexibilnější využití paměti
  • Složité pro návrh aplikace a její kompilaci
  • Slabá ochrana paměti
  • Trpí fragmentací volného místa
  • Více kombinací segment:offset mohou vést na jednu fyzickou adresu
  • Vyšší šance zranitelnosti programu a OS
  • Implementace v procesorech Intel 8086, některých dalších procesorech této řady
  • V procesorech architektury x86 operujících v tzv. real mode se fyzická adresa paměti spočítá jako: [1]

Reference

V tomto článku byl použit překlad textu z článku Flat memory model na anglické Wikipedii.