Sistemas operativos modernos
Hasta aquí hemos visto dos diseños posibles: un servidor Web de múltiples subprocesos y otro de un solo subproceso. Supongamos que no es posible utilizar múltiples subprocesos pe ro que los diseñadores del sistema consideran intolerable la baja en el desempeño debida al uso de un solo subproceso. Si se cuenta con una versión no bloqueadora de la llamada al sis tema read, puede adoptarse un tercer enfoque. Cuando llega una solicitud, la examina el úni co subproceso que hay. Si puede atenderse con una página del caché, perfecto; de lo contrario, se inicia una operación de disco no bloqueadora. El servidor registra el estado de la solicitud actual en una tabla y luego obtiene el siguien te evento, que podría ser una nueva solicitud de trabajo o una respuesta del disco relacionada con una operación anterior. Si se trata de trabajo nuevo, se inicia. Si es una respuesta del dis co, se saca la información pertinente de la tabla y se procesa la respuesta. Con E/S de disco no bloqueadora, es probable que la respuesta consistirá en una señal o una interrupción. En este diseño se pierde el modelo de “procesos secuenciales” que teníamos en los dos primeros casos. Se vuelve necesario guardar de manera explícita el estado del cálculo en la ta bla y restaurarlo de ella cada vez que el servidor deja de trabajar con una solicitud y comien za a trabajar con otra. En efecto, estamos simulando los subprocesos y sus pilas de la forma difícil. Un diseño así, en el que cada cálculo tiene un estado guardado y existe algún conjun to de eventos que pueden modificar el estado, se denomina máquina de estados finitos. Este concepto se utiliza en forma amplia en todos los campos de las ciencias de la computación. Ya deberán ser obvias las ventajas de los subprocesos. Permiten conservar la idea de pro cesos secuenciales que efectúan llamadas bloqueadoras al sistema (digamos, para E/S de dis co), pero de todos modos logran paralelismo. Las llamadas bloqueadoras al sistema facilitan la programación, y el paralelismo mejora el desempeño. El servidor de un solo subproceso conserva la comodidad de las llamadas al sistema bloqueadoras pero sacrifica desempeño. El tercer enfoque obdene muy buen desempeño gracias al paralelismo, pero utiliza llamadas no bloqueadoras e interrupciones, así que es difícil de programar. Estos modelos se resumen en la figura 2-12. Modelo Características Subprocesos Paralelismo, llamadas bloqueadoras al sistema Proceso de un solo subproceso Sin paralelismo, llamadas bloqueadoras al sistema Máquina de estados finitos Paralelismo, llamadas no bloqueadoras al sistema, Interrupciones Figura 2-12. Tres formas de construir un servidor. Un tercer ejemplo de la ufilidad de los subprocesos es una aplicación que debe procesar una gran cantidad de datos. La estrategia normal es leer un bloque de datos, procesarlo y vol ver a escribirlo. El problema es que si sólo hay disponibles llamadas bloqueadoras al sistema, el proceso se bloquea mientras llegan y salen los datos. Tener inactiva a la CPU cuando hay mucho que calcular, es a todas luces un desperdicio que debe evitarse en la medida de lo po sible.
RkJQdWJsaXNoZXIy MjI4NDcx