Visita la versión flash
Propuestas
Visita el perfil del autor
Hablan del blog

SOM30


"Cómo hacer un Sistema Operativo en 30 días"
7/07/2010 23:49

Conociendo los dispositivos y controladores

Comunicaciones de Red
Después de cerca de una semana trabajando en conceptos básicos sobre dónde se va a ejecutar el Sistema Operativo, llegamos al punto de poder programar ya algunas estructuras básicas. Hoy evitaremos entrar en el kérnel porque hasta llegar a él nos queda un pequeño camino que recorrer.

Por ahora tenemos una máquina donde podremos poner a ejecutar sencillos procesos escritos con el lenguaje que hemos ido diseñado ayer y usando el compilador del que hablamos hace unos días. Pero obviamente, para llegar al objetivo final, que es tener algo lo más presentable posible en 30 días, no vamos a perder el tiempo en chorraditas y juguetes que infravaloren el potencial de lo que hemos hecho. Por eso, no haremos ejemplos de cómo calcular factoriales decimales o clases gato que hereden de la clase animal, aunque eso sería lo que más encajara en este punto con más tiempo por delante.

De todas formas, no vamos a entrar en materia porque, como comenté antes, todavía no tenemos nada funcional. Como siempre, para afrontar este tipo de retos, y cualquier otro en nuestra vida, tenemos que levantar la cabeza de vez en cuando y mirar al frente. Ahora mismo, si queremos ejecutar un proceso que compilemos con lo que tenemos, habría que inyectar el código objeto generado en la primera dirección del Espacio de Direcciones para que se comenzara a ejecutar.

Partiendo de eso, hoy vamos a presentar el problema de tener que iniciar el Sistema Informático para cargar dinámicamente código objeto que compilemos sin tener que recurrir a modificar el Sistema Informático en sí. Es decir, vamos a hablar de los componentes de un Sistema Informático.

Aunque las unidades, de las que hablamos con anterioridad, técnicamente se consideran también componentes de un Sistema Informático, hoy vamos a centrarnos más en los otros dos tipos de componentes que podemos encontrar y usar en un Sistema Informático: los dispositivos y los controladores.

Los dispositivos se caracterizan por ser registros contiguos de lectura y/o escritura constante en el Espacio de Direcciones del Sistema Informático. El atributo "constante" que caracteriza a las funciones de lectura y escritura es lo único que distingue dispositivos frente a controladores. Que sean "constantes" quiere decir que una vez los modifiquemos tras el arranque del Sistema Informático, van a mantener ese valor. Los dispositivos están mapeados en lugares determinados por el estándar tanto al comienzo de éste (donde aparecen los dispositivos de arranque) como al final (donde está la memoria principal) del Espacio de Direcciones. El caso más importante de dispositivo es el que suministra memoria RAM, aunque más importante es el dispositivo GAM que permite llevar al Sistema Informático a una localización conocida tras el arranque.

Los controladores son registros contiguos de lectura y/o escritura variable en el Espacio de Direcciones del Sistema Informático. En este caso, "variables" quiere decir que podrán modificar su valor en tiempo de ejecución sin que nosotros mandemos esa orden. Los controladores están mapeados generalmente antes de la memoria RAM, que suele ser el último componente que aparece en el Espacio de Direcciones. Como estos controladores pueden modificar el valor de sus registros de forma imprevisible, es necesario que se estandarice su comportamiento. Para eso, tenemos el controlador universal que veremos más adelante. Entre los controladores más importantes, destacamos el de pantalla, el de sonido, el de red, el de teclado y el de ratón, el de datos...

Retomando el tema del principio, ahora parece que va a ser más claro todo. Nuestro kérnel, junto con los demás procesos que compilemos, estará ubicado en el exterior del Sistema Informático. Mañana abordaremos los pasos, basándonos en las estructuras de nuestro lenguaje, para llegar a cargar el hipotético kérnel en el Espacio de Direcciones y pasarle el testigo.

Comentarios

5/11/2016 21:29
Admiro bastante como va transcurriendo el proyecto actualmente, muchas gracias por compartir estos fundamentos teoricos

26/02/2016 18:57
AQUI NO HAY EJEMPLOS PERO SE DONDE HAY TODO SOBRE SISTEMAS OPERATIVOS Y CON EJEMPLOS DE CODIGO , TAMBIEN VARIOS SITEMAS DE CODIGO ABIERTO DONDE PUEDES DESCARGARLOS AQUI :http://wiki.osdev.org/Tutorials

26/02/2014 22:51
El código no es una representación funcional de la tarea deseada; el fundamento teórico que avala y justifica y explica el código es tan o más importante que el propio código. No es ninguna pérdida de tiempo leer y entender esto.
Así, el código será más fácil de comprender. Lo tienes disponible siguiendo los enlaces que hay en la columna de la derecha.

28/11/2010 15:52
falta codigo papa!!! sin codigo no se hace de nada, publica algo mas constructivo no tanta teoria

Deja tu comentario


Se enviará usando la Red Social @visitante
¿Quieres responder con otra cuenta de TuEntidad.es?
Usa MonoMola o LoTienes.

Búsqueda

Calendario

- Día 1
- Día 2
- Día 3
- Día 4
- Día 5
- Día 6
- Día 7
- Día 8
- Día 9
- Día 10
- Día 11
- Día 12
- Día 13
- Día 14
- Día 15
- Día 16
- Día 17
- Día 18
- Día 19
- Día 20
- Día 21
- Día 22
- Día 23
- Día 24
- Día 25
- Día 26
- Día 27
- Día 28
- Día 29

Código

- Sistemas Informáticos
- Compilador
- GAM
- GAE
- Kérnel
- LiSi
- ViSi
- SAM
Licencia LSW

Comentan

- Día 1 (16) 8/06 02:28
- Día 29 (19) 13/03 04:10
- Día 10 (18) 23/01 22:16
- Día 3 (9) 10/12 08:55
- Día 2 (19) 10/12 08:54
- Día 7 (4) 5/11 21:29
- Día 11 (44) 25/10 01:39
- Día 4 (3) 24/09 13:45
- Día 28 (2) 6/04 04:01
- Día 26 (1) 17/07 01:21
- Día 27 (4) 29/05 14:50
- Día 8 (9) 29/05 05:35
- Día 24 (2) 18/01 05:16
- Día 17 (5) 18/01 05:10
- Día 13 (7) 6/12 18:44
- Día 15 (1) 30/08 08:53
- Día 6 (2) 25/08 02:14
- Día 5 (4) 7/04 00:50
- Día 21 (6) 26/06 21:26
- Día 18 (2) 26/06 03:09
- Día 23 (2) 22/04 13:45
- Día 25 (1) 11/03 21:34
- Día 19 (3) 19/01 17:33
- Día 14 (2) 7/01 22:06

Valid HTML 4.01 Transitional