Definicion y tipos de interrupciones.

En el contexto de la informática, una interrupción (del inglés interrupt request, en español «petición de interrupción») es una señal recibida por el procesador de una computadora, para indicarle que debe «interrumpir» el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación.

Una interrupción es una suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una subrutina de servicio de interrupción, la cual, por lo general, no forma parte del programa, sino que pertenece al sistema operativo o al BIOS. Una vez finalizada dicha subrutina, se reanuda la ejecución del programa.

Las interrupciones son generadas por los dispositivos periféricos habilitando una señal del CPU (llamada IRQ del inglés «interrupt request») para solicitar atención del mismo. Por ejemplo. cuando un disco duro completa una lectura solicita atención al igual que cada vez que se presiona una tecla o se mueve el ratón.

La primera técnica que se empleó para esto fue el polling, que consistía en que el propio procesador se encargara de sondear los dispositivos periféricos cada cierto tiempo para averiguar si tenía pendiente alguna comunicación para él. Este método presentaba el inconveniente de ser muy ineficiente, ya que el procesador consumía constantemente tiempo y recursos en realizar estas instrucciones de sondeo.

El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta problemática, y delegar en el dispositivo periférico la responsabilidad de comunicarse con él cuando lo necesitara. El procesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de que estos le avisen (le «interrumpan») cuando tengan algo que comunicarle (ya sea un evento, una transferencia de información, una condición de error, etc.).

Tipos de interrupciones

Atendiendo a la fuente que las produce, las interrupciones pueden clasificarse de la siguiente forma:

  • Interrupciones de hardware. Estas son asíncronas a la ejecución del procesador, es decir, se pueden producir en cualquier momento independientemente de lo que esté haciendo el CPU en ese momento. Las causas que las producen son externas al procesador y a menudo suelen estar ligadas con los distintos dispositivos de entrada o salida.
  • Son aquellas que se producen de forma síncrona a la ejecución del procesador y por tanto podrían predecirse si se analiza con detenimiento la traza del programa que en ese momento estaba siendo ejecutado en la CPU. Normalmente son causadas al realizarse operaciones no permitidas tales como la división entre 0, el desbordamiento, el acceso a una posición de memoria no permitida, etc.
  • Interrupciones por software. Las interrupciones por software son aquellas generadas por un programa en ejecución. Para generarlas, existen distintas instrucciones en el código máquina que permiten al programador producir una interrupción, las cuales suelen tener nemotécnicos tales como INT (por ejemplo, en DOS se realiza la instrucción INT 0x21 y en Unix se utiliza INT 0x80 para hacer llamadas de sistema).

Interrupciones de hardware.

Las interrupciones de hardware son aquellas interrupciones que se producen como resultado de, por lo general, una operación de E/S. No son producidas por ninguna instrucción de un programa sino por las señales que emiten los dispositivos periféricos para indicarle al procesador que necesitan ser atendidos.

Cuando el microprocesador accede a un periférico (disco duro, puerto de comunicación…), puede transcurrir algún tiempo antes de que los datos sean obtenidos o transmitidos. La solución más simple es esperar hasta recibir los datos o hasta que se haya efectuado la transmisión (polling), pero esta solución bloquea todos los programas en ejecución, y eso no puede admitirse en un sistema multitarea. Por ello, en los sistemas modernos se prefiere un funcionamiento mediante interrupciones, ya que éstas permiten mejorar la productividad del procesador, de forma que este último puede ordenar una operación de entrada o salida y, en lugar de tener que realizar una espera activa, se puede dedicar a atender a otro proceso o aplicación hasta que el dispositivo esté de nuevo disponible, siendo dicho dispositivo el encargado de notificar al procesador mediante la línea de interrupción que ya está preparado para continuar o terminar la operación de entrada o salida.

Excepciones.

Las excepciones son un tipo de interrupción sincrónica típicamente causada por una condición de error en un programa, como por ejemplo una división entre 0 o un acceso inválido a memoria en un proceso de usuario. Normalmente genera un cambio de contexto a modo supervisor para que el sistema operativo atienda el error. Así pues, las excepciones son un mecanismo de protección que permite garantizar la integridad de los datos almacenados tanto en el espacio de usuario como en el espacio kernel. Cuando el Sistema Operativo detecta una excepción intenta solucionarla, pero en caso de no poder simplemente notificará la condición de error a la aplicación/usuario y abortará la misma.

Interrupciones por software.

Las interrupciones por software, también denominadas llamadas al sistema, son aquellas generadas por un programa mientras este está ejecutándose. En general, actúan de la siguiente manera: Un programa en ejecución llega a una instrucción que requiere del sistema operativo para alguna tarea, por ejemplo para leer un archivo en el disco duro (cuando un programa necesita un dato exterior, se detiene y pasa a cumplir con las tareas de recoger ese dato). En ese momento por tanto llama al sistema y se interrumpe virtualmente hasta recibir respuesta, en el ejemplo anterior hasta que no se haya leído el disco y el archivo esté en memoria principal. Durante esa espera las instrucciones que se ejecutarán no serán del programa, sino del sistema operativo. Una vez éste termine su rutina ordenará reanudar la ejecución del programa autointerrumpido en espera. Por último la ejecución del programa se reanuda.

Comuncacion y sincronizacion entre los procesos.

Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como procesos independientes o cooperantes. Un proceso independiente es aquel que ejecuta sin requerir la ayuda o cooperación de otros procesos. Un claro ejemplo de procesos independientes son los diferentes intérpretes de mandatos que se ejecutan de forma simultánea en un sistema. Los procesos son cooperantes cuando están diseñados para trabajar conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos.

Tanto si los procesos son independientes como cooperantes, pueden producirse una serie de interacciones entre ellos. Estas interacciones pueden ser de dos tipos:

  • Interacciones motivadas porque los procesos comparten o compiten por el acceso a recursos físicos o lógicos. Esta situación aparece en los distintos tipos de procesos anteriormente comentados. Por ejemplo, dos procesos totalmente independientes pueden competir por el acceso a disco. En este caso, el sistema operativo deberá encargarse de que los dos procesos accedan ordenadamente sin que se cree ningún conflicto. Esta situación también aparece cuando varios procesos desean modificar el contenido de un registro de una base de datos. Aquí es el gestor de la base de datos el que se tendrá que encargar de ordenar los distintos accesos al registro.
  • Interacción motivada porque los procesos se comunican y sincronizan entre sí para alcanzar un objetivo común. Por ejemplo, un compilador se puede construir mediante dos procesos: el compilador propiamente dicho, que se encarga de generar código ensamblador, y el proceso ensamblador, que obtiene código en lenguaje máquina a partir del ensamblador. En este ejemplo puede apreciarse la necesidad de comunicar y sincronizar a los dos procesos.

Estos dos tipos de interacciones obligan al sistema operativo a incluir mecanismo y servicios que permitan la comunicación y la sincronización entre procesos.

PROCESOS CONCURRENTES

La concurrencia de procesos se refiere a las situaciones en las que dos o más procesos puedan coincidir en el acceso a un recurso compartido o, dicho de otra forma, que requieran coordinarse en su ejecución. Para evitar dicha coincidencia, el sistema operativo ofrece mecanismos de arbitraje que permiten coordinar la ejecución de los procesos.

Operaciones sobre los procesos.

Los sistemas operativos son responsables de la «gestión de procesos y memoria», por lo que están encargados de realizar una serie de actividades, tales como la planificación o itineración de procesos, la operación sobre procesos y la comunicación entre procesos. Para operar sobre un proceso, los sistemas operativos actuales suministran ciertas funciones, que pueden ser ejecutadas ya sea desde el mismo proceso o desde el intérprete de comandos, si es un usuario el que solicita algún servicio de dicho sistema.

Entre las operaciones sobre procesos que con mayor frecuencia ofrecen los sistemas operativos se encuentran la creación, terminación o destrucción, suspensión y reanudación de procesos. Actualmente, en la mayoría de los S.O., los procesos pueden ejecutarse de forma concurrente, pudiéndose crear y eliminar de forma dinámica, por lo que es necesario que estos sistemas brinden un mecanismo para la creación y terminación de procesos.

PLANIFICACION DE LOS PROCESOS

