miércoles, 4 de marzo de 2020

INTERRUPCIONES Y LLAMADAS DE SERVICIO AL SISTEMA

¿ Qué es una interrupción?

Una interrupción es un mecanismo que permite ejecutar un bloque de instrucciones interrumpiendo la ejecución de un programa, y luego restablecer la ejecución del mismo sin afectarlo directamente.

Las interrupciones son un método del que disponen los dispositivos e incluso los procesos para hacer notar a la CPU la aparición de alguna circunstancia que requiera su intervención.

De este modo, los dispositivos pueden provocar que la CPU deje por el momento la tarea que estaba realizando y atienda la interrupción. Una vez atendida, seguira con su labor anterior

  • Las interrupciones pueden ser producidas por Hardware o por Software
  • Las interrupciones por Hw son producidas por un dispositivo y viajan por el mismo bus del sistema.
  • Las interrupciones por Sw son producidas por medio de la ejecución de una operación especial que se conoce como "llamada al sistema" (system call) o por errores producidos dentro de un proceso, también conocidas como excepciones.

Hay muchos tipos de interrupciones y pare cada uno de estas existe una rutina en el sistema de operación que le da servicio. Los sistemas de operación actuales permiten a los dispositivos tales como E/S o reloj del sistema interrumpir el CPU asíncronamente.


Dentro de un computador
Cuando una computadora se encuentra realizando un proceso este puede interrumpirse por cualquiera de las dos causas siguientes:

1.- Que se haya presentado una causa que impida que siga adelante un trabajo o un programa que no haya terminado:

En este caso las interrupciones pueden darse:

  • Por Software: quiere decir que la interrupción se hace por medio de una instrucción del Sistema operativo que demanda la detención del proceso o por una instrucción del programa mismo que demanda la acción de otro dispositivo.
  • Por Hardware: se refiere a interrupciones provocadas por la acción de algún elemento físico ya sea por una falla, por requerirlo el circuito, por falta de energía eléctrica u otra causa que impida la continuación de un programa dado algunas de estas fallas pueden ser manejadas por el sistema operativo ya sea por normalizar el proceso o para indicar al operador la causa de la interrupción.

2.- Es que haya llegado el fin lógico de un programa o de un trabajo: en este caso el sistema operativo debe retirar el control al programa que ha terminado de introducir una nueva tarea si se tiene alguna espera esta interrupción no representa un mayor problema ya que solo puede darse cuando el programa que se encuentra en proceso demanda a través de una instrucción su propio fin. 



Pasos para una interrupción
  • El CPU suspende lo que estaba realizando. El hw transfiere el control al sistema de operación.
  • Deshabilita las interrupciones. Mientras se atiende una interrupción no se puede atender otra que llegue. Algunas arquitecturas con manejo de interrupciones sofisticadas permiten, mediante un esquema de prioridades, interrumpir un servicio de interrupción para atender otra de mayor prioridad. Aquellas interrupciones de menor o igual prioridad son deshabilitadas.
  • El kernel del sistema de operación salva el estado actual del proceso interrumpido
  • Transfiere su ejecución a una dirección fija. Esta dirección por lo general contiene la dirección de comienzo donde la rutina de servicio de la interrupción se encuentra. Una forma de manejar las interrupciones es invocando una rutina general que examine la información de la interrupción y determine el tipo de interrupción ocurrida, y de alli llama a la rutina que se encarga de atender dicha interrupción. Por lo general se maneja mediante un vector de interrupciones, indexado por el tipo de interrupción. En este vector se encuentra la dirección de comienzo de la rutina que da servicio a dicho tipo. Se le conoce como vector de interrupción. Otra forma de localizar la rutina apropiada es mediante el pooling, es decir, preguntando a cada dispositivo pare ver quien requirió el servicio.
  • Se ejecuta la rutina de interrupción
  • Se restaura el estado anterior
  • Se habilitan las interrupciones.
  • La arquitectura de interrupciones debe también almacenar la dirección de la instrucción interrumpida.

