Vous êtes sur la page 1sur 18

Los sistemas operativos permiten al usuario interactuar con el hardware de su

computadora, los cuales se elaboran con cientos de miles de lneas de cdigo, por
lo general con los lenguajes C, C++ y ensambladores.

Pasos
1.

1
Tendrs que tener conocimientos de programacin antes de empezar. El
lenguaje ensamblador es esencial; otro lenguaje adicional de bajo nivel como C
ser muy recomendable.
2.

2
Decide en qu medio deseas cargar el sistema operativo. Podra ser una
unidad de CD, DVD, de flash, un disco duro o en otra PC.
3.
3
Decide qu quieres que haga tu sistema operativo. Si se trata de un sistema
operativo completamente capaz que tiene una interfaz grfica de usuario
(GUI, Graphical User Interface) o algo un poco ms minimalista, tendrs que saber
qu direccin vas a tomar antes de comenzar.
4.
4
Especifica qu plataforma de procesador ser compatible con tu sistema
operativo. Te recomendamos las dos ms comunes para las computadoras
personales: AI-32 y x86_64.
5.
5
Decide si prefieres hacerlo todo t mismo desde cero o si hay un ncleo
existente que te gustara usar como base para construir. Por ejemplo,
programar Linux desde cero ser un proyecto para aquellos que le gustara crear
su propia distribucin de Linux.
6.
6
Decide si vas a utilizar tu propio gestor de arranque o uno pre-creado como
el cargador de arranque unificado global (GRUB, Grand Unified
Bootloader).Debido a que para programar el cdigo de tu propio gestor de
arranque necesitars poseer un conocimiento amplio del hardware y del BIOS,
podra retrasarte para programar el ncleo en s.
7.
7
Decide qu lenguaje de programacin vas a utilizar. Si bien es posible crear un
sistema operativo con un lenguaje como Pascal o BASIC, ser mejor si usas C o
el ensamblador. El ensamblador es absolutamente necesario, ya que algunas
partes vitales de un sistema operativo lo necesitan. Por su parte, C++ contiene
palabras clave que necesitan otro sistema operativo totalmente integrado para
poder funcionar.
Para poder compilar un sistema operativo con el cdigo C o C++, por supuesto
tendrs que utilizar cualquier compilador. Por lo tanto debers leer la gua o los
manuales o la documentacin de usuario del compilador C o C++ que vayas a
elegir, ya sea si se incluye con el software o est disponible en la pgina web del
distribuidor. Tendrs que saber muchas cosas complejas acerca del compilador y
para desarrollar con C++ debers tener conocimientos de decoracin de nombre
(mangling scheme) del compilador y de su ABI. Se supone que tendrs que
conocer los diversos formatos ejecutables (ELF, PE, COFF, binarios sin formato,
etc.) y entender que el formato patentado de Windows, PE (.exe), est protegido
por los derechos de autor.
8.

8
Decide cul ser la interfaz de programacin de aplicaciones
(API, Application Programming Interface). Te recomendamos POSIX, ya que
est bien documentada. Todos los sistemas Unix tienen al menos el soporte
parcial para POSIX, por lo que sera trivial conectar programas Unix con tu
sistema operativo.
9.

9
Decide el diseo. Existen ncleos monolticos y microncleos. Los monolticos
implementan todos los servicios en el ncleo, mientras que los microncleos
tienen un ncleo pequeo combinado con servicios de implementacin de
demonios de usuario. En general, los ncleos monolticos son ms rpidos, pero
los microncleos tienen un mejor aislamiento de fallos y fiabilidad.
10.

10
Considera desarrollar y trabajar en equipo. De esta manera, se resolvern ms
problemas en menos tiempo, lo cual podra generar un mejor sistema operativo
ms rpidamente.
11.
11
No borres tu disco duro por completo. Recuerda, al borrar el disco podras
borrar todos tus datos irreversiblemente! Utiliza el GRUB u otro gestor de arranque
para que tu computadora tenga otro sistema operativo con el cual arrancar hasta
que el tuyo funcione por completo.
12.
12
Empieza con algo pequeo. Empieza con cosas pequeas como mostrar texto e
interrupciones antes de proseguir a desarrollar cosas como gestin de memoria y
multitarea.
13.
13
Guarda una copia de seguridad de la ltima fuente de trabajo. Ello ser una
medida de proteccin en caso de que surja algn problema grave con la versin
actual de tu sistema operativo o tu desarrollo. Si la PC se bloquea y no puede
arrancar, ser excelente tener una segunda copia con la que puedas trabajar para
solucionar el problema.
14.
14
Considera probar tu nuevo sistema operativo en una computadora virtual.En
lugar de reiniciar el equipo cada vez que realices cambios o tengas que transferir
ciertos archivos desde el equipo de desarrollo al equipo de prueba, podrs utilizar
la aplicacin de una computadora virtual para ejecutar tu sistema operativo,
mientras el tuyo se mantiene en funcionamiento. Algunas aplicaciones de
computadora virtual son VMWare (que tambin tiene un producto de servidor
gratuito), la alternativa de cdigo abierto, Bochs, Microsoft Virtual PC (no
compatible con Linux) y xVM VirtualBox.
15.
15
Saca un candidato de lanzamiento. Esto permitir a los usuarios informarte
sobre posibles problemas con el sistema operativo.
16.
16
Un sistema operativo tambin podra ser fcil de usar, as que asegrate de
incluir caractersticas fciles para el usuario, de modo que sean parte
integral de tu diseo.

Consejos
Despus de que hayas hecho todo el desarrollo, decide si quieres que el cdigo
sea abierto o patentado.
No comiences un proyecto para crear un sistema operativo con el fin de empezar
a aprender programacin. Si no tienes conocimientos avanzados de C, C++,
Pascal u otro lenguaje adecuado, incluida la manipulacin del puntero,
manipulacin de bits de bajo nivel, desplazamiento de bits, lenguaje ensamblador
en lnea, etc., entonces no estars listo para desarrollar un sistema operativo.
Si quieres que tu sistema sea viable, tu mayor prioridad tendr que ser
implementar caractersticas de seguridad.
Usa los sitios web como OSDev y OSDever para que te ayuden a desarrollar tu
propio sistema operativo. Ten en cuenta que para la mayora de los propsitos, la
comunidad OSDev.org prefiere que te limites a hacer uso de su wiki y no participar
en el foro. Si decides participar en el foro, existen requisitos para hacerlo: debers
tener conocimientos profundos de C o C++ y el lenguaje ensamblador x86.
Tambin debers comprender conceptos de programacin complejos y generales
como listas enlazadas, colas, etc. El reglamento de la comunidad OSDev
establece explcitamente que el objetivo de la comunidad no consiste en cuidar a
los programadores novatos. Si vas a tratar de desarrollar un sistema operativo, no
hace falta decir que se supone que tienes que ser un dios de la programacin.
Tambin ser necesario que leas los manuales del procesador para la arquitectura
que vayas a elegir; ya sea x86 (Intel), ARM, MIPS, PPC, etc. Podrs encontrar
fcilmente estos manuales con una bsqueda de Google (manuales Intel,
manuales de ARM, etc.). No te unas a los foros OSDev.org para empezar a
hacer preguntas obvias sino simplemente te dirn que leas el manual de
respuestas. Debers tratar de leer Wikipedia y los manuales de las diversas
herramientas que desees utilizar.
Comprueba si hay posibles bloqueos y otros errores. Los errores, bloqueos y
dems problemas afectarn tu proyecto del sistema operativo
Si quieres que sea fcil, ten en cuenta algunas distribuciones de Linux, tales como
Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS mklivecd, SUSE
Studio y SUSE KIWI. Sin embargo, el sistema operativo que crees le pertenecer
a la empresa que haya lanzado primero el servicio (aunque tendrs los derechos
de distribuirlo gratuitamente, cambiarlo y ejecutarlo como quieras bajo el GPL).
Te recomendamos hacer una particin completamente nueva para desarrollar el
sistema operativo.
Advertencias
Escribir descuidadamente tu sistema operativo sobre el disco duro podra daarlo
por completo, as que ten cuidado.
No podrs crear un sistema completo en dos semanas. Primero haz uno que
arranque, luego prosigue con las caractersticas interesantes.
No esperes que sea fcil construir un sistema operativo bien hecho. Habr
muchas interdependencias complejas, por ejemplo, para que el sistema pueda
manejar varios procesadores, el administrador de memoria deber tener
mecanismos de bloqueo para evitar que varios procesadores accedan al mismo
recurso al mismo tiempo. Los bloqueos para ello necesitarn la presencia de un
planificador para asegurarse de que solo un procesador tenga acceso a un
recurso crtico en algn momento dado mientras todos los dems esperan. Sin
embargo, el planificador depender de la presencia de un administrador de
memoria. Este es el caso de una dependencia en punto muerto. No existe ninguna
solucin estndar para este tipo de problemas, por lo que se supone que cada
programador de un sistema operativo tendr que tener la destreza necesaria para
lidiar con l.
Si haces algo contraproducente, por ejemplo, escribir bytes aleatorios a puertos
I/O aleatorios, bloquears el sistema operativo y podras quemar el hardware (en
teora).

Recursos adicionales
Manual: Linux desde cero
Gestor de arranque: GRUB
Aplicaciones de la computadora virtual: Bochs, VM Ware, XM Virtual Box.
Manuales del procesador: Manuales de Intel
Sitios de desarrollo de sistemas operativos: OSDev, OSDever

Vous aimerez peut-être aussi