File: mlockall.2

package info (click to toggle)
manpages-es 0.4a-2
  • links: PTS
  • area: main
  • in suites: hamm, slink
  • size: 3,592 kB
  • ctags: 3
  • sloc: sh: 59; makefile: 42
file content (114 lines) | stat: -rw-r--r-- 5,551 bytes parent folder | download
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
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (C) Markus Kuhn, 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
.\"
.TH MLOCKALL 2 "26-11-1995" "Linux 1.3.43" "Manual del Programador de Linux"
.SH NAME
mlockall \- desactiva el paginado para los procesos invocadores
.SH SINOPSIS
.nf
.B #include <sys/mman.h>
.sp
\fBint mlockall(int \fIflags\fB);
.fi
.SH DESCRIPCIN
.B mlockall
desactiva el paginado para todas las pginas mapeadas en el espacio de direcciones del proceso invocador. Esto incluye tanto las pginas de cdigo, datos y stack como las bibliotecas compartidas, los datos en el espacio de usuario del kernel, la memoria compartida y los ficheros mapeados en memoria. Se garantiza que todas las pginas mapeadas estarn en memoria si la llamada al sistema
.B mlockall
no devuelve error y permanecern en RAM hasta que las pginas sean desbloqueadas de nuevo mediante
.B munlock
o
.B munlockall
o hasta que el proceso termine o inicie otro programa con
.BR exec .
Los procesos hijo (creados mediante 
.BR fork
) no heredan los bloqueos de pgina.


El bloqueo de memoria tiene dos aplicaciones fundamentales: algoritmos en tiempo real y procesado de datos de alta seguridad. Las aplicaciones en tiempo real requieren un temporizado determinista, y el paginado es una de las causas principales de retardos inesperados en la ejecucin de programas, junto con el gestionado (scheduling). Las aplicaciones en tiempo real suelen conmutar a un gestor en tiempo real con
.BR sched_setscheduler .
El software de seguridad criptogrfico a menudo trabaja con bytes crticos tales como contraseas o claves secretas. Como resultado del paginado, estos secretos pueden ser transferidos a un medio de almacenamiento de intercambio persistente, donde podra ser ledo por el enemigo mucho despus de que el programa de seguridad haya borrado los secretos en la RAM y terminado. Para aplicaciones de seguridad, slo han de ser bloqueadas pequeas partes de memoria, para lo que podemos usar
.B mlock
.

El parmetro
.I flags
se forma a partir de una OR de las siguientes constantes:
.TP 1.2i
.B MCL_CURRENT
Bloquea todas las pginas actualmente mapeadas en el espacio de direcciones del proceso.
.TP
.B MCL_FUTURE
Bloquea todas las pginas que sern mapeadas en el espacio de direcciones del proceso en el futuro. Podran ser nuevas pginas requeridas por una pila creciente, nuevos ficheros mapeados en memoria o zonas de memoria compartida.
.PP
Si se especifica
.B MCL_FUTURE
y el nmero de pginas bloquedas sobrepasa el lmite superior de pginas bloqueadas permitidas, entonces la llamada al sistema que provoc el nuevo mapeado devolver el error
.BR ENOMEM .
Si estas nuevas pginas han sido mapeadas por una pila creciente, entonces el kernel denegar la expansin de la pila y enviar una seal
.BR SIGSEGV .

	    Los procesos en tiempo real deberan reservar un nmero suficiente de pginas de pila antes de entrar en la seccin crtica, ya que se podra producir un fallo de pgina. Esto puede suceder llamando a una funcin con una variable automtica suficientemente grande y que escribe a la memoria ocupada por este gran array con la finalidad de acceder a estas pginas de pila. De este modo se mapearn suficientes pginas para la pila y se pueden bloquear en la RAM. Las escrituras 'dummy' aseguran que ni siquiera se producirn fallos de pginas 'copy-on-write' en la seccin crtica.

Los bloqueos de memoria no son acumulables, i.e., las pginas que han sido bloqueadas en varias ocasiones mediante llamadas a 
.B mlockall
o
.B mlock
se pueden desbloquear mediante una simple llamada a 
.BR munlockall .
Las pginas que se mapean en varias zonas o por varios procesos permanecen bloqueados en la RAM mientras al menos una zona de las mismas est bloqueada o un proceso siga bloqueando.

En los sistemas POSIX systems en los que
.B mlockall
y
.B munlockall
estn disponibles,
.B _POSIX_MEMLOCK
se define en <unistd.h>.
.SH VALOR DE RETORNO
Si todo va bien,
.B mlockall
devuelve cero. En caso de error, se devuelve \-1, y
.I errno
toma el valor adecuado.
.SH ERRORES
.TP
.B ENOMEM
El proceso ha intentado sobrepasar el mximo nmero de pginas bloqueadas permitido.
.TP
.B EPERM
El proceso invocador no tiene los privilegios necesarios. Solamente los procesos del root pueden bloquear pginas.
.TP
.B EINVAL
Se han especificado flags desconocidos.
.SH "DE ACUERDO CON"
POSIX.1b, SVr4.   SVr4 aade un error cdigo de error adicional (EAGAIN).
.SH VER TAMBIN
.BR munlockall (2),
.BR mlock (2), 
y
.BR munlock (2).