PDF de programación - Llamadas al sistema

Imágen de pdf Llamadas al sistema

Llamadas al sistemagráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 3 de Enero del 2018)
264 visualizaciones desde el 3 de Enero del 2018
266,9 KB
39 paginas
Creado hace 4a (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
  • Links de descarga
http://lwp-l.com/pdf8177

Comentarios de: Llamadas al sistema (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad