Story Transcript
detalles, driver de disco (minix 3)
Hay un driver básico, lento, como último remedio. Los discos han evolucionado desde los primeros "pc’s"hasta ahora. Anchura del bus de datos 8,16,32. Tamaño 10M..500G La compatibilidad da lugar a variantes en la interpretación de los registros ... (LBA, ...) La bios explora los periféricos y ofrece una primera información. En minix 3 se decidió que el driver de disco sea secuencial.
cap 3– p.
licencias ¿Cuál es la licencia de MINIX 3? La licencia de MINIX 3 es una copia de la licencia de Berkeley (BSD). En resumen, la licencia dice que usted puede hacer lo que quiera con el sistema siempre y cuando usted (1) acepte no perseguirnos legalmente bajo bajo ninguna condición, y (2) mantenga las acreditaciones de autor´ıa en el código fuente, la documentación y la publicidad a menos que se hagan otros acuerdos. Específicamente, usted tiene la libertad de modificar el código fuente, redistribuirlo e incorporarlo a productos comerciales sin otras restricciones más que las mencionadas previamente
cap 3– p.
fuentes de la red http://www.minix3.org/download/ IDE-3.1.2a.iso.bz2 (296 MB) MD5 checksum ac83e516f9f1451ab9579872b1fcdc09
cap 3– p.
at_wini herramienta: find . -name ’*.[ch]’ -exec grep $1 {} \; -ls
drivers$ head libdriver/driver.c # 376 li. /* This file contains device independent * device driver interface. ... Apr 02, 1992 constructed from AT wini and flopp * drivers$ head at_wini/at_wini.c # 2485 lin /* This file contains the device dependent * part of a driver for the IBM-AT * winchester controller. Written by Adri Koppes. cap 3– p.
at_wini .. llama a ..
main.c
at_wini.c
398,411
driver_task
libdriver/driver.c
73,103
do_rdwt
libdriver/driver.c
169,194
dp->dr_transfer
libdriver/driver.h
30,36
w_dtab->dr_transfer
at_wini.c
378,384
w_transfer
at_wini.c
1188,1247
do_transfer
at_wini.c
1112,1192
com_out
at_wini.c
1411,1455
sys_voutb
lib/syslib/sys_voutb.c
6,25
_taskcall
../src/lib/syslib/taskcall.c
1,17
_sendrec sys_vdevio outb
SYS_VDEVIO ../src/kernel/system/do_vdevio.c
26,66-77cap 3– p.
(1) inicio de registro, PASCAL .. C r record a: integer; b: integer; end r.a := 3; r.b := 6;
struct sr { int a; int b; } ; r.a = 3; r.b = 6;
struct sr r = { 3, 6 }
struct sr r = { 6, 3 }
cap 3– p.
(2)
do_rdwt llama a dp->dr_transfer
libdriver/driver.c, línea 194
(valor de una) variable que contiene la dirección de .. que es igual que dp w_dtab w_dtab->dr_transfer (valor de una) variable que contiene la dirección de .. la función ... w_transfer
En resumen: do_rdwt llama a
w_transfer
cap 3– p.
at_wini .. llama a ..
main.c
at_wini.c
398,411
driver_task
libdriver/driver.c
73,103
do_rdwt
libdriver/driver.c
169,194
w_transfer
at_wini.c
1188,1247
do_transfer
at_wini.c
1112,1192
com_out
at_wini.c
1411,1455
sys_voutb
lib/syslib/sys_voutb.c
6,25
_taskcall
../src/lib/syslib/taskcall.c
1,17
sys_vdevio
../src/kernel/system/do_vdevio.c
26,66-77
outb
cap 3– p.
at_wini funciones
main.c driver_task
loop de servicio + switch/case
do_rdwt
llamada a procedimientos especif.
w_transfer do_transfer
determina cabeza, cilindro, sector
com_out
construye un vector
sys_voutb _taskcall sys_vdevio
e/s de octetos, pal-16, pal-32
outb
cap 3– p.
at_wini io_vect libdriver/driver.c: The drivers support the following operations... DEV GATHER, DEV SCATTER Los dirver de minix-3 aceptan peticiones de leer y escribir con un vector de peticiones elementales. Cuando se piden varias escrituras se deben realizar todas (para que la operacion sea OK.) Una aplicación, una escritura atómica de nivel superior. Cuando se piden varias lecturas, basta con que se realice alguna (la primera?). Haz lo que puedas. Una aplicación, adelantarse (adivinar) lo que nos va a pedir el proceso de usuario, bloques consecutivos.
cap 3– p. 1
at_wini preguntas
Ventajas/inconvenientes, pros y contras, de que el driver de disco duro atienda las peticiones de e/s de una en una, o de varias en varias. Queremos que el driver de disco duro acepte varias peticiones de e/s. Habrá que modificar el código. Primeras cuestiones a considerar.
cap 3– p. 1
at_wini p1
el hardware, los discos el/los clientes los usuarios observación / medida el código corrección
cap 3– p. 1
at_wini p2
algoritmo variables concurrencia cambios fuera de drivers
cap 3– p. 1