Stránka (paměť počítače) - Page (computer memory)
A strana, stránka pamětinebo virtuální stránka je souvislý blok pevné délky virtuální paměť, popsaný jedinou položkou v tabulka stránek. Jedná se o nejmenší jednotku dat pro správu paměti ve virtuální paměti operační systém. Podobně, a rámec stránky je nejmenší souvislý blok pevné délky fyzická paměť do kterého operační systém mapuje stránky paměti.[1][2][3]
Přenos stránek mezi hlavní pamětí a pomocným úložištěm, například a pevný disk, se označuje jako stránkování nebo zaměňovat.[4]
Kompenzace velikosti stránky
Tato sekce potřebuje další citace pro ověření.Února 2015) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Velikost stránky je obvykle určena architekturou procesoru. Stránky v systému měly tradičně jednotnou velikost, například 4 096 bajtů. Díky svým výhodám však návrhy procesorů často umožňují dvě nebo více, někdy i souběžných velikostí stránek. Existuje několik bodů, které mohou ovlivnit výběr nejlepší velikosti stránky.[5]
Velikost stránky
Systém s menší velikostí stránky používá více stránek a vyžaduje a tabulka stránek která zabírá více místa. Například pokud 232 virtuální adresový prostor je namapován na 4 KiB (212 bajtů), počet virtuálních stránek je 220 = (232 / 212). Pokud se však velikost stránky zvýší na 32 KiB (215 bajtů), pouze 217 stránky jsou povinné. Víceúrovňový stránkovací algoritmus může snížit náklady na paměť alokace velké tabulky stránek pro každý proces dalším rozdělením tabulky stránek na menší tabulky, čímž se efektivně stránkuje tabulka stránek.
Využití TLB
Protože každý přístup do paměti musí být mapován z virtuální na fyzickou adresu, může být pokaždé čtení tabulky stránek docela nákladné. Proto je velmi rychlý druh mezipaměti, překladová vyrovnávací paměť (TLB), se často používá.[6] TLB má omezenou velikost a když nemůže uspokojit daný požadavek (a TLB chybí) pro správné mapování je nutné manuálně prohledat tabulky stránek (hardwarově nebo softwarově, v závislosti na architektuře). Větší velikosti stránek znamenají, že mezipaměť TLB stejné velikosti může sledovat větší množství paměti, což zabrání nákladným chybám TLB.
Vnitřní fragmentace
Zřídka procesy vyžadují použití přesného počtu stránek. Výsledkem bude, že poslední stránka bude pravděpodobně jen částečně plná, což bude plýtvat určitým množstvím paměti. Větší velikosti stránek vedou k velkému množství zbytečné paměti, protože do hlavní paměti se načte více potenciálně nevyužitých částí paměti. Menší velikosti stránek zajišťují užší shodu se skutečným množstvím paměti požadované při alokaci.
Jako příklad předpokládejme, že velikost stránky je 1024 KiB. Pokud proces přidělí 1025 KiB, musí být použity dvě stránky, což má za následek nevyužité místo 1023 KiB (kde jedna stránka plně spotřebuje 1024 KiB a druhá pouze 1 KiB).
Přístup na disk
Při přenosu z rotačního disku je velká část zpoždění způsobena časem hledání, což je doba potřebná ke správnému umístění čtecích / zapisovacích hlav nad talíři disku. Z tohoto důvodu jsou velké sekvenční převody efektivnější než několik menších převodů. Přenos stejného množství dat z disku do paměti často vyžaduje méně času u větších stránek než u menších stránek.
Programově získávám velikost stránky
Většina operačních systémů umožňuje programům zjistit velikost stránky na runtime. To umožňuje programům efektivněji využívat paměť zarovnáním alokací na tuto velikost a snížením celkové vnitřní fragmentace stránek.
Unix a POSIX založené operační systémy
Unix a POSIX Systémy založené na systému mohou používat funkci systému sysconf ()
,[7][8][9][10][11] jak je znázorněno v následujícím příkladu napsaném v C programovací jazyk.
#zahrnout <stdio.h>#zahrnout / * sysconf (3) * / int hlavní(prázdnota){ printf("Velikost stránky pro tento systém je% ld bajtů.", sysconf(_SC_PAGESIZE)); / * _SC_PAGE_SIZE je také v pořádku. * / vrátit se 0;}
V mnoha systémech Unix je to nástroj příkazového řádku getconf
může být použito.[12][13][14]Například, getconf PAGESIZE
vrátí velikost stránky v bajtech.
Operační systémy založené na Windows
Win32 - operační systémy založené na operačních systémech Windows 9x a Windows NT rodiny, mohou používat funkci systému GetSystemInfo ()
[15][16] z kernel32.dll
.
#zahrnout <stdio.h>#zahrnout <windows.h>int hlavní(prázdnota){ SYSTÉMOVÁ INFORMACE si; GetSystemInfo(&si); printf("Velikost stránky pro tento systém je% u bajtů.", si.dwPageSize); vrátit se 0;}
Více velikostí stránek
Nějaký architektury instrukční sady může podporovat více velikostí stránek, včetně stránek podstatně větších, než je standardní velikost stránky. Dostupné velikosti stránek závisí na architektuře sady instrukcí, typu procesoru a provozním (adresovacím) režimu. Operační systém vybere jednu nebo více velikostí z velikostí podporovaných architekturou. Všimněte si, že ne všechny procesory implementují všechny definované větší velikosti stránek. Tato podpora pro větší stránky (v systému Windows známé jako "obrovské stránky") Linux, "superpage" v FreeBSD a „velké stránky“ ve formátu Microsoft Windows a IBM AIX Terminologie) umožňuje "to nejlepší z obou světů", což snižuje tlak na Mezipaměť TLB (někdy se zvyšuje rychlost až o 15%) pro velké alokace, zatímco u malých alokací se stále udržuje využití paměti na rozumné úrovni.[6]
Architektura | Nejmenší velikost stránky | Větší velikosti stránek |
---|---|---|
32-bit x86[18] | 4 KiB | 4 MiB v režimu PSE, 2 MiB v režimu PAE[19] |
x86-64[18] | 4 KiB | 2 MiB, 1 GiB (pouze pokud má CPU PDPE1GB vlajka) |
IA-64 (Itanium )[20] | 4 KiB | 8 KiB, 64 KiB, 256 KiB, 1 MiB, 4 MiB, 16 MiB, 256 MiB[19] |
Napájení ISA[21] | 4 KiB | 64 KiB, 16 MiB, 16 GiB |
SPARC v8 s referenčním MMU SPARC[22] | 4 KiB | 256 KiB, 16 MiB |
UltraSPARC Architecture 2007[23] | 8 KiB | 64 KiB, 512 KiB (volitelně), 4 MiB, 32 MiB (volitelně), 256 MiB (volitelně), 2 GiB (volitelně), 16 GiB (volitelně) |
ARMv7[24] | 4 KiB | 64 KiB, 1 MiB („sekce“), 16 MiB („supersekce“) (definované konkrétní implementací) |
Počínaje Pentium Pro a AMD Athlon, x86 procesory podporují 4 stránky MiB (tzv Rozšíření velikosti stránky ) (2 stránky MiB, pokud se používají.) PAE ) kromě svých standardních stránek 4 KiB; novější x86-64 procesory, jako např AMD novější procesory AMD64 a Intel je Westmere[25] a později Xeon procesory mohou používat 1 GiB stránky v dlouhý režim. IA-64 podporuje až osm různých velikostí stránek, od 4 KiB do 256 MiB, a některé další architektury mají podobné funkce.[upřesnit ]
Větší stránky, přestože jsou k dispozici v procesorech používaných ve většině současných osobní počítače, nejsou běžně používány s výjimkou rozsáhlých aplikací, které se obvykle nacházejí na velkých serverech a v výpočetní klastry a v samotném operačním systému. Obvykle jejich použití vyžaduje zvýšená oprávnění, spolupráci ze strany aplikace, která provádí velkou alokaci (obvykle nastavení příznaku vyžadujícího od operačního systému velké stránky) nebo ruční konfiguraci správce; operační systémy běžně, někdy záměrně, je nemohou stránkovat na disk.
Nicméně, SGI IRIX má univerzální podporu pro více velikostí stránek. Každý jednotlivý proces může poskytnout nápovědu a operační systém automaticky použije největší možnou velikost stránky pro danou oblast adresního prostoru.[26] Pozdější práce navrhla transparentní podporu operačního systému pro použití kombinace velikostí stránek pro nemodifikované aplikace prostřednictvím preemptivních rezervací, oportunistických propagací, spekulativních snížení úrovně a kontroly fragmentace.[27]
Linux podporuje obrovské stránky na několika architekturách od řady 2.6 prostřednictvím hugetlbfs
souborový systém[28] a bez hugetlbfs
od 2.6.38.[29] Windows Server 2003 (SP1 a novější), Windows Vista a Windows Server 2008 podporovat velké stránky pod názvem velkých stránek.[30] Windows 2000 a Windows XP interně podporujte velké stránky, ale nevystavujte je aplikacím.[31] Počínaje verzí 9, Solaris podporuje velké stránky na SPARC a x86.[32][33]FreeBSD 7.2-RELEASE obsahuje superpage.[34] Uvědomte si, že donedávna bylo v Linuxu nutné upravovat aplikace, aby mohly používat obrovské stránky. Jádro 2.6.38 představilo podporu transparentního používání velkých stránek.[29] V linuxových jádrech podporujících transparentní obrovské stránky, stejně jako FreeBSD a Solaris, aplikace využívají výhody obrovských stránek automaticky, bez nutnosti úprav.[34]
Viz také
- Chyba stránky
- Tabulka stránek
- Stránkování
- Virtuální paměť
- Nulová stránka (vlastnost procesoru) - a (často 256 bajtů velké[35][36]) oblast paměti na samém začátku adresní místnosti procesoru
- Nulová stránka (CP / M) - 256 bajtů[36] datová struktura na začátku programu
Reference
- ^ Christopher Kruegel (03.12.2012). „Operační systémy (kurz CS170-08)“ (PDF). cs.ucsb.edu. Archivovány od originál (PDF) dne 10. 8. 2016. Citováno 2016-06-13.
- ^ Martin C. Rinard (1998-08-22). „Poznámky k přednášce o operačních systémech, přednáška 9. Úvod do stránkování“. people.csail.mit.edu. Archivovány od originál dne 01.06.2016. Citováno 2016-06-13.
- ^ "Virtuální paměť: stránky a rámce stránek". cs.miami.edu. 31. 10. 2012. Archivovány od originál dne 06.06.2016. Citováno 2016-06-13.
- ^ Belzer, Jack; Holzman, Albert G .; Kent, Allen, eds. (1981), „Systémy virtuální paměti“, Encyclopedia of computer science and technology, 14, CRC Press, str. 32, ISBN 0-8247-2214-0
- ^ "Používání velikosti stránky 4KB pro virtuální paměť je zastaralé". IEEE. 10. 8. 2009. CiteSeerX 10.1.1.154.2023. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ A b "Průzkum technik pro architekturu TLB ", Souběžnost a výpočet: Praxe a zkušenosti, 2016.
- ^ Specifikace Single UNIX, Vydání 7 od Otevřená skupina - Referenční příručka základních definic,
- ^ Specifikace Single UNIX, Vydání 7 od Otevřená skupina - Reference systémových rozhraní,
- ^ Linux Funkce knihovny Manuál –
- ^ Darwine a Operační Systém Mac Funkce knihovny Manuál –
- ^ Solaris 10 Základní funkce knihovny - reference Manuál –
- ^ Specifikace Single UNIX, Vydání 7 od Otevřená skupina - Referenční příručka a nástroje,
- ^ Linux Příkazy uživatele Manuál –
- ^ Darwine a Operační Systém Mac Obecné příkazy Manuál –
- ^ "Funkce GetSystemInfo". Microsoft.
- ^ "SYSTEM_INFO struktura". Microsoft.
- ^ „Hugepages - Debian Wiki“. Wiki.debian.org. 21.06.2011. Citováno 2014-02-06.
- ^ A b „Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3 (3A, 3B, 3C & 3D): System Programming Guide“ (PDF). Prosince 2016. str. 4-2.
- ^ A b „Dokumentace / vm / hugetlbpage.txt“. Dokumentace k jádru Linuxu. kernel.org. Citováno 2014-02-06.
- ^ „Příručka pro vývojáře softwaru Intel Itanium Architecture, svazek 2: Architektura systému“ (PDF). Květen 2010. str. 2:58.
- ^ Průvodce výkonem IBM Power Systems: Implementace a optimalizace. Redbooky IBM. Únor 2013. ISBN 9780738437668. Citováno 2014-03-17.
- ^ „Příručka k architektuře SPARC, verze 8“. 1992. str. 249.
- ^ „UltraSPARC Architecture 2007“ (PDF). 2010-09-27. p. 427.
- ^ „ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition“. 20. 05. 2014. p. B3-1324.
- ^ „Intel Xeon 5670: šest vylepšených jader“. AnandTech. Citováno 2012-11-03.
- ^ „Obecná podpora operačního systému pro více stránek“ (PDF). static.usenix.org. Citováno 2012-11-02.
- ^ Navarro, Juan; Iyer, Sitararn; Druschel, Peter; Cox, Alan (prosinec 2002). Praktická a transparentní podpora operačního systému pro superstránky (PDF). 5. sympozium Usenix o návrhu a implementaci operačních systémů.
- ^ „Stránky - dankwiki, wiki nick black“. Dank.qemfd.net. Citováno 2012-11-03.
- ^ A b Corbet, Jonathane. „Transparentní obrovské stránky v 2.6.38“. LWN. Citováno 2011-03-02.
- ^ „Podpora velkých stránek“. Dokumenty Microsoftu. 2018-05-08.
- ^ „Program AGP může přestat reagovat při použití rozšíření velikosti stránky v procesoru Athlon“. Support.microsoft.com. 2007-01-27. Citováno 2012-11-03.
- ^ „Podpora více velikostí stránek v operačním systému Solaris“ (PDF). Sun BluePrints online. Sun Microsystems. Citováno 2008-01-19.
- ^ „Podpora více stránek v dodatku k operačnímu systému Solaris“ (PDF). Sun BluePrints online. Sun Microsystems. Citováno 2008-01-19.
- ^ A b „Poznámky k verzi FreeBSD 7.2-RELEASE“. FreeBSD Foundation. Citováno 2009-05-03.
- ^ „2.3.1 Paměť pouze pro čtení / 2.3.2 Programování paměti s náhodným přístupem“. Příručka k programovacímu jazyku MCS-4 - Příručka k programování mikropočítačového systému INTELLEC 4 (PDF) (Předběžné vydání.). Santa Clara, Kalifornie, USA: Intel Corporation. Prosinec 1973. s. 2-3–2-4. MCS-030-1273-1. Archivováno (PDF) od původního dne 2020-03-01. Citováno 2020-03-02.
[…] ROM se dále dělí na stránky, z nichž každá obsahuje 256 bajtů. Tedy umístění 0 až 255 obsahují stránku 0 ROM, umístění 256 až 511 obsahují stránku 1 a tak dále. […] Paměť programu s náhodným přístupem (RAM) je organizována přesně jako ROM. […]
- ^ A b "1. Úvod: Zarovnání segmentu". 8086 Family Utilities - Uživatelská příručka pro vývojové systémy založené na 8080/8085 (PDF). Revize E (A620 / 5821 6K DD ed.). Santa Clara, Kalifornie, USA: Intel Corporation. Květen 1982 [1980, 1978]. p. 1-6. Objednací číslo: 9800639-04. Archivováno (PDF) z původního dne 2020-02-29. Citováno 2020-02-29.
Další čtení
- Dandamudi, Sivarama P. (2003). Základy počítačové organizace a designu (1. vyd.). Springer. str. 740–741. ISBN 0-387-95211-X.