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