dso-3: drivers y procesos (v4b)

193
Lección 3 drivers y servicios ampliados Diseño de Sistemas Operativos Grado en Ingeniería Informática Grupo ARCOS Universidad Carlos III de Madrid

Upload: alejandro-calderon-mateos

Post on 15-Feb-2017

87 views

Category:

Education


0 download

TRANSCRIPT

Page 1: DSO-3: Drivers y procesos (v4b)

Lección 3drivers y servicios ampliados

Diseño de Sistemas Operativos

Grado en Ingeniería Informática

Grupo ARCOSUniversidad Carlos III de Madrid

Page 2: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Lecturas recomendadas

2

1. Carretero 2007:

1. Cap.7

1. Tanenbaum 2006(en):

1. Cap.3

2. Stallings 2005(en):

1. Parte tres

3. Silberschatz 2006:

1. Cap. Sistemas de E/S

Base Recomendada

ARCOS @ UC3M

Page 3: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

1. Estudiar la teoría asociada.� Estudiar el material asociado a la bibliografía:

las transparencias solo no son suficiente.

� Crear cuestiones con sus respuestas y justificación.

2. Repasar lo visto en clase.� Realizar el cuaderno de prácticas progresivamente.

3. Ejercitar las competencias.� Realizar las prácticas progresivamente.

� Realizar todos los ejercicios posibles.

A recordar…

ARCOS @ UC3M3

Page 4: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Contenidos

4

� Introducción

� Periféricos

� Organización de los drivers

� Procesos

� Estructura de un driver

� Ejemplos de diseño

� Reloj: temporización y C.C.I.

ARCOS @ UC3M

Periféricos

kernel

Servicios

ShellProcesos

Usuarios

Sistemaoperativo

Har

dwar

eS

oftw

are

Page 5: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Contenidos

5

� Introducción

� Periféricos

� Organización de los drivers

� Procesos

� Estructura de un driver

� Ejemplos de diseño

� Reloj: temporización y C.C.I.

ARCOS @ UC3M

Periféricos

kernel

Servicios

ShellProcesos

Usuarios

Sistemaoperativo

Har

dwar

eS

oftw

are

Page 6: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Ámbito de gestión

6

� Parte del sistema operativo encargada de la interaccióncon todos los posibles controladores (hardware)

� Incluye toda la comunicación de la CPU y la memoria con el resto de elementos hardware.

ARCOS @ UC3M

Periféricos

kernel

Servicios

ShellProcesos

Usuarios

Sistemaoperativo

Har

dwar

eS

oftw

are

drivers

Page 7: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Características por el ámbito de gestión

7

� Dependiente delsistema operativo:� Los controladores de un

sistema operativo no son fáciles de reutilizar en otro.

� Parte muy dinámica:� Se añade drivers

continuamente.

� Implementados en módulos:� Añadir/quitar sin parar.

ARCOS @ UC3M

Periféricos

kernel

Servicios

ShellProcesos

Usuarios

Sistemaoperativo

Har

dwar

eS

oftw

are

drivers

Page 8: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Objetivos de la E/S

8

� Ofrecer una visión lógica simplificada para:� Resto del sistema operativo

� Usuarios

� Optimizar la E/S

� Facilitar la gestión de periféricos

� Facilitar añadir soporte a nuevos dispositivos

ARCOS @ UC3M

Periféricos

kernel

Servicios

ShellProcesos

Usuarios

Sistemaoperativo

Har

dwar

eS

oftw

are

drivers

Page 9: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Importancia de los controladores

9

� Estadísticas del kernel de Linux (2007-2008):

� 9,2 millones de líneas de código.

� Se incrementa un 10% cada año:

� La mayor parte del código es de los drivers:

� El 55% del código son los controladores de dispositivo (o drivers)

� Software parte del sistema operativo que la CPU ejecuta para trabajar con el dispositivo asociado

� Es un código que funciona con acceso total al sistema (mismo nivel de protección que el kernel)

� El núcleo del kernel ocupa un 5% y el resto (40%) se reparte entre soporte para las distintas arquitectura, el código de red, etc.

http://cityblogger.com/archives/2008/06/16/linux-kernel-stats ARCOS @ UC3M

Page 10: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Contenidos

10

� Introducción

� Periféricos

� Organización de los drivers

� Procesos

� Estructura de un driver

� Ejemplos de diseño

� Reloj: temporización y C.C.I.

ARCOS @ UC3M

Periféricos

kernel

Servicios

ShellProcesos

Usuarios

Sistemaoperativo

Har

dwar

eS

oftw

are

drivers

Page 11: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Concepto de periférico

11

� Periférico:

� Todo aquel dispositivo externo

que se conecta a una CPU a través

de la unidades o módulos de

entrada/salida (E/S).

� Permiten almacenar información o

comunicar el computador con el

mundo exterior.

Periféricos

ARCOS @ UC3M

Page 12: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Clasificación de periféricos (por uso)

12

� Comunicación:

� Hombre - máquina

� (Terminal) teclado, ratón, …

� (Impresa) plotter, escáner, …

� Máquina - máquina (Módem, …)

� Medio físico - máquina

� (Lectura/accionamiento) x (analógico/digital)

� Almacenamiento:

� Acceso “directo” (Discos, DVD, …)

� Acceso secuencial (Cintas)

ARCOS @ UC3M

Page 13: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estructura general de un periférico

13

� Compuesto de:

� Dispositivo

� Hardware que interactúa con el entorno

� Módulo de Entrada/Salida

� También denominado controlador

� Interfaz entre dispositivo y la CPU, que le oculta las particularidades de este

Dispositivo

Módulo de E/S

Periféricos

Periférico = Dispositivo + Controlador

ARCOS @ UC3M

Page 14: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

EjemploDisco duro

14

Dispositivo

Módulo de E/S

Periféricos

ARCOS @ UC3M

Page 15: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Módulo de E/S qué son

15

� Las unidades o módulos de E/Srealizan la conexión de la CPU con los dispositivos periféricos.

Dispositivo

Módulo de E/S

Memoria

Bus

ARCOS @ UC3M

Page 16: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Módulo de E/Snecesidad

16

� Son necesarios debido a:� Gran variedad de periféricos.

� Los periféricos son ‘raros’

� La velocidad de transferencia de datos de los periféricos es mucho menor que la de la memoria o el procesador.� Los periféricos son ‘muy lentos’

� Formatos y tamaños de palabra de los periféricos distintos a los del computador al que se conectan.

Dispositivo

Módulo de E/S

Periférico

ARCOS @ UC3M

Page 17: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Módulo de E/S estructura

17

� Interacción entre CPU y Unidad de E/S a través de 3 tipos de registros:

� Registro de control� Ordenes para el periférico

� Registro de estado� Estado desde de la última orden

� Registro de datos� Datos intercambiados CPU/periférico

ControlEstadoDatos

0x05010x05020x0503

Unidad de E/S

Lógica de E/S

Lógica dispositivo externo

Lógica dispositivo externo

datos

estado

controldatos

estado

control

ARCOS @ UC3M

Page 18: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Ejemplodispositivo USB

18

� Información de control 1

� 0: leer

� 1: escribir

� Información de control 2

� Posición de lec./esc.

� Información de estado

� 0: dispositivo ocupado

� 1: dispositivo (dato) listo

� Datos

� Dato del dispositivo

Control 1Control 2Estado

0x05000x05040x0508

Unidad de E/S

Datos0x050C

ARCOS @ UC3M

Page 19: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Ejemplodispositivo USB

19

Control:

out(0x504,10) ; // offset

out(0x500, 0) ; // leer

Estado:

do {

in(0x508, &status) ; // ¿listo?

} while (0 == status) ;

Datos:

in(0x50C, &datos[i]) ; // leer dato

Control 1Control 2Estado

0x05000x05040x0508

Unidad de E/S

Datos0x050C

� Información de control 1

� 0: leer

� 1: escribir

� Información de control 2

� Posición de lec./esc.

� Información de estado

� 0: dispositivo ocupado

� 1: dispositivo (dato) listo

� Datos

� Dato del dispositivo

ARCOS @ UC3M

Page 20: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Módulo de E/Sfuncionamiento

20

� Aspectos fundamentales:

� Direccionamiento

� Interacción computador-controlador

� Unidad de transferencia

Control:

out(0x504,10) ; // offset

out(0x500, 0) ; // leer

Estado:

do {

in(0x508, &status) ; // ¿listo?

} while (0 == status) ;

Datos:

in(0x50C, &datos[i]) ; // leer dato

ARCOS @ UC3M

Page 21: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

(1/3) Direccionamiento de E/S

21

� Espacio de memoria conjunto

� Los registros del ‘controlador’ se proyectan en memoria y usando un conjunto de direcciones de memoria se acceden a dichos registros.

� Ej: sw $a0 etiqueta_discoA

� Espacio de memoria separado (puertos)

� Con instrucciones ensamblador especiales (In/Out) se acceden a las direcciones de E/S (denominadas puertos) que representan los registros del ‘controlador’.

� Ej: out $a0 0x105A

Mem.

E/S

Mem.

E/S

ARCOS @ UC3M

out(0x504,10) ;

out(0x500, 0) ;

do {

in(0x508, &status) ;

} while (0 == status) ;

in(0x50C, &datos[i]) ;

Page 22: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

(2/3) Unidad de transferencia

22

� Dispositivos de bloque:

� Unidad: bloque de bytes

� Acceso: secuencial o directo

� Operaciones: leer, escribir, situarse, …

� Ejemplos: “cintas” y discos

� Dispositivos de carácter:

� Unidad: caracteres (ASCII, Unicode, etc.)

� Acceso: secuencial

� Operaciones: get, put, ….

� Ejemplo: terminales, impresoras, etc.

ARCOS @ UC3M

out(0x504,10) ;

out(0x500, 0) ;

do {

in(0x508, &status) ;

} while (0 == status) ;

in(0x50C, &datos[i]) ;

Page 23: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

(3/3) Interacción con computador

23

� E/S programada o directa

� CPU no hace otra cosa que E/S: espera � transfiere

� E/S por interrupciones

� CPU: sólo transfiere

� E/S por DMA (acceso directo a memoria)

� CPU no transfiere solo se le avisa del fin del bloque transferido

� controlador de periférico más sofisticado

� lógica para DMA: contadores, señales de control, etc.

‘polling’

ARCOS @ UC3M

out(0x504,10) ;

out(0x500, 0) ;

do {

in(0x508, &status) ;

} while (0 == status) ;

in(0x50C, &datos[i]) ;

Page 24: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Contenidos

24

� Introducción

� Periféricos

� Organización de los drivers

� Procesos

� Estructura de un driver

� Ejemplos de diseño

� Reloj: temporización y C.C.I.

ARCOS @ UC3M

Periféricos

kernel

Servicios

ShellProcesos

Usuarios

Sistemaoperativo

Har

dwar

eS

oftw

are

drivers

Page 25: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Visión lógica simplificadaLinux

25 ARCOS @ UC3M

Periférico

driver

mplayer

/dev/fb0

vfs

Page 26: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Visión lógica simplificadaLinux

26 ARCOS @ UC3M

Periférico

driver

mplayer

/dev/fb0

vfs

Page 27: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Inventario de hardwareLinux

� Al arrancar el kernel descubre los periféricos.

� Les asocia el driver más apropiado que disponga.

� Hotplugging (Inserción en caliente de hardware)

ARCOS @ UC3M27

alejandro@tesla:~$ lspci

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (rev 09)

00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)

00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)

00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)

00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)

alejandro@tesla:~$ lsusb

Bus 002 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver

Bus 002 Device 005: ID 046d:082b Logitech, Inc.

Bus 002 Device 003: ID 04cc:1521 ST-Ericsson USB 2.0 Hub

Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

