Hallo Helge, #. See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08 #. type: Plain text #: archlinux debian-buster debian-unstable fedora-rawhide mageia-cauldron msgid "" "Put the mapping into the first 2 Gigabytes of the process address space. " "This flag is supported only on x86-64, for 64-bit programs. It was added to " "allow thread stacks to be allocated somewhere in the first 2\\ GB of memory, " "so as to improve context-switch performance on some early 64-bit " "processors. Modern x86-64 processors no longer have this performance " "problem, so use of this flag is not required on those systems. The " "B<MAP_32BIT> flag is ignored when B<MAP_FIXED> is set." msgstr "" "Legt die Mapping in die ersten zwei Gigabyte des Prozessadressraums. Dieser " "Schalter wird nur auf X86-64 für 64-Bit-Programme unterstützt. Er wurde " "hinzugefügt, damit Thread-Stacks irgendwo innerhalb der ersten 2\\ GB " "Speicher zugewiesen werden kann, damit die Leistung des Kontext-Umschaltens " "auf einigen der ersten 64-Bit-Prozessoren erhöht wird. Moderne X86-64-" "Prozessoren haben dieses Leistungsproblem nicht mehr, wodurch der Einsatz " "dieses Schalters auf diesen Systemen nicht mehr benötigt wird. Der Schalter " "B<MAP_32BIT> wird ignoriert, wenn B<MAP_FIXED> gesetzt ist."
die Mapping → das Mapping damit Thread-Stacks … zugewiesen werden kann → damit Thread-Stacks … zugewiesen werden können #. See the pgoff overflow check in do_mmap(). #. See the offset check in sys_mmap in arch/x86/kernel/sys_x86_64.c. #. type: Plain text #: archlinux debian-buster debian-unstable fedora-rawhide mageia-cauldron msgid "" "The mapping is not backed by any file; its contents are initialized to " "zero. The I<fd> argument is ignored; however, some implementations require " "I<fd> to be -1 if B<MAP_ANONYMOUS> (or B<MAP_ANON>) is specified, and " "portable applications should ensure this. The I<offset> argument should be " "zero. The use of B<MAP_ANONYMOUS> in conjunction with B<MAP_SHARED> is " "supported on Linux only since kernel 2.4." msgstr "" "Diesem Mapping liegt keine Datei zugrunde; ihr Inhalt wird mit Nullen " "initialisiert. Das Argument I<fd> wird ignoriert, einige Implementierungen " "verlangen aber, dass I<fd> -1 ist, falls B<MAP_ANONYMOUS> (oder B<MAP_ANON>) " "festgelegt ist, und portable Anwendungen sollten dies sicherstellen. Das " "Argument I<offset> sollte 0 sein. Unter Linux wird die Kombination von " "B<MAP_ANONYMOUS> mit B<MAP_SHARED> nur ab Kernelversion 2.4 unterstützt." nur ab Kernelversion → erst ab Kernelversion #. commit a4ff8e8620d3f4f50ac4b41e8067b7d395056843 #. type: Plain text #: archlinux debian-buster debian-unstable fedora-rawhide mageia-cauldron msgid "" "This flag provides behavior that is similar to B<MAP_FIXED> with respect to " "the I<addr> enforcement, but differs in that B<MAP_FIXED_NOREPLACE> never " "clobbers a preexisting mapped range. If the requested range would collide " "with an existing mapping, then this call fails with the error B<EEXIST.> " "This flag can therefore be used as a way to atomically (with respect to " "other threads) attempt to map an address range: one thread will succeed; all " "others will report failure." msgstr "" "Dieser Schalter stellt ein Verhalten bereit, das B<MAP_FIXED> im Hinblick " "auf die Erzwingung von I<addr> ähnelt, sich aber unterscheidet, dass " "B<MAP_FIXED_NOREPLACE> einen bereits bestehenden, gemappten Bereich " "durcheinanderbringt. Falls der angeforderte Bereich mit einem bestehenden " "Mapping kollidieren würde, dann schlägt dieser Aufruf mit B<EEXIST> fehl. " "Dieser Schalter kann daher für atomare (im Hinblick auf andere Threads) " "Versuche, einen Adressbereich zu mappen, verwandt werden: ein Thread hat " "Erfolg, alle anderen berichten einen Fehlschlag." sich aber unterscheidet → sich aber dadurch unterscheidet #. type: Plain text #: archlinux debian-buster debian-unstable fedora-rawhide mageia-cauldron msgid "" "This flag is used for stacks. It indicates to the kernel virtual memory " "system that the mapping should extend downward in memory. The return " "address is one page lower than the memory area that is actually created in " "the process's virtual address space. Touching an address in the \"guard\" " "page below the mapping will cause the mapping to grow by a page. This " "growth can be repeated until the mapping grows to within a page of the high " "end of the next lower mapping, at which point touching the \"guard\" page " "will result in a B<SIGSEGV> signal." msgstr "" "Dieser Schalter wird für Stacks verwandt. Er zeigt dem Kernelsystem für " "virtuellen Speicher an, dass sich das Mapping nach unten im Speicher " "ausdehnen soll. Die zurückgelieferte Adresse ist eine Seite tiefer als der " "Speicherbereich, der tatsächlich im virtuellen Adressraum des Prozesses " "erstellt wird. Wird eine Adresse in der »Wächter«-Seite unterhalb des " "Mappings berührt, dann wächst das Mapping um eine Seite. Dieses Wachstum " "kann wiederholt werden, bis dass Mapping bis auf eine Seite innerhalb des " "hohen Endes des nächst-niedriegeren Mappings anwächst - zu diesem Zeitpunkt " "führt das berühren der »Wächter«-Seite zu einem B<SIGSEGV>-Signal." bis dass Mapping → bis das Mapping nächst-niedriegeren → nächst-niedrigeren das berühren → das Berühren #. type: Plain text #: archlinux debian-buster debian-unstable fedora-rawhide mageia-cauldron msgid "" "More generally, the desired huge page size can be configured by encoding the " "base-2 logarithm of the desired page size in the six bits at the offset " "B<MAP_HUGE_SHIFT>. (A value of zero in this bit field provides the default " "huge page size; the default huge page size can be discovered via the " "I<Hugepagesize> field exposed by I</proc/meminfo>.) Thus, the above two " "constants are defined as:" msgstr "" "Allgemeiner kann die gewünschte große Seitengröße durch Kodierung des " "Logarithmus zur Basis 2 der gewünschten Seitengröße in den sechs Bits am " "Versatz B<MAP_HUGE_SHIFT> konfiguriert werden. (Ein Wert 0 in diesem Bitfeld " "stellt die Vorgabe große Seitengröße bereit; die Vorgabe große Seitengröße " "kann mittels des durch I</proc/meminfo> offengelegten Feldes I<Hugepagesize> " "ermittelt werden.) Daher sind die obigen zwei Konstanten wie folgt definiert:" »große Seitengröße« geht so überhaupt nicht. Auf die Gefahr hin, dass dir das zu frei ist: die gewünschten großen Seiten (nachfolgend gibt es noch mehr solche »großen Größen«) Der Klammereinschub ist grammatisch grauenhaft. Was soll das sein, »die Vorgabe große Seitengröße«? Gruß Mario