La Planificación de procesos tiene como principales objetivos la equidad, la eficacia, el tiempo de respuesta, el tiempo de regreso y el rendimiento.

  • Equidad:Todos los procesos deben ser atendidos.
  • Eficacia:El procesador debe estar ocupado el 100% del tiempo.
  • Tiempo de respuesta:El tiempo empleado en dar respuesta a las solicitudes del usuario debe ser el menor posible.
  • Tiempo de regreso:Reducir al mínimo el tiempo de espera de los resultados esperados por los usuarios por lotes.
  • Rendimiento:Maximizar el número de tareas que se procesan por cada hora.

Algoritmos de Planificación

Primero en llegar primero en ser servido

Conocido como FCFS (First Come First Served). Este algoritmo emplea una cola de procesos, asignando un lugar a cada proceso por el orden de llegada. Cuando el proceso llega es puesto en su lugar en la cola después del que llegó antes que él y se pone en estado de listo. Cuando un proceso comienza a ejecutarse no se interrumpe su ejecución hasta que termina de hacerlo.

Prioridad al más corto

Su nombre es SJF (Shortest Job First). El proceso que se encuentra en ejecución cambiará de estado voluntariamente, o sea, no tendrá un tiempo de ejecución determinado para el proceso. A cada proceso se le asigna el tiempo que usará cuando vuelva a estar en ejecución, y se irá ejecutando el que tenga un menor tiempo asignado. Si se da el caso de que dos procesos tengan igual valor en ese aspecto emplea el algoritmo FCFS.

Round Robin

A cada proceso se le asigna un tiempo determinado para su ejecución, el mismo tiempo para todos. En caso de que un proceso no pueda ser ejecutado completamente en ese tiempo se continuará su ejecución después de que todos los procesos restantes sean ejecutados durante el tiempo establecido. Este es un algoritmo basado en FCFS que trata la cola de procesos que se encuentran en estado de listos como una cola circular.

Planificación por prioridad

En este tipo de planificación a cada proceso se le asigna una prioridad siguiendo un criterio determinado, y de acuerdo con esa prioridad será el orden en que se atienda cada proceso.

Planificación garantizada

Para realizar esta planificación el sistema tiene en cuenta el número de usuarios que deben ser atendidos. Para un número «n» de usuarios se asignará a cada uno un tiempo de ejecución igual a 1/n.

Planificación de Colas Múltiples

El nombre se deriva de MQS (Multilevel Queue Schedulling). En este algoritmo la cola de procesos que se encuentran en estado de listos es dividida en un número determinado de colas más pequeñas. Los procesos son clasificados mediante un criterio para determinar en qué cola será colocado cada uno cuando quede en estado de listo. Cada cola puede manejar un algoritmo de planificación diferente a las demás.

Tiempos

En la Planificación de procesos se tiene en cuenta diferentes tiempos que pueden ser calculados, como son el «Tiempo de espera medio», el «Tiempo de retorno del proceso» y el «Tiempo de retorno medio».

 

Bloque de control de los procesos.

Para llevar a cabo la gestión de un proceso, es necesario que el sistema operativo guarde cierta información necesaria. Para ello, existe un registro especial que se conoce como el bloque de control del proceso BCP, o PCB en inglés (Process Control Block).

El BCP es creado por el Sistema operativo cada vez que aparece un nuevo proceso. Los procesos son conocidos para el sistema operativo y por tanto elegibles para competir por los recursos del sistema sólo cuando existe un BCP activo asociado a ellos. Cuando el programa termina, el BCP es eliminado para dejar espacio libre en el registro, y usarlo para almacenar otros BCP.

El bloque de control de procesos difiere mucho de un sistema a otros, pero existen contenidos comunes:

  • Identificador del proceso:Identificar de forma unívoca al proceso en el sistema, generalmente se emplea un entero sin signo que se denomina PID (Process IDentifier)
  • Estado del proceso para el planificador de procesos:preparado, activo o bloqueado.
  • Contexto de la ejecución:valor de los registros del procesador, bits de estados, etc. Esto es, cada vez que se ejecuta el planificador y se realiza una conmutación de procesos, la información sobre en qué lugar se encontraba la ejecución del proceso se encuentra guardada aquí, así como el lugar en el que se paró la ejecución del anterior proceso (cada una en su respectivo BCP).
  • Aspectos relacionados con la administración de memoria:tales como el espacio de direcciones y la cantidad de memoria asignada a un proceso.
  • Aspectos relacionados con la administración de ficheros:tales como los ficheros con los que el proceso está actualmente operando.

          Los procesadores en los que el proceso puede ejecutarse:

  • en caso de soportar el sistema multiprocesador.
  • En el caso de un sistema operativo tipo UNIX:el proceso padre de dicho proceso y la relación de procesos hijos.
  • Estadísticas temporales:Tiempo de lanzamiento del proceso, tiempo en estado activo, etc.

