Sistemas operativos modernos

Si el programa fuera de un solo subproceso, cada vez que se iniciara un respaldo en disco se ignorarían los comandos provenientes del teclado y el ratón, hasta que dicho respaldo ter­ minara. El usuario percibiría esto como lentitud del sistema. O bien, los sucesos de teclado y ratón interrumpirían el respaldo en disco para que el desempeño mejorara, pero eso daría pie a un modelo de programación complejo, controlado por interrupciones. Con tres subprocesos, el modelo de programación es mucho más sencillo. El primero se limita a interactuar con el usuario. El segundo reformatea el documento cuando se le solicita. El tercero escribe el con­ tenido de la RAM en disco en forma periódica. Debe ser obvio que tener tres procesos distintos no funcionaría en este caso porque los tres subprocesos necesitan trabajar con el documento. Al tener tres subprocesos en lugar de tres pro­ cesos, se comparte la misma memoria y todos los subprocesos tienen acceso al documento que se está editando. Se presenta una situación análoga con muchos otros programas interactivos. Por ejemplo, una hoja de cálculo electrónica es un programa que permite al usuario mantener una matriz, de la cual algunos elementos son datos que proporciona el usuario. Otros elementos se calculan con base en los datos de entrada, aplicando fórmulas que pueden ser complejas. Cuando un usuario modifica un elemento, es posible que muchos otros elementos tengan que recalcularse. Al tener un subproceso que reahce el recálculo en segundo plano, el subproceso interactivo pue­ de realizar otros cambios que el usuario ordene mientras se efectúan los cálculos. También, un tercer subproceso puede encargarse de grabar en forma periódica copias de seguridad en disco por su cuenta. Ahora consideremos otro ejemplo en el que los subprocesos son útiles: un servidor para un sitio Web. Llegan solicitudes de páginas y la página solicitada se envía al cliente. En casi todos los sitios Web, algunas páginas son visitadas con mayor frecuencia que otras. Por ejem­ plo, la página principal de Sony es más visitada que una página en las profundidades del árbol que contiene las especificaciones técnicas de alguna cámara grabadora específica. Los servi­ dores Web aprovechan este hecho para mejorar el desempeño, manteniendo en la memoria principal las páginas más solicitadas para no tener que traerlas del disco. Esto se llama caché y también se usa en muchos otros contextos. En la figura 2-10a se muestra una forma de organizar el servidor Web. El subproceso despa­ chador lee las solicitudes que llegan de la red. Después de examinar una solicitud, el despacha­ dor escoge un subproceso trabajador inactivo (es decir, bloqueado) y le pasa la solicitud, tal vez escribiendo un apuntador al mensaje en una palabra especial asociada con cada subproceso. Lue­ go, el despachador activa al trabajador, pasándolo del estado bloqueado al estado listo. Cuando el trabajador se activa, ve si la solicitud puede atenderse desde el caché de páginas Web, al que tienen acceso todos los subprocesos. De lo contrario, inicia una operación read pa­ ra obtener la página del disco y se bloquea mientras se ejecuta dicha operación. Cuando el sub­ proceso se bloquea, se escoge otro subproceso para que se ejecute, quizá el despachador, a fin de conseguir más trabajo; o podría ser que otro trabajador ya esté listo para ejecutarse. Este modelo permite escribir el servidor como una colección de subprocesos secuenciales. El programa del despachador consiste en un ciclo infinito para obtener una solicitud de trabajo y entregarla a un trabajador. El código de cada trabajador consiste en un ciclo infinito que acep­ ta una sohcitud del despachador y revisa el caché para ver si la página está presente. De ser así.

RkJQdWJsaXNoZXIy MjI4NDcx