Sistemas operativos modernos

tiempo que lia estado fuera de la memoria, su tamaño, el valor que estableció empleando nice (si lo hizo) y el tiempo que estuvo desactivado ames de ser desalojado a disco. La función se pondera para que, por lo regular, se escoja el proceso que ha estado fuera de la memoria más tiempo, a menos que sea grande en extremo. La teoría es que es costoso intercambiar a la me­ moria procesos grandes, así que no se les debe cambiar de lugar con demasiada frecuencia. Só­ lo se intercambia un proceso a la memoria si hay suficientes páginas libres, de modo que cuando comiencen a presentarse los inevitables fallos de página, haya marcos de página para ellas. El intercambiador sólo pasa a la memoria la estructura de usuario y las tablas de páginas. Las páginas de texto, datos y pila se paginan a la memoria conforme se van usando. Cada segmento de cada proceso activo tiene un lugar del disco en el que reside cuando se pagina o intercambia a disco. Los segmentos de datos y de pila se colocan en un dispositivo de “borrador”, pero el texto de programa se toma del archivo binario ejecutable. No se usa una co­ pia de borrador para el texto del programa. La paginación en System V es similar en lo fundamental a la de 4BSD, lo cual no es una gran sorpresa porque la versión de Berkeley había estado estable y operando durante años an­ tes de que se añadiera paginación a System V. No obstante, hay dos diferencias interesantes. En primer lugar, System V emplea el algoritmo de reloj original, de una manecilla, en vez del de dos. Además, en lugar de colocar una página que no se usa en la lista libre durante la segunda pasada, sólo se coloca allí si no se usa durante n pasadas consecutivas. Aunque esta decisión no li­ bera páginas con tanta rapidez como el algoritmo de Berkeley, aumenta en forma considerable la probabilidad de que una vez liberada una página, no se necesitará otra vez pronto. En segundo lugar, en vez de una sola variable lotsfree, System V tiene dos variables, min y max. Cuando el número de marcos de página baja a menos de min, se inicia el demonio de pá­ ginas para que libere más marcos de página. Este demonio sigue ejecutándose hasta que hay max marcos de página desocupados. Tal estrategia elimina una inestabilidad potencial de 4BSD. Consideremos una situación en la que el número de marcos de página libres es uno menos que lotsfree, de modo que el demonio de páginas se ejecuta para liberar una página y llegar a lots­ free. Luego se presenta otro fallo de página que ocupa un marco de página y reduce otra vez el número de marcos de página disponibles a menos de lotsfree, de modo que el demonio de pági­ nas tiene que ejecutarse otra vez. Al escoger un valor de max considerablemente mayor que min, cada vez que se ejecute el demonio de páginas acumulará suficiente inventario como para que no tenga que ejecutarse otra vez durante mucho tiempo. Administración de memoria en Linux Cada proceso Linux en una máquina de 32 bits obtiene 3 GB de espacio de direcciones virtual pa­ ra sí mismo, y el gigabyte restante se reserva para sus tablas de páginas y otros datos del kemel. El gigabyte del kemel no está visible cuando se opera en modo de usuario, pero queda accesible cuando el proceso salta al kemel por una interrupción de sistema. El espacio de direcciones se crea cuando se crea el proceso, y se sobrescribe cuando se emite una llamada exec al sistema. El espacio de direcciones virtual se divide en áreas o regiones homogéneas y contiguas, alineadas a fronteras de página. Es decir, cada área consiste en una serie de páginas consecuti­ vas con las mismas propiedades en cuanto a protección y paginación. El segmento de texto y

RkJQdWJsaXNoZXIy MjI4NDcx