Vous êtes sur la page 1sur 61

Master en Ingeniera de Sistemas Empotrados

UPV / EHU
MOISE

Departamento de Arquitectura y Tecnologa de


Computadores
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea

Introduccin al tiempo
real en sistemas
empotrados

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

Contenido

UPV / EHU
MOISE

Introduccin
Soporte de interrupciones
Conceptos de sistemas operativos
Planificacin en sistemas de tiempo real
Mecanismos de sincronizacin y comunicacin
Planificacin de tiempo real con recursos
compartidos

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

Conceptos de Sistemas
Operativos
CONTENIDO

UPV / EHU
MOISE

El sistema operativo como interfaz para las aplicaciones


Modos de ejecucin
Threads y procesos
Control de procesos. Cambio de contexto
Gestin de la memoria
Gestin de la entrada/salida
Gestin de tiempos y temporizacin

BIBIOGRAFIA

Q. Li: Real-Time concepts for embedded systems. CMP Books, 2003.


A. Lafuente: Sistemas Operativos II. Apuntes de la asignatura. Edicin 2009-10.
http://www.sc.ehu.es/acwlaroa/SO2.htm
M.J. Rochkind: Advanced Unix Programming (2nd Edition), Addison-Wesley, 2004.
C. Rodrguez, I. Alegria, J. Abascal, A. Lafuente: Descripcin funcional de los sistemas
operativos. Sntesis, 1994.
S. Snchez Prieto: Sistemas Operativos. Universidad de Alcal de Henares, Servicio
Editorial, 2005.
A. Silberschatz, P. Galvin, G. Gagne: Conceptos de Sistemas Operativos (7a edicin).
Willey, 2006.
A.S. Tanenbaum: Modern Operating Systems (3rd edition). Prentice-Hall, 2008.

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

El sistema operativo como interfaz


para las aplicaciones
Los dos papeles del sistema operativo:
UPV / EHU
MOISE

Proporciona a las aplicaciones una interfaz


(llamadas al sistema) para el acceso a los
recursos.
Arbitra y gestiona eficientemente el uso de los
recursos.
Qu es un recurso:

Procesadores
Memoria
Dispositivos (de E/S, relojes, comunicaciones)
Ficheros

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

El sistema operativo como interfaz


para las aplicaciones
Aplicaciones
SO
UPV / EHU
MOISE

Hw

Interfaz de
llamadas al sistema
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

El sistema operativo como interfaz


para las aplicaciones

UPV / EHU
MOISE

Las llamadas al sistema (system calls) proporcionan


una interfaz homognea que abstrae las
caractersticas fsicas de los recursos.
Por ejemplo, una aplicacin de reproduccin de sonido
funciona de la misma forma para reproducir un archivo
sobre un disco duro o sobre una memoria flash.

Las llamadas al sistema se utilizan como llamadas a


funciones de biblioteca.
Su especificacin debe estar bien definida (p. ej., el
man de Linux/UNIX).

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

UPV / EHU
MOISE

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

El sistema operativo como interfaz


para las aplicaciones (cont)

UPV / EHU
MOISE

Tambin se denominan APIs.


Estndares para compatibilidad de
aplicaciones (p. ej: POSIX)
Proporcionan un mecanismo nico de
entrada al sistema mediante cambio a modo
protegido:
La llamada se implementa mediante un trap.

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

Modos de ejecucin

UPV / EHU
MOISE

Las instrucciones mquina pueden ser normales o


reservadas.
Las instrucciones reservadas acceden a espacios (de
memoria y de E/S) protegidos.
Dos modos de ejecucin: normal y protegido.
Las instrucciones privilegiadas slo pueden
ejecutarse en modo protegido.
Un programa se ejecuta, en principio, en modo
normal.
La instruccin de cambio de modo es privilegiada.
Cmo pasar a modo protegido para acceder a
recursos necesarios (dispositivos de E/S, etc)?

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

Modos de ejecucin
Cambio de modo
Mecanismo unificado para paso de modo normal a
modo privilegiado: vector de interrupciones (VI).
UPV / EHU
MOISE

