Sistemas operativos modernos

Proceso servidorWeb Espacio de usuario \ Espacio í de kemel de red Figura 2-10. Servidor Web de múltiples subprocesos. el trabajador la envía al cliente y se bloquea en espera de una nueva solicitud; de lo contrario, ob­ tiene la página del disco, la envía al cliente y se bloquea en espera de una nueva solicitud. En la figura 2-11 se presenta un bosquejo del código. Aquí, al igual que en el resto del li­ bro, damos por hecho que TRUE es la constante 1. Asimismo, buf y page son estructuras apro­ piadas para contener una solicitud de trabajo y una página Web, respectivamente. while (TRUE) { obt_sig_solicitud(&buf); delegar_trabajo(&buf); } (a) while (TRUE) { esperar_trabajo(&buf) buscar_pag_en_cache(&buf, &pag); if (pagina_no_en_cache(&pag)) leer_pag_de_disco(&buf, &pag); devolver_pagina(&pag); } (b) Figura 2-11. Bosquejo del código para la figura 2-10. a) Subproceso despachador, b) Subproceso trabajador. Consideremos cómo podría escribirse el servidor Web si no hubiera subprocesos. Una po­ sibilidad es que opere como un solo subproceso. El ciclo principal del servidor obtiene una so­ licitud, la examina y lleva a cabo el trabajo que se pide antes de obtener la siguiente. Mientras espera que el disco termine, el servidor está inactivo y no procesa ninguna otra solicitud. Si el servidor Web se está ejecutando en una máquina dedicada, como es común, la CPU estará inac­ tiva mientras el disco termina el acceso solicitado. El resultado neto es que se procesan muchas menos solicitudes por segundo. Vemos así que los subprocesos mejoran considerablemente el desempeño, aunque cada uno se programa en forma secuencial, del modo acostumbrado.

RkJQdWJsaXNoZXIy MjI4NDcx