<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.multimediaexpo.cz/mmecz/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=Mapov%C3%A1n%C3%AD_soubor%C5%AF_do_pam%C4%9Bti</id>
		<title>Mapování souborů do paměti - Historie editací</title>
		<link rel="self" type="application/atom+xml" href="http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=Mapov%C3%A1n%C3%AD_soubor%C5%AF_do_pam%C4%9Bti"/>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=Mapov%C3%A1n%C3%AD_soubor%C5%AF_do_pam%C4%9Bti&amp;action=history"/>
		<updated>2026-08-16T04:03:40Z</updated>
		<subtitle>Historie editací této stránky</subtitle>
		<generator>MediaWiki 1.16.5</generator>

	<entry>
		<id>http://www.multimediaexpo.cz/mmecz/index.php?title=Mapov%C3%A1n%C3%AD_soubor%C5%AF_do_pam%C4%9Bti&amp;diff=567008&amp;oldid=prev</id>
		<title>Sysop: 1 revizi</title>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=Mapov%C3%A1n%C3%AD_soubor%C5%AF_do_pam%C4%9Bti&amp;diff=567008&amp;oldid=prev"/>
				<updated>2014-03-13T11:42:23Z</updated>
		
		<summary type="html">&lt;p&gt;1 revizi&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Starší verze&lt;/td&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Verze z 13. 3. 2014, 11:42&lt;/td&gt;
		&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Sysop</name></author>	</entry>

	<entry>
		<id>http://www.multimediaexpo.cz/mmecz/index.php?title=Mapov%C3%A1n%C3%AD_soubor%C5%AF_do_pam%C4%9Bti&amp;diff=567007&amp;oldid=prev</id>
		<title>Sysop: 1 revizi</title>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=Mapov%C3%A1n%C3%AD_soubor%C5%AF_do_pam%C4%9Bti&amp;diff=567007&amp;oldid=prev"/>
				<updated>2011-07-03T20:21:29Z</updated>
		
		<summary type="html">&lt;p&gt;1 revizi&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Mapování souborů do paměti''' je v [[Informatika|informatice]] označení pro alternativní přístup k [[Data|datům]] v [[soubor]]u, ke kterým je přistupováno tak, jako by soubor byl součástí paměti (místo používání klasického [[API]] s [[Funkce (programování)|funkcemi]] [[open (systémové volání)|open]], read, write, close a dalších, které pracují se [[Souborový deskriptor|souborovým deskriptorem]]). Mapování souborů do paměti využívá v [[Kernel|jádře]] již existující mechanismus [[Virtuální paměť|virtuální paměti]] za využití [[stránkování paměti]] a mechanismu [[Výpadek stránky|výpadku stránky]].&lt;br /&gt;
== Popis ==&lt;br /&gt;
Mapování souborů do paměti využívá přidružení ([[Korelace|korelaci]]) [[Virtuální paměť|virtuální paměti]] se [[soubor]]em, který je uložen na [[Pevný disk|pevném disku]]. V [[UN*X|unixových systémech]], kde je téměř vše soubor, je možné mapovat do paměti všechna vstupně-výstupní zařízení, se kterými je možné pracovat pomocí [[Souborový deskriptor|souborového deskriptoru]]. Čtení a zápis do souboru se pak děje klasickými [[Strojová instrukce|strojovými instrukcemi]] pro čtení a zápis do paměti. O kopírování obsahu souboru do paměti se stará mechanismus [[Výpadek stránky|výpadku stránky]], který je v jádře vysoce optimalizován, a tak je zejména opakované čtení částí namapovaného souboru vysoce efektivní.&lt;br /&gt;
== Výhody ==&lt;br /&gt;
Hlavní výhodou mapování souborů do paměti je zvýšení I/O výkonu, zejména pokud je použito na velké soubory. Mapování malých souborů může vést k plýtvání místem,&amp;lt;ref&amp;gt;http://www.devshed.com/c/a/BrainDump/Using-mmap-for-Advanced-File-IO/&amp;lt;/ref&amp;gt; protože paměťové mapy jsou vždy uspořádány podle velikosti stránky, která je většinou 4&amp;amp;nbsp;[[Byte|KiB]]. Proto by bylo souboru o velikosti 5&amp;amp;nbsp;KiB přiděleno 8&amp;amp;nbsp;KiB, tím pádem by byly 3&amp;amp;nbsp;KiB nevyužity. Přístup k mapovaným souborům je rychlejší než za pomoci klasických systémových volání čtení a zápisu ze dvou důvodů:&lt;br /&gt;
# systémové volání je řádově pomalejší než jednoduchá změna tabulky stránek&lt;br /&gt;
# ve většině operačních systémů je oblast se soubory mapovanými do paměti zároveň i [[cache]] pro disk, takže do uživatelského prostoru nemusí být nic kopírováno&lt;br /&gt;
Některé mapované soubory provádí operace lépe než jejich fyzické protějšky. Aplikace mohou přistupovat k souboru a aktualizovat jeho data přímo a na místě, místo toho aby hledaly od začátku souboru nebo jej celý přepisovaly na dočasné umístění. Jelikož je mapování souborů řešeno interně ve stránkách, lineární přístup k souboru (jako je například vidět u „[[flat file]]“ při ukládání dat nebo u konfiguračních souborů) vyžaduje přístup k disku pouze tehdy, když je překročena hranice nové stránky a může zapisovat větší části souborů na disk v jediné operaci.&lt;br /&gt;
Jednou z možných výhod mapování souborů je „líné načítání“, tedy použití malé paměti RAM i pro velmi velký soubor. Načítáním celého obsahu souboru, výrazně většího než je velikost dostupné paměti, může dojít k vážnému zahlcení: tzn. že operační systém načte stánky z disku do paměti a zároveň stránky z paměti načte zpátky na disk. Mapování souborů může nejen zcela obejít [[stránkování paměti]], ale systém potřebuje pouze načíst menší části stránek roztříděných do sekcí jako upravená data, podobně jako [[Stránkování paměti]] používané v programech.&lt;br /&gt;
Proces mapování souborů do paměti je ovládán [[Správa paměti|správcem virtuální paměti]], což je stejný subsystém který je odpovědný za komunikaci se [[stránkováním  paměti]]. Mapované soubory jsou do paměti načteny najednou a vcelku z jediné [[Stránka (počítačová paměť)|stránky]]. Velikost stránky je vybrána podle operačního systému pro maximální výkon. Vzhledem k tomu, že stránka pro správu souborů je jedním z nejdůležitějších prvků virtuální paměti systému, je načítání stránky velkých částí souboru do fyzické paměti obvykle vysoce optimalizovanou funkcí systému.&amp;lt;ref&amp;gt;http://msdn2.microsoft.com/en-us/library/ms810613.aspx, &amp;quot;Co mohou mapované soubory nabídnout?&amp;quot;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Nevýhody ==&lt;br /&gt;
Hlavní výhodou mapování I/O souborů do paměti je výkon, ale existuje i pár vyjímek. Standardní I/O přístup je náročný vzhledem k režii systémových volání a paměti kopírování. Přístup k paměťovému mapování má své nedostatky v podobě drobných [[Chyby stránek|chyb stránek]] &amp;amp;ndash; mohou nastat když je blok dat načten v [[Stránková cache|cache stánky]], ale ještě není mapován do prostoru virtuální paměti. V některých případech může být mapování I/O souborů do paměti podstatně pomalejší než standardní I/O soubor který není mapován.&amp;lt;ref&amp;gt;http://lists.freebsd.org/pipermail/freebsd-questions/2004-June/050371.html, čtení versus mmap (nebo I/O versus chyby stránek) by [[Matthew Dillon (computer scientist) | Matthew Dillon]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Další nevýhoda paměťového mapování souvisí s danou architekturou [[Adresa (programování)|adresního prostoru]]: soubor větší než je adresní prostor může obsahovat pouze části mapované najednou. Například [[32bitový|32bitová]] architektura jako je [[IA-32]] od Intelu může přímo adresovat pouze 4&amp;amp;nbsp;[[Gibibyte|GiB]] nebo menší soubory. Této nevýhodě se dá předejít použitím [[IOMMU]].&lt;br /&gt;
== Použití ==&lt;br /&gt;
Snad nejčastěji se mapování souborů do paměti používá ve většině moderních operačních systémů (včetně [[Microsoft Windows]] a [[UN*X|Unixových]] systémů) k zavádění programů. Po spuštění procesu používá operační systém mapované soubory k přenášení spustitelných souborů společně s načítanými moduly do paměti za účelem zpracování nebo spuštění. Většina systémů s paměťovým mapováním používá techniku zvanou požadavek stránkování, kde je soubor načten do fyzické paměti v podmnožinách a jen v případě že je na stránku odkazováno.&amp;lt;ref&amp;gt;http://www.linux-tutorial.info/modules.php?name=Tutorial&amp;amp;pageid=89, &amp;quot;Stránkování&amp;quot;&amp;lt;/ref&amp;gt; V konkrétním případě spustitelných souborů umožňuje OS selektivně načíst jen ty části které potřebuje proces spustit. &lt;br /&gt;
Paměťově mapované soubory se dále používají ke sdílení paměti mezi více procesy. [[Chráněný režim]] v moderních operačních systémech zpravidla nedovoluje procesům přístup k paměťovému prostoru který je přidělen jinému procesu (programový přístup způsobí neplatnost stránky nebo [[Chyba segmentace|porušení segmentace]]). Je zde celá řada dostupných technik umožňující bezpečné sdílení paměti a paměťové mapování I/O souborů je jedním z nejoblíbenějších. Dvě nebo více aplikací může současně mapovat jeden fyzický soubor do paměti a přistupovat do této paměti. Například operační systém Microsoft Windows poskytuje aplikacím mechanismus k paměťovému mapování společných částí systémových stránkovacích souborů a sdílení dat. &lt;br /&gt;
== Podpora různých platforem ==&lt;br /&gt;
Většina moderních OS nebo [[Běhové_prostředí|běhových prostředí]] podporuje některé formy přístupu k mapovaným souborům. Funkce  &amp;lt;tt&amp;gt;[[mmap]]()&amp;lt;/tt&amp;gt;,&amp;lt;ref&amp;gt;[http://www.ecst.csuchico.edu/~beej/guide/ipc/mmap.html Memory Mapped Files&amp;lt;!-- Bot generated title --&amp;gt;]&amp;lt;/ref&amp;gt; která mapováním souboru vytváří deskriptor daného souboru, který obsahuje umístění v souboru, délku, která je součástí POSIX specifikace i kompatibilitu s [[POSIX]] systémy (například [[UNIX]], [[Linux]], [[Mac OS X]],&amp;lt;ref&amp;gt;[http://www.apple.com/macosx/technology/unix.html Apple - Mac OS X Leopard - Technology - UNIX&amp;lt;!-- Bot generated title --&amp;gt;]&amp;lt;/ref&amp;gt; nebo [[OpenVMS]]) které podporují společný mechanismus pro paměťově mapované soubory. Operační systém Microsoft Windows podporuje pro tento účel skupinu [[API]] funkcí, jako je &amp;lt;tt&amp;gt;CreateFileMapping()&amp;lt;/tt&amp;gt;.&amp;lt;ref&amp;gt;[http://msdn2.microsoft.com/en-us/library/aa366537.aspx CreateFileMapping Function (Windows)&amp;lt;!-- Bot generated title --&amp;gt;]&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[Java (programovací_jazyk)|Programovací jazyk Java]] poskytuje třídy a metody pro přístup k souborům mapovaným do paměti jako je '''[[FileChannel]]'''.&lt;br /&gt;
[[D_(programovací_jazyk)|Programovací jazyk D]] podporuje soubory mapované do paměti ve standardní knihovně (std.mmfile modul).&amp;lt;ref&amp;gt;http://www.digitalmars.com/d/2.0/phobos/std_mmfile.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Od verze 1.6 je v [[Python|Pythonu]] součástí standardní knihovny modul  &amp;lt;tt&amp;gt;'''mmap'''&amp;lt;/tt&amp;gt;.&amp;lt;ref name=&amp;quot;py-1.6-release-notes&amp;quot;&amp;gt;{{cite web|title=&amp;quot;New Modules in 1.6&amp;quot;|url=http://www.python.org/download/releases/1.6.1/#new-modules-in-1-6|accessdate=23 December 2008|archiveurl=http://web.archive.org/web/20061230034955/http://www.python.org/download/releases/1.6.1/#new-modules-in-1-6|archivedate=30 December 2006}}&amp;lt;/ref&amp;gt; Podrobnosti modulu se liší podle toho zda je na platformě [[Windows]] nebo [[Unix]].&lt;br /&gt;
V [[Perl|Perlu]] je několik modulů dostupných pro soubory mapované do paměti pro [[CPAN]] jako například &amp;lt;tt&amp;gt;'''Sys::Mmap'''&amp;lt;/tt&amp;gt; &amp;lt;ref name=&amp;quot;sys-mmap-cpan-module&amp;quot;&amp;gt;{{cite web|title=Sys::Mmap Perl Module|url=http://search.cpan.org/perldoc?Sys::Mmap}}&amp;lt;/ref&amp;gt; a &amp;lt;tt&amp;gt;'''File::Map'''&amp;lt;/tt&amp;gt;.&amp;lt;ref name=&amp;quot;file-map-cpan-module&amp;quot;&amp;gt;{{cite web|title=File::Map Perl Module|url=http://search.cpan.org/perldoc?File::Map}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
Microsoft .NET poskytuje řízený přístup k paměťově mapovaným souborům ve verzi 4. Pro předchozí verze jsou k dispozici knihovny třetích stran.&amp;lt;ref&amp;gt;[http://winterdom.com/dev/net DotNet&amp;lt;!-- Bot generated title --&amp;gt;]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Článek z Wikipedie}}&lt;br /&gt;
[[Kategorie:Správa paměti]]&lt;/div&gt;</summary>
		<author><name>Sysop</name></author>	</entry>

	</feed>