Los servicios del sistema se implementan en espacio


protegido mediante rutinas que se direccionan a travs
del VI.
Rutinas de servicio de interrupcin.
Excepciones
Llamadas al sistema operativo.

Las rutinas se ejecutan bien asncronamente


(interrupciones), bien llamadas desde el programa
(interrupciones programadas o traps).
Mediante un instruccin especial de LM: INT

El retorno de la rutina restaura el modo de ejecucin


anterior.

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

10

Threads y Procesos
Flujo de ejecucin:
UPV / EHU
MOISE

Secuencia de valores que adopta el registro


Contador de Programa (PC) durante la ejecucin
de un programa.
Requiere una pila (normalmente en memoria) para
representar las llamadas/retorno a subrutinas).

Contexto de ejecucin:
Estado del sistema asociado a la ejecucin del
programa. Incluye o puede incluir:

PC, SP (puntero a pila), pila


Estado del procesador
Estado de la memoria
Estado de la E/S

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

11

Threads y Procesos

Ejemplo: un proceso con tres threads

UPV / EHU
MOISE

(Extrado de Tanenbaum, 2008 Prentice-Hall, Inc)


Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

12

Ejemplo:
creacin de un proceso LINUX
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

UPV / EHU
MOISE

int main (int argc, const char * argv[]) {


int pid;
printf("%d: Soy el padre!\n", getpid());
pid= fork();
if (pid == 0)
printf("%d: Soy el hijo!\n", getpid());
else
printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Agur!\n", getpid());
exit(0);
}

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

13

Ejemplo
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

UPV / EHU
MOISE

int main (int argc, const char *


int pid;

int main (int argc, const char * argv[]) {


int pid;
printf("%d: Soy el padre!\n", getpid());
pid= fork();
Cdigo del padre
if (pid == 0)
printf("%d: Soy el hijo!\n", getpid());
else
argv[])
{
printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Agur!\n", getpid());
exit(0);
}

(pid0)

printf("%d: Soy el padre!\n", getpid());


pid= fork();
#include <stdio.h>
#include <unistd.h>
if (pid == 0)
#include <stdlib.h>
printf("%d: Soy el hijo!\n", getpid());
int main (int argc, const char * argv[]) {
else
int pid;
printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Soy el padre!\n", getpid());
printf("%d: Agur!\n", getpid()); pid= fork();
Cdigo del hijo (pid=0)
if (pid == 0)
exit(0);
printf("%d: Soy el hijo!\n", getpid());
else
}

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

printf("%d: Soy el padre de %d\n", getpid(), pid);


printf("%d: Agur!\n", getpid());
exit(0);
}

14

Ejemplo

UPV / EHU
MOISE

Hijo

Padre

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main (int argc, const char * argv[]) {


int pid;

int main (int argc, const char * argv[]) {


int pid;

printf("%d: Soy el padre!\n", getpid());


pid= fork();
if (pid == 0)
printf("%d: Soy el hijo!\n", getpid());
else
printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Agur!\n", getpid());
exit(0);
}

printf("%d: Soy el padre!\n", getpid());


pid= fork();
if (pid == 0)
printf("%d: Soy el hijo!\n", getpid());
else
printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Agur!\n", getpid());
exit(0);
}

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

15

Ejemplo:
contexto de un proceso LINUX
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
char a;

UPV / EHU
MOISE

int f_ejemplo() {
a= 'H';
printf("%d: Soy el hijo! (%c)\n", getpid(), a);
return 0;
}
int main (int argc, const char * argv[]) {
int pid;
a= 'P';
printf("%d: Soy el padre! (%c)\n", getpid(), a);
pid= fork();
cul es el
if (pid == 0)
f_ejemplo();
else {
printf("%d: Soy el padre de %d (%c)\n", getpid(), pid, a);
}
printf("%d: Agur!\n", getpid());
exit(0);
}

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

valor de a?

16

Ejemplo:
threads en LINUX
#include
#include
#include
#include
#include

UPV / EHU
MOISE

<stdio.h>
<unistd.h>
<stdlib.h>
<sched.h>
<wait.h>

