Está en la página 1de 8

Nombres: Justo Manuel Antonio

Apellido: Goico Reyes


Matricula: 2020-9312
Instituto: ITLA
Asignatura: Sistema operativo
Docente: Teófilo Antonio Diaz Pratt
Trabajo: Como crear un sistema operativo
Fecha: 24/6/2020
Como crear un sistema operativo

Parte 1 aprender los conceptos básicos.

1. Toma unos cuantos cursos básicos de ciencias de la computación. A diferencia

del desarrollo para la web, para crear un sistema operativo se necesita una

comprensión sólida de los algoritmos, las estructuras de datos, el hardware de

computadora y la gestión de recursos.[1] Debido a que las personas obtienen

títulos en esto, no debes esperar poder escribir todo un sistema operativo

después de leer un tutorial en línea. El curso Introducción a las Ciencias de la

Computación de Harvard está disponible en línea sin costo a través de EDX

2. Aprende un lenguaje de programación de alto nivel (por ejemplo, el C). Después

de tener una comprensión básica sólida de las ciencias de la computación, el

siguiente paso es dominar el C o el C++. Al igual que el aprender sobre ciencias

de la computación, dominar un lenguaje no es opcional, ya que no podrás

codificar un sistema operativo si no puedes escribir aplicaciones buenas.

 En caso de que seas nuevo en el C, dale un vistazo al curso Programación en C:


Empezar de Dartmouth, el cual es gratuito a través de EDX. Después de
completar ese curso, puedes tomar el siguiente en la serie: Programación en C:
Fundamentos del Lenguaje. Luego, pasa a los cursos subsiguientes (por
ejemplo, Programación Modular y Gestión de Memoria y Punteros y Gestión
de Memoria).
3. Aprende un lenguaje ensamblador. Los lenguajes ensambladores son lenguajes de

bajo nivel que están diseñados para comunicarse con distintos procesadores. El

ensamblaje difiere para distintos tipos de procesadores (por ejemplo, el lenguaje

ensamblador x86 para Intel, AMD, VIA y otros procesadores), por lo que será necesario

que aprendas la versión para el tipo de procesador para el cual vayas a codificar.
 Si lees este libro de código abierto en su totalidad, podrás obtener una
comprensión lo suficientemente sólida como para construir un sistema
operativo.
 El arte del lenguaje ensamblador es un libro muy recomendado sobre el
ensamblaje que está disponible tanto en línea como fuera de ella.
 También debes investigar mucho acerca del tipo de procesador o procesadores
en los cuales deba ejecutarse tu sistema operativo. Puedes encontrar con
facilidad manuales para la arquitectura de procesadores con una búsqueda en
Google ("manuales de Intel", "manuales de ARM", etc.).

4. Completa un tutorial de sistemas operativos. Los tutoriales de sistemas operativos te

guían a través del proceso de crear un sistema operativo básico. Esto te acostumbra al

proceso y te ayuda a determinar si te falta alguna pieza. Después de completar uno o dos

tutoriales, estarás bien encaminado para crear tu propio sistema operativo.


 Bare Bones es un tutorial que te ayuda a escribir tu primer núcleo simple de 32
bits. Después de completar el tutorial, el siguiente paso es usar Meaty
Skeleton para estructurar tu propio sistema operativo.
 Linux desde cero es un libro en línea que te guía a través de la creación de tu
propio sistema operativo Linux.
 Sistemas operativos de 0 a 1 es un libro gratuito sobre la creación de varios
sistemas operativos de principio a fin.

5. Determina tus objetivos en cuanto al sistema operativo. ¿Qué quieres que haga el

sistema operativo? ¿Cómo debería verse? ¿De verdad debes escribir todo un sistema
operativo o tan solo quieres crear un aspecto determinado para tu escritorio? Debes

tomar en cuenta todas estas cosas antes de empezar a codificar.[3]


 Considera la posibilidad de desarrollarlo con un equipo de otros programadores.
El que haya un equipo de desarrolladores que trabajen en el proyecto reducirá
el tiempo de desarrollo de manera significativa.
 Añade tus objetivos, planes y preguntas para el proyecto a tu repositorio público
de forma que sea fácil que los demás te ayuden.
Parte 2 Desarrollar tu sistema operativo

1. Elige un entorno de desarrollo. Este constituye la plataforma que usarás para

codificar tu sistema operativo nuevo. Si bien es cuestión de preferencias

personales, la mayoría de las personas usan ya sea Windows o un tipo de UNIX.

En caso de que vayas a usar Windows, es recomendable instalar un entorno de

UNIX (por ejemplo, Cygwin o MinGW). En general, debes tener cuidado de que

el entorno que uses incluya lo siguiente:


 GCC (el compilador de GNU). En caso de que vayas a usar Windows, puedes
instalarlo en Cygwin o MinGW.
 Binutils es una colección de herramientas que se usan para manipular los
archivos de objeto. Nuevamente, si vas a usar Windows, puedes instalarla en
Cygwin.
 Un buen editor de texto. Vim y Emacs suelen usarse en los entornos de UNIX.
Los usuarios de Windows pueden usar el Bloc de Notas o darle un vistazo al
Notepad++ si quieren una actualización con varias pestañas.
 Perl o Python. Uno o ambos se recomiendan para la manipulación de cuerdas.

2. Dispón tu sistema de control de versiones. Escribir un sistema operativo quiere

decir que es probable que vayas a crear cientos (¡o miles!) de líneas de código.

Esto puede volverse confuso al trabajar en las revisiones. Algunas opciones a las

que puedes darles un vistazo son CVS, Mercurial y Subversion.

3. Decídete por un gestor de arranque. En caso de que no quieras crear uno tú

mismo, puedes usar uno que ya exista, como Grand Unified Bootloader

(GRUB). Si te sientes lo suficientemente osado como para codificar un gestor de

arranque, dale un vistazo a Rolling Your Own Bootloader en OSDev.org.


4. Elige un diseño de núcleo. El núcleo es el centro de tu sistema y brinda una

interfaz entre el usuario y el hardware de computadora. Hay núcleos monolíticos

y micronúcleos. Los núcleos monolíticos implementan todos los servicios en el

núcleo, en tanto que los micronúcleos tienen un núcleo pequeño combinado con

servicios de implementación de daemons de usuario. En general, los núcleos

monolíticos son más rápidos, pero los micronúcleos tienen un mejor aislamiento

de fallos y confiabilidad.

5.

5. Empieza por algo pequeño. Empieza por cosas pequeñas, como mostrar texto e

interrupciones, antes de pasar a cosas como la gestión de memoria y hacer varias tareas

a la vez. Asimismo, puedes probar con hacer un sistema operativo simple de 16 bits en

lugar de dar un salto grande.


 No tendrás un sistema completo en dos semanas. Empieza por un sistema
operativo que arranque y luego pasa a las cosas geniales.

6. Prueba tu sistema operativo nuevo con una máquina virtual. En lugar de reiniciar tu

computadora cada vez que hagas cambios o tener que transferir los archivos de tu

computadora de desarrollo a la máquina de prueba, utiliza una aplicación de una

máquina virtual. VMWare, así como también Bochs, es una opción común que funciona

con Windows y Linux. Revisa los posibles puntos muertos y otros errores y repáralos

según sea necesario.


7. Lanza una "versión candidata". Puedes hacerlo subiendo el código probado a tu

repositorio público. De este modo, las personas podrán poner a prueba tu sistema

operativo y reportar sobre los problemas que encuentren.

8.Establece contactos con otros desarrolladores de sistemas operativos. Hay toda una

comunidad de desarrolladores de sistemas operativos que se congrega en diversos foros,

entre ellos /r/osdev en Reddit y el Software Engineering Stack Exchange. Después de

dominar el desarrollo de un sistema operativo básico, lee las publicaciones existentes

para determinar el tipo de cosas que surjan durante el proceso de desarrollo.


 i quieres que tu sistema sea viable, ten cuidado de implementar elementos de
seguridad como tu principal prioridad.
 Después de terminar con todo el desarrollo, determina si quieres lanzar el código
de manera abierta o registrada.
 No te unas a los foros de OSDev.org y empieces a hacer preguntas evidentes.
Esto tan solo dará como resultado respuestas de "Lee el manual". Debes tratar de
leer Wikipedia y los manuales de las diversas herramientas que quieras usar.
 No empieces el proyecto de un sistema operativo para empezar a aprender a
programar. En caso de que de por sí no conozcas C, C++, Pascal o algún otro
lenguaje apropiado al derecho y al revés, incluyendo la manipulación de
punteros, la manipulación de bits de bajo nivel, el cambio de bits, el lenguaje
ensamblador en línea, etc., no estarás listo para el desarrollo de sistemas
operativos.
 Un sistema operativo también puede ser fácil de usar. Ten cuidado de añadir
elementos fáciles de usar, haciendo que formen una parte fundamental de tu
diseño.
 Si quieres que un sistema operativo pueda manejar varios procesadores, tu gestor
de memoria debe tener implementados mecanismos de "cierre" para evitar que
muchos procesadores accedan a un recurso al mismo tiempo. Los "candados"
que se usen para esto requerirán de la presencia de un planificador para asegurar
que únicamente un procesador acceda a un recurso crítico en cualquier momento
y que se haga esperar a todos los demás. Sin embargo, el planificador depende
de la presencia de un gestor de memoria. Este es un caso de una dependencia de
punto muerto. No existe una manera estándar de resolver los problemas de este
tipo. En tu calidad de programador, se espera que tengas la habilidad suficiente
como para lidiar con ello a tu manera.
 En caso de que hagas algo desacertado, como escribir bytes aleatorios a puertos
aleatorios de entrada y salida, el sistema operativo dejará de funcionar y (en
teoría) puedes quemar el hardware.

2.

También podría gustarte