🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #72703

Re: Mapowanie pliku fizycznego do pamięci

#72703
From: Adam Osuchowski
Date: Sat, 16 Aug 2014 20:03
31 lines
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-mail
References: <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