Sistemas operativos modernos

Cabe señalar que no se prohíbe el inicio de instrucciones posteriores a aquella a la que apunta el CP. El único punto es que cualquier cambio que efectúen tales instrucciones en los registros o la memoria deberán deshacerse antes de que ocurra la interrupción. Se permite que ya se ha­ ya ejecutado la instrucción a la que apunta el CP, pero también se permite que todavía no lo han hecho. Sin embargo, debe quedar claro de cuál caso se trata. Es común, si la interrupción es de E/S, que todavía no se haya iniciado la instrucción; pero si la interrupción en realidad es de sistema o un fallo de página, el CP por lo general apunta a la instrucción que causó el fallo, para poder reiniciarla después. Una interrupción que no cumple con estos requisitos es una interrupcjón imprecisa y ha­ ce muy ardua la vida del escritor de sistemas operativos, pues debe determinar qué ha sucedido y qué aún no. Las máquinas con interrupciones imprecisas suelen arrojar una gran cantidad de información de estado interna a la pila para que el sistema operativo tenga la posibilidad de di­ lucidar qué estaba sucediendo. Guardar una gran cantidad de información en la memoria en ca­ da interrupción hace que las interrupciones sean lentas y que la recuperación lo sea aún más. Esto da pie a la curiosa situación de que las CPUs superescalares muy rápidas a veces no son apropiadas para aplicaciones en tiempo real debido a la lentitud de las interrupciones. Algunas computadoras se diseñan de modo que algunos tipos de interrupciones de E/S y de sistema sean precisas y otras no. Por ejemplo, si las interrupciones de E/S son precisas pero las de sistema causadas por errores de programación fatales no lo son, no hay mucho problema por­ que no será necesario tratar de reiniciar el proceso que se estaba ejecutando. Algunas máquinas tie­ nen un bit que puede encenderse para obligar a que todas las interrupciones sean precisas. La desventaja de encender este bit es que obliga a la CPU a llevar un registro minucioso de todo lo que está haciendo y mantener copias sombra de los registros, para poder generar una interrupción pre­ cisa en cualquier instante. Todo este gasto adicional afecta de manera considerable el desempeño. Algunas máquinas superescalares, como la Pentium Pro y todas sus sucesoras, tienen interrup­ ciones precisas para permitir que los programas antiguos para 386,486 y Pentium I funcionen en forma correcta (la superescalaridad se introdujo en la Pentium Pro; la Pentium I sólo tenía dos canalizaciones). El precio que se paga por tener interrupciones precisas es una lógica de inte­ rrupciones extremadamente compleja dentro de la CPU, para asegurar que cuando el controla­ dor de interrupciones avise que desea causar una interrupción, se permita terminar a todas las instrucciones que hayan llegado hasta cierto punto y no se permita a ninguna instrucción pos­ terior tener algún efecto perceptible sobre el estado de la máquina. Aquí el precio no se paga en tiempo sino en área de chip y en complejidad del diseño. Si no se requirieran interrupcio­ nes precisas para garantizar la compatibilidad hacia atrás, esta área del chip podría aprovechar­ se para tener cachés más grandes, lo cual haría más rápida a la CPU. Por otra parte, las interrupciones imprecisas hacen mucho más complicado y lento al sistema operativo, por lo que no es fácil determinar cuál enfoque es mejor en realidad. 5.2 PRINCIPIOS DEL SOFTWARE DE E/S Dejemos ahora a un lado el hardware de E/S y examinemos el software de E/S. Primero anali­ zaremos las metas de dicho software y luego veremos las distintas formas en que puede efec­ tuarse E/S desde el punto de vista del sistema operativo.

RkJQdWJsaXNoZXIy MjI4NDcx