void* pila;
char memoria_pila[64*1024];
char a;
int f_ejemplo() {
a= 'H';
printf("%d: Soy el hijo! (%c)\n", getpid(), a);
return 0;
}
int main (int argc, const char * argv[]) {
int pid;
a= 'P';
printf("%d: Soy el padre! (%c)\n", getpid(), a);
pila= &memoria_pila[0];
pid= clone(&f_ejemplo, (char*) pila + 1024*64, SIGCHLD | CLONE_FS |
| CLONE_SIGHAND | CLONE_VM, 0 );
printf("%d: Soy el padre de %d (%c)\n", getpid(), pid, a);
printf("%d: Agur!\n", getpid());
exit(0);
}

CLONE_FILES

cul es el valor de a?

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

17

Threads y Procesos (cont)

UPV / EHU
MOISE

Las entidades de ejecucin son los procesos/threads.


En terminologa de TR, tareas (indistintamente).
Un thread (hilo) es un flujo de ejecucin con un
contexto reducido
PC, SP (puntero a pila), pila
Estado del procesador

Un proceso es un flujo de ejecucin con un contexto


ampliado
Estado de la memoria
Estado de la E/S

Puede haber entidades de ejecucin intermedias


Sistemas combinados: un proceso incluye un
conjunto de threads
En este caso las entidades de ejecucin/planificacin
son los threads
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

18

Threads y procesos
Memoria
UPV / EHU
MOISE

a
Padre

Hijo

fork()

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

19

Threads y procesos
Memoria
UPV / EHU
MOISE

a
Padre

Hijo

clone()

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

20

Threads y Procesos
Estados y grafo de transicin

UPV / EHU

nuevo
proceso

ejecutndose

finalizado

MOISE

preparado

bloqueado

Nota: se toma aqu el proceso como entidad de ejecucin,


sin prdida de generalidad.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

21

Control de procesos
Representacin
Bloque de Control de Procesos (PCB)
UPV / EHU
MOISE

Identificador.
Estado del proceso.
Informacin para la planificacin (prioridad,
quantum).
Contadores de consumo de recursos (tiempo de
CPU).
Puntero a la pila del proceso
En sistemas combinados: puntero a los threads del
proceso (representados por TCBs).

Puntero a los recursos de memoria (tablas de


pginas).
Puntero a los recursos de E/S (tabla de
descriptores).
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

22

Control de procesos
Representacin
Los PCBs se enlazan en colas
Una cola por estado
UPV / EHU
MOISE

Incluso para el estado ejecutndose.


Proceso nulo: al menos un proceso preparado para
ejecucin.
Estado bloqueado: una cola por cada condicin de
bloqueo.
cola

PCB

PCB

PCB

prioridad

prioridad

prioridad

info

info

info

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

23

Control de procesos

El sistema operativo como un sistema de colas

UPV / EHU
MOISE

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

24

Control de procesos
Planificacin

UPV / EHU
MOISE

La planificacin de procesos (o threads) es la funcin


del sistema operativo que decide qu proceso va
entrar a ejecutndose y cundo.
La realiza el scheduler.
Se elige un proceso de entre la cola de preparados
de acuerdo a un criterio:
FCFS
Prioridades
Estticas. Se asigna una prioridad al proceso cuando se
crea y no cambia durante su ejecucin.
Dinmicas. A partir de una prioridad inicial, se ajusta
durante la ejecucin de acuerdo a determinados criterios
(p. ej. consumo de CPU del proceso).

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

25

Control de procesos
Planificacin (cont)
Cundo planificar:
Slo cuando la CPU queda libre
UPV / EHU
MOISE

porque el proceso ejecutndose termina o se


bloquea: sistemas no expulsores

Adems, los sistemas operativos expulsores,


sacan al proceso que est ejecutndose
cuando ha consumido un quantum de tiempo:
Combinado con FCFS: planificacin de turno circular o
Round-Robin

cuando otro proceso llega a preparados.


Le da la oportunidad de ejecutarse inmediatamente.
Como veremos, combinada con prioridades estticas
esta planificacin expulsora es adecuada para tiempo
real.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

