Chengcheng OS (CCOS) es un sistema operativo de 64 bits hobby. Lo estoy escribiendo en x86, porque me gusta la tristeza y la miseria. Este proyecto todavía estaba en desarrollo. Soy un principiante para el diseño del sistema operativo. Muchos de los conceptos de diseño que he implementado están inspirados en Windows NT, como CCLDR (OS Loader para Chengcheng OS) y Memory Manager. Y, hay muchos más cursos que necesito aprender en los meses que exigen. Entonces, no actualizaré el proyecto con frecuencia.

UEFI
CCOS usa UEFI para arrancar ccoskrnl. UEFI facilita enormemente el desarrollo del cargador del sistema operativo. El desarrollador puede llamar directamente a las interfaces proporcionadas por UEFI (use el lenguaje C en lugar del ensamblaje). Hay una cosa a tener en cuenta aquí, que las CCO todavía necesita CCLDR (otro archivo ejecutable binario) para cargar CCOSKRNL. Es un poco como "un cargador de arranque de segunda etapa". Pero de hecho, BootX64.Efi simplemente divide el espacio del núcleo y busca un espacio de memoria física adecuada para la carga de imágenes CCOSKRNL. Luego, CCLDR mapeará el espacio del núcleo en una alta dirección del espacio de direcciones virtuales y establecerá GDT (Tabla de descriptor global, una estructura significativa para la arquitectura X86).
Multiprocesadores
El soporte de múltiples procesadores es un enorme desafío para mí. No garantizo una buena implementación del sistema de múltiples procesadores. Por ahora, los CCO pueden actuar correctamente otros procesadores de aplicaciones. No como otra demostración del sistema operativo, CCOS coloca la rutina de inicialización del procesador de aplicaciones en un archivo binario aislado y lo cargue en el primer 1 MIB de memoria física y construye por separado la tabla de página para el espacio de memoria. Antes de los procesadores de solicitudes en ejecución, CCO arreglará la cita de la dirección relativa del programa binario. Tengo que admitir que este es un diseño tonto.
Apic
APIC (controlador de interrupción programable avanzado) es un componente crítico en el sistema informático moderno. Proporciona la posibilidad de un sistema de procesadores múltiples y admite la prioridad de interrupción multinivel en el nivel de hardware. Desafortunadamente, APIC es complicado. Dado que para comprender completamente las necesidades APIC son un conocimiento sólido del sistema informático, solo implemento el controlador básico de APIC.
TrueType
CCOS muestra caracteres en la pantalla a través de la representación de fuentes TrueType (la fuente predeterminada en CCOS es Adobe Source Han Sans SC VF ). No vale la pena emitir caracteres usando la representación TrueType. Para el desarrollo temprano del sistema operativo, el uso de fuentes de mapa de bits es un método más recomendado de salida de caracteres.
Probablemente lo mejor de almacenar personajes como contornos es que solo se necesita un esquema por personaje para producir todos los tamaños de ese personaje que el sistema operativo necesitará. Un solo contorno se puede escalar a una enorme gama de diferentes tamaños, algunos de los cuales se ilustran a continuación. Esto permite que el mismo carácter se muestre en monitores de diferentes resoluciones e imprima en una gran cantidad de diferentes tamaños. Escalar un esquema de carácter es una operación matemática simple, al igual que otras transformaciones, como la rotación y las reflexiones.
La estructura del trueType es compleja, solo implementé el rasterizador de fuentes sin insinuar TrueType. Sugerencia está en el corazón de TrueType. Sus inventores, conscientes de la diversidad de la opinión sobre la forma "correcta" de sugerir el tipo, decidieron que no había un paradigma único que impondría a los desarrolladores de tipo. En cambio, vincularon un rasterizador relativamente simple con un nuevo lenguaje de programación interpretado. Para la legibilidad de fuentes, sin embargo, esto es suficiente.
Este es un isso cirical aquí, que es que la preformencia de la salida de texto de CCOS es muy grupal. El desempeño gravemente ralentizará seriamente el funcionamiento de los CCO. No sé cómo optimizar la función porque el dibujo de fuente es un proceso relativamente complejo. Otro método es usar la fuente de mapa de bits para en su lugar la fuente TrueType.
Carro
CCOS ofrece dos caracteres de tipo, "char" y "wch_t" (char, 4-bytes), para almacenar todos los personajes. Independientemente del tipo de caracteres, CCOS siempre convierte WCH_T primero, luego genera una cadena amplia. De hecho, TrueType Parser en CCOS solo usa "Unicode 2.0 y en adelante semántica", qué plataforma ID = 0 e ID de codificación = 3 en CMAP (CMAP - Tabla de mapeo de índice de carácter a glifo, una torruta en trueType). Por lo tanto, es compatible exclusivamente con caracteres de plano multilingüe básico unicode (U+0000 a U+FFFF).
Gerente de memoria
Las ideas de diseño de la gestión de la memoria están inspiradas en Window NT, que contiene un esquema de auto-mapeo de la base de datos PFN, Lookside, la página de auto-mapeo, la gestión del grupo de memoria de la laminación, pero no todo.
Salida gráfica con múltiples ventanas
CCOS admite múltiples ventanas, lo que significa que puede generar texto en diferentes ventanas de la pantalla. Es UESFULE depurar múltiples procesadores a través de una ventana de texto de texto a cada procesador. Incluso si no tiene un controlador del mouse, el usuario también puede usar el teclado para seleccionar qué ventana debe ingresar los caracteres.
Corrección de errores: agregue spinlock para evitar conflictos de múltiples salidas de ventanas
Administrador de memoria dinámica con detección de fugas de memoria
Gestión del sistema del sistema
Administración de pcie
Controlador NVME
Controlador de teclado (no urgente)
Qemu con 2 gib ram o superior
Simplemente divido aproximadamente el espacio de memoria de modo que el espacio del núcleo solo use el cuarto de disponibilidad de Ram. Pero un problema debe notar que la rutina getMemoryMap () devolvió la información incorrecta del mapa de memoria al intentar asignar una RAM más alta (más de 2 GIB) para QEMU. No estoy probando otro firmware OVMF, así que supongo que tal error puede provenir de mi OVMF.
X86_64 CPU (Intel o AMD) con AVX Instruction Set
Hay ligeras diferencias en la programación de arquitectura x86_64 entre Intel 64 y AMD64. Estoy desarrollando CCO basados en la CPU AMD, pero uso los manuales de desarrollador de software Intel® 64 e IA-32 Architectures como mi manual de referencia de arquitequedad x86_64. Por ahora, sin embargo, sea cual sea el proveedor de CPU.
Para la instalación, consulte la compilación CCOSKRNL
La biblioteca de matemáticas (reflexibs/libm.a) fue proporcionada por @estrella
Sin licencia.
Correo electrónico: [email protected]
OS Chengcheng: https://github.com/ccoskrnl/ccoskrnl
Intel® 64 e IA-32 Architectures Software Developer's Manuals
Manual del programador de arquitectura AMD64 Volumen 2: Programación del sistema
El lenguaje de programación C
Osdev wiki
Especificación ACPI
Especificación de UEFI