miércoles, 4 de marzo de 2020

VIDEO SOBRE LLAMADAS AL SISTEMA


VIDEO SOBRE CONCEPTO DE INTERRUPCIÓN


LLAMADAS DEL SISTEMA


Los servicios del sistema son funciones predefinidas, que pueden ser utilizadas en los programas. Por medio de las llamadas a estos servicios es posible que exista la comunicación entre un programa en ejecución y el sistema operativo, las llamadas a servicios se encuentran en manuales de ensamblador y dependen de la arquitectura en la que se esté programando.



Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, en el bloque de control de proceso o PCB (Process Control Block) para poder continuar ejecutándose posteriormente.
Las categorías de las llamadas a servicios son las siguientes:

Comunicaciones:
Esta categoría consta de las acciones relacionadas con mensajes, como es crear la conexión, enviar y recibir mensajes, transferir información de estado y eliminar la conexión.

Control de proceso:
Consta de crear, cargar, ejecutar, abortar y terminar un proceso, así como obtener y establecer atributos, liberar memoria o esperar un suceso.

Manipulación de archivos:
Esta categoría consiste de crear, abrir, leer, obtener atributos, establecer atributos, cerrar y eliminar archivos.

Manipulación de información:
Acciones que requieren obtener datos del sistema, como por ejemplo la fecha y hora pertenecen a esta categoría.

Manipulación de periféricos:
Cualquier acción que requiera utilizar un periférico, como solicitar, escribir, leer, obtener y establecer atributos y liberar periférico pertenece a esta categoría.

EJEMPLO
Para utilizarlas en ensamblador es necesario cargar datos a los registros adecuados según el servicio a utilizar y después llamar a la interrupción correspondiente, como se puede ver en el siguiente ejemplo:
mov dx,82         ->           Asigna el valor 82 ASCII (Correspondiente a “R”) al registro dx
mov ah,02h      ->           Carga el valor 02h (servicio a utilizar) en el registro ah
int 21h              ->           Inicia la interrupción 21h, revisa el valor en ah y utiliza el servicio                                                                correspondiente, en este caso desplegar el carácter 
R.


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)

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.


Administració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
·         establecer los atributos de procesos, archivos o dispositivos

Comunicaciones
·         crear, eliminar conexiones de comunicación
·         enviar, recibir mensajes
·         transferir información de estado



INTERRUPCIONES

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. De este modo un programa puede ser interrumpido temporalmente para atender alguna necesidad urgente de la computadora y luego continuar su ejecución de manera normal y como si nada hubiera pasado.



Pasos durante 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.