26

Cambio de contexto

UPV / EHU
MOISE

El cambio de contexto es el conjunto de


operaciones necesarias para realizar una
transicin de un proceso (o thread) a otro:
Guardar el contexto del proceso que abandona la
CPU.
Restaurar el contexto del proceso seleccionado por
el scheduler.
Transferirle el control.
Adems, actualizar la representacin de los
procesos en colas de PCBs.

Implica manipular las pilas de procesos


Se implementa en lenguaje mquina.

PBA

Cola de ejecucin

UPV / EHU

BA de la Rut.
de Atencin
Contexto
BA
de la Rut.
PA
de de
Atencin

PB

Cola de preparados
MOISE

Pila de PA

SP

CPU

PA

Contexto
de PB

Una cola de
bloqueados (por
ejemplo)

1.

Se est ejecutando PA.

2.

Se produce una interrupcin


(externa o trap).

3.

Se salva el contexto de PA.

4.

Cambio de estado de PA.

5.

Scheduler: elige a PB.

6.

Cambio de estado de PB.

7.

Manipulacin del Stack Pointer


para retornar al bloque de
activacin de PB.

8.

Se carga el contexto de PB en la
CPU.

9.

Retorno de la interrupcin.

10.

Se ejecuta PB.

Pila de PB

http://www.sc.ehu.es/acwlaroa/SO2/CambioContexto.pps
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

28

Gestin de la memoria

UPV / EHU
MOISE

Se refiere a la memoria principal (RAM), donde un


programa almacena su cdigo, sus datos y su pila.
Gran diversidad de tcnicas y polticas, dependiendo
de si el programa se almacena:
Esttica o dinmicamente.
Contiguo o en trozos.

Algunas tcnicas (paginacin, memoria virtual)


requieren importante soporte hardware:
MMU, hoy en da on-chip.
Almacenamiento secundario (memoria virtual).

Las tcnicas ms elaboradas (memoria virtual) son


incompatibles con el tiempo real.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

29

Gestin de la memoria
Tcnicas

UPV / EHU
MOISE

Monitor residente
Particionado
Swapping
Paginacin y segmentacin
Memoria virtual
Otras: solapamientos y rutinas de enlace
dinmico

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

30

Gestin de la memoria
Monitor residente
Para un nico programa en memoria
UPV / EHU
MOISE

Sistema operativo
(monitor)
registro
barrera
Programa de
usuario

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

31

Gestin de la memoria
Particionado
Particionado fijo (MFT)
UPV / EHU
MOISE

Sistema operativo
2 Kb
4 Kb

8 Kb

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

32

Gestin de la memoria
Particionado
Particionado variable (MVT)
UPV / EHU
MOISE

Sistema operativo

Programa 1

Programa 2

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

33

Gestin de la memoria
Particionado
En particionado fijo se pierde espacio dentro
de las particiones (fragmentacin interna).
UPV / EHU
MOISE

Qu hacer si llega un programa nuevo y la


particin adecuada a su tamao est ocupada?
Encolarlo hasta que se libere.
Ejecutarlo en una particin mayor libre.

En particionado variable el espacio se pierde


en los huecos entre programas
(fragmentacin externa).
Tiende a aumentar (cada vez ms huecos ms
pequeos): degradacin de la memoria.
Compactar para recuperar espacio.
Implica reubicacin dinmica.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

34

Gestin de la memoria
Particionado

UPV / EHU
MOISE

Polticas de asignacin de huecos


En qu hueco almacenar un nuevo programa?
En el ms ajustado al tamao del programa?
En en ms grande?
En el primero que se encuentre?

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

35

Gestin de la memoria
Swapping

UPV / EHU
MOISE

Un programa puede, durante su ejecucin,


abandonar la memoria.
Implica reubicacin dinmica de programas.

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

36

Gestin de la memoria
Paginacin y segmentacin
Los programas se dividen en trozos
De igual tamao (paginacin)
De tamao variable (segmentacin)
UPV / EHU
MOISE

Como consecuencia, un programa no aparece


contiguo en memoria.
Direccin virtual vs direccin fsica.
Las direcciones donde se almacenan los trozos se
guardan en tablas de pginas/segmentos.
Traduccin dinmica de direcciones
Requiere importante soporte Hw:
Unidad de gestin de memoria (MMU)
Buffers de traducciones (TLB)

Permite compartir pginas/segmentos entre


programas.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

37

Gestin de la memoria
Paginacin
dir virtual

UPV / EHU
MOISE

CPU

MEM

dir fsica
PTBR

p
base

...
TABLA DE PAGINAS

La tabla de pginas puede ocupar mucho espacio.


Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

38

Gestin de la memoria
Segmentacin

UPV / EHU
MOISE

Produce fragmentacin externa.


Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

39

Gestin de la memoria
Sistemas combinados
TRAP

dir virtual

CPU

<

UPV / EHU
MOISE

no
si

dir fsica

MEM

STBR

s
base
lim

base

...

...
TABLA DE PAGINAS

TABLA DE SEGMENTOS
Varios niveles de indireccin.
El ltimo, siempre de paginacin.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

40

Gestin de la memoria
Memoria virtual

UPV / EHU
MOISE

Se implementa sobre un sistema paginado.


Permite la ejecucin de programas no enteros.
La referencia a una pgina no cargada en memoria
provoca un trap de fallo de pgina y la bsqueda de
la pgina en disco.
An ms soporte Hw:

Bit de validez
Trap de fallo de pgina
Espacio en disco (swap)
Soporte para el reemplazo de pginas

Amplio soporte del sistema operativo:


Poltica de reemplazo de pginas
Polticas de asignacin de espacio entre programas

Introduce impredecibilidad en los tiempos de


respuesta.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

41

Gestin de la memoria
Solapamientos y enlace dinmico
Qu hacer si un programa no cabe en la RAM y no
tengo soporte de MV?
UPV / EHU
MOISE

Se estructura el programa y se divide en trozos o


solapamientos (overlays)
Cada solapamiento, una funcin

Se aade una rutina de enlace dinmico que gestiona


la carga de las funciones en tiempo de ejecucin.
Las llamadas a funciones son ahora llamadas a la
rutina de enlace con la funcin y sus parmetros como
argumentos.
Inicialmente se carga en memoria el programa principal
y la rutina de enlace.

Modernamente los sistemas operativos aaden este


mecanismo (con otros propsitos): Dynamic Link
Libraries o Run-Time Libraries.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

42

Gestin de la entrada/salida
Los dispositivos de entrada/salida son muy
heterogneos:
UPV / EHU
MOISE

Velocidad
Representacin de los datos
Protocolos
Operaciones
Unidad de transferencia (bloques, caracteres)
Tipos de errores
Modo de tratar la E/S: Encuesta, Interrupciones,
DMA.

Interfaz de los dispositivos unificada


mediante Controladores
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

43

Entrada/salida
Interfaz

UPV / EHU
MOISE

Los Controladores de los dispositivos (Kdisp) ofrecen


una interfaz entre los dispositivos y el nivel de
lenguaje mquina.
Elementos de la interfaz:
Espacio de direcciones de E/S, que puede ser
Memory-mapped
Independiente del de memoria

Operaciones de E/S mediante instrucciones mquina


Memory-mapped: LOAD/STORE
Espacios independientes: IN/OUT

Las direcciones de E/S se asocian a los dispositivos


(Registros de E/S) y tienen papeles especficos:
Registros de estado
Registros de datos
Registros de control
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

44

Entrada/salida
Modos
Encuesta
Espera activa sobre Registro de Estado
Acceso a Registro de Datos
UPV / EHU
MOISE

Interrupciones
El dispositivo cuenta con una lnea de interrupcin
Cuando se activa la interrupcin, se ejecuta la Rutina de
Servicio que gestiona la E/S:
Comprobacin sobre Registro de Estado
Acceso a Registro de Datos

Acceso Directo a Memoria (DMA)


