Sistemas operativos modernos
En UNIX, la memoria de un proceso se divide en tres segmentos: el segmento de texto (es decir, el código del programa), el segmento de datos (o sea, las variables) y el segmento de pila. El segmento de datos crece hacia arriba y el de pila crece hacia abajo, como se muestra en la figura 1-20. Entre ellos hay un hueco de espacio de direcciones desocupado. La pila cre ce allí en forma automática, según sea necesario, pero la expansión del segmento de datos se efectúa de manera explícita utilizando una llamada al sistema, brk, que especifica la nueva di rección donde debe terminar el segmento de datos. Esta llamada, empero, no está definida por el estándar POSIX porque se recomienda a los usuarios utilizar el procedimiento de biblioteca malloc si quieren asignar espacio de almacenamiento en forma dinámica, y no se consideró conveniente estandarizar la implementación de malloc porque pocos programadores la utilizan de manera directa. Dirección (hex) Figura 1-20. Los procesos tienen tres segmentos: texto, datos y pila. 1.6.2 Llamadas al sistema para administración de archivos Muchas llamadas al sistema tienen que ver con el sistema de archivos. En esta sección exami naremos llamadas que operan con archivos individuales; en la siguiente nos ocuparemos de las que trabajan con directorios o con el sistema de archivos en su totalidad. Para leer o escribir un archivo, primero hay que abrirlo con open. Esta llamada especifica el nombre del archivo a abrir, como nombre de ruta absoluto o relativo al directorio de traba jo, y un código que es 0_RD0NLY, 0_WR0NLY u 0_RDWR, el cual indica abrir para leer, es cribir o ambas cosas. Para crear un archivo nuevo se usa OjCREAT. El descriptor de archivo devuelto puede usarse entonces para leer o escribir. Después puede cerrarse el archivo con ció se, y el descriptor de archivo queda libre para usarse en un Open posterior. Las llamadas que más se usan son sin duda read y write. Ya vimos read antes. Write tie ne los mismos parámetros. Aunque la mayoría de ios programas lee y escribe archivos en forma secuencial, algunos programas de aplicación necesitan la capacidad de tener acceso a cualquier parte de un archi vo al azar. Cada archivo tiene asociado un apuntador que indica la posición actual dentro de él. Al leer (escribir) en forma secuencial, dicho apuntador por lo general apunta ai siguiente byte que se leerá (escribirá). La llamada Iseek modifica el valor del apuntador de posición y permi te que llamadas posteriores a read o write lean o escriban en cualquier punto del archivo.
RkJQdWJsaXNoZXIy MjI4NDcx