Estado de los procesos.

Todo proceso en un sistema operativo presenta un estado que indica la situación de la ejecución en que se encuentra. El número de posibles estados varía de un sistema operativo a otro

Diagrama de estados simplificado

Consideramos que todo proceso puede estar, como mínimo, en uno de los siguientes tres estados:

  • Activo: el proceso está empleando la CPU, por tanto, está ejecutándose. Pueden haber tantos procesos activos como procesadores haya disponibles. Por tanto, si el sistema dispone de un único procesador, únicamente puede haber un proceso activo a la vez.
  • Preparado: el proceso no está ejecutándose pero es candidato a pasar a estado activo. Es el planificador el que, en base a un criterio de planificación, decide qué proceso selecciona de la lista de procesos preparados para pasar a estado activo.
  • Bloqueado: el proceso está pendiente de un evento externo que le ha hecho bloquear, tales como una operación de lectura/escritura, la espera de finalización de un proceso hijo, una señal o una operación sobre un semáforo. El dispositivo/hecho externo «avisa» al S.O. cuando ha terminado la acción que realizaba mediante una INTERRUPCIÓN, dejando el S.O. lo que está haciendo para atender a esta última. Tras esto, el S.O. comprueba cuales son los procesos que fueron bloqueados por ese evento externo, cambiándolos al estado de preparado.

La transición de activo a preparado y viceversa depende de decisiones tomadas por el planificador del sistema operativo en base a un cierto criterio. La transición de activo a bloqueado, y de bloqueado a preparado puede inducirlas el programador mediante llamadas al sistema

Diagrama de Estados Ampliado

  • En espera / Preparación: Estado por el que pasan los procesos antes de pasar a estar preparados por primera vez. Los procesos, cuando comienzan a existir, no están preparados para comenzar a ejecutar instrucciones hasta que el sistema no ha llevado a cabo una serie de actividades. Una vez que el proceso está completamente cargado, ya se puede producir la primera transición al estado preparado.
  • Terminado: La transición de activo a este estado ocurre cuando el proceso realiza una llamada al sistema solicitando su propia terminación. En estas circunstancias, hay estructuras de datos correspondientes al proceso que no pueden ser liberadas hasta que el proceso padre del que está terminando recoja el código de terminación del mismo. Hasta que esto ocurra, estas estructuras se mantendrán y el proceso seguirá existiendo en estado terminado.
  • Transición: cuando la operación que mantiene a un proceso en estado bloqueado termina, el proceso puede haber perdido parte de los recursos que necesita para proseguir su ejecución. Este es por ejemplo el caso de un sistema con memoria virtual, en el que parte de las páginas de memoria del proceso han sido descargadas a disco. En dicho caso, el proceso tendría que pasar por un estado intermedio transición mientras recupera dichos recursos, y una vez que todos sus recursos vuelven a estar disponibles, volvería al estado preparado.

Hay tres posibles situaciones en las que se ejecutará el planificador del sistema operativo:

El proceso que se encuentra en el estado activo hace una llamada al sistema que, por su naturaleza, resulta en una transición al estado bloqueado. Este es el caso de las llamadas read(), write(), wait(), pause(), entre muchas otras. Al pasar a estado bloqueado, se invoca al planificador para que decida que otro proceso se asignará al procesador.

  • Si el proceso que se encuentra en el estado activo excede el tiempo máximo de asignación, en caso de que lo hubiere.
  • Si el proceso que hasta ese momento se encontraba en estado activo termina de ejecutar su código.

Además, algunos sistemas operativos disponen de un estado terminado en el que los procesos pasan antes de terminar su ejecución.

En el caso del núcleo de Linux, existen tres tipos de estados bloqueado y dos estados terminado.

 

 

¿ Qué es un proceso ?