Los dispositivos de bloques no involucran a la CPU en el acceso
a cada byte
Se programa la operacin de DMA
Se ordena su inicio sobre un Registro de Control del KDMA
El fin de la operacin se anuncia mediante una interrupcin
La Rutina de Servicio a la Interrupcin de DMA comprueba sobre
un Registro de Estado.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

45

Gestin de la entrada/salida
Manejadores de dispositivos (drivers)

UPV / EHU
MOISE

Driver: cdigo que monopoliza el acceso al


dispositivo.
El resto del sistema operativo es independiente del
dispositivo.
Un modelo de entrada/salida: cliente-servidor
Las rutinas de E/S son clientes del driver.

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

46

Gestin de la entrada/salida
Manejadores de dispositivos (drivers)

Interfaz entre las Rutinas de E/S y el driver:


UPV / EHU
MOISE

Descriptor del Dispositivo, configurado por el driver:


Estado del dispositivo
Modo de operacin
Tablas de conversin
Apuntador a la cola de peticiones
Evento asociado al driver
IORB (Input/Output Request Block) para especificar una
peticin al driver:
Identificador del proceso cliente
Parmetros de la peticin
Evento para sincronizacin con el final de la operacin
Diagnstico de la operacin (a rellenar por el driver)

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

47

Gestin de la entrada/salida
DESCRIPTOR
DISP1
IORB
colaIORBs
infor.del
dispositivo

UPV / EHU
MOISE

TABLADE
CANALES

Procesoi

parmetros
delapeticin
diagnstico

DESCRIPTOR
DISP2
IORB

IORB

parmetros
delapeticin

parmetros
delapeticin

diagnstico

diagnstico

colaIORBs
infor.del
dispositivo

DESCRIPTOR
DISP3
TABLADE
CANALES

Procesoj

colaIORBs
infor.del
dispositivo

Ejemplo de estado de la E/S


Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

48

Gestin de la entrada/salida
Buffering
Para desacoplar las velocidades de funcionamiento de los
dispositivos y la CPU, el SO proporciona buffers del
sistema para almacenamiento temporal de la E/S.
Varios esquemas.
UPV / EHU

Aplicacin

Aplicacin

Aplicacin

Aplicacin

Dispositivo

Dispositivo

Dispositivo

Dispositivo

(a)E/Ssin
buffer

(b)E/Sconun
buffer

(c)E/Scondoble
buffer

(d)E/Sconbufer
circular

MOISE

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

49

Gestin de la entrada/salida
El sistema de ficheros

UPV / EHU
MOISE

El desarrollo de las memorias tipo flash


posibilita que incluso los dispositivos ms
pequeos proporcionen un sistema de
ficheros.
Las abstracciones del modelo de E/S
proporcionan independencia entre el
sistema de ficheros y el dispositivo soporte.
Ejemplo: FAT16 sobre floppy/HD/flash

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

50

Gestin de la entrada/salida
El sistema de ficheros
Caractersticas del sistema de ficheros:
Permanencia
Organizacin estructurada
UPV / EHU
MOISE

En rbol
Nombre de un fichero: relativo-absoluto
Algunos ficheros son directorios

Atributos de un fichero

Tiempos de creacin, Acceso


Derechos de acceso
Tamao
etc

El contenido se organiza en registros lgicos


Acceso concurrente a ficheros
Punteros independientes
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

51

Gestin de tiempos y
temporizacin

UPV / EHU
MOISE

El tiempo es un recurso peculiar.


La gestin del tiempo es un componente
bsico en cualquier sistema empotrado o de
tiempo real.
Vamos a estudiar:
Tipos de relojes
Rutinas de servicio de la interrupcin del reloj
Gestin de temporizadores

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

52

Gestin de tiempos y temporizacin


Relojes
Reloj de tiempo real (RTC)
Siempre en funcionamiento. Requiere
alimentacin propia.
UPV / EHU
MOISE

Reloj Hardware

Se inicializa con el RTC en la inicializacin.


Produce las interrupciones de reloj.
Suele ser programable (PIT, p. ej., Intel 8253).
Puede tener otras funciones (p. ej., refresco de la
DRAM).

