Un sistema operativo simple que puede ejecutarse en procesadores de múltiples núcleos X86-64.
Esta es mi tarea realizada en el curso del experimento del sistema operativo. Dado que la clase solo habla sobre el diseño del sistema operativo en una CPU de un solo núcleo de 32 bits, y estoy más interesado en los sistemas operativos que se ejecutan en procesadores de múltiples núcleos, elegí escribir un sistema operativo en un procesador múltiple simétrico X64.
Desarrollado usando Ubuntu 16.04. Dependencias de instalación:
apt install make gcc gdb qemu
correr
make qemu

Proporciona una API de proceso/hilo para aplicaciones, procesos de soporte/creación de hilos, espera, cancelación, sueño y otras operaciones.
Implementa la tecnología de copia de memoria de memoria durante la creación de procesos.
Evite las condiciones de carrera cuando las CPU múltiples ejecutan instrucciones a través de mecanismos mutex síncronos apropiados.
Use LAPIC/IOAPIC para realizar el control de inicio e interrupción de las CPU de múltiples núcleos.
Almacene las variables relacionadas con una CPU específica a través de variables TREST_LOCAL.
| número de serie | nombre |
|---|---|
| 0 | tenedor |
| 1 | salida |
| 2 | Thread_create |
| 3 | Thread_exit |
| 4 | Wait_process |
| 5 | Wait_thread |
| 6 | get_pid |
| 7 | get_tid |
| 8 | kill_process |
| 9 | kill_thread |
| 10 | dormir |
| 11 | abierto |
| 12 | Cerca |
| 13 | leer |
| 14 | Escribir |
| 15 | desconectar |
| 16 | readdir |
| 17 | estadística |
| 18 | mkdir |
| 19 | rmdir |
| 20 | buque |
| veintiuno | ejecución |
Implementar mecanismo de señal.
Implementar soporte para un sistema de archivos de uso común.
Pila de protocolo TCP/IP.