alejandro@tesla:~$ lshw

Page 28: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Gestión básica de driversLinux

28 ARCOS @ UC3M

lsmod

/proc/modules

kmod

modprobe <x>

/lib/modules/<version>/modules.dep

depmod -ainsmod </a/x>

rmmod </a/x>

kernel

Page 29: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Visión lógica simplificadaLinux

29 ARCOS @ UC3M

Periférico

driver

mplayer

/dev/fb0

vfs

Page 30: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Representación de los dispositivosLinux

� Habitualmente como ficheros de /dev: /dev/xxxx

� Puede existir ficheros para dispositivos virtuales ydispositivos para los que no hay fichero: Tarjeta de red, entrada o salida estándar, etc.

30http://sopa.dis.ulpgc.es/ii-dso/leclinux/drivers/i0/io.pdf ARCOS @ UC3M

alejandro@tesla:~$ ls -las /dev/

total 4

0 crw------- 1 root root 5, 1 feb 16 12:59 console

0 crw-rw---- 1 root video 29, 0 feb 16 12:59 fb0

0 crw-r----- 1 root kmem 1, 1 feb 16 12:59 mem

0 crw-rw-rw- 1 root root 1, 3 feb 16 12:59 null

0 crw------- 1 root root 10, 1 feb 16 12:59 psaux

0 brw-rw---- 1 root disk 1, 0 feb 16 12:59 ram0

0 crw-rw-rw- 1 root root 1, 8 feb 16 12:59 random

0 crw------- 1 root root 254, 0 feb 16 12:59 rtc0

0 brw-rw---- 1 root disk 8, 0 feb 16 12:59 sda

0 brw-rw---- 1 root disk 8, 1 feb 16 12:59 sda1

0 brw-rw---- 1 root disk 8, 2 feb 16 12:59 sda2

0 crw-rw-rw- 1 root tty 5, 0 feb 20 20:30 tty

0 crw-rw-rw- 1 root root 1, 9 feb 16 12:59 urandom

0 crw-rw-rw- 1 root root 1, 5 feb 16 12:59 zero

Page 31: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Representación de los dispositivosLinux

� Se identifican con:

� Major number (driver) + minor number (“dispositivo”)

31http://sopa.dis.ulpgc.es/ii-dso/leclinux/drivers/i0/io.pdf ARCOS @ UC3M

alejandro@tesla:~$ ls -las /dev/

total 4

0 crw------- 1 root root 5, 1 feb 16 12:59 console

0 crw-rw---- 1 root video 29, 0 feb 16 12:59 fb0

0 crw-r----- 1 root kmem 1, 1 feb 16 12:59 mem

0 crw-rw-rw- 1 root root 1, 3 feb 16 12:59 null

0 crw------- 1 root root 10, 1 feb 16 12:59 psaux

0 brw-rw---- 1 root disk 1, 0 feb 16 12:59 ram0

0 crw-rw-rw- 1 root root 1, 8 feb 16 12:59 random

0 crw------- 1 root root 254, 0 feb 16 12:59 rtc0

0 brw-rw---- 1 root disk 8, 0 feb 16 12:59 sda

0 brw-rw---- 1 root disk 8, 1 feb 16 12:59 sda1

0 brw-rw---- 1 root disk 8, 2 feb 16 12:59 sda2

0 crw-rw-rw- 1 root tty 5, 0 feb 20 20:30 tty

0 crw-rw-rw- 1 root root 1, 9 feb 16 12:59 urandom

0 crw-rw-rw- 1 root root 1, 5 feb 16 12:59 zero

Page 32: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Representación de los dispositivosLinux

� Gestionado mediante:

� mkdev (obsoleto): script para creación de todos los posibles ficheros

� devfs (obsoleto): sistema de ficheros con todos los posibles dispositivos

� udev: sistema de ficheros dinámico (hot-plug/unplug, triggers, etc.)

32http://sopa.dis.ulpgc.es/ii-dso/leclinux/drivers/i0/io.pdf ARCOS @ UC3M

alejandro@tesla:~$ ls -las /dev/

total 4

0 crw------- 1 root root 5, 1 feb 16 12:59 console

0 crw-rw---- 1 root video 29, 0 feb 16 12:59 fb0

0 crw-r----- 1 root kmem 1, 1 feb 16 12:59 mem

0 crw-rw-rw- 1 root root 1, 3 feb 16 12:59 null

0 crw------- 1 root root 10, 1 feb 16 12:59 psaux

0 brw-rw---- 1 root disk 1, 0 feb 16 12:59 ram0

0 crw-rw-rw- 1 root root 1, 8 feb 16 12:59 random

0 crw------- 1 root root 254, 0 feb 16 12:59 rtc0

0 brw-rw---- 1 root disk 8, 0 feb 16 12:59 sda

0 brw-rw---- 1 root disk 8, 1 feb 16 12:59 sda1

0 brw-rw---- 1 root disk 8, 2 feb 16 12:59 sda2

0 crw-rw-rw- 1 root tty 5, 0 feb 20 20:30 tty

0 crw-rw-rw- 1 root root 1, 9 feb 16 12:59 urandom

0 crw-rw-rw- 1 root root 1, 5 feb 16 12:59 zero

...

Page 33: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Representación de los dispositivosLinux

� Es posible manualmente crear un nuevo fichero de dispositivo:

� Nombre del fichero

� Tipo: bloque o carácter

� Major & minor number

33 ARCOS @ UC3M

alejandro@tesla:~$ mknod /dev/sensor1 c 12 1

alejandro@tesla:~$ ls sensor1

0 crw-r--r-- 1 root root 12, 1 feb 21 13:46 sensor1

alejandro@tesla:~$ cat sensor1

cat: /dev/sensor1: No existe el dispositivo o la dirección

alejandro@tesla:~$ udevadm info -a -n /dev/sda | grep DRIVER

DRIVERS=="sd"

DRIVERS=="ata_piix“

Page 34: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Visión lógica simplificadaLinux

34 ARCOS @ UC3M

Periférico

driver

mplayer

/dev/fb0

vfs

Page 35: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Arquitectura del sistema de E/S

35

Sistema de ficheros

Controladordispositivo

Controladordispositivo

Drivers de caracteresDrivers de bloque

Interfaz del Sistema Operativo

BufferCache

Sockets

Protocolos de red

Drivers de red

Controladordispositivo

ARCOS @ UC3M

Page 36: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estructura genérica del sistema de E/S

36

Sistema de ficheros

Controladordispositivo (1)

Controladordispositivo (n)

Controladordispositivo (1)

Controladordispositivo (n)

… Específico 1 Específico n…carga

Específico 1 Específico n…

carga

Interfaz del Sistema Operativo

BufferCache

Servicio ampliado (A)

cargacarga

Servicio ampliado (A)

carga

ARCOS @ UC3MAlejandro Calderón Mateos

Driver bloque (1)

interfaz

Driver caracteres (1)

interfaz

S. ampliado (X)

interfaz

Page 37: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estructura genérica del sistema de E/S

37

Sistema de ficheros

Controladordispositivo (1)

Controladordispositivo (n)

Controladordispositivo (1)

Controladordispositivo (n)

… Específico 1 Específico n…carga

Específico 1 Específico n…

carga

Interfaz del Sistema Operativo

BufferCache

Servicio ampliado (A)

cargacarga

Servicio ampliado (A)

carga

ARCOS @ UC3MAlejandro Calderón Mateos

Driver bloque (1)

interfaz

Driver caracteres (1)

interfaz

S. ampliado (X)

interfaz

Page 38: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estructura genérica del sistema de E/Sclasificación de drivers

� Los drivers se clasifican según el grupo de dispositivos a los que trata.

� Si dos drivers tratan un mismo tipo de dispositivo entonces la interfaz es similar

� Parte de la implementación del driver es común (se ahorra código)

� De forma clásica hay tres tipos:

� Dispositivos de caracteres: teclado, módem, etc.

� Dispositivos de bloques: discos, cintas, etc.

� Dispositivos de red: tarjetas de red

38 ARCOS @ UC3M

Controladordispositivo (1)

Controladordispositivo (n)

Controladordispositivo (1)

Controladordispositivo (n)

… Específico 1 Específico n…carga

Específico 1 Específico n…

carga Driver bloque (1)

interfaz

Driver caracteres (1)

interfaz

Page 39: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estructura genérica del sistema de E/S

39

Sistema de ficheros

Controladordispositivo (1)

Controladordispositivo (n)

Controladordispositivo (1)

Controladordispositivo (n)

… Específico 1 Específico n…carga

Específico 1 Específico n…

carga

Interfaz del Sistema Operativo

BufferCache

Servicio ampliado (A)

cargacarga

Servicio ampliado (A)

carga

ARCOS @ UC3MAlejandro Calderón Mateos

Driver bloque (1)

interfaz

Driver caracteres (1)

interfaz

S. ampliado (X)

interfaz

Page 40: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estructura genérica del sistema de E/Sservicios ampliados

� Servicio ampliado:

• Módulo que extiende un driver para añadirle algún tipo de funcionalidad.

• Son apilables entre sí.

� Tiene, al menos, dos interfaces:

� La interfaz del servicio que ofrece:

� Interfaz de llamadas al sistema

� Interfaz de un S. Ampliado superior

� La interfaz del recurso que utiliza:

� Interfaz de un driver

� Interfaz de un S. Ampliado inferior

40

Controladordispositivo (1)

Controladordispositivo (n)

Sistema de ficheros

Interfaz del Sistema Operativo

Servicio ampliado (A)

carga

S. ampliado (X)

carga

interfaz

ARCOS @ UC3M

Específico 1 Específico n…

carga Driver bloque (1)

interfaz

Page 41: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Servicios ampliadosLinux

� Ejemplo de servicio ampliado:

� md (multiple disks)

� Combina varios discos duros, o particiones (o volúmenes) en un único disco virtual.� mdadm --create /dev/md0

--level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

41

/dev/sda1 /dev/sdb2

/dev/md0

ARCOS @ UC3M

Page 42: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Jerarquía de driversLinux

� La jerarquía del modelo se muestra en la figura:

� Buses en el nivel inferior

� Dispositivos en el nivel intermedio

� Clases en el nivel más alto

� Acceso a través de sysfs:

� /sys/block: disp. de bloques (cualquier bus)

� /sys/bus: buses del sistema (disp. están aquí)

� /sys/devices: dispositivos organizados por buses

� /sys/class: clases de dispositivos (audio, de red, ...)

� /sys/module: drivers registrados en el núcleo

� /sys/power: manejo del estado de energía

� /sys/firmware: manejo de firmware (en ciertos disp.)

42http://sopa.dis.ulpgc.es/ii-dso/leclinux/drivers/i0/io.pdf ARCOS @ UC3M

Page 43: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Visión lógica simplificadaLinux

43 ARCOS @ UC3M

Periférico

driver

mplayer

/dev/fb0

vfs

Page 44: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Contenidos

44

� Introducción

� Periféricos

� Organización de los drivers

� Procesos

� Estructura de un driver

� Ejemplos de diseño

� Reloj: temporización y C.C.I.

ARCOS @ UC3M

Periféricos

kernel

Servicios

ShellProcesos

Usuarios

Sistemaoperativo

Har

dwar

eS

oftw

are

drivers

Page 45: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Introducción

� Concepto de proceso

� Modelo ofrecido

� Implicaciones en S.O.

ARCOS @ UC3M45

Proceso

kernel

Page 46: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Introducción

� Concepto de proceso

ARCOS @ UC3M46

Proceso

Page 47: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Concepto de proceso

� Proceso

� Programa en ejecución

� Unidad de procesamiento gestionada por el S.O.

ARCOS @ UC3M47

1

2

Disco

CPU

Memoria

App 1

