¿Qué se entiende por interrupciones en el contexto de los sistemas operativos?

9

He decidido leer los conceptos de sistemas operativos de Silberschatz, Galvin Gagne (octava edición) durante el verano. Llegué a un tema que me confunde: las interrupciones y su papel en relación con los sistemas operativos.

El texto dice que un sistema operativo comenzará un primer proceso como "init" y luego esperará a que ocurra un "evento" y este evento generalmente se señala mediante una interrupción. El texto también dice que la interrupción puede provenir del hardware o del software. ¿Cómo funciona esto, con un poco más de detalle? ¿El sistema operativo está impulsado por interrupciones?

Solo estoy buscando una comprensión general.

Ockham
fuente

Respuestas:

8

Cuando el sistema operativo ejecuta un proceso como "init", habría enviado señales a otros subsistemas / administradores de dispositivos, etc., como la memoria, los dispositivos de E / S, etc. La interrupción es solo una forma de decirle al procesador o al Sistema operativo que está listo, o tiene una nueva entrada, etc. Entonces, en algún momento durante el inicio, el sistema operativo está esperando que los subsistemas estén listos, y una interrupción de estos subsistemas indicaría exactamente eso. Así que a eso se refiere el "evento".

Con respecto a las interrupciones de hardware o software, las interrupciones de hardware son las que provienen del hardware. P.ej. Dispositivos de E / S como teclado, etc. Una interrupción de hardware hace que el procesador guarde su estado y comience la ejecución del controlador de interrupciones. Por otro lado, las interrupciones de software son instrucciones en el conjunto de instrucciones, lo que hace que el procesador cambie su nivel de privilegio de supervisor de usuario, también conocido como cambio de contexto. Estos detalles serán cubiertos más adelante en el libro de texto.

Caos
fuente
4

Las interrupciones permiten que el sistema operativo tome nota de un evento externo, como un clic del mouse. Las interrupciones de software, mejor conocidas como excepciones, permiten que el sistema operativo maneje eventos inusuales como errores de división por cero provenientes de la ejecución del código.

La secuencia de eventos suele ser así:

  1. El hardware señala una interrupción al procesador
  2. El procesador nota la interrupción y suspende el software que se está ejecutando actualmente.
  3. El procesador salta a la función correspondiente del controlador de interrupciones en el sistema operativo
  4. El manejador de interrupciones sigue su curso y regresa de la interrupción.
  5. El procesador se reanuda donde lo dejó en el software que se estaba ejecutando anteriormente

La interrupción más importante para el sistema operativo es la interrupción por tic del temporizador. La interrupción de tic del temporizador permite que el sistema operativo recupere periódicamente el control del proceso de usuario actualmente en ejecución. Luego, el sistema operativo puede decidir programar otro proceso, volver al mismo proceso, realizar tareas domésticas, etc. La interrupción de temporizador proporciona la base para el concepto de multitarea preventiva.


fuente
4

Una interrupción es un evento "inusual" que ocurre que debe procesarse de inmediato , independientemente de lo que esté sucediendo. Digo "inusual" entre comillas, porque no son necesariamente inesperadas o malas, sino "inusuales" desde el punto de vista de la CPU porque "simplemente suceden" mientras está ocupado ejecutando código que puede no estar relacionado.

La CPU tiene algún mecanismo para escuchar las interrupciones, y alguna forma de configurar "qué hacer" cuando ocurren interrupciones de varios tipos. Esto permite al sistema operativo organizar que se le notifique cuando los dispositivos de hardware hacen cosas (incluido el reloj de hardware más importante, que simplemente genera interrupciones a intervalos regulares). A través de la configuración de manejo de interrupciones de la CPU, el código designado en el sistema operativo obtendrá el control cada vez que ocurran interrupciones.

La computadora está en un estado muy desagradable (para un programador de aplicaciones) cuando comienza a ejecutarse un controlador de interrupciones; la máquina estaba ocupada haciendo otra cosa (que podría ser cualquier cosa ) y ahora se le ha notificado al sistema operativo que "algo ha sucedido". Tiene que recopilar cualquier otra información necesaria para manejar la interrupción desde cualquier parte de la máquina en la que debería estar y hacer el procesamiento necesario sin molestar que "podría ser cualquier cosa" que se estaba ejecutando en la CPU. Si el sistema operativo desea cambiar qué proceso de aplicación se está ejecutando actualmente, tendrá que guardar suficiente contexto para poder restaurarlo más tarde (nuevamente, sin alterar ese contexto), luego cargar algún otro contexto y luego dejar que la CPU se reanude normalmente ejecución en ese contexto.

Como se mencionó, las interrupciones se usan para recibir notificaciones de dispositivos de hardware (la única alternativa sería verificarlas periódicamente), realizar un seguimiento del tiempo y obtener la oportunidad garantizada de recuperar el control de un proceso de aplicación (para cambiar qué aplicación se está ejecutando) , recuperarse de los procesos de la aplicación ejecutando instrucciones no válidas, y también para permitir que las aplicaciones realicen solicitudes del sistema operativo. Estas últimas se conocen como llamadas al sistema. Para evitar que las aplicaciones estropeen la máquina y entre sí, normalmente se ejecutan con la máquina en "modo de usuario", lo que impide que la aplicación haga básicamente algo más que leer y escribir memoria (virtual) ya asignada. Esto significa que hacer cualquier cosade lo contrario (leer / escribir archivos, pedir más memoria, acceder a dispositivos, etc.), la aplicación debe realizar una llamada al sistema; básicamente lo hace dejando algo de información sobre lo que quiere hacer en algún lugar que sepa que el sistema operativo lo buscará, luego ejecuta una instrucción de CPU que causa una interrupción del tipo correcto. El sistema operativo puede ver lo que la aplicación estaba tratando de hacer y determinar si debía llevar a cabo esa solicitud. Esta garantía de que el sistema operativo estará involucrado en cualquier intento de proceso de hacer algo que afecte cualquier cosa fuera del proceso es la única forma en que se pueden hacer cumplir las políticas de acceso.

Entonces, esencialmente, sí, el sistema operativo es impulsado por interrupciones. Un sistema operativo "abstracto" inicia la máquina en un estado de "operación normal" y en algún momento deja el control a un proceso "normal". En circunstancias normales, el sistema operativo solo recuperará el control manejando las interrupciones; pero como casi nada interesante sucede sin una interrupción, el sistema operativo básicamente tiene el control de todo todo el tiempo.

Ben
fuente
3

El sistema operativo es impulsado por interrupciones. Esto significa que:

Si no hay procesos para ejecutar, no hay dispositivos de E / S que atender y no hay usuarios a quienes responder, un sistema operativo se quedará en silencio, esperando que algo suceda. Los eventos casi siempre se señalan por la ocurrencia de una interrupción o una trampa, una trampa es una interrupción de hardware generada cuando se da una instrucción no válida y luego devuelve el control al sistema operativo.

Un ejemplo de una instrucción no válida es cuando un programa intenta acceder al espacio de memoria de otro programa sin tener un permiso.

Peter Mortensen
fuente
las interrupciones no siempre tienen que ser algo malo o inválido como lo describiste
Estaba describiendo la interrupción de la trampa, por lo que sé, se generó debido a algún error o instrucciones no válidas. gracias por notificarme