sirve - tipos de datos en c++
¿Qué tipo de C++ tendría que aprender a hacer mi propio núcleo del sistema operativo? (15)
Consulte las preguntas frecuentes de la lista de correo de Linux kernel para preguntas comunes (que se aplicarían a cualquier desarrollo del kernel), y no se desanime por este punto.
¿Qué tipo de C ++ (Volver a programar) tendría que aprender a hacer mi propio núcleo del sistema operativo? (Sé que también tendría que aprender a ensamblar). EDITAR *** Al igual que las interrupciones, controlador de teclado, obteniendo entrada. ***
De acuerdo, todos hicieron un sistema operativo básico realmente * 3 y me gustaría compartirlo.
Aqui tienes. http://bcsy.hostzi.com/BytOS.zip
Compilar en Linux
No recomendaría usar C ++ al hacer un kernel monolítico, punto. Sin embargo, si está contemplando un diseño de microkernel, podría escribir los servidores (redes, consolas, fs, vfs, etc.) en C ++, mientras mantiene el kernel mismo ajustado con C / inline asm.
Por otra parte, si solo va por x86, no importa tanto.
¿Cuáles son los objetivos de diseño de su sistema operativo?
Recomendaría C directamente para el desarrollo de Kernel. Con el desarrollo de sistema operativo, realmente desea saber qué está sucediendo "oculto". Siento que C ++ se esconde demasiado para el desarrollo de bajo nivel.
Buenos recursos:
Solo hay un tipo, que debería ayudar a reducirlo. Comience por estudiar los manuales de arquitectura de CPU, los de Intel están disponibles de forma gratuita . Obtener la documentación para el BIOS va a ser la parte difícil.
Tengo un amigo que escribió un núcleo del sistema operativo en C ++:
http://sourceforge.net/projects/ekp/
Entonces definitivamente es posible. (Algunos de los comentarios anteriores dicen que es imposible. Incorrecto).
Puede que incluso quiera robar su código de arranque y compilación, para que pueda sumergirse y comenzar a implementar las "cosas divertidas".
Teniendo en cuenta sus elecciones de hoy, no hay absolutamente ninguna razón para "hacer" un sistema operativo. Aprende un idioma realmente bien y ponte realmente cómodo con Windows o con una variante de Linux. C o C ++ es genial para aprender.
Edite para aclarar : mi punto es que es locura tanto irreal como límite intentar aprender un idioma por primera vez haciendo un sistema operativo. Como mínimo, es muy necesario tener un buen historial en C, de lo contrario, comience a hacer aplicaciones y aproveche la potencia de los sistemas operativos existentes antes de intentar hacer la suya propia.
Todas. Esta no es una tarea trivial, necesitas aprender la mayoría de las facetas del lenguaje, recomendaría buscar la programación del kernel. Desde su aspecto, buscaría teorías lógicas y paradigmas para lenguajes de programación antes de incrustarme en la sintaxis. Hay capas de hardware y tanto que necesitará aprender mucho más que de una respuesta que va a obtener en este sitio o haciendo una búsqueda en Google.
¡Buena suerte!
echa un vistazo a nanoos , ¡es un proyecto de sistema operativo en C ++!
En respuesta a tu pregunta:
Un sistema operativo (comúnmente abreviado como OS o O / S) es una interfaz entre hardware y aplicaciones; es responsable de la gestión y coordinación de las actividades y el uso compartido de los recursos limitados de la computadora. El sistema operativo actúa como un host para las aplicaciones que se ejecutan en la máquina. Por lo tanto, debe aprender los bits en C ++ que permiten que su programa (OS) interactúe con el hardware en el que se ejecutará.
Luego debe ir más allá de interactuar con el hardware y proporcionar uso al usuario.
Para eso, regrese una vez más y vea qué se intenta en los nanoos como punto de partida (para las necesidades de aprendizaje en C ++ de lo que implicaría construir un sistema operativo en C ++)
Características encontradas en nanoos:
Tiempo de ejecución C ++
Gerente de memoria en modo protegido de 32 bits
Detección de CPU, detección de memoria y detección de disco duro IDE
Lectura del disco duro IDE
Básicamente, para escribir un sistema operativo , simplemente mira lo que un sistema operativo debe hacer (o lo que es)
Si tuviera que escribir un sistema operativo, incluso antes de considerar el idioma, trataría de entender qué es un SO, este es un gran libro : Diseño e Implementación de Sistemas Operativos.
texto alternativo http://ecx.images-amazon.com/images/I/3125C47MR4L._SL500_AA180_.jpg
Tener una lectura Buena suerte
El único sistema operativo de cualquier tamaño significativo que conozco ha sido programado en C ++ hasta "bare metal" es el sistema operativo AS / 400 OS / 400 (después de v3r6).
No hay mucho que le impida hacer cualquier sistema operativo en C ++, especialmente cuando recuerda que el C vainilla es C ++ "casi" válido de todos modos. Lo que se vuelve interesante es hacer new
/ delete
en los niveles más bajos, porque necesita garantizar que no haya fugas y tal. Esto lleva a una necesidad de volver a implementar las new
funciones.
Ayudé a hacer v3r6, pero han pasado unos 13 años y no recuerdo los detalles peludos. No conozco ninguna publicación, pero si está realmente interesado, intente escribir a Marshall Cline en http://www.parashift.com .
(Augh. "Borrar" el vicio "gratis").
Por una serie de razones técnicas, Linux no está programado en ningún idioma además de C. Por diversas razones políticas, algunos otros sistemas están programados en C ++.
Si desea obtener información sobre la programación de núcleos, el sistema operativo / microkernel de Minix está expresamente diseñado para aprender a diseñar el sistema operativo. Es pequeño y mínimo. También está programado en C.
Sugiero echar un vistazo a los nachos (no es otro sistema operativo completamente heurístico). Es el sistema operativo de enseñanza que utilizamos para mi curso de sistemas operativos en la universidad.
Te recomiendo que mires la wiki de OSDev . Es una fantástica fuente de información con respecto a la programación de un sistema operativo en muchos idiomas, incluido c ++.
Específicamente, vea esta sección que le informa acerca de todo lo necesario para comenzar con un kernel de c ++ usando gcc.
Por último, echa un vistazo a los foros de OSDev , hay muchos usuarios que van desde principiantes hasta altamente experimentados. Por lo general, están más que felices de ayudar a las personas (siempre y cuando demuestren que lo intentaron antes de preguntar :-P)
Ver L4Ka :: Pistachio, Haiku kernel o Symbian''s EKA2 podría ser una buena idea, si le interesan los ejemplos de kernels "reales" basados en C ++ que se han utilizado como base de sistemas operativos complejos y cargados de características. .
He encontrado que este último está bien estructurado y consiste en un código muy conciso y legible, pero otros pueden estar en desacuerdo. Sin embargo, es difícil de obtener y construir en este momento (ya que los sitios web de la Fundación Symbian están actualmente fuera de línea), aunque una copia se refleja en Google Code.
Aparte de eso, he descubierto que L4Ka :: Pistachio es uno de los núcleos más fáciles de construir aún, pero la personalización e implementación de componentes de mayor nivel es otra manera, aunque Genode parecía una ruta prometedora para construir rápidamente un nivel superior. componentes cuando lo probé, hace años.