Sistemas operativos modernos

Si se manejan espacios I y D aparte, es reiativamente senciilo compartir programas hacien­ do que dos o más procesos utilicen la misma tabla de páginas para su espacio I pero tablas de páginas distintas para sus espacios D. En una implementación que maneja este tipo de compar­ timiento, lo más común es que las tablas de páginas sean estructuras de datos independientes de la tabla de procesos. Así, cada proceso tendrá dos apuntadores en su entrada de la tabla de procesos, uno a la tabla de páginas de su espacio I y uno a la tabla de páginas de su espacio D, como se muestra en la figura 4-31. Cuando el calendarizador escoge el proceso que se ejecu­ tará, utiliza estos apuntadores para localizar las tablas de páginas apropiadas y prepara la MMU con ellos. Incluso sin espacios I y D distintos, los procesos pueden compartir programas (o, a veces, bibliotecas) pero el mecanismo es más complicado. Programa l______ Datos 1 Datos 2 J "V- Tablas de páginas Figura 4-31. Dos procesos que comparten el mismo programa compartiendo su ta­ bla de páginas. Cuando dos o más procesos comparten código, se presenta un problema con las páginas compartidas. Supongamos que los procesos A y B están ejecutando el editor y compartiendo sus páginas. Si el calendarizador decide desalojar A de la memoria, expulsando todas sus pági­ nas y llenando los marcos de página vacíos con algún otro programa, B comenzará a generar un gran número de fallos de página para volver a traerlas. Asimismo, cuando A termine, es indispensable que pueda descubrirse que las páginas to­ davía se están usando, para que su espacio en disco no se libere por accidente. Por lo general es demasiado costoso examinar todas las tablas de páginas para ver si una página se está com­ partiendo o no, por lo que se necesitan estructuras de datos especiales para llevar el control de las páginas compartidas, sobre todo si la unidad de compartimiento es la página individual (o una serie de páginas), no una tabla de páginas completa. Compartir datos es más complicado que compartir código, pero no es imposible. En particu­ lar, en UNIX, después de una llamada al sistema fork, es obligatorio que el padre y el hijo com

RkJQdWJsaXNoZXIy MjI4NDcx