Sistemas operativos modernos
ción. Ésta es un área del diseño que casi no ha cambiado en décadas. Ha funcionado bien, así que no ha requerido mucha modificación. Ahora examinaremos el modelo y su implementación. 10.4.1 Conceptos fundamentales Todo proceso UNIX tiene un espacio de direcciones que consta de tres segmentos: texto, datos y pila. En la figura 10-13a se muestra un ejemplo de espacio de direcciones de un proceso (pro ceso A). El segmento de texto contiene las instrucciones de máquina que consfituyen el código ejecutable del programa. Éste segmento es producido por el compilador y el ensamblador, me diante la traducción del programa en C, C++ u otro lenguaje a código de máquina. Lo normal es que el segmento de texto sea de sólo lectura. Los programas que se modifican a sí mismos pasaron de moda alrededor de 1950 porque eran demasiado difíciles de entender y depurar. Por tanto, el segmento de texto ni crece ni se encoge ni sufre otro tipo de cambios. Proceso A Apuntador de pila' 20K 8K O Datos Texto Memoria física '1 -----^---- 1 y/ATAY/Z/Á yyyjmyyja. Y m m A Memoria I desocupada I (a) Proceso B •Apuntador de pila (c) 24K 8K OK Figura 10-13. a) Espacio de direcciones virtual del proceso A. b). Memoria física, c) Espacio de direcciones virtual del proceso B. El segmento de datos contiene almacenamiento para las variables, cadenas, arreglos y de más datos del programa. Tiene dos partes: los datos inicializados (que ya fienen valores) y los no inicializados. Por razones históricas, la segunda parte se conoce como BSS. La parte inicia- lizada del segmento de datos confiene variables y constantes del compilador que necesitan te ner un valor inicial cuando se pone en marcha el programa. Por ejemplo, en C es posible declarar una cadena de caracteres y asignarle valores inicia les al mismo tiempo. Cuando el programa se pone en marcha, espera que la cadena tenga su valor inicial. Para implementar esta construcción, el compilador asigna a la cadena una posi ción en el espacio de direcciones y cuida que cuando el programa inicie esta posición conten ga la cadena correcta. Desde el punto de vista del sistema operativo, los datos inicializados no
RkJQdWJsaXNoZXIy MjI4NDcx