File: mlockall.2

package info (click to toggle)
manpages-de 0.4-8
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,808 kB
  • ctags: 4
  • sloc: sh: 7,666; makefile: 60
file content (162 lines) | stat: -rw-r--r-- 5,726 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (C) Markus Kuhn, 1996
.\" German Version (C) Michaela Hohenner und Hanno Wagner, 1996
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
.\" USA.
.\"
.\" 1995-11-26  Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\"      First version written
.\" Translated into german (c) Michaela Hohenner und Hanno Wagner, 1996
.\" Modified 6 June 1996 by Martin Schulze (joey@linux.de)
.\"
.TH MLOCKALL 2 "6. Juni 1996" "Linux 1.3.43" "Systemaufrufe"
.SH BEZEICHNUNG
mlockall \- Schaltet Paging fr den aktuellen Proze aus.
.SH "BERSICHT"
.nf
.B #include <sys/mman.h>
.sp
.BI "int mlockall(int " flags );
.fi
.SH BESCHREIBUNG
.B mlockall
sperrt das Paging fr alle Seiten, die in den Adreraum des aufrufenden
Prozesses eingebunden sind.  Dieses bezieht sich auf die Seiten des Code-,
Daten- und Stacksegments genauso wie auf gemeinsame Bibliotheken,
Kernel-Daten im Userspace, Shared Memory und Shared Dateien.  Es ist
garantiert, da alle eingebundenen Speicherseiten im RAM bleiben,
wenn der
.BR mlockall \-Aufruf
erfolgreich zurckkehrt. Und es wird ebenfalls garantiert, da sie
solange im RAM bleiben, bis die Seiten mit
.B munlock
oder
.B munlockall
entsperrt werden, das Programm terminiert wird oder mit
.B exec
ein anderes Programm aufruft.  Diese Sperrungen werden nicht an
Tochterprozesse ber ein
.B fork
hinaus vererbt.

Das Sperren von Speicher hat zwei Hauptanwendungen:
Echtzeitalgorithmen und Hochsicherheits-Datenverarbeitung.
Echtzeitalgorithmen erfordern deterministisches Timing, und, wie auch
Scheduling, ist Paging einer der Hauptgrnde fr unerwartete
Verzgerungen in der Programmausfhrung.
Echtzeitapplikationen werden auerdem fr gewhnlich mit
.B sched_setscheduler
auf einen Echtzeit-Scheduler umschalten.
Kryptographische Sicherheitssoftware arbeitet oft mit
sicherheitskritischen Bytes wie Pawrtern oder geheimen Schlsseln
als Datenstrukturen.  Durch Paging knnten diese geheimen Daten auf
eine permanente Swappartition bertragen werden, von wo aus sie auch
dann noch Dritten zugnglich sein knnen, lange nachdem das Programm
die geheimen Daten aus dem RAM gelscht und sich beendet hat.
Fr Sicherheitsapplikationen mssen nur kleine Teile des Speichers 
gesperrt werden.  Dafr steht  
.B mlock
zur Verfgung.

Die 
.I flags
Parameter knnen mit logischem ODER aus folgenden Konstanten konstruiert
werden:
.TP
.B MCL_CURRENT
Sperrt alle Seiten, die momentan in den Adreraum des Prozesses umgerechnet
sind.
.TP
.B MCL_FUTURE
Sperrt alle Seiten, die in Zukunft in den Adreraum des Prozesses
gelegt werden.  Das knnten zum Beispiel neue Adreseiten sein, die
bei einem sich vergrernden Heap und Stack bentigt werden,
Dateien, die in den Speicher gebunden werden, oder gemeinsam benutzte
Speicherregionen.
.PP
Wenn
.B MCL_FUTURE
angegeben ist und die Anzahl der gesperrten Seiten das obere Limit der
zulssigen gesperrten Seiten berschreitet, wird der Systemaufruf,
der das neue umrechnen veranlate mit 
.BR ENOMEM 
fehlschlagen.
Wenn diese Seiten durch wachsenden Stack eingebunden wurden, wird der
Kernel die Ausdehnung des Stacks nicht zulassen und ein
.BR SIGSEGV 
an den Proze senden.

Echtzeitprozesse sollten genug gesperrte Stackseiten reservieren,
bevor sie in die zeitkritische Phase treten, so da kein Fehler durch
einen Funktionsaufruf entstehen kann.  Dies kann durch den Aufruf
einer Funktion erreicht werden, die eine ausreichend groe
automatische Variable erzeugt und in den Speicher schreibt, in dem
diese liegt, um diese Stackseiten zu belegen.  Auf diesem Wege werden
genug Seiten fr den Stack bereitgestellt und knnen im RAM gesperrt
werden.  Der Schreibvorgang stellt sicher, da nicht einmal ein
Schreib-Kopier-Seitenfehler in der kritischen Phase entstehen knnen.

Speichersperren werden nicht gestapelt, das heit, Seiten die mehrmals durch
den Aufruf von
.B mlockall
oder
.B mlock
gesperrt wurden werden sofort wieder freigegeben durch einen einzigen Aufruf
von
.BR munlockall .
Seiten die an verschiedene Orte oder fr verschiedene Prozesse
bereitgestellt wurden bleiben solange im RAM gesperrt wie sie mindestens
an einen Ort oder durch einen Proze bentigt werden.

In POSIX Systemen, wo 
.B mlockall
und
.B munlockall
verfgbar sind, ist
.B _POSIX_MEMLOCK
definiert in <unistd.h>.
.SH "RCKGABEWERT"
Bei Erfolg gibt 
.B mlockall
eine Null aus.  Falls ein Fehler auftritt wird ein \-1 zurckgegeben und
.I errno
sofort gesetzt.
.SH FEHLER
.TP
.B ENOMEM
Der Proze versuchte die maximal zulssige Anzahl gesperrter Seiten zu
berschreiten.
.TP
.B EPERM
Der Aufrufende Proze hat nicht die erforderlichen Rechte.  Nur Rootprozesse
drfen Seiten sperren.
.TP
.B EINVAL
Unbekannte Flags wurden angegeben.
.SH STANDARDS
POSIX.1b, SVR4
.SH SIEHE AUCH
 munlockall (2),
.BR mlock (2), 
und
.BR munlock (2).