File: mlock.2

package info (click to toggle)
manpages-es 1.55-4
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 7,472 kB
  • ctags: 6
  • sloc: sh: 1,349; makefile: 63
file content (131 lines) | stat: -rw-r--r-- 4,715 bytes parent folder | download | duplicates (4)
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
.\" 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., 59 Temple Place, Suite 330, Boston, MA 02111,
.\" USA.
.\"
.\" 1995-11-26  Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\"      First version written
.\" Translation revised Sat Jan  8 2000 by Juan Piernas <piernas@ditec.um.es>
.\"
.TH MLOCK 2 "26 noviembre 1995" "Linux 1.3.43" "Manual del Programador de Linux"
.SH NOMBRE
mlock \- desactiva la paginación para algunas zonas de memoria
.SH SINOPSIS
.nf
.B #include <sys/mman.h>
.sp
\fBint mlock(const void *\fIaddr\fB, size_t \fIlen\fB);
.fi
.SH DESCRIPCIÓN
.B mlock
desactiva la paginación para la memoria en el grupo de direcciones que
comienza en la dirección
.I addr
con longitud
.I len
bytes. Se garantiza que todas las páginas que contienen algunas de esas
direcciones estarán residentes en RAM cuando la llamada al sistema
.B mlock
termine sin error y permanecerán en RAM hasta que dichas páginas sean
desbloquedadas con
.B munlock
o
.BR munlockall ,
hasta que las páginas sean desalojadas vía
.BR munmap,
o hasta que termine el proceso o comience otro programa con
.BR exec .
Los procesos hijos creados mediante 
.BR fork
no heredan los bloqueos de páginas.

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 una temporización determinista, y la paginación es una
de las causas principales de retardos inesperados en la ejecución de programas,
junto con la planificación (scheduling). Las aplicaciones en tiempo real suelen
conmutar a un planificador en tiempo real con
.BR sched_setscheduler .
El software de seguridad criptográfico a menudo trabaja con bytes críticos
tales como contraseñas o claves secretas. Como resultado de la paginación,
estos secretos pueden ser transferidos a un medio de almacenamiento de
intercambio persistente, donde podría ser leído por el enemigo mucho después
de que el programa de seguridad haya borrado los secretos de la RAM y
terminado.

Los bloqueos de memoria no son acumulativos, es decir, si una página ha sido
bloqueda varias veces mediante llamadas a 
.B mlock
o
.B mlockall
será desbloqueada con una simple llamada a
.B munlock
para el rango correspondiente o con
.BR munlockall .
Las páginas que son asociadas a varias zonas o a varios procesos permanecen
bloqueadas en RAM mientras lo estén por alguna zona o proceso.

En los sistemas POSIX con
.B mlock
y
.B munlock
disponibles, se define
.B _POSIX_MEMLOCK_RANGE
en <unistd.h> y el valor de
.B PAGESIZE
de <limits.h> indica el número de bytes por página.
.SH OBSERVACIONES
Con la llamada al sistema de Linux, 
.I addr
se redondea hacia abajo automáticamente hacia el límite de página más cercano.
Sin embargo, POSIX 1003.1-2001 permite una implementación que requiere que
.I addr
esté en situado un límite de página, por lo que las aplicaciones deberían asegurar este requisito.
.SH VALOR DEVUELTO
En caso de éxito,
.B mlock
devuelve cero. Si hay error, se devuelve \-1,
.I errno
se activa convenientemente y no se realiza ningún cambio en ningún bloqueo
en el espacio de direcciones del proceso.
.SH ERRORES
.TP
.B ENOMEM
Alguna parte del rango de direcciones no corresponde a páginas
asociadas en el espacio de direcciones del proceso o el proceso intentó
exceder el número máximo de páginas bloqueadas permitido.
.TP
.B EPERM
El proceso invocador no tiene los privilegios necesarios. Sólo se permite
bloquear páginas a los procesos del superusuario.
.TP
.B EINVAL
.I len
no era un número positivo.
.SH "CONFORME A"
POSIX.1b, SVr4.  SVr4 añade un código de error adicional (EAGAIN).
.SH "VÉASE TAMBIÉN"
.BR mlockall (2),
.BR munlock (2),
.BR munlockall (2),
.BR munmap (2),
.BR setrlimit (2)