Sistemas operativos modernos
de ellos escribe en el archivo, la escritura será visible en forma instantánea para los demás. De hecho, la correspondencia de un archivo de borrador (que será desechado una vez que todos los procesos terminen) puede servir como mecanismo de alto ancho de banda para que múltiples pro cesos compartan memoria. En el caso más extremo, dos o más procesos podrían corresponder con un archivo que cubre todo el espacio de direcciones, lo que les proporcionaría una forma híbrida de compartimiento que está entre los procesos individuales y los subprocesos. Aquí se comparte el espacio de direcciones (como con los subprocesos), pero cada proceso mantiene sus propios archivos abiertos y señales, por ejemplo, cosa que no hacen los subprocesos. Sin embargo, en la práctica nunca se hace que dos espacios de direcciones coincidan exactamente. 10.4.2 Llamadas al sistema para administración de memoria en UNIX POSIX no especifica llamadas al sistema para administración de memoria. Esta cuestión se con sideró demasiado dependiente de la máquina como para poderse estandarizar. En vez de ello, el problema se soslayó argumentando que los programas que necesitan administración dinámica de memoria pueden usar el procedimiento de biblioteca malloc (definido por el estándar ANSI C). Así, la implementación de malloc queda fuera del ámbito del estándar POSIX. En algunos círculos, a este enfoque se le conoce como echarle el bulto a otro. En la práctica, casi todos los sistemas UNIX cuentan con llamadas al sistema para adminis trar la memoria. Los más comunes se presentan en la figura 10-15. Brk especifica el tamaño del segmento de datos dando la dirección del primer byte más allá de su frontera. Si el nuevo valor es mayor que el anterior, el segmento de datos crece; en caso contrario, decrece. Llamada al sistema Descripción s = brk(addr) Cambia el tamaño del segm. datos a = mmap(addr, len, prot, flags, fd, offset) Establece la correspondencia de un archivo en memoria s = unmap(addr, len) Deshace la correspondencia de un archivo Figura 10-15. Algunas llamadas al sistema relacionadas con administración de me moria. El código de retorno s es -1 si se ha presentado un error; a y addr son direc ciones de memoria, len es una longitud, prof controla la protección, flags se refiere a bits diversos (indicadores), fd es un descriptor de archivo y offset es un desplaza miento de un archivo. Las llamadas al sistema mmap y unmap controlan los archivos con correspondencia en memoria. El primer parámetro de mmap, addr, determina la dirección en la que se establecerá la correspondencia del archivo (o una porción de éste), y debe ser un múltiplo del tamaño de página. Si este parámetro es O, el sistema mismo determina la dirección y la devuelve en a. El segundo parámetro, len, indica cuántos bytes deben hacerse corresponder; también debe ser un múlfiplo del tamaño de página. El tercer parámetro, prot, determina la protección del archivo con correspondencia. Se le puede marcar como legible, escribible, ejecutable o alguna combi nación de estas cualidades. El cuarto parámetro, controla si el archivo es privado o com- parfible, y si addr es un requisito o una mera sugerencia. El quinto parámetro, fd, es el
RkJQdWJsaXNoZXIy MjI4NDcx