Page 48: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Introducción

� Concepto de proceso

� Modelo ofrecido

ARCOS @ UC3M48

Proceso

Page 49: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Modelo ofrecido

� Recursos asociados

� Zonas de memoria

� Al menos: código, datos y pila

� Archivos abiertos

� Señales

ARCOS @ UC3M49

Disco

CPU

Memoria

Page 50: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Modelo ofrecido

� Multiprogramación

� Tener varias aplicaciones en memoria

� Si una aplicación se bloquea por E/S, entoncesse ejecuta mientras otra hasta que quede bloqueada

� Cambio de contexto voluntario (C.C.V.)

� Eficiencia en el uso del procesador

� Grado de multiprogramación = número de aplicaciones en RAM

ARCOS @ UC3M50

CPU

Memoria

App 1

App 2

App 3

App1

App2

App3

Page 51: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Modelo ofrecido

� Protección / Compartición

� El espacio de direcciones privado por aplicación, pero

� Posibilidad de comunicar datos entre dos aplicaciones

� Paso de mensajes

� Compartición de memoria

ARCOS @ UC3M51

CPU

Memoria

App 1

App 2

App 3

Page 52: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Modelo ofrecido

� Jerarquía de procesos

� Creación de proceso

� Como copia de otro proceso existente

� A partir del programa en disco

� Como proceso en el arranque

� Grupo de procesos que comparten mismo tratamiento

ARCOS @ UC3M52

CPU

Memoria

App 1

App 2

App 3App1 App2

App3

App0

Page 53: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Modelo ofrecido

� Multitarea

� Cada proceso se ejecuta un quantum de tiempo (Ej.: 5 ms) yse rota el turno para ejecutar procesos no bloqueados

� Cambio de contexto involuntario (C.C.I.)

� Reparto del uso del procesador

� Parece que todo se ejecuta a la vez

ARCOS @ UC3M53

CPU

Memoria

App 1

App 2

App 3

App1 App2 App3

Page 54: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Modelo ofrecido

� Multiproceso

� Se dispone de varios procesadores (multicore/multiprocesador)

� Además del reparto de cada CPU (multitarea) hay paralelismo real entre varias tareas (tantas como procesadores)

� Se suele usar planificador y estructuras de datos separadas por procesador con algún mecanismo de equilibrio de carga

ARCOS @ UC3M54

Memoria

App 1

App 2

App 3

App1 App2 App3

CPU

Page 55: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Introducción

� Concepto de proceso

� Modelo ofrecido

� Implicaciones en S.O.

ARCOS @ UC3M55

Proceso

kernel

Page 56: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo

ARCOS @ UC3M56

Requisitos Información (en estructuras de datos) Funciones (internas, servicio y API)

Recursos• Zonas de memoria (código, datos y pila)• Archivos abiertos• Señales activas

• Diversas funciones internas• Diversas funciones de servicio para

memoria, ficheros, etc.

Multiprogramación• Estado de ejecución• Contexto: registros de CPU…• Lista de procesos

• Int. hw/sw de dispositivos• Planificador• Crear/Destruir/Planificar proceso

o Protección / Compartición

• Paso de mensajes• Cola de mensajes de recepción

• Memoria compartida• Zonas, locks y conditions

• Envío/Recepción mensaje y gestiónde la cola de mensaje

• API concurrencia y gestión de estructuras de datos

o Jerarquía de procesos

• Relación de parentesco• Conjuntos de procesos relacionados• Procesos de una misma sesión

• Clonar/Cambiar imagen de proceso• Asociar procesos e indicar proceso

representante

Multitarea• Quantum restante• Prioridad

• Int. hw/sw de reloj• Planificador• Crear/Destruir/Planificar proceso

Multiproceso • Afinidad• Int. hw/sw de reloj• Planificador• Crear/Destruir/Planificar proceso

1. Estructuras de datos

Page 57: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo

1. Estructuras de datos

ARCOS @ UC3M57

kernel

Page 58: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo

ARCOS @ UC3M58

Requisitos Información (en estructuras de datos) Funciones (internas, servicio y API)

Recursos• Zonas de memoria (código, datos y pila)• Archivos abiertos• Señales activas

• Diversas funciones internas• Diversas funciones de servicio para

memoria, ficheros, etc.

Multiprogramación• Estado de ejecución• Contexto: registros de CPU…• Lista de procesos

• Int. hw/sw de dispositivos• Planificador• Crear/Destruir/Planificar proceso

o Protección / Compartición

• Paso de mensajes• Cola de mensajes de recepción

• Memoria compartida• Zonas, locks y conditions

• Envío/Recepción mensaje y gestiónde la cola de mensaje

• API concurrencia y gestión de estructuras de datos

o Jerarquía de procesos

• Relación de parentesco• Conjuntos de procesos relacionados• Procesos de una misma sesión

• Clonar/Cambiar imagen de proceso• Asociar procesos e indicar proceso

representante

Multitarea• Quantum restante• Prioridad

• Int. hw/sw de reloj• Planificador• Crear/Destruir/Planificar proceso

Multiproceso • Afinidad• Int. hw/sw de reloj• Planificador• Crear/Destruir/Planificar proceso

2. Funciones: de gestión internas

Page 59: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo

2. Funciones: de gestión internas

ARCOS @ UC3M59

kernel

� Estados y cambios de contexto

� Colas de procesos

� Planificación

� Etc.

Page 60: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo

3. Funciones: de servicio

ARCOS @ UC3M60

kernel

� Creación de proceso

� Destrucción de proceso

� Cambio de imagen

� Espera por el fin de otro proceso

� Etc.

� Estados y cambios de contexto

� Colas de procesos

� Planificación

� Etc.

Page 61: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo

3. Funciones: API de servicio

ARCOS @ UC3M61

kernel

� Creación de proceso

� Destrucción de proceso

� Cambio de imagen

� Espera por el fin de otro proceso

� Etc.

� Estados y cambios de contexto

� Colas de procesos

� Planificación

� Etc.

� fork, exit, exec, wait, …

� pthread_create, pthread…

Page 62: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Introducciónresumen

� Concepto de proceso

� Modelo ofrecido

� Implicaciones en S.O.

ARCOS @ UC3M62

Proceso

kernel

� …

� …

� …� …

� …� …

Page 63: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Principales estructuras de datos

ARCOS @ UC3M63

kernel

� …

� …

� …� …

� …� …

Page 64: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Información en el sistema operativo

ARCOS @ UC3M64

Memoria física

App 1

App 2

App 3

Tabla de procesos

Tabla de memoria

Tabla de E/S

Tabla de ficheros

Tablas del S.O.

Page 65: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Información para un proceso

ARCOS @ UC3M65

Memoria física

App 1

App 2

App 3

Tabla de procesos

Tabla de memoria

Tabla de E/S

Tabla de ficheros

Tablas del S.O.

Tabla de procesos

BCP

(1)

BCP

(2)

BCP

(3)

Page 66: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

BCP: entrada de la tabla de procesos

� Gestión de proceso

� Registros generales

� Contador de programa

� Registro de estado

� Puntero de pila

� Identificador del proceso

� Proceso padre

� Grupo de proceso

� Prioridad

� Parámetros del planificador

� Señales

� Instante inicio de ejecución

� Tiempo de uso de CPU

� Tiempo hasta siguiente alarma

ARCOS @ UC3M66

est

ad

oId

.g

est

ión

� Process Control Block (PCB / BCP)

� Estructura de datos con la información necesaria para gestionar un proceso en particular

� Manifestación de un proceso en el kernel

� Thread Control Block (TCB / BCT)

� Similar al BCP para cada hilo de un proceso

Tabla de procesos

BCP

(1)

BCP

(2)

BCP

(3)

Page 67: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

BCP: entrada de la tabla de procesos

� Gestión de proceso

� Registros generales

� Contador de programa

� Registro de estado

� Puntero de pila

� Identificador del proceso

� Proceso padre

� Grupo de proceso

� Prioridad

� Parámetros del planificador

� Señales

� Instante inicio de ejecución

� Tiempo de uso de CPU

� Tiempo hasta siguiente alarma

ARCOS @ UC3M67

est

ad

oId

.g

est

ión

� Process Identification (PID)

� Identificador de cara a los usuarios

� Número positivo de 16 bits (32767) dinámicamente asignado, reusado no de forma inmediata

� Address of process descriptor (APD)

� Identificación dentro del kernel

� Existe mecanismo PID -> APD (Ej.: hash)

Tabla de procesos

BCP

(1)

BCP

(2)

BCP

(3)

Page 68: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Dónde: información del proceso

ARCOS @ UC3M68

Tabla de procesos

Tabla de memora

Tabla de E/S

Tabla de ficheros

Tabla de procesos

BCP

(1)

BCP

(2)

BCP

(3)

� La información de cada proceso está en el BCP…

� Información fuera del BCP:

� Por razones de eficiencia

� Para compartir información entre procesos

� Ejemplos:

� Tabla de segmentos y páginas de memoria

� Tabla de punteros de posición de ficheros

� Lista de peticiones a dispositivos

Page 69: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Dónde: información del proceso

� Tabla de punteros de posición de ficheros:

� Describe la posición de lectura/escritura de los ficheros abiertos

� La compartición de estado del fichero entre procesos obliga a que sea externa al BCP

� El BCP contiene el índice del elemento de la tabla que contiene la información del fichero abierto: el i-nodo y la posición de lectura/escritura.

ARCOS @ UC3M69

Tabla deficheros

Tabla deficheros

Tabla deficheros

BCP 4 BCP 7 BCP 23

23 23

24456IDFF PP

0

544563 4563

34512 2345

63356 56

28 5566

53684 4

34512 10000

33678 2

0 0 01 1

1

12 2

2

23 3

3

34 4

4

4

fd

0

fd fd

Sistemas operativos: una visión aplicada

Page 70: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Información del proceso

� Gestión de proceso

� Registros generales

� Contador de programa

� Registro de estado

� Puntero de pila

� Identificador del proceso

� Proceso padre

� Grupo de proceso

� Prioridad

� Parámetros del planificador

� Señales

� Instante inicio de ejecución

� Tiempo de uso de CPU

� Tiempo hasta siguiente alarma

ARCOS @ UC3M70

� Gestión de memoria

� Puntero al segmento de código

� Puntero al segmento de datos

� Puntero al segmento de pila

� Gestión de ficheros

� Directorio raíz

� Directorio de trabajo

� Descriptores de ficheros

� Identificador de usuario

� Identificador de grupo

est

ad

oId

.g

est

ión

BCP

Page 71: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Información del procesoLinux

ARCOS @ UC3M71

task_struct (Process Descriptor)

tty_struct (communications)

signal_struct (signals)

fs_struct (directory name space)

files_struct (Open Files)

stack + thread_info (low_level scheduling)

mm_struct (memory)

sighand_struct (signal handers)

