Actualizado el 21 de Marzo del 2018 (Publicado el 3 de Enero del 2018)
625 visualizaciones desde el 3 de Enero del 2018
266,9 KB
39 paginas
Creado hace 8a (03/11/2015)
Llamadas al sistema
Índice
1. Fundamentos
2. Llamadas al sistema bajo DOS
1/77
Llamadas al sistema
1. Fundamentos
1. Fundamentos
Índice
1. Concepto
2. Librerías
3.
4.
Implementación
Interrupciones
2/77
1
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Llamadas al sistema
1.1. Concepto
(cid:127) Mecanismo por el cual las aplicaciones solicitan
servicios al sistema operativo
CAPA
SOFTWARE
aplicación
aplicación
aplicación
ESPACIO DE
USUARIO
interfase de llamadas al sistema
núcleo del sistema
núcleo del sistema operativo
ESPACIO DE
KERNEL
código orientado a la arquitectura
hardware
CAPA FÍSICA
3/77
Llamadas al sistema
1.1. Concepto
(cid:127) Las operaciones de comunicación con dispositivos
periféricos o con controladores del sistema se
podrían realizar en cada aplicación pero…
esta solución no genera aplicaciones “portables”
sobrecarga el desarrollo de aplicaciones
(cid:127) Es más eficiente confiar estas operaciones al sistema
operativo…
que ofrece una “máquina abstracta” que opera de una
manera normalizada
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
funciona del mismo modo independientemente de la
capa física ocultando los detalles de implementación
4/77
2
Llamadas al sistema
1.1. Concepto
(cid:127) Clases de servicios:
Control de procesos creacíón, ejecución,
sincronización, reserva/liberación de memoria…
Manejo de ficheros creación, borrado, lectura,
escritura…
Manejo de dispositivos solicitud, configuración…
Información fecha, hora, sistema, procesos…
Comunicación creación de conexión, envío y
recepción de mensajes…
5/77
Llamadas al sistema
1.1. Concepto
(cid:127) Servicios típicos son:
open abre (y crea) un descriptor de fichero1
read lee un descriptor de fichero
write escribe un descriptor de fichero
close cierra un descriptor de fichero
wait espera al cambio de estado de un proceso
exec ejecuta un fichero
fork crea un proceso hijo
exit terminación normal de un proceso
kill envía una señal a un proceso
Existen cientos de servicios
1 incluye stdin, stdout, stderr
6/77
3
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Llamadas al sistema
1.1. Concepto
(cid:127) Las llamadas al sistema implican:
1. detención de la aplicación que invoca la llamada al
sistema salvando su estado
2.
transferencia de control (salto) a código privilegiado
(núcleo del sistema)
3. una vez finalizada la llamada, devolución del control a
la aplicación
conmutación de contexto y conmutación de modo de
ejecución (entre modo usuario y modo supervisor)
7/77
Llamadas al sistema
1.2. Librerías
(cid:127) Generalmente los sistemas proporcionan una librería
o API (Application Programming Interface) que
permite relacionar las aplicaciones con el sistema
La librería cuenta con funciones que empaquetan las
llamadas al sistema con el fin de simplificar la escritura
del código
La función permite pasar los argumentos en los
registros adecuados (y en la pila, en su caso) obviando
detalles del ABI (Application Binary Interface) 1
1 ABI determina el orden en el que se pasan argumentos, entre
otras cosas
8/77
4
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Llamadas al sistema
1.2. Librerías
Por ejemplo, leer carácter del teclado
_getch()
int 21h
AH = 08h
(DOS)
int 80h
EAX = 03h
(Linux)
9/77
Llamadas al sistema
1.2. Librerías
(cid:127) Esquema de uso
CAPA
SOFTWARE
aplicación
aplicación
librería
ESPACIO DE
USUARIO
interfase de llamadas al sistema
núcleo del sistema operativo
núcleo del sistema
ESPACIO DE
KERNEL
código orientado a la arquitectura
hardware
CAPA FÍSICA
10/77
5
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Llamadas al sistema
1.2. Librerías
(cid:127) En sistemas DOS no existen librerías
…aunque algunos se refieren a la INT21h como API del DOS
(cid:127) En sistemas Linux:
Librería de C glibc (gnu C library)
(cid:127) En sistemas Windows:
Win32 API en librerías dinámicas ntdll.dll,
kernel32.dll, user32.dll y gdi32.dll que incluye
la librería CRT (C-Run Time library)
11/77
Llamadas al sistema
1.2. Librerías
(cid:127) La librería GNU-C glibc
Es la biblioteca estándar de C de GNU (sistema
operativo libre basado en el núcleo Linux)
Es muy portable soporta gran cantidad de
plataformas hardware y núcleos diferentes a Linux
12/77
6
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Llamadas al sistema
1.3. Implementación
(cid:127) Es necesario algún mecanismo de transferencia de
control
…para ejecutar un código independiente de la
aplicación
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Normalmente se usa una interrupción
Involucra características específicas de la arquitectura
(cid:127) Una vez transferido el control hay que cambiar a
modo supervisor
13/77
Llamadas al sistema
1.4. Interrupciones
(cid:127) Las interrupciones son procedimientos solicitados
por número
…en lugar de por dirección
El número señala, dentro de una tabla, la dirección del
procedimiento a ejecutar
El procedimiento o rutina de servicio es independiente
del origen de la solicitud
14/77
7
Llamadas al sistema
1.4. Interrupciones
(cid:127) Ventajas:
El uso de procedimientos numerados es muy flexible ya
que cambiando la dirección de la tabla se puede
cambiar la rutina de servicio
Los usuarios de las interrupciones no son responsables
del código de las rutinas de servicio
(cid:127)
Inconvenientes:
Pueden ser lentas debido al cambio de contexto
15/77
Llamadas al sistema
1.4. Interrupciones
(cid:127) Tipos de interrupciones
Atendiendo al origen de la solicitud
Interrupciones hardware son asíncronas, es decir, se
pueden disparar en cualquier instante; la solicitud se hace
en hardware y suele provenir de dispositivos de E/S
Excepciones son sincronas con la ejecución del código;
suelen ser causadas por operaciones no permitidas
(división por 0, desbordamiento, acceso no permitido) y
disparadas por el procesador
Interrupciones software las genera el propio código
mediante la ejecución de una instrucción
16/77
8
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Llamadas al sistema
1.4. Interrupciones
(cid:127) Las llamadas al sistema son interrupciones software,
es decir, se invocan mediante la ejecución de una
instrucción de llamada a interrupción dentro de la
secuencia de código de la aplicación
proceso en curso
llamada al
sistema
código de la
llamada al sistema
17/77
Llamadas al sistema
1.4. Interrupciones
Algunos ejemplos de instrucciones de interrupción:
x86 INT
x86-32 SYSCALL/SYSRET (llamada rápida al sistema)
x86-32 SYSENTER/SYSEXIT
IA64 EPC (Enter Privileged Code)
Alpha CALL PAL (Privileged Architecture Library)
Call gate mecanismo (obsoleto) para cambiar a modo
supervisor en el entorno x86 (no tuvo mucho éxito)
18/77
9
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Llamadas al sistema
2. Llamadas al sistema bajo DOS
2. Llamadas al sistema bajo DOS
Índice
1. Soporte hardware
2. Paso de argumentos
3. Tipos de llamadas
1.
2.
Interrupciones BIOS
1. Servicios BIOS de video
2. Servicios BIOS de teclado
Interrupciones DOS
1. Servicios DOS de E/S de caracteres
2. Servicios DOS de sistema de ficheros
3. Servicios DOS de acceso a disco
4. Servicios DOS de TSR
19/77
Llamadas al sistema
2. Llamadas al sistema bajo DOS
(cid:127) Se implementan usando la instrucción de interrupción
software (INT n)
donde n es un inmediato de tamaño byte, es decir,
podemos tener hasta 256 interrupciones
20/77
10
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Llamadas al sistema
2.1. Soporte hardware
(cid:127) La dirección de la rutina de servicio (ISR – Interrupt
Service Routine) se encuentra en una tabla conocida
como tabla de vectores de interrupción
(cid:127) El número de la interrupción es el índice que sirve
para acceder a cada dirección
(cid:127) Cada dirección se denomina vector de interrupción y
es un puntero de 32 bits (base y desplazamiento) al
ISR correspondiente
(cid:127) Ya que cada vector ocupa 4 bytes, el vector de la
interrupción n estará en la posición n x 4
21/77
Llamadas al sistema
2.1. Soporte hardware
(cid:127) La tabla de vectores de
interrupción se sitúa en la
parte más baja del mapa
de memoria (00000h)
(cid:127) Ocupa 1KB (4 bytes x 256)
(cid:127)
Inicialmente la carga el
BIOS al arrancar el
computador
(cid:127) Posteriormente, se pueden
cambiar los vectores
22/77
11
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Llamadas al sistema
2.1. Soporte hardware
(cid:127) Las 8 primeras
interrupciones son
excepciones, las 8
siguientes son
interrupciones hardware
y seguidamente
comienzan las
llamadas
al sistema
23/77
Llamadas al sistema
2.1. Soporte hardware
(cid:127) El mecanismo de tabla de vectores de interrupción es
muy flexible ya que permite cambiar fácilmente las
rutinas de servicio (ISR)
Para cambiar una rutina de servicio (ISR) basta con
cargar un nuevo vector en la tabla apuntando al
comienzo de dicha rutina que será
o un programa residente (cargado en memoria)
o un procedimiento de un proceso en curso
De esta manera, cada proceso puede disponer de ISRs
diferentes
24/77
12
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Llamadas al sistema
2.1. Soporte hardware
(cid:127) Cambio de vector de interrupción (I)
Método “manual” 1
xor ax, ax
mov es, ax
cli
m
Comentarios de: Llamadas al sistema (0)
No hay comentarios