Sunteți pe pagina 1din 7

Interrupciones y Llamadas al sistema

¿ Qué es una interrupcion?


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 metodo 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.

Llamada al sistema.

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 interrupcion ejecutando una operacion 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 sistema


 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), reposicionar (reposition)
 obtener atributos del archivo, definir atributos del archivo.
 move: mover archivos
 copy: copiar archivos

 Adminsitración de dispositivos
 solicitar dispositivo (request), liberar dispositivo (release)
 leer (read), escribir (write), reposicionar (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
 establer 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
Modos de direccionamientos

Se les llama modos de direccionamiento a las distintas formas de combinar los


operandos según el acceso que se hace a memoria.
Dicho de otra manera, un modo de direccionamiento será una forma de parámetro
para las instrucciones.
Una instrucción que lleve un parámetro, por lo tanto, usará un modo de
direccionamiento, que dependerá de cómo direccionará (accesará) al parámetro;
una instrucción de dos parámetros, combinará dos modos de direccionamiento.

Direccionamiento implícito
Depende solamente de la instrucción, es decir, la instrucción no lleva parámetros.
Particularmente en instrucciones que no accesan memoria, o bien que tienen una
forma específica de accesarla.
Ejemplos: PUSHF, POPF, NOP

Modo registro
Usa solamente registros como operandos
Es el más rápido, pues minimiza los recursos necesarios (toda la información fluye
dentro del EU del CPU)
Ejemplo:
MOV AX, BX
Modo inmediato
Tiene dos operandos: un registro y una constante que se usa por su valor.
El valor constante no se tiene que buscar en memoria, pues ya se obtuvo al hacer
el “fetch” de la instrucción.
Ejemplo:
MOV AH, 9
Modo directo
Uno de los operandos involucra una localidad específica de memoria
El valor constante se tiene que buscar en memoria, en la localidad especificada.
Es más lento que los anteriores, pero es el más rápido para ir a memoria, pues ya
“sabe” la localidad, la toma de la instrucción y no la tiene que calcular.
Ejemplo:
MOV AH, [0000]
MOV AH, Variable
Estas dos instrucciones serían equivalentes, si Variable está, por ejemplo, en la
localidad 0 de memoria. En la forma primitiva del lenguaje de máquina, como el
primer ejemplo, se tiene que indicar “mover a AH el contenido (indicado por los
corchetes), de la localidad 0 de los datos (lo de los datos es implícito). El lenguaje
Ensamblador, sin embargo, nos permite la abstracción del uso de variables, pero
como una variable tiene una localidad determinada en memoria, para el procesador
funciona igual. La única diferencia consiste en que el programador no tiene que
preocuparse por la dirección, ese manejo lo hace automáticamente el Ensamblador.

Modo indirecto
Se usan los registros SI, DI como apuntadores
El operando indica una localidad de memoria, cuya dirección (sólo la parte
desplazamiento) está en SI o DI.
Es más lento que los anteriores, pues tiene que “calcular” la localidad
Ejemplos:
MOV AL, [SI]
MOV BL, ES:[SI] ; Aquí se dice que se usa un “segment override”, donde se indica
que en vez de usar el segmento de datos por defecto, se use en su lugar como
referencia el segmento extra.

Modo indexado de base


Formato:
[
BX o BP
+ SI o DI (opcionales)
+ constante (opcional)
]
BX o BP indica una localidad base de la memoria
A partir de BX o BP, se puede tener un desplazamiento variable y uno constante
La diferencia es el segmento sobre el que trabajan por defecto:
BX por defecto en el segmento de datos
BP por defecto en el segmento de pila.
Ejemplos:
MOV AX, [BX]
MOV DX, [BX+2]
MOV CX, [BX+DI]
MOV DL, [BX+SI+3]

S-ar putea să vă placă și