Se denomina proceso al conjunto de acciones o actividades sistematizadas que se realizan o tienen lugar con un fin. Si bien es un término que tiende a remitir a escenarios científicos, técnicos y/o sociales planificados o que forman parte de un esquema determinado, también puede tener relación con situaciones que tienen lugar de forma más o menos natural o espontánea.

Entonces, cuando hablamos de procesos podemos estar refiriéndonos a una de múltiples cosas, como ser, el proceso evolutivo de las especies que ha ocurrido en la historia del universo de forma ajena a la premeditación humana, procesos científicos como la termodinámica o un proceso de transformación de sustancias como la solidificación, o incluso la formación de un fenómeno meteorológico como un tornado o huracán. También, a nivel político se habla de procesos organizados, como se llamó al Proceso de Reorganización Nacional en Argentina o procesos de conversión de economías.
A nivel social, también existen todo tipo de procesos: cuando se habla de procesos judiciales se comprende los diferentes estadios que atraviesa una persona acusada de determinados cargos, pero también podemos contar los procesos productivos convencionales, como la fabricación de un automóvil u otros objetos de consumo, e incluso se dice que la información es procesada cuando se la analiza y se obtienen de ella determinadas conclusiones.
En la informática, un proceso puede querer decir distintas combinaciones operativas que ocurren simultáneamente para alcanzar un resultado o un producto, como la instalación de un nuevo software, o la consecución de un análisis antivirus.

En distintos momentos de la historia, como parte de diversas prácticas y disciplinas, y con múltiples resultados, positivos o negativos, se ha hablado de procesos que han transformado al ser humano. Puede decirse que la historia de la humanidad es un proceso en curso y que, en definitiva, es la suma de muchos miles de procesos premeditados, espontáneos, voluntarios, involuntarios, científicos y sociales, a pequeña y a gran escala.

Unidad central de procesamiento

Es la unidad fundamental de la computadora, realiza todas las funciones (inteligentes) en la computadora. Se le denomina CPU por las siglas en ingles central prosessing unit,  también se le llama procesador o microprocesador, es el dispositivos que interpreta las funciones contenidas en los programas  o definidas por las entradas a ejecutar el procesamiento de los datos. Es el que caracteriza a la computadora por su programación y ejecución  de múltiples tareas.Resultado de imagen para imagenes de la memoria central de procesamientoResultado de imagen para imagenes de la memoria central de procesamiento

Dispositivos de Salida

los dispositivos de salida, grupo en el que se ubican los monitores y las impresoras, por ejemplo; los primeros emiten información a través de la pantalla, mientras que las segundas lo hacen de forma física y tangible, en hojas de papel.

Otros dispositivos, como las placas de red y los módems, son mencionados como dispositivos de entrada/salida, ya que reciben información y la distribuyen a otras unidades de procesamiento. Una definición más precisa deja en evidencia que todos los dispositivos podrían pertenecer a ambas clasificaciones, según la perspectiva desde la cual se miren; el teclado, el mouse y el escáner también envían y reciben señales desde y hacia las distintas partes de un ordenador.

La pantalla táctil es un claro ejemplo de un dispositivo híbrido, ya que recoge datos cada vez que se pulsa su superficie, pero también imprime constantemente la información procesada, tal y como un monitor tradicional. Es importante aclarar que cada vez que un usuario interactúa con uno de ellos, sus acciones son enviadas al procesador (o los procesadores) para que se evalúen y se genere un resultado; éste puede ser, a grandes rasgos, de tipo visual, auditivo, o una combinación de ambos (al presionar la tecla de un piano virtual, por ejemplo, se emite un sonido a la vez que se anima el instrumento para simular su movimiento).

sa1

Dispositivos de entrada

Los dispositivos de entrada son aquellos equipos y componentes que permiten ingresar información a la unidad de procesamiento; algunos ejemplos conocidos por todos son el teclado, el mouse (también llamado ratón), el escáner, la cámara web (webcam), el lápiz óptico y el micrófono; la forma en la que el usuario interactúa con ellos es muy variada y tiene, en cada caso, un propósito diferente, que puede ser la digitalización de un texto o de una imagen, la captura de una secuencia de vídeo o la grabación de una canción, entre tantas otras posibilidades.

 

dispositivosdeentrada