Sistemas operativos modernos
el barbero están activos. Cuando el cliente libera mutex, el barbero lo toma, efectiía algunas la bores de mantenimiento e inicia el corte de pelo. Una vez terminado el corte, el cliente sale del procedimiento y deja la peluquería. A dife rencia de nuestros ejemplos anteriores, no hay ciclo para el cliente porque cada cliente sólo re cibe un corte de pelo. El barbero sí está en un ciclo, y trata de atender al siguiente cliente. Si hay uno presente, realiza otro corte; de lo contrario, se desactiva. Como nota al margen, vale la pena señalar que si bien los problemas de los lectores y es critores y del barbero dormilón no implican transferencia de datos, pertenecen al área de co municación entre procesos porque implican una sincronización entre múltiples procesos. 2.5 CALENDARIZACION Una computadora multiprogramada suele tener varios procesos compitiendo por la CPU al mis mo tiempo. Esta situación se presenta cada vez que dos o más procesos están en el estado listo en forma simultánea. Si sólo se cuenta con una CPU, es preciso decidir cuál proceso se ejecu tará a continuación. La parte del sistema operativo que toma la decisión se denomina calenda rizador, y el algoritmo que usa, algoritmo de calendarización. Estos conceptos son el tema de las siguientes secciones. Muchos de los aspectos de la calendarización de procesos se aplican por igual a la calen darización de subprocesos, aunque hay algunas diferencias. En un principio nos concentrare mos en la calendarización de procesos; más adelante examinaremos en forma explícita la de subprocesos. 2.5.1 Introducción a la calendarización En la época de los sistemas por lotes que recibían sus entradas en forma de imágenes de taijetas grabadas en cinta magnética, el algoritmo de calendarización era sencillo: tan sólo se ejecutaba el siguiente trabajo de la cinta. Cuando aparecieron los sistemas de tiempo compartido, el algo ritmo de calendarización se volvió más complejo porque casi siempre había varios usuarios en espera de ser atendidos. Algunos mainframes siguen combinando el servicio por lotes y de tiempK) compartido, lo que obliga al calendarizador a decidir si ejecutará a continuación un tra bajo por lotes o atenderá a un usuario en una terminal. (Por cierto, un trabajo por lotes podría ser una solicitud de ejecutar varios programas en forma sucesiva, pero en esta sección daremos por hecho que es una solicitud de ejecutar un solo programa.) Dado que el tiempo de CPU es un recurso preciado en estas máquinas, un buen calendarizador puede ser crucial para el de sempeño percibido y la satisfacción de los usuarios. Por ello, se ha trabajado mucho en idear algoritmos de calendarización ingeniosos y eficientes. Con la llegada de las computadoras personales, la situación cambió en dos sentidos. Prime ro, casi todo el tiempo sólo hay un proceso activo. Es poco probable que un usuario que está cap turando un documento en un procesador de texto esté compilando al mismo tiempo un programa.
RkJQdWJsaXNoZXIy MjI4NDcx