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"
2/07/2010 17:04

Creándolo desde cero... o menos uno

Comunicaciones de Red
El primer paso para la creación de un Sistema Operativo, desde hace bastante tiempo, consiste, en los mejores casos, en buscar una implementación (kernel) de Linux o similares. En muchas ocasiones, simplemente se modifican distribuciones (como Ubuntu) modificando los paquetes que incluyen. Aun con este panorama tan desalentador, quedan por la red muchos artículos sobre Cómo hacer un Sistema Operativo desde cero (en inglés) usando lenguaje ensamblador y diversas convenciones.

Si bien esa última opción es la de más bajo nivel, consiste en asumir muchas cosas que van a pasar factura tarde o temprano en el Sistema Operativo: instrucciones no disponibles en algunos microprocesadores, mapeos en diferentes direcciones de memoria, o incluso, diferentes salidas dependiendo del fabricante del dispositivo, y sin duda un largo etcétera.

Por eso, mi idea es utilizar una arquitectura sencilla, abierta, y estándar. La que mejor se ajusta a estas condiciones es, sin duda, la Arquitectura eWa, que permite ejecutarse en dispositivos nativos o virtuales como Sistemas Operativos o páginas web.

Se trata de un diseño minimalista de un Sistema Informático. En su núcleo hay tan solo tres unidades: una CPU, una ABU, una MMU y una bujía. Aunque estos nombres recuerdan a unidades existentes en otras arquitecturas, en el caso de la Arquitectura eWa son unas unidades, a su vez, muy sencillas. El núcleo está conectado a un Espacio de Direcciones donde se encuentran los distintos dispositivos y controladores. Los dispositivos son componentes que proveen de memoria (de escritura y/o lectura constante) el Espacio de Direcciones; mientras que los controladores son componentes que conectan con el Sistema al través del Espacio de Direcciones.

La CPU (Unidad de Procesamiento Central) tiene un cometido muy reducido en comparación con la complejidad habitual de otros microprocesadores. En ésta se encuentran sólo cuatro grupos de registros: el K (1bit), el GHIJ (4bits), el ZUVW (4bits) y el 0123456789ABCDEF (16bits). Implementa dos funciones internas, la de lectura y la de escritura; la primera realiza la escritura del valor de 1 bit correspondiente al registro seleccionado del grupo 0123456789ABCDEF en el registro K, mientras que la segunda lo hace de K a 0123456789ABCDEF.
Las funciones externas que realiza están relacionadas con la obtención de las instrucciones (escribiendo cada instrucción, de 4 bits cada una -tiene por tanto 16 instrucciones-, en el grupo GHIJ) por medio de la MMU, y de comunicación con la ABU.

La ABU (Unidad Básica de Aritmética) tiene el cometido más sencillo de las tres unidades junto a la bujía. Básicamente lo que hace es realizar operaciones lógicas básicas (unarias y binarias): or, nor; nxor, nand; not; y xor, and. Tiene tres grupos de registros (MN, OP y XY) de 2 bits cada uno. Los primeros corresponden a los valores de entrada, los siguientes indican la operación a ejecutar, y en los dos últimos se pondrán los valores de salida. Por lo tanto, es capaz de hacer hasta 16 (2*8) operaciones diferentes, aunque ciertamente sólo distingue las siete anteriores.
Esta unidad conecta exclusivamente con la CPU.

La MMU (Unidad de Mapeo de Memoria) es quizás la más complicada de las unidades del núcleo del Sistema Informático. Es la puerta de acceso al Espacio de Direcciones. Los registros de la MMU se llaman punteros, y hay tres tipos. El puntero PC (o PCero, ya que es el puntero 0, aunque éste no está visible para el programador) es el encargado de apuntar al comienzo de la siguiente instrucción a ejecutar por la CPU. Por otra parte están cuatro punteros básicos llamados witQ, witR, witS y witT que permiten al programador tener apuntadas diferentes direcciones del Espacio de Direcciones. Y por último, están los punteros L, que son un número pseudo-determinado (generalmente tres u ocho) de punteros iguales que sirven para apuntar distintas direcciones, así como para también guardar datos.
Esta unidad también tiene dos tipos de funciones. El primer tipo sirve para acceder al Espacio de Direcciones, copiando al registro K de la CPU al registro del Espacio de Direcciones que apunte el puntero actual, o viceversa. El segundo tipo sirve para administrar los punteros y páginas de la propia MMU dependiendo del grupo de registros ZUVW de la CPU.

La bujía es una unidad "de arranque y recuperación" y es la encargada de arrancar el sistema, al igual que una bujía arranca el motor de un coche.

Os recomiendo seguir los links de las tres unidades, ya que en la documentación se pueden encontrar tablas y más información sobre cada una de ellas que comento en la entrada de hoy de forma breve.

Comentarios

23/12/2011 13:35
Busca acerca de "Temas para Windows" en google y quédate con los primeros resultados. Pero en este blog no tratamos (y sobre todo al principio como es el caso de esta segunda entrada) el diseño gráfico del Sistema Operativo Multiplataforma.
Si te interesa aportar tu granito de arena a estos temas de personalización y adaptación al usuario, te invito a escribirlos en la entrada correspondiente al "Día 29" que trata exactamente de eso.

23/12/2011 10:18
Buenas, quería preguntarte Guillermo,¿Como puedo cambiar la interfaz de mi windows?, veras estoy más que harto de la típica barra de tareas y tengo varias ideas de un escritorio totalmente diferente, no soy programador ni nada por el estilo pero tengo algunas "vagas" ideas de informática y me gustaría que me dieras un empujón para conseguir lo deseado...

17/10/2011 13:11
Creo que explicar en qué arquitectura va a funcionar este Sistema Operativo Multiplataforma es bastante más sencillo que empezar a explicarlo por el tejado.
La introducción (primeros párrafos) es absolutamente necesario de leer y comprender: ahí se establece el motivo por el que se asientan esas bases y no las 'tradicionales'.

17/10/2011 12:04
asi empieza la explicacion...me parece un poco abstracto la forma de empezar a explicar un s.o

13/01/2011 04:28
q loco

11/08/2010 17:05
Actualizo para decir que en http://www.som30.es/fuente/sistemainformatico/ ya hay varias Sistemas Informáticos implementados para distintas tecnologías.

7/07/2010 12:04
Hola.
Pues todavía no existe un prototipo real de esta arquitectura (aunque sería muy barato y sencillo), pero sí existen implementaciones en "c" y en "flash" para virtualizar en ordenadores de hoy en día.
Gracias por tu comentario.

7/07/2010 11:24
Por lo que he entendido para ejecutar el SO vas a usar un hardware totalmente innovador que no existe en el mercado, ¿has construído ya un prototipo? ¿Has pensado en crear una capa de abstracción que emule tu hardware sobre el hardware de hoy en día?
Muy buena iniciativa y seguiré prestando atención a los siguientes capítulos ;)

Deja tu comentario

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 5 (2) 23/01 01:52
- Día 20 (12) 21/01 19:39
- Día 10 (15) 19/01 20:13
- Día 11 (13) 19/01 20:09
- Día 12 (10) 19/01 19:52
- Día 21 (13) 19/01 19:51
- Día 9 (10) 19/01 18:41
- Día 15 (11) 19/01 17:48
- Día 22 (11) 19/01 17:48
- Día 19 (12) 19/01 17:33
- Día 29 (7) 23/12 16:32
- Día 2 (5) 23/12 10:18
- Día 8 (1) 14/11 18:32
- Día 23 (3) 10/10 21:26
- Día 3 (3) 6/08 16:30
- Día 1 (5) 12/05 02:31
- Día 17 (1) 4/04 10:21
- Día 7 (6) 28/11 15:52
- Día 6 (1) 17/09 16:10
- Día 27 (1) 11/08 18:46
- Día 24 (1) 8/08 14:30
- Día 18 (1) 30/07 20:27
- Día 14 (2)
- Día 13 (4)
- Día 4 (1)

Valid HTML 4.01 Transitional