Reloj del sistema


Es un reloj software implementado por la ISR del
PIT.
Cuenta interrupciones y las expresa en unidades
de tiempo.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

53

El tiempo en Linux

Comando para consultar el reloj del sistema:


date
UPV / EHU
MOISE

Ajuste del reloj:


adjtimex (slo puede ejecutarla root)

Cronmetro de alta resolucin:


gettimeofday()
#include<sys/time.h>
structtimevalt0,t1;
gettimeofday(&t0,NULL);

gettimeofday(&t1,NULL);
printf("Duracion:%d,%dsegundos\n",
t1.tv_sect0.tv_sec,t1.tv_usect0.tv_usec);

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

54

Gestin de tiempos y temporizacin


Rutina de servicio de la interrupcin del reloj

Funciones:
UPV / EHU
MOISE

Soporte del reloj software (contador de unidades


de tiempo, p. ej., segundos)
Para el tiempo del sistema
Para implementar temporizadores

Gestin del tiempo compartido (expulsin por fin


de quantum).
Contabilidad del uso de recursos temporales (p.
ej., tiempo de CPU).

Genera eventos peridicos

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

55

Gestin de tiempos y temporizacin


Rutina de servicio de la interrupcin del reloj
Ejemplo
ISR_del_reloj ()
{
...
ticks_por_segundo;
intervalo_CPU++;

UPV / EHU
MOISE

if (ticks_por_segundo== 0) {
actualiza_tiempo_del_sistema();
sealar_evento(EVENTO_SEGUNDO);
ticks_por_segundo= UN_SEGUNDO;
}
if (intervalo_CPU == quantum) {
incrementa_gasto_CPU_del_proceso(intervalo_CPU);
intervalo_CPU= 0;
goto cambio_de_contexto;
}
...
eoi();
reti();
cambio_de_contexto:
expulsar_proceso();
dispatcher (scheduler());
}

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

56

Gestin de tiempos y temporizacin


Gestin de temporizadores
El sistema proporciona un servicio de temporizacin:
UPV / EHU
MOISE

Un proceso se duerme durante n unidades de tiempo.


El sistema gestiona cundo despertar a cada proceso
dormido.

Hay que definir la resolucin del temporizador:


A mayor resolucin ms carga para el sistema.

Modelo:
Los procesos ponen su peticin de temporizacin
(usando un IORB).
Un gestor de tiempos (manejador), activado cada
unidad de tiempo por la ISR del reloj, despacha las
peticiones a medida que se cumplen, despertando al
proceso correspondiente.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

57

Gestin de tiempos y temporizacin


Implementacin

Peticiones
temporizacin

UPV / EHU

13

MOISE

EVENTO_P

Gestor
de
tiempos

EVENTO_P

EVENTO_SEGUNDO

ISR
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

58

Gestin de tiempos y temporizacin


Implementacin
Slo hay que
consultar la
primera

UPV / EHU
MOISE

13

12

23

13

23

Ordenar

12

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

23
23

Slo hay que


decrementar la
primera

12
Relativo
a la
anterior

1
10
0

59

Gestin de tiempos y temporizacin


Implementacin

UPV / EHU
MOISE

Gestor_tiempos ()
{
...
while (TRUE) {
esperar_evento(EVENTO_SEGUNDO);
while (primero(peticiones_tiempo).plazo == 0)
sealar_evento(primero(peticiones_tiempo).evento;
eliminar(primero(peticiones_tiempo));
}
primero(peticiones_tiempo).plazo;
}
}

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores

60

Ejemplo:
uso de temporizadores en Unix
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void fnula() {return;}

UPV / EHU

unsigned esperar_tiempo (unsigned seg) {


unsigned s;
s= alarm(seg);
pause();
return(s);

MOISE
}

int main (int argc, const char * argv[]) {


int i;
unsigned t;
signal(SIGALRM, fnula);
for (i=1; i<5; i++) {
printf("espera (%d segundos)\n", i);
t= esperar_tiempo(i);
printf("despertado (%d)\n", t);
}
}
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores

61

Vous aimerez peut-être aussi