Llamada al sistema.

Es el mecanismo usado por una aplicación para solicitar un servicio al sistema operativo.

Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado, previamente especificado por el mismo código. Esto permite al código privilegiado especificar donde va a ser conectado así como el estado del procesador.

Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso), para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.


  • Llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO.
Llamadas al sistema no bloqueantes: son aquellas llamadas en las que, si lo que se solicita no está disponible, el proceso no se queda bloqueado, sino que devuelven un valor especial indicando la condición de información no disponible
Llamadas al sistema bloqueantes: la aplicación se bloquea a la espera del resultado. Si un hilo hace una llamada bloqueante, todos los hilos se bloquearán. Si hace una llamada no bloqueante, los demás hilos podrán seguir ejecutando.


¿Como se mandan las llamadas al sistema?

    Se activa una interrupción  ejecutando una operación especial conocida  "Llamada al sistema"
    Esta se lanza cuando:

  • Una aplicación de usuario solicita un servicio del sistema operativo.


  • Proporciona los medios para que un programa de usuario pida al so que realice tareas reservadas del so en nombre del programa de usuario.



  • Una llamada al sistema se invoca de diversas maneras dependiendo de la funcionalidad proporcionada por el procesador subyacente.



  • Se trata de un método usado por un proceso para solicitar la actuación del so.



  • Normalmente una llamada al sistema toma la forma de una excepción que efectúa una transferencia a una posición específica en el vector de interrupción.





  • Tipos de llamadas al sistemas
    • Control de procesos
      • Terminar (end), abortar (abort)
      • cargar (load), ejecutar (execute)
      • crear procesos (create process o submit job), terminar procesos (terminate process)
      • fork: inicia un nuevo proceso
      • exec:el programa se ejecuta
      • obtener atributos del proceso (get process attributes), definir atributos del proceso (set process attributes)
      • esperar para obtener tiempo (wait time)
      • esperar suceso (wait event), señalizar suceso (signal event)
      • asignar y liberar memoria.
      • llamada al sistema para liberar memoria (dump) (i45)
    • Administración de archivos
      • crear archivos (create), borrar archivos (delete)
      • abrir (open), cerrar (close)
      • leer (read), escribir (write), re-posicionar (reposition)
      • obtener atributos del archivo, definir atributos del archivo.
      • move: mover archivos
      • copy: copiar archivos
    • Administración de dispositivos
      • solicitar dispositivo (request), liberar dispositivo (release)
      • leer (read), escribir (write), re-posicionar (reposition)
      • obtener atributos de dispositivo, definir atributos de dispositivo
      • conectar y desconectar dispositivos lógicamente.
    • Mantenimiento de la información
      • obtener la hora (time) o la fecha (date), definir la hora o la fecha
      • obtener datos del sistema, establecer datos del sistema
      • obtener los atributos de procesos, archivos o dispositivos
      • establecer los atributos de procesos, archivos o dispositivos
    • Comunicaciones
      • crear, eliminar conexiones de comunicación
      • enviar, recibir mensajes
      • transferir información de estado
      • conectar y desconectar dispositivos remotos. (i43)



  • Llamadas al sistema

    • Abrir archivo
    • Crear archivo
    • Proteger archivo
    • Escribir mensaje en consola
    • Terminar en forma anormal
    • Borrar archivo
    • Leer archivo
    • Modificar archivo (i39)
    • CreateProcess de win32
    • get hostid: Cada computadora de red tiene un nombre de host. Un host tiene un identificador de red. Ésta llamada al sistema hace esa traducción (i49)
    • get processid: Cada proceso tiene un nombre de proceso y este nombre se traduce en un identificador mediante el cual el so hace referencia al proceso. Ésta llamada al sistema realiza la traducción


No hay comentarios.:

Publicar un comentario