Article View: pl.comp.os.linux.programowanie
Article #72703Re: Mapowanie pliku fizycznego do pamięci
From: Adam Osuchowski
Date: Sat, 16 Aug 2014 20:03
Date: Sat, 16 Aug 2014 20:03
31 lines
2678 bytes
2678 bytes
Borneq wrote: > open jako parametr ma łańcuch 8-bitowych znaków. Czy jest jakaś wersja > 16-bitowych lub działa to dla UTF8, lub też w Linuksie nie stosuje się nazw > plików Unicode? Dla kernela linuksowego na poziomie systemu plików nie ma znaczenia kodowanie znaków. Nazwa pliku jest po prostu ciągiem 8-bitowych bajtów, przy czym żaden z nich nie może być równy 0x2f (separator katalogów w ścieżce) i 0x00 (znacznik końca łańcucha). To jakie znaki odpowiadają poszczególnym bajtom lub sekwencjom bajtów leży w gestii userspaceowej aplikacji (zazwyczaj i tak nie ma to dla niej większego znaczenia) i samego użytkownika. > Teraz shm_open. W przykładzie jest tworzenie nazwy symbolicznej dla obszaru > pamięci, która będzie wymieniana między procesami. To przydatne, ale teraz > bardziej mi chodzi o mapowanie fizycznego pliku aby się po nim szybko > poruszać. > Na przykład coś wyszukać od zadanego adresu, nie wiadomo od razu w jakim > obszarze, gdy drugi raz wczytywałbym ze strumienia do bufora, to kłopot na > granicy między jednym blokiem a drugim. Trzeba by użyć bardzo dużego > bufora, ale aby uniknąć wczytywania wszystkiego do bufora lepiej zamapować. > Czy jest taka możliwość? Czy plik może mieć adresowanie 64 bitowe i czy > jest jak w Windows możliwość wybrania 32 bitowego obszaru wewnątrz pliku z > pewnym wyrównaniem? W Windows 8 jest wyrównanie do 64 KiB Chyba nie bardzo rozumiem jaki masz problem i o co chodzi z tym dużym buforem. Mógłbyś to opisać jaśniej? mmap() mapuje obszar pliku (w szczególności cały plik) w pamięci pod zadanym przez użytkownika lub ustalonym automatycznie przez system adresem. Na systemie 64-bitowym ten adres będzie oczywiście 64-bitowy. Wyrównanie jest realizowane do granicy strony pamięci, czyli na x86 i x86-64 do 4 KiB.
Technical Details
Message-ID:
<20140816200303.6b8b4567@polsl.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!polsl.pl!not-for-mailReferences:
<lsoagf$2mv$1@node1.news.atman.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!polsl.pl!not-for-mail From: Adam Osuchowski <someone@somewhere.com> Newsgroups: pl.comp.os.linux.programowanie Subject: Re: Mapowanie pliku fizycznego do pamięci Date: Sat, 16 Aug 2014 20:03:03 +0000 (UTC) Organization: Politechnika Slaska, Gliwice Lines: 31 Message-ID: <20140816200303.6b8b4567@polsl.pl> References: <lsoagf$2mv$1@node1.news.atman.pl> NNTP-Posting-Host: hydra.ck.polsl.pl Mime-Version: 1.0 X-Trace: polsl.pl 1408219383 3928 2a01:1d8:1:1::11 (16 Aug 2014 20:03:03 GMT) X-Complaints-To: news@polsl.pl NNTP-Posting-Date: Sat, 16 Aug 2014 20:03:03 +0000 (UTC) In-Reply-To: <lsoagf$2mv$1@node1.news.atman.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit