Sunteți pe pagina 1din 61

Master en Ingeniera de Sistemas Empotrados

Departamento de Arquitectura y Tecnologa de


Computadores
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea
UPV / EHU

Introduccin al tiempo
MOISE

real en sistemas
empotrados

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores 1
Contenido

Introduccin
UPV / EHU Soporte de interrupciones
MOISE 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 2
Conceptos de Sistemas
Operativos
CONTENIDO

El sistema operativo como interfaz para las aplicaciones


Modos de ejecucin
Threads y procesos
UPV / EHU Control de procesos. Cambio de contexto
Gestin de la memoria
Gestin de la entrada/salida
MOISE 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 3
El sistema operativo como interfaz
para las aplicaciones

Los dos papeles del sistema operativo:


Proporciona a las aplicaciones una interfaz
(llamadas al sistema) para el acceso a los
UPV / EHU
recursos.
MOISE 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 4
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 5
El sistema operativo como interfaz
para las aplicaciones

Las llamadas al sistema (system calls) proporcionan


UPV / EHU
una interfaz homognea que abstrae las
caractersticas fsicas de los recursos.
MOISE 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 6
UPV / EHU

MOISE

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores 7
El sistema operativo como interfaz
para las aplicaciones (cont)

UPV / EHU
Tambin se denominan APIs.
MOISE 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 8
Modos de ejecucin
Las instrucciones mquina pueden ser normales o
reservadas.
Las instrucciones reservadas acceden a espacios (de
UPV / EHU memoria y de E/S) protegidos.
Dos modos de ejecucin: normal y protegido.
MOISE
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 9
Modos de ejecucin
Cambio de modo
Mecanismo unificado para paso de modo normal a
modo privilegiado: vector de interrupciones (VI).
Los servicios del sistema se implementan en espacio
protegido mediante rutinas que se direccionan a travs
UPV / EHU
del VI.
MOISE 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:
Secuencia de valores que adopta el registro
Contador de Programa (PC) durante la ejecucin
UPV / EHU de un programa.
MOISE
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
int main (int argc, const char * argv[]) {
int pid;
MOISE

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> int main (int argc, const char * argv[]) {


int pid;
#include <unistd.h>
printf("%d: Soy el padre!\n", getpid());
#include <stdlib.h> pid= fork();
if (pid == 0) Cdigo del padre (pid0)
UPV / EHU printf("%d: Soy el hijo!\n", getpid());
int main (int argc, const char * argv[]) {
else
printf("%d: Soy el padre de %d\n", getpid(), pid);
int pid;
MOISE printf("%d: Agur!\n", getpid());
exit(0);
}
printf("%d: Soy el padre!\n", getpid());
pid= fork();
#include <stdio.h>
if (pid == 0) #include <unistd.h>
#include <stdlib.h>
printf("%d: Soy el hijo!\n", getpid());
else int main (int argc, const char * argv[]) {
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();
if (pid == 0) Cdigo del hijo (pid=0)
exit(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 14
Ejemplo

UPV / EHU

MOISE Hijo Padre

#include <stdio.h> #include <stdio.h>


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

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

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


pid= fork(); pid= fork();
if (pid == 0) if (pid == 0)
printf("%d: Soy el hijo!\n", getpid()); printf("%d: Soy el hijo!\n", getpid());
else else
printf("%d: Soy el padre de %d\n", getpid(), pid); printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Agur!\n", getpid()); printf("%d: Agur!\n", getpid());
exit(0); 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 int f_ejemplo() {


a= 'H';
printf("%d: Soy el hijo! (%c)\n", getpid(), a);
MOISE return 0;
}
int main (int argc, const char * argv[]) {
int pid;
a= 'P';
printf("%d: Soy el padre! (%c)\n", getpid(), a);
pid= fork();
if (pid == 0) cul es el valor de a?
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 16
Ejemplo:
threads en LINUX
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sched.h>
#include <wait.h>

void* pila;
UPV / EHU char memoria_pila[64*1024];
char a;

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);
pila= &memoria_pila[0];
pid= clone(&f_ejemplo, (char*) pila + 1024*64, SIGCHLD | CLONE_FS |
CLONE_FILES | CLONE_SIGHAND | CLONE_VM, 0 );
printf("%d: Soy el padre de %d (%c)\n", getpid(), pid, a);
printf("%d: Agur!\n", getpid());
exit(0);
}
cul es el valor de a?
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores 17
Threads y Procesos (cont)
Las entidades de ejecucin son los procesos/threads.
En terminologa de TR, tareas (indistintamente).
Un thread (hilo) es un flujo de ejecucin con un
UPV / EHU contexto reducido
PC, SP (puntero a pila), pila
MOISE 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 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

Hijo
Padre

clone()

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores 20
Threads y Procesos
Estados y grafo de transicin

nue vo
proc eso e jec ut ndose finaliz ado
UPV / EHU

MOISE

prepara do bloque ado

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)
Identificador.
Estado del proceso.
UPV / EHU
Informacin para la planificacin (prioridad,
MOISE 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
Incluso para el estado ejecutndose.
UPV / EHU
Proceso nulo: al menos un proceso preparado para
MOISE ejecucin.
Estado bloqueado: una cola por cada condicin de
bloqueo.
co l a PCB PCB PCB

p ri o ri d ad p ri o ri d ad p ri o ri d ad

i n fo i n fo i n fo

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores 23
Control de procesos
El sistema operativo como un sistema de colas

nuevo
proceso finalizado
cola preparados CPU
UPV / EHU

MOISE

DISP1 cola disp. 1

. . . .
. . . .
. . . .

DISPn cola disp. n

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores 24
Control de procesos
Planificacin

La planificacin de procesos (o threads) es la funcin


del sistema operativo que decide qu proceso va
entrar a ejecutndose y cundo.
UPV / EHU
La realiza el scheduler.
MOISE 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
porque el proceso ejecutndose termina o se
UPV / EHU
bloquea: sistemas no expulsores
MOISE 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

El cambio de contexto es el conjunto de


operaciones necesarias para realizar una
UPV / EHU
transicin de un proceso (o thread) a otro:
Guardar el contexto del proceso que abandona la
MOISE 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.
BA de la Rut.
PBA de Atencin
1. Se est ejecutando PA.
BA
Contexto
de la Rut. 2. Se produce una interrupcin
Cola de ejecucin de de
Atencin
PA
(externa o trap).

3. Se salva el contexto de PA.

UPV / EHU PB 4. Cambio de estado de PA.


SP
Pila de PA 5. Scheduler: elige a PB.
MOISE
Cola de preparados
CPU 6. Cambio de estado de PB.

7. Manipulacin del Stack Pointer


para retornar al bloque de
PA activacin de PB.
Contexto
de PB
8. Se carga el contexto de PB en la
Una cola de CPU.
bloqueados (por
ejemplo)
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

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


programa almacena su cdigo, sus datos y su pila.
UPV / EHU
Gran diversidad de tcnicas y polticas, dependiendo
de si el programa se almacena:
MOISE 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

Monitor residente
UPV / EHU
Particionado
MOISE
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
Sistema operativo
MOISE
(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
Sistema operativo
MOISE

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
Sistema operativo
MOISE

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).
Qu hacer si llega un programa nuevo y la
UPV / EHU particin adecuada a su tamao est ocupada?
Encolarlo hasta que se libere.
MOISE
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 Como consecuencia, un programa no aparece
contiguo en memoria.
MOISE
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

p d
CPU d MEM
UPV / EHU
dir fsica

MOISE
PTBR

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
TRAP

dir virtual no

s d < si
+
CPU MEM
UPV / EHU dir fsica

MOISE
STBR

lim base

...

TABLA DE SEGMENTOS

Produce fragmentacin externa.


Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores 39
Gestin de la memoria
Sistemas combinados
dir virtual TRAP

s p d no d
CPU si MEM
dir fsica
UPV / EHU <

MOISE
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
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
UPV / EHU la pgina en disco.
MOISE 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?
Se estructura el programa y se divide en trozos o
solapamientos (overlays)
UPV / EHU
Cada solapamiento, una funcin
MOISE 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:
Velocidad
UPV / EHU
Representacin de los datos
MOISE 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
Los Controladores de los dispositivos (Kdisp) ofrecen
una interfaz entre los dispositivos y el nivel de
lenguaje mquina.
Elementos de la interfaz:
UPV / EHU
Espacio de direcciones de E/S, que puede ser
MOISE 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
Interrupciones
UPV / EHU El dispositivo cuenta con una lnea de interrupcin
Cuando se activa la interrupcin, se ejecuta la Rutina de
MOISE 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
Driver: cdigo que monopoliza el acceso al
MOISE 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:


Descriptor del Dispositivo, configurado por el driver:
UPV / EHU Estado del dispositivo
Modo de operacin
MOISE 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
DISP 1
IORB
cola IORBs

parmetros
infor. del de la peticin
dispositivo
diagnstico

UPV / EHU TABLA DE


CANALES DESCRIPTOR
DISP 2
MOISE IORB IORB
Proceso i
cola IORBs

parmetros parmetros
infor. del de la peticin de la peticin
dispositivo
diagnstico diagnstico

DESCRIPTOR
DISP 3
TABLA DE
CANALES cola IORBs

Proceso j 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

MOISE

Dispositivo Dispositivo Dispositivo Dispositivo

(a) E/S sin (b) E/S con un (c) E/S con doble (d) E/S con bufer
buffer buffer buffer circular

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores 49
Gestin de la entrada/salida
El sistema de ficheros

El desarrollo de las memorias tipo flash


UPV / EHU
posibilita que incluso los dispositivos ms
pequeos proporcionen un sistema de
MOISE
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 En rbol
Nombre de un fichero: relativo-absoluto
MOISE
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
El tiempo es un recurso peculiar.
La gestin del tiempo es un componente
MOISE
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
Reloj Hardware
Se inicializa con el RTC en la inicializacin.
MOISE
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
Ajuste del reloj:
UPV / EHU adjtimex (slo puede ejecutarla root)
Cronmetro de alta resolucin:
MOISE
gettimeofday()

#include <sys/time.h>

struct timeval t0, t1;

gettimeofday(&t0, NULL);

gettimeofday(&t1, NULL);
printf("Duracion: %d,%d segundos\n",
t1.tv_sec-t0.tv_sec, t1.tv_usec-t0.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 Soporte del reloj software (contador de unidades
de tiempo, p. ej., segundos)
MOISE
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++;

if (ticks_por_segundo== 0) {
UPV / EHU actualiza_tiempo_del_sistema();
sealar_evento(EVENTO_SEGUNDO);
ticks_por_segundo= UN_SEGUNDO;
MOISE }

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:


Un proceso se duerme durante n unidades de tiempo.
El sistema gestiona cundo despertar a cada proceso
UPV / EHU dormido.
MOISE 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
UPV / EHU temporizacin
13 EVENTO_P
MOISE Gestor
de
tiempos
EVENTO_P

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 Slo hay que


consultar la decrementar la
UPV / EHU primera primera

MOISE
13 12 12
23 13 Relativo 1
Ordenar a la
23 23 anterior 10
12 23 0

Konputagailuen Arkitektura eta Teknologia Saila


Departamento de Arquitectura y Tecnologa de Computadores 59
Gestin de tiempos y temporizacin
Implementacin

Gestor_tiempos ()
{
UPV / EHU ...
while (TRUE) {
MOISE 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;}

unsigned esperar_tiempo (unsigned seg) {


UPV / EHU unsigned s;

MOISE s= alarm(seg);
pause();
return(s);
}

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

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