Understanding the Linux Kernel (O'Really)

http://www.eecs.harvard.edu/~margo/cs161/videos/sched.h.html

process hierarchy info

state (runability)

stack

pid hash table

scheduling info

debugging support

state (exit status)

pid and tgid

mm

credentialsfs

files

signal

sighand

Page 72: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Servicios del sistema operativoinicialización y finalización de procesos

ARCOS @ UC3M72

kernel

� …

� …

� …� …

� …� …

Page 73: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Creación de procesos

� Un proceso se crea:

� Durante el arranque del sistema� Hilos del kernel + primer proceso (Ej.: init, swapper, etc.)

� Cuando un proceso existe hace una llamada al sistema para crear otro: � Cuando el sistema operativo comienza un nuevo trabajo

� Cuando un usuario arranca un nuevo programa

� Cuando durante la ejecución de un programa se necesite

ARCOS @ UC3M73 CS 6560 Operating System Design (clase 4: procesos)

Page 74: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Finalización de procesos

� Un proceso termina:

� De forma voluntaria:� Finalización normal

� Finalización con error

� De forma involuntaria: � Finalizado por el sistema (Ej.: excepción, sin recursos necesarios)

� Finalizado por otro proceso (Ej.: a través de llamada al sistema)

� Finalizado por el usuario (Ej.: control-c por teclado)

ARCOS @ UC3M74 CS 6560 Operating System Design (clase 4: procesos)

� En Unix/Linux se usan señales como mecanismo� Se pueden capturar y tratar (salvo SIGKILL) para evitar finalizar involuntariamente

Page 75: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Creación y terminación de procesosLlamadas al sistema

� Linux

� Windows

ARCOS @ UC3M75 Sistemas operativos: una visión aplicada

clone()

exec() exit()

wait()

padre

hijo

CreateProcess()

ExitProcess()

GetExitCodeProcess()

padre

hijo

Page 76: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Creación de procesosLinux: clone

ARCOS @ UC3M76

Copiar PCB del padre

clone:

Duplicar mapa de M del

padre (incluyendo pilas)

Estado listo

Contexto end_fork()

PCB en cola de listos

Otras actualizaciones:

p.ej., limpiar señales,

eventos y mensajes

pendientes

Devuelve PID al

padre

Devuelve 0 al

hijo

“Clona al proceso padre

y da una nueva

identidad al hijo”

Obtener entrada libre en Tabla de Procesos

Apila PC inicial

*

Page 77: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Cambio de imagen de un procesoLinux: exec

ARCOS @ UC3M77

exec:

“Cambia la imagen de

memoria de un proceso

usando como

‘recipiente’ uno previo”

Liberar imagen de M

del proceso

Leer ejecutable

Crear nueva imagen

M � BCP

Cargar secciones

.texto y .datos

Crear pila inicial U

Crear pila S: dir.

principio programa

Inicio BCP: regs.;

PC dir SO: RETI

Otras acciones:

gestión de señales,

SETUID, etc

Page 78: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Terminación de procesosLinux: exit

ARCOS @ UC3M78

exit:

“Termina la ejecución

de un proceso y libera

los recursos”

Finaliza todos los hilos menos uno

Limpia operaciones asíncronas,

temporizadores y señales pendientes

Cierra todos los descriptores de archivo

Libera semáforos y cerrojos activos

Reasigna huérfanos a init

Estado proceso <- zombie

Trata de enviar señal SIGCLD al padre:

si responde:

freeproc(): libera P y MNO responde:

mantener señal

Page 79: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Creación de procesosWindows: CreateProcess

ARCOS @ UC3M79 http://flylib.com/books/en/4.491.1.52/1/

crea EPROCESScrea esp. M inicial proc.crea KPROCESScrea PEB

crea pila threadcrea contexto threadcrea thread y queda suspendido

Kernel32.dll: mensaje a Win32: manejadores; flags; PID padre

≈ activa el primer thread del proceso

[IW2K: 315]: 12 pasos

thread inicial: comienza ejecución en contexto nuevo proceso

construye: contexto y pila inicial del thread:-IRQL APC-- encola APC: loader, heap manager, etc--baja a IRQL 0: hace APC--...-- se pone en modo U

Page 80: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación (datos y funciones)

ARCOS @ UC3M80

kernel

� …

� …

� …� …

� …� …

Requisitos Información (en estructuras de datos) Funciones (internas, servicio y API)

Multiprogramación• Estado de ejecución• Contexto: registros de CPU…• Lista de procesos

• Int. hw/sw de dispositivos• Planificador• Crear/Destruir/Planificar proceso

Page 81: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación

ARCOS @ UC3M81

� Tener varias aplicaciones en memoria

� Si una aplicación se bloquea por E/S, entoncesse ejecuta otra (hasta que quede bloqueada)

� Cambio de contexto voluntario (C.C.V.)

Memoria

App 1

App 2

App 3

App1

App2

App3

Page 82: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación (datos)Estados de un proceso (c.c.v.)

ARCOS @ UC3M82

finalizaciónRunning

Ready Blockedfin E/Screación

� Tener varias aplicaciones en memoria

� Si una aplicación se bloquea por E/S, entoncesse ejecuta otra (hasta que quede bloqueada)

� Cambio de contexto voluntario (C.C.V.)

Memoria

App 1

App 2

App 3

App1

App2

App3

BCP5

Page 83: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación (datos)Estados de un proceso (c.c.v.)

ARCOS @ UC3M83

finalizaciónRunning

Ready Blockedfin E/Screación

� En ejecución: con CPU asignada

� Listo para ejecutar: no procesador disponible para él

� Bloqueado: esperando un evento

� Suspendido y listo: expulsado pero listo para ejecutar

� Suspendido y bloqueado: expulsado y esperando evento

BCP5

Page 84: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación (datos)Lista/Colas de procesos (c.c.v.)

ARCOS @ UC3M84

finalizaciónRunning

Ready Blockedfin E/Screación

� Tener varias aplicaciones en memoria

� Si una aplicación se bloquea por E/S, entoncesse ejecuta otra (hasta que quede bloqueada)

� Cambio de contexto voluntario (C.C.V.)

Memoria

App 1

App 2

App 3

App1

App2

App3

BCP1 BCP3 BCP4BCP7 BCP2

BCP5

Page 85: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación (datos)Lista/Colas de procesos (c.c.v.)

ARCOS @ UC3M85

finalizaciónRunning

Ready Blockedfin E/Screación

BCP1 BCP3 BCP4BCP7 BCP2

BCP5

� Cola de listos: procesos esperando a ejecutar en CPU

� Cola de bloqueados por recurso: procesos a la espera de finalizar una petición bloqueante al recurso asociado

o Un proceso solo puede estar en una cola (como mucho)

Page 86: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Implementación de las colas de procesos

ARCOS @ UC3M86

Estado del proceso

Límites de memoria

Lista de ficheros abiertos

Registros

. . .

Tabla de procesos

Proceso 0

Estado del proceso

Límites de memoria

Lista de ficheros abiertos

Registros

. . .

Estado del proceso

Límites de memoria

Lista de ficheros abiertos

Registros

. . .

Proceso 1 Proceso n

cola

cabezaCola de listos

cola

cabezaCola de …

� Cola de listos: procesos esperando a ejecutar en CPU

� Cola de bloqueados por recurso: procesos a la espera de finalizar una petición bloqueante al recurso asociado

o Un proceso solo puede estar en una cola (como mucho)

Page 87: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación (datos)Contexto de un proceso

ARCOS @ UC3M87

finalizaciónRunning

Ready Blockedfin E/Screación

� Tener varias aplicaciones en memoria

� Si una aplicación se bloquea por E/S, entoncesse ejecuta otra (hasta que quede bloqueada)

� Cambio de contexto voluntario (C.C.V.)

Memoria

App 1

App 2

App 3

App1

App2

App3

BCP1 BCP3 BCP4BCP7 BCP2

Page 88: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación (datos)Contexto de un proceso

ARCOS @ UC3M88

finalizaciónRunning

Ready Blockedfin E/Screación

BCP7 BCP2

� Registros generales: PC, RE, etc.

� Registros específicos: Registros de coma flotante, etc.

� Referencias a recursos: puntero a código, datos, etc.

BCP1 BCP3 BCP4

Page 89: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M89

proceso P0 proceso P1sistema operativo

listo

ejecutando

Page 90: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M90

proceso P0 proceso P1sistema operativo

listo

ejecutando

llamada bloqueante1

Page 91: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M91

proceso P0 proceso P1sistema operativo

listo

ejecutando

salvar estado en el BCP0

Page 92: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M92

proceso P0 proceso P1sistema operativo

listo

ejecutando

salvar estado en el BCP0

bloqueado

Page 93: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M93

proceso P0 proceso P1sistema operativo

listo

ejecutando

salvar estado en el BCP0

cargar estado en el BCP1

bloqueado

ejecutando

Page 94: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M94

proceso P0 proceso P1sistema operativo

listo

ejecutando

salvar estado en el BCP0

cargar estado en el BCP1

listo

bloqueado

interrupción2ejecutando

Page 95: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M95

proceso P0 proceso P1sistema operativo

listo

ejecutando

salvar estado en el BCP0

cargar estado en el BCP1

listo

bloqueado

3 llamada bloqueante (petición de lectura a disco, esperar en

una pipe, etc.)

ejecutando

Page 96: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M96

proceso P0 proceso P1sistema operativo

listo

ejecutando

listo

salvar estado en el BCP0

cargar estado en el BCP1

salvar estado en el BCP1

cargar estado en el BCP0

bloqueado

ejecutando

Page 97: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M97

proceso P0 proceso P1sistema operativo

listo

ejecutando

ejecutando

listo

salvar estado en el BCP0

cargar estado en el BCP1

salvar estado en el BCP1

cargar estado en el BCP0

bloqueado

bloqueado

ejecutando

Page 98: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M98

proceso P0 proceso P1sistema operativo

listo

ejecutando

ejecutando

listo

salvar estado en el BCP0

cargar estado en el BCP1

salvar estado en el BCP1

cargar estado en el BCP0

bloqueado

bloqueado

ejecutando

1

2

3

llamada bloqueante

interrupción

llamada bloqueante

Page 99: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Teclado_LeerTecla()

• Si (no hay tecla)• procesoActual->estado = BLOQUEADO;• Insertar(Teclado_Procesos, procesoActual);• proceso = procesoActual;

• procesoActual = planificador();• procesoActual->estado = EJECUCION;

• cambio_contexto( &(proceso->contexto), &(procesoActual->contexto));

• return extraer(Teclado_Teclas) ;

Pseudocódigo de ejemplo (P0)

ARCOS @ UC3M99

salvar estado en BCP0

cargar estado en BCP1

Running

Blocked

BCP7 BCP2

BCP1 BCP3

planificador()

• return extraer(CPU_Listo);

1

Page 100: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Teclado_Interrupción_Software ()

• proceso = primero (Teclado_Procesos);• SI (proceso != NULL)

• eliminar (Teclado_Procesos);• proceso->estado = LISTO;• insertar (CPU_Listos, proceso);

• return ok;

Pseudocódigo de ejemplo (P1)

ARCOS @ UC3M100

BlockedReadyfin E/S

BCP7 BCP2

Teclado_Interrupción_Hardware ()

• T = in (TECLADO_HW_ID);• proceso = insertar (T, Teclado_Teclas);• Insertar (Teclado_interrupción_software); • Activar_Interrupción_Software();

2

Page 101: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Teclado_Interrupción_Software ()

• proceso = primero (Teclado_Procesos);• SI (proceso != NULL)

• eliminar (Teclado_Procesos);• proceso->estado = LISTO;• insertar (CPU_Listos, proceso);

• return ok;

Pseudocódigo de ejemplo (P1)

ARCOS @ UC3M101

BlockedReadyfin E/S

BCP7 BCP2

Teclado_Interrupción_Hardware ()

• T = in (TECLADO_HW_ID);• proceso = insertar (T, Teclado_Teclas);• Insertar (Teclado_interrupción_software); • Activar_Interrupción_Software();

• Un proceso solo puede estar en una cola (como mucho):[correcto] eliminar + insertar

[incorrecto] insertar + eliminar

2

Page 102: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Teclado_LeerBloqueDisco()

• Si (no hay bloque en caché)• procesoActual->estado = BLOQUEADO;• Insertar(Disco_Procesos, procesoActual);• proceso = procesoActual;

• procesoActual = planificador();• procesoActual->estado = EJECUCION;

• cambio_contexto( &(proceso->contexto), &(procesoActual->contexto));

• return extraer(Disco_caché, bloque) ;

Pseudocódigo de ejemplo (P1)

ARCOS @ UC3M102

salvar estado en BCP1

cargar estado en BCP0

Running

Blocked

BCP7 BCP2

BCP1 BCP3

planificador()

• return extraer(CPU_Listo);

3

Page 103: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Teclado_LeerTecla()

• Si (no hay tecla)• procesoActual->estado = BLOQUEADO;• Insertar(Teclado_Procesos, procesoActual);• proceso = procesoActual;

• procesoActual = planificador();• procesoActual->estado = EJECUCION;

• cambio_contexto( &(proceso->contexto), &(procesoActual->contexto));

• return extraer(Teclado_Teclas) ;

Pseudocódigo de ejemplo (P0)

ARCOS @ UC3M103

3

Page 104: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Planificador y activador

� Planificador: Selecciona el proceso a ser ejecutado entre los que están listos para ejecutar

� Activador: Da control al proceso que elplanificador ha seleccionado(cambio de contexto - restaurar)

ARCOS @ UC3M104

finalizaciónRunning

Ready Blockedfin E/S

Ready & Suspend

Blocked & Blocked & Suspend

creación

cola

cabeza

registros

BCP7

registros

BCP2

Page 105: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Teclado_LeerTecla()

• Si (no hay tecla)• procesoActual->estado = BLOQUEADO;• Insertar(Teclado_Procesos, procesoActual);• proceso = procesoActual;

• procesoActual = planificador ();• procesoActual->estado = EJECUCION;• activador ( &(proceso->contexto),

&(procesoActual->contexto));

• return extraer(Teclado_Teclas) ;

Planificador y activador

ARCOS @ UC3M105

planificador ()

• return extraer(CPU_Listo);

Page 106: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Colas/Listas de procesosLinux

ARCOS @ UC3M106

"sched.c"

struct rq runqueues

"current.h"

task_struct *current

"wait.h"

DEFINE_WAIT(wq1)

"sched.h"

task_struct init_task…

Page 107: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Colas/Listas de procesosLinux

ARCOS @ UC3M107

runqueueskernel/sched.c

struct rq

current

init_tasksched.h

task_struct…

sched.h

task_struct

a. atomic_t is_blocking_mode = ATOMIC_INIT(0);DECLARE_WAIT_QUEUE_HEAD(dso_wq1);

b. atomic_set(&is_blocking_mode, 0);wait_event_interruptible(dso_wq1,

(atomic_read(&is_blocking_mode) == 1));

c. atomic_set(&is_blocking_mode, 1);wake_up_interruptible(&dso_wq1);

"wait.h"

DEFINE_WAIT(wq1)

Page 108: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Colas/Listas de procesosLinux

ARCOS @ UC3M108

runqueueskernel/sched.c

struct rq

current

init_tasksched.h

task_struct…

sched.h

task_struct

a. atomic_t is_blocking_mode = ATOMIC_INIT(0);DECLARE_WAIT_QUEUE_HEAD(dso_wq1);

b. atomic_set(&is_blocking_mode, 0);wait_event_interruptible(dso_wq1,

(atomic_read(&is_blocking_mode) == 1));

c. atomic_set(&is_blocking_mode, 1);wake_up_interruptible(&dso_wq1);

• DEFINE_WAIT, DECLARE_WAIT_QUEUE_HEAD(wq)• wq->flags &= ~WQ_FLAG_EXCLUSIVE

wq->flags |= WQ_FLAG_EXCLUSIVE

"wait.h"

DEFINE_WAIT(wq1)

wake_up, wake_up_nr, wake_up_all, wake_up_interruptible, wake_up_interruptible_nr, wake_up_interruptible_all, wake_up_interruptible_sync, wake_up_locked(queue)

wait_event, wait_event_interruptible (wq, condition)wait_event_timeout, wait_event_interruptible_timeout (wq, condition, timeout)

Page 109: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Visión lógica simplificadaLinux

109 ARCOS @ UC3M

Periférico

driver

mplayer

/dev/fb0

vfs

Page 110: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Contenidos

110

� Introducción

� Periféricos

� Organización de los drivers

� Procesos

� Estructura de un driver

� Ejemplos de diseño

� Reloj: temporización y C.C.I.

ARCOS @ UC3M

Periféricos

kernel

Servicios

ShellProcesos

Usuarios

Sistemaoperativo

Har

dwar

eS

oftw

are

drivers

Page 111: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Organización básica de un driver/s.a.drivers basados en módulos del kernel

� No todos los drivers/ss.aa. son necesarios en todo momento:

� Hay dispositivos que se conectan/desconectan sin apagar el ordenador (hot-plug)

� Hay dos métodos (combinables) para la selección de drivers/ss.aa. a usar:

� Elegirlos al compilar el kernel.

� En el arranque del sistema operativo se crean los drivers/ss.aa. elegidos.

� Elegirlos mientras el kernel está ejecutando (enlace dinámico).

� Se crean en algún punto de la ejecución del sistema operativo.

111

Driver de tipo (1)

Servicio ampliado (X)

Controladordispositivo (1)

Controladordispositivo (n)

Interfaz del Sistema Operativo

ARCOS @ UC3M

Page 112: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Módulos para ampliar el kernel

� Los módulos se utilizan no solo para los drivers de los dispositivos, actualmente también se utilizan para añadir otro tipos de funcionalidad:

� Sistemas de ficheros, protocolos de red, llamadas al sistema extras, etc.

112

Sistema de ficheros

DriverDriver

kernel

……

ARCOS @ UC3M

Page 113: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Organización básica de un driver/s.a.partes internas de un módulo driver

113

Driver de tipo (1)

Servicio ampliado (X)

Controladordispositivo (1)

Controladordispositivo (n)

Interfaz del Sistema Operativo

/* modulo_teclado.c (Javier Fernández Muñoz) */

#include <string.h>#include <stdlib.h>#include "minikernel.h"

/* Tipo con atributos específicos del dispositivo de teclado */

typedef struct {TipoBufferCaracteres bufferCaracteres;TipoListaBCP listaProcesosBloqueados;

} TipoDatosPropiosDispositivo_teclado;

/* Descriptor de fichero de teclado */int cerrarFichero_teclado (int descFichero) ;int abrirFichero_teclado (int descFichero, char *nombr e, int flags) ;int leerFichero_teclado (int descFichero, char *buffer, int tamanyo) ;

/* Dispositivo de teclado */int interrupcionHW_teclado (int descDispositivo) ;void interrupcionSW_teclado (int descDispositivo) ; int peticionCaracter_teclado (int descDispositivo,

char *caracter, int operacion) ;

/* Cargar y descarga de módulos */int cargarModulo_teclado () ;int crearDispositivo_teclado (int descDriver,

char *nombreDispositivo, int hardwareID) ;int destruirDriver_teclado (int descDriver) ;int crearDescFicheroDispositivo_teclado (int descDispo sitivo,

TipoTablaDescFicheros tablaDescFicheros) ;int mostrarDispositivo_teclado (int descDispositivo,

char *buffer, int bytesLibres) ;

ARCOS @ UC3M

Page 114: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Organización básica de un driver/s.a.partes internas de un módulo driver

114

Interfaz del Sistema Operativo

Controladordispositivo (1)

Controladordispositivo (n)

Específico 1 Específico n…

carga

interfaz

carga

interfaz

/* modulo_teclado.c (Javier Fernández Muñoz) */

#include <string.h>#include <stdlib.h>#include "minikernel.h"

/* Tipo con atributos específicos del dispositivo de teclado */

typedef struct {TipoBufferCaracteres bufferCaracteres;TipoListaBCP listaProcesosBloqueados;

} TipoDatosPropiosDispositivo_teclado;

/* Descriptor de fichero de teclado */int cerrarFichero_teclado (int descFichero) ;int abrirFichero_teclado (int descFichero, char *nombr e, int flags) ;int leerFichero_teclado (int descFichero, char *buffer, int tamanyo) ;

/* Dispositivo de teclado */int interrupcionHW_teclado (int descDispositivo) ;void interrupcionSW_teclado (int descDispositivo) ; int peticionCaracter_teclado (int descDispositivo,

char *caracter, int operacion) ;

/* Cargar y descarga de módulos */int cargarModulo_teclado () ;int crearDispositivo_teclado (int descDriver,

char *nombreDispositivo, int hardwareID) ;int destruirDriver_teclado (int descDriver) ;int crearDescFicheroDispositivo_teclado (int descDispo sitivo,

TipoTablaDescFicheros tablaDescFicheros) ;int mostrarDispositivo_teclado (int descDispositivo,

char *buffer, int bytesLibres) ;

interfaz

específico X

carga

Driver de tipo (1)

Servicio ampliado (X)

ARCOS @ UC3M

Page 115: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Organización básica de un driver/s.a.partes internas de un módulo driver

1. Registro de driver

2. Interfaz para llamadas al sistema

3. Petición al controlador de dispositivo

4. Planificación de E/S en el driver

5. Inicialización y finalización del driver

115

Interfaz del Sistema Operativo

Controladordispositivo (1)

Controladordispositivo (n)

Driver de tipo (1)

Específico 1 Específico n…

carga

interfaz

Servicio ampliado (X)

carga

interfazinterfaz

21

34-5

interfaz

2

3

1

4-5

ARCOS @ UC3M

Page 116: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Organización básica1. registro de drivers

� Tabla con los drivers cargados:

� Funciones para registrar drivers.

� cargar el módulo asociado al driver.

� Funciones para borrar drivers.

� Tabla con dispositivos detectados:

� Funciones para registrar el dispositivo en el driver, y dar de alta sus estructuras/funciones particulares.

� Desde el driver se tiene acceso a la lista de dispositivos que maneja.

� Funciones para buscar y dar de baja un dispositivo.

116

Controladordispositivo (1)

Controladordispositivo (n)

Driver de tipo (1)

Específico 1 Específico n…

carga

interfaz

ARCOS @ UC3M

Page 117: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estructuras principales de gestiónLinux

117 ARCOS @ UC3M

init_module()

cleanup_module()

open()

close()

read()

write()

ioctl()

request()

int_hw()

int_sw()

insmod

rmmod

Module Kernel core

register_capability()

unregister_capability()

printk()

…()

http://www.xml.com/ldd/chapter/book/ch02.html

Function call

Function pointer

Data pointer

fs

file

fd_array

f_op

files

files_struct

task_struct

files_operations

read

write

Page 118: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init (void) {

printk("<1> Test1 cargado…\n");return 0;

}

static void hello_exit (void){

printk("<1> Test1 descargado.\n");}

module_init (hello_init );module_exit (hello_exit );

Proceso de registroLinux

118

dso/test1.c

ARCOS @ UC3M

Page 119: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Proceso de registroLinux

119

obj-m := test1.o

dso/Makefile

ARCOS @ UC3M

make -C /usr/src/linux M=`pwd` modulesinsmod test1.kolsmoddmesgrmmod test1

Page 120: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Organización básica2. interfaz para llamadas al sistema

� Interfaz para llamadas al sistema:

• Conjunto de funciones que proporciona un driver para acceder al dispositivo.

� Características:

� Estandarización:

� Si un dispositivos hardware es válido para una tarea, el programa de usuario o servicio del SO que la realiza debe poder utilizarlo sin modificar su código.

� Uso de interfaces comunes y reducidas de llamadas al sistema:

� Crear una nueva llamada es más costoso que reutilizar llamadas ya existentes.

120

Controladordispositivo (1)

Controladordispositivo (n)

Driver de tipo (1)

Específico 1 Específico n…

carga

interfazinterfaz

ARCOS @ UC3M

Page 121: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Interfaz para llamadas al sistemaLinux

� Llamadas para establecer el acceso al dispositivo:

� Open (nombre, flags, modo)

� Close (descriptor)

� Llamadas para intercambiar datos con el dispositivo:

� Read (descriptor, buffer, tamaño)

� Write (descriptor, buffer, tamaño)

� Lseek (descriptor, desplazamiento, origen)

� Llamadas especificas del dispositivo:

� Ioctl (descriptor, num_operacion, puntero_parametros)

� Permite la ejecución de cualquier servicio con cualquier parámetros.

� Las operaciones debe hacerse públicas de alguna forma para que no haya conflictos entre distintos drivers.

121 ARCOS @ UC3M

Page 122: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estructuras principales de gestiónLinux

122 ARCOS @ UC3M

init_module()

cleanup_module()

open()

close()

read()

write()

ioctl()

request()

int_hw()

int_sw()

insmod

rmmod

Module Kernel core

register_capability()

unregister_capability()

printk()

…()

http://www.xml.com/ldd/chapter/book/ch02.html

Function call

Function pointer

Data pointer

fs

file

fd_array

f_op

files

files_struct

task_struct

files_operations

read

write

Page 123: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

#include <linux/init.h>#include <linux/module.h>

#include <linux/kernel.h> /* printk() */#include <linux/fs.h> /* everything... */#include <linux/errno.h> /* error codes */#include <linux/types.h> /* size_t */#include <linux/proc_fs.h>#include <linux/fcntl.h> /* O_ACCMODE */

#include <asm/uaccess.h> /* copy_from/to_user */

MODULE_LICENSE("Dual BSD/GPL");

Interfaz para llamadas al sistemaLinux

123

dso/test2.c

ARCOS @ UC3M

Page 124: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

int test2_open (struct inode *inode, struct file *filp); int test2_release (struct inode *inode, struct file *filp); ssize_t test2_read (struct file *filp, char *buf, size_t count, loff_t *f_pos); ssize_t test2_write (struct file *filp, const char *buf, size_t count, loff_t *f_pos);

struct file_operations test2_fops = {open: test2_open ,release: test2_release, /* AKA close */read: test2_read ,write: test2_write

};

void test2_exit (void); int test2_init (void);

module_init (test2_init );module_exit (test2_exit );

Interfaz para llamadas al sistemaLinux

124

dso/test2.c

ARCOS @ UC3M

Page 125: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

int test2_major = 60;

int test2_init (void) {int result;

result = register_chrdev (test2_major , ”test2", &test2_fops );if (result < 0) {

printk("<1> test2: error on register_chrdev\n”);return result;

}

printk("<1>test2: inserted…\n"); return 0;

}

void test2_exit (void) {unregister_chrdev (test2_major , ”test2");printk("<1> test2: removed. \n");

}

Interfaz para llamadas al sistemaLinux

125

dso/test2.c

ARCOS @ UC3M

Page 126: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

int test2_open (struct inode *inode, struct file *filp) {

/* * Once the associate file is open, increment the usage count* Three column from the lsmod output*/

try_module_get (THIS_MODULE) ;return SUCCESS;

}

int test2_release (struct inode *inode, struct file *filp) {

/* * Decrement the usage count.*/

module_put (THIS_MODULE) ;return 0;

}

Interfaz para llamadas al sistemaLinux

126

dso/test2.c

ARCOS @ UC3M

Page 127: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

char test2_buffer = ‘a’;

ssize_t test2_read (struct file *filp, char *buf, size_t count, loff_t *f_pos) {

if (*f_pos > 1024) {return 0;

}

copy_to_user (buf, &test2_buffer , 1);*f_pos+=1; return 1;

}

ssize_t test2_write ( struct file *filp, const char *buf, size_t count, loff_t *f_pos ) {

copy_from_user (&test2_buffer , buf,1);return 1;

}

Interfaz para llamadas al sistemaLinux

127

dso/test2.c

ARCOS @ UC3M

Page 128: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Interfaz para llamadas al sistemaLinux

128

obj-m := test1.o test2.o

dso/Makefile

ARCOS @ UC3M

make -C /usr/src/linux M=`pwd` modulesinsmod test2.kodmesg

mknod /dev/test2 c 60 0chmod 777 /dev/test2echo –n ‘b’ > /dev/test2cat /dev/test2

rm –fr /dev/test2rmmod test2 test2.o

echo/cat

/dev/test2

2

vfs

3

1

Page 129: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Interfaz para llamadas al sistemaLinux

� Llamadas para establecer el acceso al dispositivo:

� Open (nombre, flags, modo)

� Close (descriptor)

� Llamadas para intercambiar datos con el dispositivo:

� Read (descriptor, buffer, tamaño)

� Write (descriptor, buffer, tamaño)

� Lseek (descriptor, desplazamiento, origen)

� Llamadas especificas del dispositivo:

� Ioctl (descriptor, num_operacion, puntero_parametros)

� Permite la ejecución de cualquier servicio con cualquier parámetros.

� Las operaciones debe hacerse públicas de alguna forma para que no haya conflictos entre distintos drivers.

129

+ IreadIwriteWaitReady

http://www.ibm.com/developerworks/linux/library/l-async/ ARCOS @ UC3M

Page 130: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Interfaz para llamadas al sistemaResumen de los modos básicos de E/S en Linux

130http://www.ibm.com/developerworks/linux/library/l-async/

Blocking Non-blocking

Synchronous

Asynchronous

Read/write

I/O multiplexing(select/poll)

AIO

Read/write(O_NONBLOCK)

ARCOS @ UC3M

Page 131: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Interfaz para llamadas al sistemaResumen de los modos básicos de E/S en Linux

131http://www.ibm.com/developerworks/linux/library/l-async/

Síncrono(petición)

Asíncrono(petición)

NO-bloqueante(notificación)

Bloqueante(notificación)

ARCOS @ UC3M

Page 132: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Organización básica3. petición al controlador de dispositivo

� Requiere implementar hasta dos funciones:

� Función para solicitar la operación

� Solicitada por un servicio del S.O.

� Función para manejar la interrupción del dispositivo (al finalizar la operación)

� Se ejecuta al recibir la interrupción.

� Necesario adaptar al tipo de controlador hardware del dispositivo:� Dispositivos rápidos o dispositivos real-time

� D. con peticiones dependientes o independientes

� Dispositivos proactivos o reactivos

132

Controladordispositivo (1)

Controladordispositivo (n)

Driver de tipo (1)

Específico 1 Específico n…

carga

interfaz

ARCOS @ UC3M

Page 133: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estructuras principales de gestiónLinux

133 ARCOS @ UC3M

init_module()

cleanup_module()

open()

close()

read()

write()

ioctl()

request()

int_hw()

int_sw()

insmod

rmmod

Module Kernel core

register_capability()

unregister_capability()

printk()

…()

http://free-electrons.com/doc/books/ldd3.pdf

Function call

Function pointer

Data pointer

fs

file

fd_array

f_op

files

files_struct

task_struct

files_operations

read

write

Page 134: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Módulo de E/Sresumen de las características fundamentales

134

� Unidad de transferencia� De bloques

� De caracteres

� Direccionamiento � Proyectados en memoria

� Mediante puertos

� Interacción computador-controlador� E/S programada o directa

� E/S por interrupciones

� E/S por DMA

ControlEstadoDatos

0x05010x05020x0503

Unidad de E/S

ARCOS @ UC3M

Page 135: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

� E/S programada o directa

� E/S por interrupciones

� E/S por DMA

Interacción computador-controlador

135 ARCOS @ UC3M

Page 136: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

EjemploE/S programada

136

Memoria

Bus

E/SE/SE/SE/S

ARCOS @ UC3M

Page 137: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

EjemploE/S programada

137

petición: for (i=0; i<100;i++)

{

// pedir leer a partir de la posición 10

out(0x504,10) ;

out(0x500,0) ;

// bucle de espera

do {

in(0x508,&status) ; // ¿listo?

} while (0 == status) ;

// leer dato

in(0x50C,&(datos[i])) ;

}

Control 1Control 2Estado

0x05000x05040x0508

Unidad de E/S

Datos0x050C

� Información de control 1

� 0: leer

� 1: escribir

� Información de control 2

� Posición de lec./esc.

� Información de estado

� 0: dispositivo ocupado

� 1: dispositivo (dato) listo

� Datos

� Dato del dispositivo

ARCOS @ UC3M

Page 138: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

EjemploE/S programada

138

out(0x504,10) ;

out(0x500,0) ;

for (i=0; i<100;i++) {

do {

in(0x508,&status) ;

} while (0 == status) ;

in(0x50C,&datos[i]) ;

}

k

// read(fichero,offset,100) ;…

P1

// read(fichero,offset,100) ;…

P1

ARCOS @ UC3M

Page 139: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

� E/S programada o directa

� E/S por interrupciones

� E/S por DMA

Interacción computador-controlador

139 ARCOS @ UC3M

Page 140: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

EjemploE/S por interrupciones

140

Memoria

Bus

INTE/SE/SE/SE/S

ARCOS @ UC3M

Page 141: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

EjemploE/S por interrupciones

141

petición:

// lectura a partir de posición 10

p.neltos = 100; p.contador = 0;

out(0x504,10) ; // offset

out(0x500,0) ; // leer

// cambio de contexto voluntario (C.C.V.)

INT_05: in(0x508,&status) ; // leer estado

in(0x50C,&p.datos[p.contador]) ; // leer dato

if (p.contador < p.neltos) {

out(0x504,10+p.contador) ; // offset

out(0x500,0) ; // leer

p.contador++ ;

} else { // poner proceso peticionario a listo }

ret_int # restore registers & return

Control 1Control 2Estado

0x05000x05040x0508

Unidad de E/S

Datos0x050C

� Información de control 1

� 0: leer

� 1: escribir

� Información de control 2

� Posición de lec./esc.

� Información de estado

� 0: dispositivo ocupado

� 1: dispositivo (dato) listo

� Datos

� Dato del dispositivo

ARCOS @ UC3M

Page 142: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

P2

EjemploE/S por interrupciones

142

// pedir datos (out)

// proceso peticionario a dormir

// ejecutar otro proceso listo

// read(fichero,offset,100) ;…

k

…P2

INT_05: // leer dato (in)

INT_05: // leer último dato

// peticionario a listo

k

k

// read(fichero,offset,100) ;…

P1

INT_05: // leer dato (in)k

P2

P1

ARCOS @ UC3M

Page 143: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

� E/S programada o directa

� E/S por interrupciones

� E/S por DMA

Interacción computador-controlador

143 ARCOS @ UC3M

Page 144: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

EjemploE/S por DMA

144

Memoria

Bus

INT

E/SE/Scon DMA

BUSACK

BUSRQ

Coordinación entre CPU y Módulos de E/S para acceder a memoria

ARCOS @ UC3M

Page 145: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

EjemploE/S por DMA

145

Memoria

Bus

INT

E/SE/Scon DMA

BUSACK

BUSRQ

Cada dato transferido a memoria supone:• Pedir permiso para acceder a memoria (BUSRQ)• Esperar el permiso (BUSACK)• Transfiere a memoria• Desactiva petición de permiso (BUSRQ)

ARCOS @ UC3M

Page 146: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

EjemploE/S por DMA

146

Memoria

Bus

INT

E/SE/Scon DMA

BUSACK

BUSRQ

Una vez transferido todos los datos:• Generar una interrupción (INT) para avisar a la CPU

ARCOS @ UC3M

Page 147: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

EjemploE/S por DMA

147

petición:

// Programar la petición del bloque

out(0x500,0) ; // leer

out(0x500,datos) ; // dirección vector

out(0x500,100) ; // nº elementos

out(0x504,10) ; // posición lec./esc.

// Cambio de contexto voluntario (C.C.V.)

INT_05: // leer estado y datos

in(0x508, &status) ;

in(0x50C, &status) ;

// poner proceso peticionario a listo

ret_int # restore registers & return

Control 1Control 2Estado

0x05000x05040x0508

Unidad de E/S

Datos0x050C

� Información de control 1

� 0: leer

� 1: escribir

� Información de control 2

� Posición de lec./esc.

� Información de estado

� 0: dispositivo ocupado

� 1: dispositivo (dato) listo

� Datos

� Dato del dispositivo

ARCOS @ UC3M

Page 148: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

EjemploE/S por DMA

148

// pedir datos (out)

// proceso peticionario a dormir

// ejecutar otro proceso listo

// read(fichero,offset,100) ;…

k

P1

P2

INT_05: // fin DMA

// peticionario a listo

k

// read(fichero,offset,100) ;…

P1

ARCOS @ UC3M

Page 149: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/workqueue.h>#include <linux/interrupt.h>

MODULE_LICENSE("Dual BSD/GPL");MODULE_DESCRIPTION("DSO Device Driver Demo");

struct wq1_work {

struct work_struct work ;unsigned char status ;

char scancode ;};

static struct workqueue_struct *wq1 ;

Comunicación con el controlador Linux

149

dso/test3.c

ARCOS @ UC3M

Page 150: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

static void got_char (struct work_struct *work) {struct wq1_work *_w;

_w = container_of (work, struct wq1_work, work);printk (KERN_INFO ” test3: scan Code %x %s.\n”,

(int)(_w->scancode) & 0x7F, (_w->scancode) & 0x80 ? "Released" : "Pressed");}

irqreturn_t irq_handler (int irq, void *dev_id) {static int initialised = 0;static struct wq1_work task;

task.status = inb (0x64);task.scancode = inb (0x60);if (initialised == 0)

{ INIT_WORK (&(task.work), got_char); }else { PREPARE_WORK (&(task.work), got_char); }initialised = 1;queue_work (wq1 , &(task.work));return IRQ_HANDLED;

}

Comunicación con el controlador Linux

150

dso/test3.c

ARCOS @ UC3M

Page 151: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

int test3_init (void) {printk (KERN_INFO “ test3: inserting the new irq-hander…\n"); wq1 = create_workqueue ("WQsched.c");return request_irq (1,

irq_handler, IRQF_SHARED, "test3",(void *)(irq_handler));

}

void test3_exit (void) {printk (KERN_INFO “ test3: removing the new irq-hander…\n");free_irq (1, (void *)(irq_handler));

}

module_init (test3_init );module_exit (test3_exit );

Comunicación con el controlador Linux

151

dso/test3.c

ARCOS @ UC3M

Page 152: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Comunicación con el controlador Linux

152

obj-m := test1.o test2.o test3.o

dso/Makefile

ARCOS @ UC3M

make -C /usr/src/linux M=`pwd` modulestail –f /var/log/syslog &insmod test3.kolsrmmod test3

Page 153: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Organización básica4. planificación de E/S en el driver

� Cuando hay varias peticiones a un dispositivo, estas se mantienen en una cola de peticiones. El driver suele disponer de un planificador de E/S que permite planificar las peticiones de manera que se minimice el tiempo de atención a las mismas

� Los bloques de disco se planifican para minimizar el tiempo gastado en mover las cabezas del disco.

� El planificador de E/S suele realizar, al menos, dos operaciones básicas:

� Ordenación: las peticiones se insertan en una lista según algún criterio

� Fusión: dos peticiones pequeñas consecutivas se transforman en una única petición.

153

Controladordispositivo (1)

Controladordispositivo (n)

Driver de tipo (1)

Específico 1 Específico n…

carga

interfaz

ARCOS @ UC3M

Page 154: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Planificación de E/S en el driver

Enviar mandatosal controlador

Operacionessobre datos

Contestación ala petición

Traducir a formatodel controlador

Prepararrespuestade error

Extraer peticiónE/S de la lista

Peticiones de E/S del dispositivo

Bloqueo

Error

Esperarinterrupción

Programación delcontrolador

Si

Si

No

No

Interrupción

Leer registrosestado delcontrolador

154 Sistemas operativos: una visión aplicada ARCOS @ UC3M

Page 155: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Flujo de una operación de E/S AplicaciónSubsistema

o DLL

Manejadorde

dispositivo

Manejador deinterrupción

Gestor dearchivos

Gestor debloques

Gestor decache

Servicios

Controlador

Dispositivo(disco)

Copia en elsistema operativo

Copia enmemoria delusuarioModo usuario

Modo núcleo

Proceso

de usuario

SW de E/S

independiente

de dispositivo

SW de E/S

independiente

de dispositivo

SW de E/S

dependiente

de dispositivo

Hardware

Software

Bloque deldispositivo

Copia en elcontrolador

155 Sistemas operativos: una visión aplicada ARCOS @ UC3M

Page 156: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Organización básica5. inicialización y finalización del driver

� Cuando se está utilizando un driver necesita una serie de recursos asociados (IRQ, buffer de memoria, etc.)

� Para controlar la asignación de recursos se puede seguir el siguiente esquema:

� Un contador mantiene el número de procesos que van a trabajar con un dispositivo.

� Cada vez que un nuevo proceso opera con un dispositivo se incrementa el contador, y cuando deja de operar se decrementa.

� Cuando el contador pasa a 1 se realiza la asignación de recursos al driver.

� Cuando el contador pasa a 0 se libera todos los recursos.

156

Controladordispositivo (1)

Controladordispositivo (n)

Driver de tipo (1)

Específico 1 Específico n…

carga

interfaz

ARCOS @ UC3M

Page 157: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Organización básicaresumen

1. Interfaz para llamadas al sistema

2. Petición al controlador de dispositivo

3. Registro de drivers

4. Planificación de E/S en el driver

5. Inicialización y finalización del driver

157

Interfaz del Sistema Operativo

Controladordispositivo (1)

Controladordispositivo (n)

Driver de tipo (1)

Específico 1 Específico n…

carga

interfaz

Servicio ampliado (X)

carga

interfazinterfaz

13

24-5

interfaz

1

2

3

4-5

ARCOS @ UC3M

Page 158: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Windows 2000rutinas en un driver

Inside Microsoft Windows 2000 (Microsoft Programming Series) – 539 a 541

Start I/O routine

Interruptservice routine

DPC routine

I/Osystem

Initializationroutine

Dispatchroutines

Add-deviceroutine

ARCOS @ UC3M

Page 159: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estructuras de datosLinux

159 http://blog.csdn.net/vhghhd/article/details/6853550 ARCOS @ UC3M

Page 160: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Contenidos

160

� Introducción

� Periféricos

� Organización de los drivers

� Procesos

� Estructura de un driver

� Ejemplos de diseño

� Reloj: temporización y C.C.I.

ARCOS @ UC3M

Periféricos

kernel

Servicios

ShellProcesos

Usuarios

Sistemaoperativo

Har

dwar

eS

oftw

are

drivers

Page 161: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Organización básicaEjemplos con distintos tipos de dispositivos

� Dispositivo rápido

� Dispositivo lento

� Peticiones independientes

� Peticiones compartidas

161 ARCOS @ UC3M

Page 162: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

� Petición de datos:

� Escribir los datos en un buffer

� Manejador de interrupción del dispositivo:

Petición al controlador de dispositivorápido (salida)

162

Pantalla

� Dispositivo rápido

ARCOS @ UC3MAlejandro Calderón Mateos

Page 163: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

� Petición de datos:

� Manejador de interrupción del dispositivo:

� Ticks = Ticks + 1

Petición al controlador de dispositivorápido (entrada)

163

Reloj

� Dispositivo rápido

ARCOS @ UC3MAlejandro Calderón Mateos

Page 164: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

� Petición de datos:

� Crear una petición

� Si no imprimiendo datos

� Poner a imprimir petición

� Dormir + ejecutar otro proceso

� Manejador de interrupción del dispositivo:

� Despertar proceso

� Si hay datos a imprimir

� Poner a imprimir siguiente petición

Petición al controlador de dispositivolento / independiente (salida)

164

Impresora

� Dispositivo lento

� Peticiones independientes

peticiones

procesos bloqueados(1 por petición)

ARCOS @ UC3MAlejandro Calderón Mateos

Page 165: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

� Petición de datos:

� Crear una petición

� Si scanner libre

� Poner a escanear petición

� Dormir + Ejecutar otro proceso

� Leer los datos de un buffer

� Manejador de interrupción del dispositivo:

� Insertar datos en buffer

� Despertar proceso

� Si hay más peticiones

� Poner a escanear siguiente petición

Petición al controlador de dispositivolento / independiente (entrada)

165

Scanner

� Dispositivo lento

� Peticiones independientes

peticiones

procesos bloqueados(1 por petición)

ARCOS @ UC3MAlejandro Calderón Mateos

Page 166: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

� Petición de datos:

� Si NO hay datos

� Dormir + Ejecutar otro proceso

� Leer los datos de un buffer

� Manejador de interrupción del dispositivo:

� Insertar datos en buffer

� Si hay procesos dormidos

� Despertar al primero

Petición al controlador de dispositivolento / independiente (entrada)

166

Teclado

� Dispositivo lento

� Peticiones independientes

datos

procesos bloqueados(si no hay datos)

ARCOS @ UC3MAlejandro Calderón Mateos

Page 167: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Petición al controlador de dispositivolento / compartidas (salida)

� Petición de datos:

� Si otro proceso realizó la petición

� Actualizar los datos

� Dormir por esa petición

� En caso contrario

� Construir una nueva petición

� Encolar la petición

� Dormir en esa petición

� Manejador de interrupción del dispositivo:

� Despertar a todos los procesos dormidos por la petición completada

� Si hay peticiones pendientes

� Ir pidiendo la siguiente petición

167

peticiones

Disco

� Dispositivo lento

� Peticiones compartidas

procesos bloqueados(n por petición)

ARCOS @ UC3MAlejandro Calderón Mateos

Page 168: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Petición al controlador de dispositivolento / compartidas (entrada)

� Petición de datos:

� Si otro proceso realizó la petición

� Actualizar los datos

� Dormir por esa petición

� En caso contrario

� Construir una nueva petición

� Encolar la petición

� Dormir en esa petición

� Copiar los datos leídos

� Manejador de interrupción del dispositivo:

� Insertar datos en buffer

� Despertar a todos los procesos dormidos por la petición completada

� Si hay peticiones pendientes

� Ir pidiendo la siguiente petición

168

peticiones

CDROM

� Dispositivo lento

� Peticiones compartidas

procesos bloqueados(n por petición)

ARCOS @ UC3MAlejandro Calderón Mateos

Page 169: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Contenidos

169

� Introducción

� Periféricos

� Organización de los drivers

� Procesos

� Estructura de un driver

� Ejemplos de diseño

� Reloj: temporización y C.C.I.

ARCOS @ UC3M

Periféricos

kernel

Servicios

ShellProcesos

Usuarios

Sistemaoperativo

Har

dwar

eS

oftw

are

drivers

Page 170: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

El reloj: tratamiento mínimo

ARCOS @ UC3M170

proceso P0 sistema operativo

ejecutando

interrupción o llamada al sistema

interrupción o llamada al sistema

interrupción o llamada al sistema

Reloj_Interrupción_Hardware ()

• Ticks++

Reloj_Interrupción_Hardware ()

• Ticks++

Reloj_Interrupción_Hardware ()

• Ticks++

Page 171: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

TemporizaciónLinux

ARCOS @ UC3M171

• void process_timeout (unsigned long __data) {wake_up_process((task_t *)__data);

}

• timespec t;unsigned long expire;struct timer_list timer;

Understanding the Linux kernel (250)

"timer.h"

timer_list

Page 172: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

TemporizaciónLinux

ARCOS @ UC3M172

"timer.h"

timer_list

• expire = timespec_to_jiffies(&t) + 1 + jiffies;init_timer(&timer);timer.expires = expire;timer.data = (unsigned long) current;timer.function = process_timeout;add_timer(&timer);current->state = TASK_INTERRUPTIBLE;schedule(); /* ejecutar mientras otro proceso */del_singleshot_timer_sync(&timer);

Understanding the Linux kernel (250)

Page 173: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Curiosidad: Timer Coalescing en MacOS 10.9.x

ARCOS @ UC3M173http://appleinsider.com/articles/13/06/18/os-x-mavericks-new-app-nap-timer-coalescing-features-target-battery-efficiency

Page 174: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Curiosidad: Timer Coalescing en MacOS 10.9.x

ARCOS @ UC3M174 http://www.apple.com/osx/advanced-technologies/

SIN Timer Coalescing

Page 175: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Curiosidad: Timer Coalescing en MacOS 10.9.x

ARCOS @ UC3M175 http://www.apple.com/osx/advanced-technologies/

CON Timer Coalescing

Page 176: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multitarea (datos y funciones)

ARCOS @ UC3M176

Requisitos Información (en estructuras de datos) Funciones (internas, servicio y API)

Recursos• Zonas de memoria (código, datos y pila)• Archivos abiertos• Señales activas

• Diversas funciones internas• Diversas funciones de servicio para

memoria, ficheros, etc.

Multiprogramación• Estado de ejecución• Contexto: registros de CPU…• Lista de procesos

• Int. hw/sw de dispositivos• Planificador• Crear/Destruir/Planificar proceso

o Protección / Compartición

• Paso de mensajes• Cola de mensajes de recepción

• Memoria compartida• Zonas, locks y conditions

• Envío/Recepción mensaje y gestiónde la cola de mensaje

• API concurrencia y gestión de estructuras de datos

o Jerarquía de procesos

• Relación de parentesco• Conjuntos de procesos relacionados• Procesos de una misma sesión

• Clonar/Cambiar imagen de proceso• Asociar procesos e indicar proceso

representante

Multitarea• Quantum restante• Prioridad

• Int. hw/sw de reloj• Planificador• Crear/Destruir/Planificar proceso

Multiproceso • Afinidad• Int. hw/sw de reloj• Planificador• Crear/Destruir/Planificar proceso

Page 177: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estados de un proceso

ARCOS @ UC3M177

finalizaciónRunning

Ready Blockedfin E/Screación

finalizaciónRunning

Ready Blockedfin E/Screación

C.C.V.

C.C.V. + C.C.I.

Page 178: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

El reloj: tratamiento con c.c.v. + c.c.i.

ARCOS @ UC3M178

proceso P0 sistema operativo

ejecutando

interrupción o llamada al sistema

interrupción o llamada al sistema

interrupción o llamada al sistema

salvar estado en el BCP0

cargar estado en el BCP1

listo

proceso P1

ejecutando

listo

interrupción o llamada al sistema

Page 179: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Reloj_Planificar_Rodaja ()

• pActual->rodaja = pActual->rodaja - 1;• SI (pActual->rodaja == 0)

• pActual->estado = LISTO;• insertar (CPU_Listos, pActual);• proceso = pActual;

• pActual = planificador();• pActual->estado = EJECUCIÓN;• cambio_contexto(

&(proceso->contexto), &(pActual->contexto));

• return ok;

Pseudocódigo de ejemplo (P0)

ARCOS @ UC3M179

Running

Ready

BCP7 BCP2

Reloj_Interrupción_Hardware ()

• Ticks++;• Insertar (Reloj_Planificar_Rodaja); • Activar_Interrupción_Software();

BCP2 BCP5

salvar estado en BCP0

cargar estado en BCP1

planificador()

• return extraer(CPU_Listo);

Page 180: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Estados de un procesoLinux

ARCOS @ UC3M180

Ready

Stopped

Executing ZombieScheduling

Signal

Termination

Signal

Creation

Uninterruptible

Event Event

Interruptible

Page 181: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiproceso

ARCOS @ UC3M181

Requisitos Información (en estructuras de datos) Funciones (internas, servicio y API)

Recursos• Zonas de memoria (código, datos y pila)• Archivos abiertos• Señales activas

• Diversas funciones internas• Diversas funciones de servicio para

memoria, ficheros, etc.

Multiprogramación• Estado de ejecución• Contexto: registros de CPU…• Lista de procesos

• Int. hw/sw de dispositivos• Planificador• Crear/Destruir/Planificar proceso

o Protección / Compartición

• Paso de mensajes• Cola de mensajes de recepción

• Memoria compartida• Zonas, locks y conditions

• Envío/Recepción mensaje y gestiónde la cola de mensaje

• API concurrencia y gestión de estructuras de datos

o Jerarquía de procesos

• Relación de parentesco• Conjuntos de procesos relacionados• Procesos de una misma sesión

• Clonar/Cambiar imagen de proceso• Asociar procesos e indicar proceso

representante

Multitarea• Quantum restante• Prioridad

• Int. hw/sw de reloj• Planificador• Crear/Destruir/Planificar proceso

Multiproceso • Afinidad• Int. hw/sw de reloj• Planificador• Crear/Destruir/Planificar proceso

Page 182: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Multiproceso

� Afinidad:� Los procesos tienen ‘afinidad’ (affinity) a una CPU: «mejor volver a la misma CPU»

� Simetría:� Los procesos se ejecutan en la CPU que tienen unas capacidades específicas

ARCOS @ UC3M182

Page 183: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Planificación de procesosniveles de planificación

� A largo plazo

� añadir procesos a ejecutar

� Invocado con baja frecuencia

� puede ser algo lento

� A medio plazo

� añadir procesos a RAM

� A corto plazo

� qué proceso tiene la UCP

� Invocado frecuentemente

� rápido

ARCOS @ UC3M183

finalizaciónRunning

Ready Blockedfin E/S

Ready & Suspend

Blocked & Suspend

creación

Planificación a medio plazo

Planificación a corto plazo

Planificación a largo plazo

Sistemas operativos: una visión aplicada

Page 184: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Planificación de procesosobjetivos de los algoritmos de planificación (según sistema)

� Todos los sistemas:

� Equitativo – ofrece a cada proceso una parte equitativa de la CPU

� Expeditivo – cumplimiento de la política emprendida de reparto

� Balanceado – mantener todas las partes del sistema ocupadas

� Sistemas batch:

� Productividad – maximizar el número de trabajos por hora

� Tiempo de espera – minimizar el tiempo entre emisión y terminación del trabajo

� Uso de CPU – mantener la CPU ocupada todo el tiempo

� Sistemas Interactivos:

� Tiempo de respuesta – responder a las peticiones lo más rápido posible

� Ajustado – satisfacer las expectaciones de los usuarios

� Sistemas de tiempo real:

� Cumplimiento de plazos – evitar la pérdida de datos

� Predecible – evitar la degradación de calidad en sistemas multimedia

ARCOS @ UC3M184

Page 185: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Planificación de procesoscaracterísticas de los algoritmos de planificación (1/2)

� Preemption:

� Sin expulsión:

� El proceso conserva la CPU mientras desee.

� Cambios de contexto voluntarios (C.C.V.)

� [v/i] Un proceso puede bloquear al resto pero solución fácil a la compartición de recursos

� Windows 3.1, Windows 95 (16 bits), NetWare, MacOS 9.x.

� Con expulsión:

� Exige un reloj que interrumpe periódicamente:

� cuando pasa el quantum de un proceso se cambia a otro

� (Se añade) Cambios de contexto involuntarios (C.C.I.)

� [v/i] Mejora la interactividad pero precisa de mecanismos para condiciones de carrera

� AmigaOS (1985), Windows NT-XP-Vista-7, Linux, BSD, MacOS X

ARCOS @ UC3M185

Page 186: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Planificación de procesoscaracterísticas de los algoritmos de planificación (2/2)

� Clasificación de elementos en las colas:

� Por prioridad

� Por tipo

� CPU-bound (más ‘rachas’ –burst– de tiempo usando CPU)

� IO-bound (más ‘rachas’ de tiempo esperando E/S)

� CPU-aware:

� Afinidad:

� Los procesos tienen ‘afinidad’ (affinity) a una CPU: «mejor volver a la misma CPU»

� Simetría:

� Los procesos se ejecutan en la CPU que tienen unas capacidades específicas a dicha CPU

ARCOS @ UC3M186

A B C D

Page 187: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Planificación de procesosprincipales algoritmos de planificación (1/3)

� Cíclico o Round Robin:

� Asignación rotatoria del procesador

� Se asigna un tiempo máximo de procesador (rodaja o quantum)

� Equitativo pero interactivo:

� Mejor por UID que por proceso

� En Linux:

� Aparición en 11/2010 de un parche para el kernel que automáticamente crea un grupo de tareas por TTY para mejorar la interactividad en sistemas cargados.

� Son 224 líneas de código que modifican el planificador del kernel que en las primeras pruebas muestra que la latencia media cae a una 60 veces (1/60).

� Uso en sistemas de tiempo compartido

ARCOS @ UC3M187 http://www.phoronix.com/scan.php?page=article&item=linux_2637_video&num=1

A B C D B C D A

• Grande:

• menos cambios de contexto

• Peor reactividad

Page 188: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Planificación de procesosprincipales algoritmos de planificación (2/3)

� Por prioridad:

� Asignación a procesos más prioritarios el procesador

� Se puede combinar con cíclica. Ejemplo con tres clases de prioridad

� Características:

� Uso de prioridades fijas: problema de inanición

� No fijas: uso de algún algoritmo de envejecimiento

� Uso en sistemas de tiempo compartido con aspectos de tiempo real

ARCOS @ UC3M188

Prioridad 2

Prioridad 1

Prioridad 3

Page 189: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Planificación de procesosprincipales algoritmos de planificación (3/3)

� Primero el trabajo más corto:� Dado un conjunto de trabajo del que se sabe la duración total de la ejecución

de cada uno de ellos, se ordenan de la menor a la mayor duración.

� Características:

� [v] Produce el menor tiempo de respuesta (medio)

� [i] Penaliza los trabajos largos.

� Uso en sistemas batch.

� FIFO:� Ejecución por el estricto orden de llegada.

� Características:

� [v] Simple de implantar.

� [i] Penaliza los trabajos prioritarios.

� Uso en sistemas batch.

ARCOS @ UC3M189

Page 190: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Política vs mecanismo

� Separación de lo qué se puede hacer de cómo se puede hacer

� Normalmente, un proceso conoce cuál es el hilo más prioritario, el que más E/S necesitará, etc.

� Uso de algoritmos de planificación parametrizados

� Mecanismo en el kernel

� Parámetros rellenados por los procesos de usuarios

� Política establecida por los procesos de usuario

ARCOS @ UC3M190

Page 191: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Planificación multipolíticaWindows 2000 y Linux

ARCOS @ UC3M191 Sistemas operativos: una visión aplicada

31-1616 niveles de RT

15 niveles variables 15-1

1 nivel del sistema

0-99

100-139

Prioridades de RT

Prioridades procs. convencionales

Windows 2000 Linux

CPU

I/O

CPU

I/O

0

Page 192: DSO-3: Drivers y procesos (v4b)

Alejandro Calderón Mateos

Planificación multipolíticaWindows 2000

ARCOS @ UC3M192 Sistemas operativos: una visión aplicada

31-1616 niveles de RT

15 niveles variables 15-1

1 nivel del sistema

Windows 2000

CPU

I/O

0

Page 193: DSO-3: Drivers y procesos (v4b)

Lección 3drivers y servicios ampliados

Diseño de Sistemas Operativos

Grado en Ingeniería Informática

Grupo ARCOSUniversidad Carlos III de Madrid