Sistemas operativos modernos
positivo para ver si ya terminò (por lo regular hay un bit que indica si el dispositivo sigue ocu pado o no). Una vez terminada la E/S, el controlador de dispositivo coloca los datos (si los hay) donde se necesitan y regresa. El sistema operativo devuelve entonces el control al invocador. Este método se denomina espera activa y tiene la desventaja de mantener ocupada a la CPU revisando el dispositivo hasta que éste termina. El segundo método consiste en que el controlador de dispositivo pone en marcha el disposi tivo y le pide generar una interrupción cuando haya terminado. En ese momento, el controlador de dispositivo regresará. El sistema operativo bloquea entonces al invocador si es necesario y busca otras cosas que hacer Cuando la controladora detecta que la transferencia terminó, gene ra una interrupción para avisar. Las interrupciones son muy importantes en los sistemas operativos, así que vamos a exami nar la idea con más detenimiento. En la figura 1-lOa vemos un proceso de tres pasos para E/S. En el paso 1, el controlador de dispositivo le dice a la controladora de disco qué debe hacer escribiendo en sus registros de dispositivo. A continuación, la controladora pone en marcha el dispositivo. Cuando la controladora termina de leer o escribir el número de bytes que se le pidió transferir, se lo indica a la controladora de interrupciones a través de las líneas de bus del paso 2. Si la controladora de interrupciones está preparada para aceptar la interrupción (pues podría no estarlo si está ocupada con una de mayor prioridad), aplica en el paso 3 una corriente a una línea del chip de CPU para informarle de la interrupción. En el paso 4, la controladora de interrupcio nes coloca el número del dispositivo en el bus para que la CPU pueda leerlo y sepa cuál dispo sitivo recién terminó (podrían estar operando muchos dispositivos al mismo tiempo). Unidad de disco (a) Instrucción actual Siguiente instrucción 3. Retor 1. Interrupción 2. Envío al man^dor Manejador de interrupciones (b) Figura 1-10. a) Pasos para poner en marcha un dispositivo de E/S y obtener una in terrupción. b) El procesamiento de interrupciones implica tomar la interrupción, ejecutar el manejador de interrupciones y volver al programa de usuario. Cuando la CPU ha decidido aceptar la interrupción, generalmente el contador de programa y la PSW se meten en la pila actual y la CPU pasa a modo de kernel. Podría utilizarse el núme ro de dispositivo como el índice de una parte de la memoria para hallar la dirección del mane jador de interrupciones correspondiente a ese dispositivo. Esta parte de la memoria se denomina vector de interrupciones. Una vez que el manejador de interrupciones (parte del controlador
RkJQdWJsaXNoZXIy MjI4NDcx