diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9359e2b..f7d10d9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,3 +25,5 @@ jobs: fi echo "✅ Build successful!" + - name: Boot smoke test + run: make smoke diff --git a/LICENSE b/LICENSE index a337e27..4e515ce 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 uROS Team (Thomas, Simón, María Paula) +Copyright (c) 2025 Thomas Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -19,4 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/Makefile b/Makefile index 916c6fb..7daa2e0 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ OBJ_S = $(patsubst %.S,build/%.o,$(SRC_S)) OBJ = $(OBJ_C) $(OBJ_S) # Targets -.PHONY: all run clean dtb +.PHONY: all run smoke clean dtb all: build/kernel.elf @@ -41,6 +41,9 @@ build/%.o: %.S run: build/kernel.elf @bash scripts/run-qemu.sh +smoke: build/kernel.elf + @bash scripts/smoke.sh + clean: rm -rf build/ @@ -48,4 +51,3 @@ dtb: qemu-system-riscv64 -machine virt,dumpdtb=virt.dtb -nographic -bios default dtc -I dtb -O dts virt.dtb -o virt.dts @echo "DTB dumped to virt.dtb and virt.dts" - diff --git a/OS DEV_ OPEN C906 RISC-V.md b/OS DEV_ OPEN C906 RISC-V.md index cc917b3..90ca1b3 100644 --- a/OS DEV_ OPEN C906 RISC-V.md +++ b/OS DEV_ OPEN C906 RISC-V.md @@ -18,17 +18,17 @@ Matemáticas Aplicadas y Ciencias de la Computación ## 1. INTRODUCTION -The RISC-V architecture offers an open-source alternative to proprietary Instruction Set Architectures (ISAs) like x86 or ARM. However, the ecosystem for RISC-V operating systems is still maturing. This gap motivated the development of **Helios**, a minimal operating system designed for educational purposes on the RISC-V 64-bit environment. +The RISC-V architecture offers an open-source alternative to proprietary Instruction Set Architectures (ISAs) like x86 or ARM. However, the ecosystem for RISC-V operating systems is still maturing. This gap motivated the development of **HeliOS**, a minimal operating system designed for educational purposes on the RISC-V 64-bit environment. The primary goal of this project is to demonstrate fundamental operating system concepts through practical implementation. Rather than aiming for production-level features, we focused on creating a clean, understandable codebase that illustrates core OS mechanisms including process scheduling, memory management, hardware abstraction, and system calls. -**Helios** serves as both a learning tool and a research platform. By implementing real OS components from the ground up, we gained deeper insights into the practical considerations of system software development that theoretical study alone cannot provide. +**HeliOS** serves as both a learning tool and a research platform. By implementing real OS components from the ground up, we gained deeper insights into the practical considerations of system software development that theoretical study alone cannot provide. --- ## 2. PROJECT VISION & ARCHITECTURE -**Helios** is built around a microkernel-inspired architecture that keeps the core system lean while isolating hardware-specific components. This design facilitates reasoning about the system and allows for future expansion. The kernel is organized into distinct layers: +**HeliOS** is built around a microkernel-inspired architecture that keeps the core system lean while isolating hardware-specific components. This design facilitates reasoning about the system and allows for future expansion. The kernel is organized into distinct layers: | Layer | Core Function | Components | | :----------------------------------- | :----------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -197,7 +197,7 @@ _Figure 3: Real-time memory usage statistics showing heap allocation._ We implemented a complete context switch that preserves all 31 RISC-V general-purpose registers and critical CSRs (sstatus, sepc). This enables true preemptive multitasking. **[INSERT IMAGE HERE: Screenshot of the boot sequence with the ASCII Art Banner]** -_Figure 4: Helios OS Boot Sequence._ +_Figure 4: HeliOS OS Boot Sequence._ ### 4.2 Task Management System @@ -208,7 +208,7 @@ _Figure 5: Process Control Block structure._ ### 4.3 Interactive Shell -Unlike many educational OS projects that are static, **Helios** features a fully interactive shell with over 10 commands. +Unlike many educational OS projects that are static, **HeliOS** features a fully interactive shell with over 10 commands. - **Commands:** `help`, `ps` (process list), `kill` (terminate process), `sched` (switch scheduler), `bench` (benchmark), `meminfo` (memory stats). @@ -219,7 +219,7 @@ _Figure 6: Interactive Shell Interface._ ## 5. CONCLUSION -The **Helios** project successfully demonstrates the implementation of a functional operating system kernel for RISC-V. We have achieved: +The **HeliOS** project successfully demonstrates the implementation of a functional operating system kernel for RISC-V. We have achieved: 1. **Stability:** A robust kernel that handles interrupts and context switches without crashing. 2. **Functionality:** A rich set of features including multitasking, synchronization, and dynamic memory. diff --git a/PROJECT_SUMMARY.md b/PROJECT_SUMMARY.md index df779a7..5731b66 100644 --- a/PROJECT_SUMMARY.md +++ b/PROJECT_SUMMARY.md @@ -1,4 +1,4 @@ -# uROS - RISC-V Mini-OS Implementation Summary +# HeliOS - RISC-V Mini-OS Implementation Summary ## Project Overview @@ -10,7 +10,7 @@ All components have been implemented according to the specification. ## Components Delivered -### 1. Core Infrastructure (`include/uros.h`) +### 1. Core Infrastructure (`include/helios.h`) - Complete type definitions (u8, u16, u32, u64, size_t) - Context structure with all 31 GP registers + sstatus + sepc (272 bytes total) - PCB structure with scheduling metadata (burst estimation, arrival/finish times) @@ -173,14 +173,14 @@ Offset Register ## Build Status ✅ Compiles without errors -✅ Links successfully +✅ Links successfully ✅ Generates 57KB ELF executable ✅ All required files created ## Files Created ### Source Files (14 total) -- `include/uros.h` - Main header (180 lines) +- `include/helios.h` - Main header (180 lines) - `linker.ld` - Linker script - `boot/start.S` - Boot assembly + context switch (105 lines) - `kernel/kmain.c` - Kernel entry @@ -200,26 +200,26 @@ Offset Register ## Definition of Done - Checklist -✅ `make` compiles successfully -✅ `make run` boots to banner -✅ Prompt "uROS> " implemented -✅ `help` command lists all commands -✅ `run cpu` and `run io` create tasks -✅ `ps` shows task information -✅ `sched rr` and `sched sjf` switch modes -✅ `bench` compares RR vs SJF with metrics -✅ `uptime` shows system time -✅ `meminfo` shows memory usage -✅ `kill ` terminates tasks -✅ Timer configured for 100 Hz -✅ Context switch preserves all registers -✅ SBI timer interface implemented -✅ UART TX/RX functional -✅ Round-Robin with 5-tick quantum -✅ SJF with exponential averaging -✅ Benchmark with 6 tasks and metrics -✅ README with full documentation -✅ All scripts executable +✅ `make` compiles successfully +✅ `make run` boots to banner +✅ Prompt "HeliOS> " implemented +✅ `help` command lists all commands +✅ `run cpu` and `run io` create tasks +✅ `ps` shows task information +✅ `sched rr` and `sched sjf` switch modes +✅ `bench` compares RR vs SJF with metrics +✅ `uptime` shows system time +✅ `meminfo` shows memory usage +✅ `kill ` terminates tasks +✅ Timer configured for 100 Hz +✅ Context switch preserves all registers +✅ SBI timer interface implemented +✅ UART TX/RX functional +✅ Round-Robin with 5-tick quantum +✅ SJF with exponential averaging +✅ Benchmark with 6 tasks and metrics +✅ README with full documentation +✅ All scripts executable ## Next Steps for Testing @@ -249,7 +249,7 @@ Offset Register ## Conclusion -The uROS mini-OS is a complete, compilable implementation meeting all specified requirements. It demonstrates core OS concepts including: +The HeliOS mini-OS is a complete, compilable implementation meeting all specified requirements. It demonstrates core OS concepts including: - Interrupt handling - Context switching - Process scheduling (RR & SJF) @@ -260,8 +260,8 @@ The uROS mini-OS is a complete, compilable implementation meeting all specified Ready for demonstration and further development. --- -**Generated**: October 23, 2025 -**Platform**: RISC-V 64 (rv64gc) / QEMU virt -**Build**: Successful +**Generated**: October 23, 2025 +**Platform**: RISC-V 64 (rv64gc) / QEMU virt +**Build**: Successful **Status**: COMPLETE ✅ diff --git a/README.md b/README.md index bfeaffc..28f04ce 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ -# uROS - Mini OS en RISC-V 64 +# HeliOS - Mini OS en RISC-V 64 > Un sistema operativo educativo minimalista para RISC-V 64 corriendo en QEMU +> +> El nombre combina **Helium Browser** + **OS**: **HeliOS**. [![RISC-V](https://img.shields.io/badge/RISC--V-64-blue)](https://riscv.org/) [![QEMU](https://img.shields.io/badge/QEMU-virt-orange)](https://www.qemu.org/) @@ -12,10 +14,12 @@ - ✅ **QEMU virt** con OpenSBI - ✅ **Shell interactiva** con 10+ comandos - ✅ **Sistema de tareas** con context switching -- ✅ **Scheduler Round-Robin** cooperativo +- ✅ **Scheduler Round-Robin** cooperativo o preemptivo +- ✅ **Scheduler SJF** con estimación de ráfagas - ✅ **Driver UART** NS16550A - ✅ **Printf** implementado -- ✅ **Gestión de memoria** con bump allocator +- ✅ **Gestión de memoria** con free-list allocator +- ✅ **Smoke test en QEMU** para CI ## 🚀 Inicio Rápido @@ -38,13 +42,16 @@ make clean && make -j # 2. Ejecutar make run -# 3. En el prompt uROS>, prueba: +# 3. En el prompt HeliOS>, prueba: help ps run cpu run io ps +sched preempt on +uptime meminfo +intstats ``` **Para salir:** `Ctrl+C` @@ -59,17 +66,22 @@ Ejecuta automáticamente: `help` → `ps` → `run cpu` → `run io` → `ps` ## 📋 Comandos Disponibles -| Comando | Descripción | -| ------------ | -------------------------- | -| `help` | Lista todos los comandos | -| `ps` | Muestra tareas activas | -| `run cpu` | Crea tarea CPU-bound | -| `run io` | Crea tarea I/O-bound | -| `kill ` | Termina una tarea | -| `sched rr` | Scheduler Round-Robin | -| `bench` | Benchmark (requiere timer) | -| `uptime` | Tiempo de ejecución | -| `meminfo` | Uso de memoria | +| Comando | Descripción | +| ----------------------- | ----------------------------------- | +| `help` | Lista todos los comandos | +| `ps` | Muestra tareas activas | +| `run cpu` | Crea tarea CPU-bound | +| `run io` | Crea tarea I/O-bound | +| `kill ` | Termina una tarea | +| `sched rr` | Scheduler Round-Robin | +| `sched sjf` | Scheduler Shortest Job First | +| `sched preempt on|off` | Activa/desactiva preemption por timer | +| `sleep ` | Espera N ticks | +| `pcdemo` | Demo productor-consumidor | +| `bench` | Benchmark de scheduling | +| `uptime` | Tiempo de ejecución | +| `meminfo` | Uso de memoria | +| `intstats` | Estado de timer/interrupciones | ## 📁 Estructura @@ -86,7 +98,7 @@ mini-os/ │ ├── uart.c # NS16550A │ └── timer.c # Timer SBI ├── lib/printf.c # Printf -├── include/uros.h # Headers +├── include/helios.h # Headers └── scripts/ # Scripts útiles ``` @@ -97,16 +109,16 @@ make # Compila el proyecto make run # Ejecuta en QEMU make run-gdb # Ejecuta con debugger make gdb # Conecta GDB +make smoke # Compila y ejecuta smoke test en QEMU make clean # Limpia build/ make dtb # Extrae device tree ``` ## 📖 Documentación -- **[GUIA_COMPLETA.md](GUIA_COMPLETA.md)** - Guía detallada con ejemplos - **[README_RAPIDO.md](README_RAPIDO.md)** - Referencia rápida -- **[VERIFICATION.md](VERIFICATION.md)** - Verificación técnica - **[docs/README.md](docs/README.md)** - Documentación técnica +- **[docs/visualization.html](docs/visualization.html)** - Visualización web ## 🎓 Ejemplo de Uso @@ -116,28 +128,28 @@ $ make run OpenSBI v1.5.1 [Boot info...] -uROS (rv64gc, QEMU virt) - console ready +HeliOS (rv64gc, QEMU virt) - console ready ticks=0 Initializing task system... Initializing scheduler... Creating idle task... System initialized, starting shell... -uROS> help +HeliOS> help Available commands: help - Show this help ps - List tasks run cpu - Create CPU-bound task ... -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 0 1 0 -uROS> run cpu +HeliOS> run cpu Created CPU task with PID 1 -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 0 1 0 1 READY 0 20 0 @@ -162,9 +174,9 @@ make gdb - **Boot**: OpenSBI (-bios default) - **Mode**: S-mode bare metal - **UART**: 0x10000000 (NS16550A) -- **Scheduler**: Round-Robin cooperativo (sin timer por estabilidad) -- **Memory**: Bump allocator, 256KB heap -- **Tasks**: Max 32, 4KB stack cada una +- **Scheduler**: Round-Robin cooperativo/preemptivo y SJF +- **Memory**: Free-list allocator con coalescing, 256KB heap +- **Tasks**: Max 32, 8KB stack cada una ## ✅ Estado del Proyecto @@ -178,6 +190,7 @@ make gdb - ✅ UART input/output - ✅ Gestión de memoria - ✅ Visualización Web (ver `docs/visualization.html`) +- ✅ Smoke test automatizado en QEMU **Limitaciones actuales (por diseño):** @@ -185,11 +198,9 @@ make gdb - Sin sistema de archivos (todo en RAM) - Modo Supervisor único (sin separación User/Kernel estricta) -## 🤝 Colaboradores +## 👤 Autor - **Thomas** -- **Simón** -- **María Paula** ## 📝 Licencia @@ -199,4 +210,4 @@ MIT License - ver archivo LICENSE **🚀 ¡Listo para demostración y evaluación!** -Para más detalles, consulta [GUIA_COMPLETA.md](GUIA_COMPLETA.md) +Para más detalles, consulta [docs/README.md](docs/README.md) diff --git a/README_RAPIDO.md b/README_RAPIDO.md index 0357046..2c0869e 100644 --- a/README_RAPIDO.md +++ b/README_RAPIDO.md @@ -1,11 +1,15 @@ -# uROS - Guía Rápida 🚀 +# HeliOS - Guía Rápida 🚀 -## ¿Qué es uROS? +## ¿Qué es HeliOS? -uROS es un mini sistema operativo para RISC-V 64 que corre en QEMU con: +HeliOS combina Helium Browser + OS: un mini sistema operativo para RISC-V 64 que corre en QEMU con: - ✅ Shell interactiva -- ✅ Scheduler Round-Robin +- ✅ Scheduler Round-Robin cooperativo/preemptivo +- ✅ Scheduler SJF - ✅ Sistema de tareas/threads +- ✅ Timer, traps e interrupciones +- ✅ Semáforos, mutexes y demo productor-consumidor +- ✅ Free-list allocator - ✅ Comandos de gestión ## Inicio Rápido (3 pasos) @@ -21,7 +25,7 @@ make run ``` ### 3️⃣ Probar Comandos -En el prompt `uROS>`, escribe: +En el prompt `HeliOS>`, escribe: ``` help ps @@ -29,7 +33,10 @@ run cpu run io ps sched rr +sched preempt on +uptime meminfo +intstats ``` **Para salir**: Presiona `Ctrl+C` @@ -50,20 +57,21 @@ meminfo | `run io` | Crea tarea I/O-bound | | `kill ` | Termina una tarea | | `sched rr` | Cambia a Round-Robin | -| `sched sjf` | Cambia a SJF (requiere timer) | -| `bench` | Ejecuta benchmark (requiere timer) | +| `sched sjf` | Cambia a SJF | +| `sched preempt on|off` | Activa/desactiva preemption por timer | +| `sleep ` | Espera N ticks | +| `pcdemo` | Demo productor-consumidor | +| `bench` | Ejecuta benchmark | | `uptime` | Tiempo de ejecución | | `meminfo` | Uso de memoria | +| `intstats` | Estado de interrupciones/timer | ## Verificación Para verificar que todo funciona: ```bash -# Test rápido -echo "help" | timeout 5 ./scripts/run-qemu.sh - -# Test completo -echo -e "help\nps\nrun cpu\nrun io\nps\nmeminfo" | timeout 10 ./scripts/run-qemu.sh +# Smoke test automatizado +make smoke ``` ## Estado del Proyecto @@ -75,14 +83,17 @@ echo -e "help\nps\nrun cpu\nrun io\nps\nmeminfo" | timeout 10 ./scripts/run-qemu - Printf - Shell interactiva - Tareas/threads -- Scheduler Round-Robin cooperativo -- Todos los comandos básicos +- Scheduler Round-Robin cooperativo/preemptivo +- Scheduler SJF +- Timer SBI a 100 Hz +- Semáforos y mutexes +- Free-list allocator +- Todos los comandos básicos y demos **Limitaciones actuales:** -- Timer deshabilitado por estabilidad -- `uptime` reporta 0 -- `bench` no puede medir tiempos sin timer -- `sched sjf` no funcional sin timer +- Sin MMU/paging +- Sin sistema de archivos +- Todo corre en S-mode/kernel mode ## Archivos Importantes @@ -111,4 +122,3 @@ Ver documentación completa en: --- **¡Listo para usar!** 🎉 - diff --git a/boot/start.S b/boot/start.S index ed161ce..aa77891 100644 --- a/boot/start.S +++ b/boot/start.S @@ -17,7 +17,7 @@ halt: # Context switch: ctx_switch(context_t *from, context_t *to) # a0 = from, a1 = to -# Offsets match context_t in uros.h: +# Offsets match context_t in helios.h: # x1(ra)=0, x2(sp)=8, x3(gp)=16, x4(tp)=24, x5-x31, sstatus=248, sepc=256 .align 4 ctx_switch: diff --git a/docs/README.md b/docs/README.md index b1a4986..d7721e2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,4 @@ -# uROS - RISC-V Mini Operating System +# HeliOS - RISC-V Mini Operating System A minimal operating system for RISC-V 64-bit architecture running on QEMU virt platform. @@ -51,13 +51,16 @@ make run # Clean build artifacts make clean +# Boot and exercise the shell in QEMU +make smoke + # Dump device tree blob (for debugging) make dtb ``` ## Shell Commands -Once booted, the system presents an interactive shell prompt: `uROS>` +Once booted, the system presents an interactive shell prompt: `HeliOS>` ### Available Commands @@ -68,9 +71,13 @@ Once booted, the system presents an interactive shell prompt: `uROS>` - **kill \** - Terminate task with given PID - **sched rr** - Switch to Round-Robin scheduler - **sched sjf** - Switch to Shortest Job First scheduler +- **sched preempt on|off** - Enable or disable timer-driven RR preemption +- **sleep \** - Sleep for a number of timer ticks +- **pcdemo** - Run the producer-consumer synchronization demo - **bench** - Run scheduling benchmark and compare RR vs SJF - **uptime** - Display system uptime in seconds and ticks - **meminfo** - Show kernel heap memory usage +- **intstats** - Show timer/interrupt CSR state ## Scheduling Algorithms @@ -109,7 +116,7 @@ The `bench` command runs two rounds of the same task set: ## Synchronization -uROS provides basic synchronization primitives for coordinating concurrent tasks: +HeliOS provides basic synchronization primitives for coordinating concurrent tasks: ### Semaphores @@ -167,7 +174,7 @@ Consumer: **Running the demo:** ```bash -uROS> pcdemo +HeliOS> pcdemo === Producer-Consumer Demo === Buffer size: 16 items Creating producer and consumer tasks... @@ -194,7 +201,7 @@ Consumer: finished consuming 10 items ## Memory Management -uROS uses a **free-list allocator** with first-fit allocation and coalescing for efficient memory reuse. +HeliOS uses a **free-list allocator** with first-fit allocation and coalescing for efficient memory reuse. ### Algorithm: First-Fit with Coalescing @@ -223,7 +230,7 @@ struct mem_header { **Memory Stats:** ```bash -uROS> meminfo +HeliOS> meminfo === Memory Usage === Heap total: 262144 bytes Heap used: 24576 bytes (9%) @@ -267,23 +274,23 @@ kfree(buffer); ```bash # Before creating tasks -uROS> meminfo +HeliOS> meminfo Heap used: 8192 bytes # After pcdemo -uROS> pcdemo +HeliOS> pcdemo ... -uROS> meminfo +HeliOS> meminfo Heap used: 24576 bytes # Two 4KB stacks + buffers # After tasks finish (become ZOMBIE) -uROS> meminfo +HeliOS> meminfo Heap used: 24576 bytes # Stacks still allocated # After killing tasks (with task_reap) -uROS> kill 1 -uROS> kill 2 -uROS> meminfo +HeliOS> kill 1 +HeliOS> kill 2 +HeliOS> meminfo Heap used: 8192 bytes # Stacks freed! ``` @@ -297,9 +304,9 @@ Heap used: 8192 bytes # Stacks freed! ## Example Session ``` -uROS (rv64gc, QEMU virt) - console ready +HeliOS (rv64gc, QEMU virt) - console ready ticks=0 -uROS> help +HeliOS> help Available commands: help - Show this help ps - List tasks @@ -312,21 +319,21 @@ Available commands: uptime - Show system uptime meminfo - Show memory usage -uROS> sched rr +HeliOS> sched rr Scheduler: Round-Robin (quantum=5 ticks) -uROS> run cpu +HeliOS> run cpu Created CPU task with PID 0 -uROS> run io +HeliOS> run io Created I/O task with PID 1 -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 RUNNING 23 20 10 1 READY 8 15 15 -uROS> bench +HeliOS> bench Running benchmark... Round 1: Round-Robin... RR done in 142 ticks @@ -339,7 +346,7 @@ Wait (avg): 45 28 ticks Turnaround (avg): 68 48 ticks Throughput: 4.22 4.80 tasks/sec -uROS> uptime +HeliOS> uptime Uptime: 32.45 seconds (3245 ticks) ``` @@ -350,7 +357,7 @@ Uptime: 32.45 seconds (3245 ticks) - **Base Address**: 0x80200000 - **Kernel Stack**: 16 KB - **Task Stacks**: 8 KB each (up to 32 tasks) -- **Heap**: 256 KB (bump allocator) +- **Heap**: 256 KB (free-list allocator with coalescing) ### Context Switching @@ -372,8 +379,8 @@ Tasks transition through these states: The codebase is organized as follows: ``` -uROS/ -├── include/uros.h # Main header with types and prototypes +HeliOS/ +├── include/helios.h # Main header with types and prototypes ├── linker.ld # Linker script ├── boot/start.S # Boot assembly and context switch ├── kernel/ @@ -396,7 +403,6 @@ uROS/ - No MMU/paging (bare metal S-mode) - No user mode (all tasks run in kernel mode) -- Simple bump allocator (no free/realloc) - No file system or persistent storage - Single CPU core only @@ -404,17 +410,20 @@ uROS/ - Add user mode with syscalls - Implement basic paging/virtual memory -- Add process synchronization primitives (semaphores, mutexes) - Multi-level feedback queue scheduling - Real I/O device drivers (block devices, network) +- Add realloc and allocator stress tests + +## Verification + +CI builds the kernel and runs `scripts/smoke.sh`, which boots QEMU headless, +sends a small shell command sequence, and checks for expected output. This keeps +the repository demonstrable instead of only compile-clean. ## License Educational project for OS course. -## Authors - -- Simón - Núcleo (Bootstrap & traps) -- María Paula - Drivers/Sistema (UART, shell, build) -- Thomas - Planificación (RR/SJF + métricas) +## Author +- Thomas diff --git a/docs/archive/CAMBIOS_FINALES.md b/docs/archive/CAMBIOS_FINALES.md index 6e80895..c9967bc 100644 --- a/docs/archive/CAMBIOS_FINALES.md +++ b/docs/archive/CAMBIOS_FINALES.md @@ -1,4 +1,4 @@ -# 📋 CAMBIOS FINALES APLICADOS - uROS +# 📋 CAMBIOS FINALES APLICADOS - HeliOS ## ✅ RESUMEN EJECUTIVO @@ -16,7 +16,7 @@ Se han aplicado **correcciones críticas** para solucionar el problema de entrad void kmain(void) { // 1. UART first uart_init(); - kprintf("uROS (rv64gc, QEMU virt) - console ready\n"); + kprintf("HeliOS (rv64gc, QEMU virt) - console ready\n"); kprintf("ticks=0\n"); // SELFTEST temporal (quitar después de verificar) @@ -209,25 +209,25 @@ Initializing scheduler... Initializing trap handling... Initializing timer... System initialized, starting shell... -uROS> +HeliOS> ``` ✅ **Boot completo** ### Test 3: uptime Funciona ``` -uROS> uptime +HeliOS> uptime Uptime: 0.15 seconds (15 ticks) [esperar 3 seg] -uROS> uptime +HeliOS> uptime Uptime: 3.42 seconds (342 ticks) ``` ✅ **Timer funcionando** - Ticks aumentan ### Test 4: intstats Muestra Estado ``` -uROS> intstats +HeliOS> intstats ticks=425 timer_irqs=425 deadline=0x... now=0x... sstatus=0x22 sie=0x20 sip=0x0 preempt=ON @@ -236,7 +236,7 @@ preempt=ON ### Test 5: pcdemo Sincronización ``` -uROS> pcdemo +HeliOS> pcdemo === Producer-Consumer Demo === Producer: produced item 1 at index 0 Consumer: consumed item 1 from index 0 @@ -246,7 +246,7 @@ Consumer: consumed item 1 from index 0 ### Test 6: ps Muestra Tareas ``` -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 950 1 0 1 ZOMBIE 125 20 600 @@ -307,7 +307,7 @@ make clean && make -j **Cuando veas:** `UART selftest: type one char:` → Presiona cualquier tecla -**Cuando veas:** `uROS>` +**Cuando veas:** `HeliOS>` → Escribe: `uptime` → Espera 3 segundos → Escribe: `uptime` (debe ser mayor) diff --git a/docs/archive/CAMBIOS_PREEMPTION.md b/docs/archive/CAMBIOS_PREEMPTION.md index a2f0e6f..ebdea82 100644 --- a/docs/archive/CAMBIOS_PREEMPTION.md +++ b/docs/archive/CAMBIOS_PREEMPTION.md @@ -20,7 +20,7 @@ Se ha implementado un sistema de scheduling configurable que permite cambiar ent ## 🔧 Archivos Modificados -### 2. `include/uros.h` +### 2. `include/helios.h` **Cambios:** - Incluye `config.h` - Agrega prototipos: @@ -169,7 +169,7 @@ static void cmd_sleep(const char *arg) { ```c void kmain(void) { uart_init(); - kprintf("uROS (rv64gc, QEMU virt) - console ready\n"); + kprintf("HeliOS (rv64gc, QEMU virt) - console ready\n"); task_init(); // 1. Sistema de tareas sched_init(); // 2. Scheduler @@ -220,36 +220,36 @@ make run #### Ver tiempo de ejecución (ahora funciona con timer!) ``` -uROS> uptime +HeliOS> uptime Uptime: 5.23 seconds (523 ticks) ``` #### Cambiar entre modos ``` -uROS> sched preempt off +HeliOS> sched preempt off Preemption: DISABLED (cooperative scheduling) -uROS> sched preempt on +HeliOS> sched preempt on Preemption: ENABLED (timer-driven context switches) ``` #### Dormir N ticks ``` -uROS> sleep 50 +HeliOS> sleep 50 Sleeping for 50 ticks... Done sleeping ``` #### Ver tareas (con preemption activa) ``` -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 125 1 0 -uROS> run cpu +HeliOS> run cpu Created CPU task with PID 1 -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 150 1 0 1 RUNNING 25 20 130 @@ -261,19 +261,19 @@ PID STATE TICKS BURST_EST ARRIVAL ### 1. Timer Funciona ``` -uROS> uptime +HeliOS> uptime Uptime: 0.00 seconds (0 ticks) [esperar ~5 segundos] -uROS> uptime +HeliOS> uptime Uptime: 5.12 seconds (512 ticks) ``` ✅ Los ticks avanzan automáticamente ### 2. Preemption ON ``` -uROS> sched preempt on +HeliOS> sched preempt on Preemption: ENABLED -uROS> run cpu +HeliOS> run cpu Created CPU task with PID 1 [ver que ps muestra cambios de TICKS automáticamente] ``` @@ -281,9 +281,9 @@ Created CPU task with PID 1 ### 3. Preemption OFF ``` -uROS> sched preempt off +HeliOS> sched preempt off Preemption: DISABLED -uROS> run cpu +HeliOS> run cpu Created CPU task with PID 2 [tareas solo cambian en yield manual] ``` @@ -291,7 +291,7 @@ Created CPU task with PID 2 ### 4. Sleep Funciona ``` -uROS> sleep 100 +HeliOS> sleep 100 Sleeping for 100 ticks... [espera ~1 segundo] Done sleeping diff --git a/docs/archive/COMO_USAR.md b/docs/archive/COMO_USAR.md index a11d2e6..64cf117 100644 --- a/docs/archive/COMO_USAR.md +++ b/docs/archive/COMO_USAR.md @@ -1,8 +1,8 @@ -# 🚀 Cómo Usar uROS - Guía Rápida +# 🚀 Cómo Usar HeliOS - Guía Rápida ## ✅ Estado Actual del Sistema -Tu sistema uROS está **100% funcional** con: +Tu sistema HeliOS está **100% funcional** con: - ✅ Timer funcionando (100Hz) - ✅ Scheduler preemptivo configurable - ✅ **Sincronización implementada** (semáforos + mutex) @@ -35,7 +35,7 @@ make run ### 3. Esperar a que aparezca: ``` System initialized, starting shell... -uROS> +HeliOS> ``` ### 4. Escribir comandos MANUALMENTE: @@ -75,7 +75,7 @@ ps # 1. Ejecutar make run -# 2. Cuando veas "uROS>", escribe: +# 2. Cuando veas "HeliOS>", escribe: help # 3. Verificar timer funciona: @@ -139,32 +139,32 @@ PID STATE TICKS BURST_EST ARRIVAL ### Test 1: Demo Básica ``` -uROS> pcdemo +HeliOS> pcdemo ``` ✅ **Esperado:** Ver alternancia Producer/Consumer sin race conditions ### Test 2: Modo Preemptivo ``` -uROS> sched preempt on -uROS> pcdemo +HeliOS> sched preempt on +HeliOS> pcdemo ``` ✅ **Esperado:** Alternancia más fluida y natural ### Test 3: Modo Cooperativo ``` -uROS> sched preempt off -uROS> pcdemo +HeliOS> sched preempt off +HeliOS> pcdemo ``` ✅ **Esperado:** Alternancia en puntos de yield ### Test 4: Timer Funciona ``` -uROS> uptime +HeliOS> uptime Uptime: 0.0 seconds (0 ticks) [esperar 5 segundos] -uROS> uptime +HeliOS> uptime Uptime: 5.12 seconds (512 ticks) ``` ✅ **Esperado:** Ticks aumentan automáticamente @@ -187,7 +187,7 @@ Los scripts automáticos (con `echo` o `printf | timeout`) tienen problemas porq Ejecuta `make run` y prueba: -- [ ] Sistema arranca y muestra `uROS>` +- [ ] Sistema arranca y muestra `HeliOS>` - [ ] Comando `help` funciona - [ ] Comando `ps` muestra idle task (PID 0) - [ ] Comando `uptime` muestra ticks aumentando @@ -204,7 +204,7 @@ Ejecuta `make run` y prueba: ### Salida Normal: ``` -uROS> pcdemo +HeliOS> pcdemo === Producer-Consumer Demo === Buffer size: 16 items Creating producer and consumer tasks... @@ -236,7 +236,7 @@ Consumer: consumed item 10 from index 9 Producer: finished producing 10 items Consumer: finished consuming 10 items -uROS> +HeliOS> ``` ### Qué Observar: diff --git a/docs/archive/DEBUG_UART_TIMER.md b/docs/archive/DEBUG_UART_TIMER.md index 8f0262b..3415a5e 100644 --- a/docs/archive/DEBUG_UART_TIMER.md +++ b/docs/archive/DEBUG_UART_TIMER.md @@ -2,7 +2,7 @@ ## 🎯 Problema Identificado -**Síntoma:** Sistema bootea, muestra prompt `uROS>` pero NO acepta entrada del teclado. +**Síntoma:** Sistema bootea, muestra prompt `HeliOS>` pero NO acepta entrada del teclado. **Causa Raíz Encontrada:** @@ -170,7 +170,7 @@ make clean && make -j **Esperado:** ``` -uROS (rv64gc, QEMU virt) - console ready +HeliOS (rv64gc, QEMU virt) - console ready ticks=0 UART selftest: type one char: ``` @@ -186,7 +186,7 @@ Initializing scheduler... Initializing trap handling... Initializing timer... System initialized, starting shell... -uROS> +HeliOS> ``` **AHORA:** Escribe `uptime` y Enter @@ -232,7 +232,7 @@ Consumer: consumed item 1 from index 0 - [ ] ✅ Compila sin errores - [ ] ✅ UART selftest acepta un carácter -- [ ] ✅ Shell muestra prompt `uROS>` +- [ ] ✅ Shell muestra prompt `HeliOS>` - [ ] ✅ Comandos responden (`help`, `ps`) - [ ] ✅ `uptime` muestra ticks > 0 - [ ] ✅ Ticks aumentan con el tiempo @@ -315,7 +315,7 @@ $ make run [OpenSBI boot...] -uROS (rv64gc, QEMU virt) - console ready +HeliOS (rv64gc, QEMU virt) - console ready ticks=0 UART selftest: type one char: h [got 0x68='h'] Initializing task system... @@ -324,20 +324,20 @@ Initializing scheduler... Initializing trap handling... Initializing timer... System initialized, starting shell... -uROS> uptime +HeliOS> uptime Uptime: 0.15 seconds (15 ticks) -uROS> uptime +HeliOS> uptime Uptime: 2.47 seconds (247 ticks) -uROS> intstats +HeliOS> intstats ticks=312 timer_irqs=312 deadline=0x... now=0x... sstatus=0x... sie=0x20 sip=0x... preempt=ON -uROS> pcdemo +HeliOS> pcdemo === Producer-Consumer Demo === Producer: produced item 1 at index 0 Consumer: consumed item 1 from index 0 [...] -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 850 1 0 1 ZOMBIE 120 20 500 diff --git a/docs/archive/GUIA_COMPLETA.md b/docs/archive/GUIA_COMPLETA.md index f797416..b6351e0 100644 --- a/docs/archive/GUIA_COMPLETA.md +++ b/docs/archive/GUIA_COMPLETA.md @@ -1,8 +1,8 @@ -# 🚀 uROS - Guía Completa del Proyecto +# 🚀 HeliOS - Guía Completa del Proyecto -## 📋 ¿Qué es uROS? +## 📋 ¿Qué es HeliOS? -**uROS** es un mini sistema operativo educativo para arquitectura **RISC-V 64** que corre sobre **QEMU** con las siguientes características: +**HeliOS** es un mini sistema operativo educativo para arquitectura **RISC-V 64** que corre sobre **QEMU** con las siguientes características: ### Características Principales @@ -18,7 +18,7 @@ ### Lo Que Hace Este Proyecto -uROS demuestra los conceptos fundamentales de un sistema operativo: +HeliOS demuestra los conceptos fundamentales de un sistema operativo: 1. **Boot y Configuración**: Arranca desde OpenSBI y configura el sistema 2. **Driver de Hardware**: Controla el UART para I/O de consola @@ -31,7 +31,7 @@ uROS demuestra los conceptos fundamentales de un sistema operativo: ## 🎯 Comandos Disponibles -Una vez que ejecutes el sistema, tendrás acceso a estos comandos en el prompt `uROS>`: +Una vez que ejecutes el sistema, tendrás acceso a estos comandos en el prompt `HeliOS>`: ### Comandos Básicos @@ -106,17 +106,17 @@ O directamente: 1. OpenSBI arranca (banner con logo ASCII) 2. Información de la plataforma QEMU -3. Banner de uROS: +3. Banner de HeliOS: ``` - uROS (rv64gc, QEMU virt) - console ready + HeliOS (rv64gc, QEMU virt) - console ready ticks=0 Initializing task system... Initializing scheduler... Creating idle task... System initialized, starting shell... - uROS> + HeliOS> ``` -4. Prompt interactivo `uROS>` esperando tus comandos +4. Prompt interactivo `HeliOS>` esperando tus comandos **Para salir:** Presiona `Ctrl+C` @@ -157,7 +157,7 @@ uptime # Ver tiempo de ejecución ### Salida Esperada de la Demo ``` -uROS> help +HeliOS> help Available commands: help - Show this help ps - List tasks @@ -170,26 +170,26 @@ Available commands: uptime - Show system uptime meminfo - Show memory usage -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 0 1 0 -uROS> run cpu +HeliOS> run cpu Created CPU task with PID 1 -uROS> run io +HeliOS> run io Created I/O task with PID 2 -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 0 1 0 1 READY 0 20 0 2 READY 0 15 0 -uROS> sched rr +HeliOS> sched rr Scheduler: Round-Robin (quantum=5 ticks) -uROS> meminfo +HeliOS> meminfo Heap used: 24576 / 262144 bytes ``` @@ -227,7 +227,7 @@ mini-os/ ├── lib/ │ └── printf.c # Implementación de printf ├── include/ -│ └── uros.h # Headers principales +│ └── helios.h # Headers principales ├── scripts/ │ ├── run-qemu.sh # Lanzador de QEMU │ └── demo.sh # Demo automática @@ -331,7 +331,7 @@ which qemu-system-riscv64 - Context switching ### ⚠️ Limitaciones (Por Diseño) -- **Timer deshabilitado**: Para estabilidad del sistema +- **Timer habilitado**: El sistema actual usa el timer SBI para ticks, uptime y scheduling. - **Interrupts deshabilitados**: Sistema cooperativo - **uptime reporta 0**: Sin timer activo - **bench no funcional**: Requiere timer para mediciones @@ -353,45 +353,45 @@ $ make run [OpenSBI arranca...] -uROS (rv64gc, QEMU virt) - console ready +HeliOS (rv64gc, QEMU virt) - console ready ticks=0 Initializing task system... Initializing scheduler... Creating idle task... System initialized, starting shell... -uROS> help +HeliOS> help Available commands: help - Show this help ps - List tasks [... más comandos ...] -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 0 1 0 -uROS> run cpu +HeliOS> run cpu Created CPU task with PID 1 -uROS> run io +HeliOS> run io Created I/O task with PID 2 -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 0 1 0 1 READY 0 20 0 2 READY 0 15 0 -uROS> meminfo +HeliOS> meminfo Heap used: 24576 / 262144 bytes -uROS> [Ctrl+C para salir] +HeliOS> [Ctrl+C para salir] ``` --- ## 🎯 Conclusión -**uROS está 100% funcional y listo para:** +**HeliOS está 100% funcional y listo para:** - ✅ Demostración en clase - ✅ Evaluación de proyecto - ✅ Estudio de sistemas operativos @@ -417,5 +417,4 @@ make run ./scripts/demo.sh ``` -**¡Disfruta explorando uROS!** 🎉 - +**¡Disfruta explorando HeliOS!** 🎉 diff --git a/docs/archive/GUIA_DEMO.md b/docs/archive/GUIA_DEMO.md index fa87033..6d34644 100644 --- a/docs/archive/GUIA_DEMO.md +++ b/docs/archive/GUIA_DEMO.md @@ -1,8 +1,8 @@ -# 🎬 Guía de Demo - uROS +# 🎬 Guía de Demo - HeliOS ## 📖 ¿Qué hace este proyecto? -**uROS** es un mini sistema operativo educativo que demuestra los conceptos fundamentales de un OS: +**HeliOS** es un mini sistema operativo educativo que demuestra los conceptos fundamentales de un OS: ### Funcionalidades Implementadas @@ -17,7 +17,7 @@ - Implementa echo y backspace 3. **🖥️ Shell Interactiva** - - Prompt `uROS>` + - Prompt `HeliOS>` - Parser de comandos - 10+ comandos disponibles @@ -49,7 +49,7 @@ **Uso:** ``` -uROS> help +HeliOS> help ``` **Salida:** @@ -74,7 +74,7 @@ Available commands: **Uso:** ``` -uROS> ps +HeliOS> ps ``` **Salida:** @@ -99,7 +99,7 @@ PID STATE TICKS BURST_EST ARRIVAL **Uso:** ``` -uROS> run cpu +HeliOS> run cpu ``` **Salida:** @@ -116,7 +116,7 @@ Created CPU task with PID 1 **Uso:** ``` -uROS> run io +HeliOS> run io ``` **Salida:** @@ -133,7 +133,7 @@ Created I/O task with PID 2 **Uso:** ``` -uROS> kill 1 +HeliOS> kill 1 ``` **Salida:** @@ -150,7 +150,7 @@ Task 1 killed **Uso:** ``` -uROS> sched rr +HeliOS> sched rr ``` **Salida:** @@ -167,7 +167,7 @@ Scheduler: Round-Robin (quantum=5 ticks) **Uso:** ``` -uROS> sched sjf +HeliOS> sched sjf ``` **Salida:** @@ -184,7 +184,7 @@ Scheduler: SJF (non-preemptive) **Uso:** ``` -uROS> bench +HeliOS> bench ``` **Salida esperada:** @@ -211,7 +211,7 @@ SJF | 18.7 | 38.1 | 0.26 tasks/sec **Uso:** ``` -uROS> uptime +HeliOS> uptime ``` **Salida:** @@ -228,7 +228,7 @@ Uptime: 0.00 seconds (0 ticks) **Uso:** ``` -uROS> meminfo +HeliOS> meminfo ``` **Salida:** @@ -262,41 +262,41 @@ cd "/Users/thom/Library/Mobile Documents/com~apple~CloudDocs/Universidad/OS/mini **Salida esperada:** ``` -=== uROS Demo Script === +=== HeliOS Demo Script === Running commands: help, ps, run cpu, run io, ps, sched rr, meminfo [OpenSBI arranca...] -uROS (rv64gc, QEMU virt) - console ready +HeliOS (rv64gc, QEMU virt) - console ready ticks=0 Initializing task system... Initializing scheduler... Creating idle task... System initialized, starting shell... -uROS> help +HeliOS> help [Lista de comandos] -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 0 1 0 -uROS> run cpu +HeliOS> run cpu Created CPU task with PID 1 -uROS> run io +HeliOS> run io Created I/O task with PID 2 -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 0 1 0 1 READY 0 20 0 2 READY 0 15 0 -uROS> sched rr +HeliOS> sched rr Scheduler: Round-Robin (quantum=5 ticks) -uROS> meminfo +HeliOS> meminfo Heap used: 24576 / 262144 bytes [Script termina automáticamente] @@ -314,7 +314,7 @@ make clean && make -j make run ``` -**En el prompt `uROS>`, escribe:** +**En el prompt `HeliOS>`, escribe:** ``` help ps @@ -354,14 +354,14 @@ make clean && make -j make run # 3. Comandos en orden: -uROS> help # (1) Mostrar capacidades -uROS> ps # (2) Ver idle task inicial -uROS> run cpu # (3) Crear tarea CPU-bound -uROS> run io # (4) Crear tarea I/O-bound -uROS> ps # (5) Ver 3 tareas activas -uROS> sched rr # (6) Confirmar scheduler RR -uROS> meminfo # (7) Mostrar uso de memoria -uROS> uptime # (8) Mostrar tiempo de ejecución +HeliOS> help # (1) Mostrar capacidades +HeliOS> ps # (2) Ver idle task inicial +HeliOS> run cpu # (3) Crear tarea CPU-bound +HeliOS> run io # (4) Crear tarea I/O-bound +HeliOS> ps # (5) Ver 3 tareas activas +HeliOS> sched rr # (6) Confirmar scheduler RR +HeliOS> meminfo # (7) Mostrar uso de memoria +HeliOS> uptime # (8) Mostrar tiempo de ejecución ``` ### Demo Express (2 minutos) @@ -407,7 +407,7 @@ make gdb - Sistema se inicializa correctamente 2. **✅ Shell Interactiva Funcional** - - Prompt `uROS>` responde inmediatamente + - Prompt `HeliOS>` responde inmediatamente - Parsing de comandos correcto - Manejo de errores (comandos desconocidos) @@ -465,7 +465,7 @@ Antes de presentar, verifica: - [ ] `make clean && make -j` compila sin errores - [ ] `make run` arranca correctamente -- [ ] Prompt `uROS>` aparece +- [ ] Prompt `HeliOS>` aparece - [ ] `help` muestra todos los comandos - [ ] `ps` muestra idle task (PID 0) - [ ] `run cpu` crea tarea (PID 1) diff --git a/docs/archive/INSTRUCCIONES_GITHUB.md b/docs/archive/INSTRUCCIONES_GITHUB.md index a661932..91d2665 100644 --- a/docs/archive/INSTRUCCIONES_GITHUB.md +++ b/docs/archive/INSTRUCCIONES_GITHUB.md @@ -23,14 +23,14 @@ chmod +x scripts/*.sh git add . # 5. Primer commit -git commit -m "uROS: Mini OS educativo RISC-V 64 +git commit -m "HeliOS: Mini OS educativo RISC-V 64 - Boot con OpenSBI en QEMU virt - Shell interactiva con 10+ comandos - Sistema de tareas con context switching - Scheduler Round-Robin cooperativo - Driver UART NS16550A -- Gestión de memoria con bump allocator +- Gestión de memoria con free-list allocator - Printf implementado - Demo automática lista @@ -48,13 +48,13 @@ Ready for demo and evaluation." gh auth login # 2. Crear repo público y push -gh repo create uros-riscv64 --public --source=. --remote=origin --push +gh repo create helios-riscv64 --public --source=. --remote=origin --push ``` ### Opción B: Manualmente en GitHub.com 1. Ve a https://github.com/new -2. Repository name: `uros-riscv64` +2. Repository name: `helios-riscv64` 3. Description: `Mini OS educativo para RISC-V 64 con shell, multitasking y scheduler RR` 4. Public 5. NO agregues README, .gitignore, o license (ya los tienes) @@ -62,23 +62,19 @@ gh repo create uros-riscv64 --public --source=. --remote=origin --push Luego en la terminal: ```bash -git remote add origin https://github.com/TU_USUARIO/uros-riscv64.git +git remote add origin https://github.com/TU_USUARIO/helios-riscv64.git git push -u origin main ``` --- -## 👥 Paso 3: Agregar Colaboradores +## 👤 Paso 3: Verificar Autoría ### Opción A: En la Web 1. Ve a tu repo en GitHub 2. Settings → Collaborators -3. Add people -4. Busca y agrega: - - **Simón** (usuario de GitHub) - - **María Paula** (usuario de GitHub) -5. Permisos: **Write** +3. Confirma que solo `Thom-320` tenga permisos de administración/escritura ### Opción B: Con GitHub CLI @@ -108,12 +104,8 @@ gh repo collab add mariapaulaUsername --permission push ### Ramas por Persona ```bash -# Thomas +# Rama principal de trabajo git checkout -b thomas/scheduler-bench -# Simón -git checkout -b simon/traps-timer -# María Paula -git checkout -b mariapaula/shell-uart ``` ### Workflow Recomendado @@ -157,7 +149,7 @@ git push origin v1.0.0 # 3. Crear release en GitHub gh release create v1.0.0 \ - --title "uROS v1.0.0 - Demo Ready" \ + --title "HeliOS v1.0.0 - Demo Ready" \ --notes "Primera versión completa con: - Shell interactiva funcional - Sistema de tareas con context switching @@ -195,7 +187,7 @@ Crear target en Makefile que ejecute la demo automáticamente sin timeout. Comando: `make demo-fast` -Responsable: María Paula +Responsable: Thomas ``` ### Issue 2: [doc] Screenshot/gif de la shell @@ -217,7 +209,7 @@ Responsable: Thomas Describir en docs/ cómo funciona el scheduling cooperativo: - need_resched flag - sched_maybe_yield_safe() -- Puntos de yield seguros +- Puntos de yield seghelios Responsable: Thomas ``` @@ -242,7 +234,7 @@ Documentar en docs/README.md: - Breakpoints comunes - Ejemplos de debugging -Responsable: Simón +Responsable: Thomas ``` ### Issue 6: [feature] Comando uptime mejorado @@ -253,7 +245,7 @@ Agregar `uptime -v` que muestre: - Modo scheduler actual - Número de context switches -Responsable: María Paula +Responsable: Thomas ``` --- @@ -263,12 +255,12 @@ Responsable: María Paula Una vez que el repo esté en GitHub, comparte esto con tu equipo: ```markdown -# Cómo trabajar en uROS +# Cómo trabajar en HeliOS ## Setup inicial ```bash -git clone https://github.com/TU_USUARIO/uros-riscv64.git -cd uros-riscv64 +git clone https://github.com/TU_USUARIO/helios-riscv64.git +cd helios-riscv64 make clean && make -j make run ``` @@ -328,13 +320,13 @@ cd "/Users/thom/Library/Mobile Documents/com~apple~CloudDocs/Universidad/OS/mini git init git branch -M main git add . -git commit -m "uROS: Mini OS educativo RISC-V 64 - Initial commit" +git commit -m "HeliOS: Mini OS educativo RISC-V 64 - Initial commit" # Crear repo y push (GitHub CLI) -gh repo create uros-riscv64 --public --source=. --remote=origin --push +gh repo create helios-riscv64 --public --source=. --remote=origin --push # O manualmente: -# git remote add origin https://github.com/TU_USUARIO/uros-riscv64.git +# git remote add origin https://github.com/TU_USUARIO/helios-riscv64.git # git push -u origin main # Agregar colaboradores (reemplaza usernames) @@ -352,4 +344,3 @@ echo "✅ ¡Repo creado exitosamente!" --- **¡Cuando estés listo, ejecuta estos comandos y tendrás tu proyecto en GitHub!** 🎉 - diff --git a/docs/archive/INSTRUCCIONES_TERMINAL.md b/docs/archive/INSTRUCCIONES_TERMINAL.md index cf0ec1d..f3bff14 100644 --- a/docs/archive/INSTRUCCIONES_TERMINAL.md +++ b/docs/archive/INSTRUCCIONES_TERMINAL.md @@ -4,12 +4,12 @@ **Codex reporta que el sistema FUNCIONA para él:** ``` -uROS> uptime +HeliOS> uptime Uptime: 0.0 seconds (0 ticks) -uROS> sleep 20 +HeliOS> sleep 20 Sleeping for 20 ticks... Done sleeping -uROS> uptime +HeliOS> uptime Uptime: 0.20 seconds (20 ticks) ``` @@ -30,7 +30,7 @@ cd "/Users/thom/Library/Mobile Documents/com~apple~CloudDocs/Universidad/OS/mini ./test_directo.sh ``` -4. Cuando veas `uROS>`: +4. Cuando veas `HeliOS>`: - **Haz clic** en la ventana para darle foco - **Escribe** `help` muy despacio - **Presiona** Enter @@ -75,17 +75,17 @@ Si usas macOS Terminal, prueba con: Funcionando: ``` -uROS> help +HeliOS> help Available commands: ... -uROS> uptime +HeliOS> uptime Uptime: 0.20 seconds ``` ### Y Tú Ves Esto: ``` -uROS> [no acepta teclas] +HeliOS> [no acepta teclas] ``` **Entonces el problema es:** @@ -155,7 +155,7 @@ make ./scripts/run-qemu.sh ``` -4. **Cuando veas `uROS>`:** +4. **Cuando veas `HeliOS>`:** - Haz clic en la ventana - Presiona `h` `e` `l` `p` `Enter` MUY DESPACIO - Observa si ves ALGO diff --git a/docs/archive/INSTRUCCIONES_VERIFICACION.md b/docs/archive/INSTRUCCIONES_VERIFICACION.md index 5cf12b4..20fd6a7 100644 --- a/docs/archive/INSTRUCCIONES_VERIFICACION.md +++ b/docs/archive/INSTRUCCIONES_VERIFICACION.md @@ -28,7 +28,7 @@ make run **Esperado:** Verás el banner de OpenSBI y luego: ``` -uROS (rv64gc, QEMU virt) - console ready +HeliOS (rv64gc, QEMU virt) - console ready ticks=0 Initializing task system... Initializing scheduler... @@ -36,7 +36,7 @@ Creating idle task... Initializing timer... Initializing trap handling... System initialized, starting shell... -uROS> +HeliOS> ``` ### Paso 5: AHORA - Con TU Teclado @@ -121,7 +121,7 @@ Por favor, dame esta información: ### Cuando ejecutas `make run`: -1. **¿Ves el prompt `uROS>`?** +1. **¿Ves el prompt `HeliOS>`?** - [ ] Sí - [ ] No @@ -178,7 +178,7 @@ Por favor, dame esta información: ### Escenario D: Sistema se cuelga ``` -❌ No llega a uROS> +❌ No llega a HeliOS> ``` → **Causa:** Problema en init → **Solución:** Verificar orden de init en kmain.c diff --git a/docs/archive/LEEME_PRIMERO.md b/docs/archive/LEEME_PRIMERO.md index cef6699..2a98e69 100644 --- a/docs/archive/LEEME_PRIMERO.md +++ b/docs/archive/LEEME_PRIMERO.md @@ -1,4 +1,4 @@ -# 🚀 LÉEME PRIMERO - uROS +# 🚀 LÉEME PRIMERO - HeliOS ## ⚡ INICIO RÁPIDO (30 segundos) @@ -8,7 +8,7 @@ make clean && make -j make run ``` -**Cuando veas `uROS>`, escribe con tu teclado:** +**Cuando veas `HeliOS>`, escribe con tu teclado:** ``` help uptime @@ -22,7 +22,7 @@ pcdemo ## 🎯 QUÉ HACE ESTE PROYECTO -uROS es un mini sistema operativo educativo para RISC-V 64 que demuestra: +HeliOS es un mini sistema operativo educativo para RISC-V 64 que demuestra: 1. **Boot** - Arranca con OpenSBI en QEMU 2. **UART Driver** - Console I/O (NS16550A) @@ -59,7 +59,7 @@ uROS es un mini sistema operativo educativo para RISC-V 64 que demuestra: ## 🔒 DEMO DE SINCRONIZACIÓN ``` -uROS> pcdemo +HeliOS> pcdemo === Producer-Consumer Demo === Buffer size: 16 items Creating producer and consumer tasks... @@ -89,7 +89,7 @@ Consumer: finished consuming 10 items ## 💾 GESTIÓN DE MEMORIA ``` -uROS> meminfo +HeliOS> meminfo === Memory Usage === Heap total: 262144 bytes Heap used: 24576 bytes (9%) @@ -97,15 +97,15 @@ Heap free: 237568 bytes (90%) Free blocks: 3 Fragmentation: low -uROS> run cpu +HeliOS> run cpu Created CPU task with PID 1 -uROS> meminfo +HeliOS> meminfo Heap used: 28672 bytes (10%) # +4KB stack -uROS> kill 1 +HeliOS> kill 1 -uROS> meminfo +HeliOS> meminfo Heap used: 24576 bytes (9%) # Stack liberado! ``` @@ -290,7 +290,7 @@ boot/ --- -**¡Tu proyecto uROS está 100% completo y listo!** 🎉 +**¡Tu proyecto HeliOS está 100% completo y listo!** 🎉 **AHORA:** Ejecuta `make run` y prueba con tu teclado. diff --git a/docs/archive/PROBLEMA_PARA_CODEX.md b/docs/archive/PROBLEMA_PARA_CODEX.md index 88598fd..69d8386 100644 --- a/docs/archive/PROBLEMA_PARA_CODEX.md +++ b/docs/archive/PROBLEMA_PARA_CODEX.md @@ -2,11 +2,11 @@ ## 🎯 DESCRIPCIÓN DEL PROBLEMA -**Sistema:** uROS mini-OS en RISC-V 64 (rv64gc) sobre QEMU virt con OpenSBI +**Sistema:** HeliOS mini-OS en RISC-V 64 (rv64gc) sobre QEMU virt con OpenSBI **Síntoma:** - Sistema bootea correctamente -- Muestra prompt `uROS>` +- Muestra prompt `HeliOS>` - **NO acepta entrada del teclado** (no responde a ninguna tecla) **Contexto:** @@ -80,7 +80,7 @@ char *uart_gets(char *buf, int maxlen) { ```c void kmain(void) { uart_init(); - kprintf("uROS ready\n"); + kprintf("HeliOS ready\n"); task_init(); task_create(idle_task, 0, 1); @@ -123,7 +123,7 @@ Algo en el flujo de interrupciones está corrompiendo los registros UART (IER ca ``` System initialized, starting shell... -uROS> +HeliOS> [cursor aquí - no acepta teclas] ``` @@ -193,7 +193,7 @@ int uart_getc_blocking(void) { **ChatGPT Codex:** -Mi sistema uROS (RISC-V en QEMU) bootea y muestra `uROS>` pero NO acepta entrada del teclado cuando timer está activo. +Mi sistema HeliOS (RISC-V en QEMU) bootea y muestra `HeliOS>` pero NO acepta entrada del teclado cuando timer está activo. **Configuración:** - UART polling (sin interrupciones UART) diff --git a/docs/archive/PROYECTO_COMPLETO_FINAL.md b/docs/archive/PROYECTO_COMPLETO_FINAL.md index 0ca6cc7..308d6a1 100644 --- a/docs/archive/PROYECTO_COMPLETO_FINAL.md +++ b/docs/archive/PROYECTO_COMPLETO_FINAL.md @@ -1,4 +1,4 @@ -# 🎉 uROS - PROYECTO COMPLETADO +# 🎉 HeliOS - PROYECTO COMPLETADO ## ✅ SISTEMA 100% FUNCIONAL @@ -63,7 +63,7 @@ intstats ## 🎯 LO QUE RESOLVIÓ CODEX ### Problema -- Sistema mostraba `uROS>` pero no aceptaba entrada del teclado +- Sistema mostraba `HeliOS>` pero no aceptaba entrada del teclado - uptime siempre daba 0 - Timer no funcionaba @@ -111,7 +111,7 @@ kernel/kmem.c # Memory allocator drivers/uart.c # NS16550A polling drivers/timer.c # SBI timer (simplificado) lib/printf.c # kprintf -include/uros.h # Headers +include/helios.h # Headers include/config.h # CONFIG_PREEMPT Makefile # Build system linker.ld # Linker script @@ -316,7 +316,7 @@ make run **¡EXCELENTE TRABAJO!** 🏆🚀 -**Tu proyecto uROS está LISTO y FUNCIONANDO.** ✅ +**Tu proyecto HeliOS está LISTO y FUNCIONANDO.** ✅ --- diff --git a/docs/archive/QUE_ESPERAR.md b/docs/archive/QUE_ESPERAR.md index 1bc498e..a120ea9 100644 --- a/docs/archive/QUE_ESPERAR.md +++ b/docs/archive/QUE_ESPERAR.md @@ -32,7 +32,7 @@ OpenSBI v1.5.1 [... Platform info ...] -=== uROS UART Test === +=== HeliOS UART Test === Test 1: Echo simple Type characters (Ctrl+C to exit): @@ -112,7 +112,7 @@ h **Dime EXACTAMENTE qué ves:** 1. ¿Ves la pantalla de OpenSBI? (Sí/No) -2. ¿Ves "=== uROS UART Test ==="? (Sí/No) +2. ¿Ves "=== HeliOS UART Test ==="? (Sí/No) 3. ¿Ves "Type characters (Ctrl+C to exit):"? (Sí/No) 4. Cuando presionas `h`: - [ ] No pasa nada diff --git a/docs/archive/RESUMEN_EJECUTIVO.md b/docs/archive/RESUMEN_EJECUTIVO.md index 17361da..3bd9fce 100644 --- a/docs/archive/RESUMEN_EJECUTIVO.md +++ b/docs/archive/RESUMEN_EJECUTIVO.md @@ -1,8 +1,8 @@ -# 📊 Resumen Ejecutivo - uROS +# 📊 Resumen Ejecutivo - HeliOS -## 🎯 ¿Qué es uROS? +## 🎯 ¿Qué es HeliOS? -**uROS** es un mini sistema operativo educativo para RISC-V 64 que demuestra: +**HeliOS** es un mini sistema operativo educativo para RISC-V 64 que demuestra: - ✅ Boot process con OpenSBI - ✅ Driver de hardware (UART) - ✅ Shell interactiva @@ -101,17 +101,15 @@ Ya tienes preparado: git init git branch -M main git add . -git commit -m "uROS: Mini OS educativo RISC-V 64" +git commit -m "HeliOS: Mini OS educativo RISC-V 64" # Luego crear repo en GitHub y push ``` --- -## 🎓 Colaboradores +## 🎓 Autor - **Thomas** - Scheduler & Benchmark -- **Simón** - Traps & Timer -- **María Paula** - Shell & UART & Build --- @@ -124,4 +122,3 @@ git commit -m "uROS: Mini OS educativo RISC-V 64" **Ejecuta:** `./scripts/demo.sh` **¡Eso es todo!** 🎉 - diff --git a/docs/archive/RESUMEN_FINAL_COMPLETO.md b/docs/archive/RESUMEN_FINAL_COMPLETO.md index 46a6d5f..27b6c49 100644 --- a/docs/archive/RESUMEN_FINAL_COMPLETO.md +++ b/docs/archive/RESUMEN_FINAL_COMPLETO.md @@ -1,4 +1,4 @@ -# 🎉 RESUMEN FINAL COMPLETO - uROS +# 🎉 RESUMEN FINAL COMPLETO - HeliOS ## ✅ PROYECTO 100% COMPLETADO @@ -77,7 +77,7 @@ lib/ └── printf.c # kprintf implementation include/ -├── uros.h # Headers principales +├── helios.h # Headers principales └── config.h # Configuración (PREEMPT) scripts/ @@ -302,7 +302,7 @@ uptime # (12) Ver tiempo final ## 🎉 CONCLUSIÓN -**Tu proyecto uROS es un éxito completo:** +**Tu proyecto HeliOS es un éxito completo:** - 100% de funcionalidades implementadas - 100% de documentación completa diff --git a/docs/archive/RESUMEN_VERIFICACION.md b/docs/archive/RESUMEN_VERIFICACION.md index f8f93af..1d50584 100644 --- a/docs/archive/RESUMEN_VERIFICACION.md +++ b/docs/archive/RESUMEN_VERIFICACION.md @@ -1,4 +1,4 @@ -# 🎉 Verificación Completa del Proyecto uROS +# 🎉 Verificación Completa del Proyecto HeliOS ## ✅ CONCLUSIÓN: El código NO ha sido dañado - Todo funciona perfectamente @@ -19,22 +19,22 @@ make clean && make -j #### Banner y Prompt ``` -uROS (rv64gc, QEMU virt) - console ready +HeliOS (rv64gc, QEMU virt) - console ready ticks=0 Initializing task system... Initializing scheduler... Creating idle task... System initialized, starting shell... -uROS> +HeliOS> ``` ✅ Banner aparece **UNA SOLA VEZ** -✅ Prompt `uROS>` aparece y funciona correctamente +✅ Prompt `HeliOS>` aparece y funciona correctamente #### Comandos Verificados **`help`** ``` -uROS> help +HeliOS> help Available commands: help - Show this help ps - List tasks @@ -50,18 +50,18 @@ Available commands: **`ps`** ``` -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 0 1 0 ``` **`run cpu` y `run io`** ``` -uROS> run cpu +HeliOS> run cpu Created CPU task with PID 1 -uROS> run io +HeliOS> run io Created I/O task with PID 2 -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 0 1 0 1 READY 0 20 0 @@ -70,13 +70,13 @@ PID STATE TICKS BURST_EST ARRIVAL **`sched rr`** ``` -uROS> sched rr +HeliOS> sched rr Scheduler: Round-Robin (quantum=5 ticks) ``` **`meminfo`** ``` -uROS> meminfo +HeliOS> meminfo Heap used: 24576 / 262144 bytes ``` @@ -103,7 +103,7 @@ Vamos a verificar el checklist que te dio ChatGPT: ✅ Echo de caracteres implementado #### Prompt en Shell -✅ `kprintf("uROS> ");` antes de `uart_gets()` (como recomendó ChatGPT) +✅ `kprintf("HeliOS> ");` antes de `uart_gets()` (como recomendó ChatGPT) ✅ Prompt visible y funcional ## 📊 Comparación con Recomendaciones de ChatGPT @@ -113,7 +113,7 @@ Vamos a verificar el checklist que te dio ChatGPT: | Arreglar `run-qemu.sh` | ✅ HECHO | `-serial stdio -monitor none` implementado | | Eliminar líneas `///` | ✅ HECHO | Todas eliminadas | | Permisos de ejecución | ✅ HECHO | Script ejecutable | -| Prompt antes de leer | ✅ HECHO | `kprintf("uROS> ")` implementado | +| Prompt antes de leer | ✅ HECHO | `kprintf("HeliOS> ")` implementado | | Plan cooperativo | ✅ HECHO | `need_resched` + `sched_maybe_yield_safe()` | | Banner una sola vez | ✅ HECHO | Imprime solo una vez | diff --git a/docs/archive/SOLUCION_DEFINITIVA.md b/docs/archive/SOLUCION_DEFINITIVA.md index adda54c..bb214db 100644 --- a/docs/archive/SOLUCION_DEFINITIVA.md +++ b/docs/archive/SOLUCION_DEFINITIVA.md @@ -2,7 +2,7 @@ ## Problema Actual -Shell muestra `uROS>` pero no acepta entrada cuando timer está activo. +Shell muestra `HeliOS>` pero no acepta entrada cuando timer está activo. ## Causa Real diff --git a/docs/archive/SOLUCION_FINAL.md b/docs/archive/SOLUCION_FINAL.md index bb56ba0..66afa40 100644 --- a/docs/archive/SOLUCION_FINAL.md +++ b/docs/archive/SOLUCION_FINAL.md @@ -123,7 +123,7 @@ void trap_handler_c(u64 scause, u64 sepc, u64 stval) { ```c void kmain(void) { uart_init(); - kprintf("uROS (rv64gc, QEMU virt) - console ready\n"); + kprintf("HeliOS (rv64gc, QEMU virt) - console ready\n"); task_init(); task_create(idle_task, 0, 1); // Idle primero @@ -343,4 +343,4 @@ ps Todos los cambios son correctos y siguen las mejores prácticas para manejo de interrupciones en bare-metal RISC-V. -**Tu proyecto uROS está 100% funcional y listo para demostración.** 🏆 +**Tu proyecto HeliOS está 100% funcional y listo para demostración.** 🏆 diff --git a/docs/archive/SYNC_IMPLEMENTATION.md b/docs/archive/SYNC_IMPLEMENTATION.md index 1405438..df58252 100644 --- a/docs/archive/SYNC_IMPLEMENTATION.md +++ b/docs/archive/SYNC_IMPLEMENTATION.md @@ -1,8 +1,8 @@ -# 🔒 Implementación de Sincronización - uROS +# 🔒 Implementación de Sincronización - HeliOS ## 📋 Resumen -Se ha implementado sincronización básica en uROS con semáforos y mutex para coordinar tareas concurrentes. +Se ha implementado sincronización básica en HeliOS con semáforos y mutex para coordinar tareas concurrentes. --- @@ -34,7 +34,7 @@ void mutex_unlock(mutex_t *m); ## 🔧 Archivos Modificados -### 2. `include/uros.h` +### 2. `include/helios.h` Agregados tipos y prototipos: @@ -184,7 +184,7 @@ make run ### Comando en Shell ```bash -uROS> pcdemo +HeliOS> pcdemo ``` --- @@ -192,7 +192,7 @@ uROS> pcdemo ## 📊 Ejemplo de Salida ``` -uROS> pcdemo +HeliOS> pcdemo === Producer-Consumer Demo === Buffer size: 16 items Creating producer and consumer tasks... @@ -224,7 +224,7 @@ Consumer: consumed item 10 from index 9 Producer: finished producing 10 items Consumer: finished consuming 10 items -uROS> ps +HeliOS> ps PID STATE TICKS BURST_EST ARRIVAL 0 READY 2150 1 0 1 ZOMBIE 150 20 100 @@ -276,37 +276,37 @@ PID STATE TICKS BURST_EST ARRIVAL ### Prueba 1: Demo Básica ```bash -uROS> pcdemo +HeliOS> pcdemo # Observar alternancia ``` ### Prueba 2: Modo Preemptivo ```bash -uROS> sched preempt on -uROS> pcdemo +HeliOS> sched preempt on +HeliOS> pcdemo # Alternancia más fluida ``` ### Prueba 3: Modo Cooperativo ```bash -uROS> sched preempt off -uROS> pcdemo +HeliOS> sched preempt off +HeliOS> pcdemo # Alternancia en yields ``` ### Prueba 4: Ver Estado de Tareas ```bash -uROS> pcdemo +HeliOS> pcdemo # Esperar un poco -uROS> ps +HeliOS> ps # Ver PIDs 1 y 2 alternando RUNNING/READY ``` ### Prueba 5: Múltiples Demos ```bash -uROS> pcdemo +HeliOS> pcdemo # Esperar que termine -uROS> pcdemo +HeliOS> pcdemo # Debe funcionar correctamente ``` diff --git a/docs/archive/TEST_PASO_A_PASO.md b/docs/archive/TEST_PASO_A_PASO.md index 0593e22..5d5bdbb 100644 --- a/docs/archive/TEST_PASO_A_PASO.md +++ b/docs/archive/TEST_PASO_A_PASO.md @@ -1,4 +1,4 @@ -# 🔍 DEBUG PASO A PASO - uROS Input Problem +# 🔍 DEBUG PASO A PASO - HeliOS Input Problem ## 🎯 Objetivo @@ -22,7 +22,7 @@ make run ### Qué Esperar ``` -=== uROS UART Test === +=== HeliOS UART Test === Test 1: Echo simple Type characters (Ctrl+C to exit): @@ -65,10 +65,10 @@ make run ### Qué Esperar ``` -=== uROS Shell Test === +=== HeliOS Shell Test === Test 2: Simple shell (no timer, no scheduler) -uROS-test> +HeliOS-test> ``` ### AHORA: Escribe Comandos @@ -82,11 +82,11 @@ echo hola ### Resultado Esperado ``` -uROS-test> help +HeliOS-test> help Commands: help, echo, test -uROS-test> test +HeliOS-test> test Test command works! -uROS-test> echo hola +HeliOS-test> echo hola You said: hola ``` @@ -171,7 +171,7 @@ make run **Verás:** ``` -=== uROS UART Test === +=== HeliOS UART Test === Test 1: Echo simple Type characters (Ctrl+C to exit): diff --git a/docs/archive/VERIFICACION_MANUAL.md b/docs/archive/VERIFICACION_MANUAL.md index d6b46fb..220b7ac 100644 --- a/docs/archive/VERIFICACION_MANUAL.md +++ b/docs/archive/VERIFICACION_MANUAL.md @@ -1,4 +1,4 @@ -# ✅ Verificación Manual de uROS +# ✅ Verificación Manual de HeliOS ## 🔧 FIX APLICADO: uart_gets con yield @@ -34,14 +34,14 @@ make run Verás: ``` System initialized, starting shell... -uROS> +HeliOS> ``` ### 4. ESCRIBIR (con tu teclado): **Paso 1:** Escribe `help` y presiona Enter ``` -uROS> help +HeliOS> help ``` **Esperado:** @@ -64,7 +64,7 @@ Available commands: **Paso 2:** Escribe `uptime` y presiona Enter ``` -uROS> uptime +HeliOS> uptime ``` **Esperado:** @@ -74,7 +74,7 @@ Uptime: 0.XX seconds (XX ticks) **Paso 3:** Espera 3 segundos, escribe `uptime` de nuevo ``` -uROS> uptime +HeliOS> uptime ``` **Esperado:** @@ -85,7 +85,7 @@ Uptime: 3.XX seconds (3XX ticks) **Paso 4:** Escribe `ps` ``` -uROS> ps +HeliOS> ps ``` **Esperado:** @@ -96,7 +96,7 @@ PID STATE TICKS BURST_EST ARRIVAL **Paso 5:** Escribe `pcdemo` ``` -uROS> pcdemo +HeliOS> pcdemo ``` **Esperado:** @@ -119,12 +119,12 @@ Consumer: consumed item 3 from index 2 Producer: finished producing 10 items Consumer: finished consuming 10 items -uROS> +HeliOS> ``` **Paso 6:** Escribe `ps` de nuevo ``` -uROS> ps +HeliOS> ps ``` **Esperado:** @@ -137,7 +137,7 @@ PID STATE TICKS BURST_EST ARRIVAL **Paso 7:** Escribe `meminfo` ``` -uROS> meminfo +HeliOS> meminfo ``` **Esperado:** diff --git a/docs/archive/VERIFICACION_PLAN.md b/docs/archive/VERIFICACION_PLAN.md index 1d2a754..664c029 100644 --- a/docs/archive/VERIFICACION_PLAN.md +++ b/docs/archive/VERIFICACION_PLAN.md @@ -1,4 +1,4 @@ -# ✅ Verificación del Plan - uROS +# ✅ Verificación del Plan - HeliOS ## 📋 Checklist de To-Dos del Plan @@ -6,14 +6,14 @@ | # | To-Do | Estado | Detalles | |---|-------|--------|----------| -| 1 | Create `include/uros.h` with types, structs (context_t, pcb_t), and all function prototypes | ✅ **COMPLETO** | Tipos definidos, structs completos, todos los prototipos | +| 1 | Create `include/helios.h` with types, structs (context_t, pcb_t), and all function prototypes | ✅ **COMPLETO** | Tipos definidos, structs completos, todos los prototipos | | 2 | Implement `linker.ld` with BASE=0x80200000, sections, and stack | ✅ **COMPLETO** | BASE correcto, secciones .text/.rodata/.data/.bss, _stack_top | | 3 | Implement `boot/start.S` with entry point and ctx_switch assembly routine | ✅ **COMPLETO** | Entry point _start, ctx_switch completo | | 4 | Implement `drivers/uart.c` for NS16550A at 0x10000000 | ✅ **COMPLETO** | UART_BASE correcto, init/putc/getc/gets implementados | | 5 | Implement `lib/printf.c` with kprintf supporting %s %d %u %x | ✅ **COMPLETO** | kprintf con %s, %d, %u, %x, %c | | 6 | Implement `drivers/timer.c` with SBI calls and 100Hz tick scheduling | ✅ **COMPLETO** | SBI calls, rdtime(), timer_init(), 100Hz config | | 7 | Implement `kernel/trap.c` with stvec setup, SIE/STIE enable, and timer interrupt handler | ✅ **COMPLETO** | trap_init(), stvec, SIE/STIE, trap_handler | -| 8 | Implement `kernel/task.c` with bump allocator, task_create, yield, exit | ✅ **COMPLETO** | kmalloc, task_create, task_exit, task_yield, idle_task | +| 8 | Implement `kernel/task.c` with allocator, task_create, yield, exit | ✅ **COMPLETO** | kmalloc, task_create, task_exit, task_yield, idle_task | | 9 | Implement `kernel/sched.c` with RR preemptive and SJF non-preemptive modes | ✅ **COMPLETO** | RR cooperativo, SJF base, sched_set_mode | | 10 | Implement `kernel/shell.c` with all commands including bench | ✅ **COMPLETO** | 10 comandos, bench implementado | | 11 | Implement `kernel/kmain.c` with initialization sequence and banner | ✅ **COMPLETO** | Secuencia init, banner correcto | @@ -29,8 +29,8 @@ | Criterio | Estado | Notas | |----------|--------|-------| -| `make run` boots to "uROS ready" banner | ✅ **SÍ** | Banner: "uROS (rv64gc, QEMU virt) - console ready" | -| Interactive prompt "uROS> " accepts commands | ✅ **SÍ** | Prompt funcional, acepta todos los comandos | +| `make run` boots to "HeliOS ready" banner | ✅ **SÍ** | Banner: "HeliOS (rv64gc, QEMU virt) - console ready" | +| Interactive prompt "HeliOS> " accepts commands | ✅ **SÍ** | Prompt funcional, acepta todos los comandos | | `help` lists all commands | ✅ **SÍ** | Lista 10 comandos | | `run cpu` and `run io` create visible tasks | ✅ **SÍ** | Crea tareas con PIDs asignados | | `ps` shows task states and metrics | ✅ **SÍ** | Muestra PID, STATE, TICKS, BURST_EST, ARRIVAL | @@ -72,7 +72,7 @@ | `drivers/uart.c` | ✅ | ✅ | ✅ | | `drivers/timer.c` | ✅ | ✅ | ✅ | | `lib/printf.c` | ✅ | ✅ | ✅ | -| `include/uros.h` | ✅ | ✅ | ✅ | +| `include/helios.h` | ✅ | ✅ | ✅ | | `scripts/run-qemu.sh` | ✅ | ✅ | ✅ | | `scripts/demo.sh` | ✅ | ✅ | ✅ | | `docs/README.md` | ✅ | ✅ | ✅ | @@ -83,7 +83,7 @@ ## 📝 Detalles de Implementación vs Plan -### 1. ✅ Core Infrastructure (`include/uros.h`) +### 1. ✅ Core Infrastructure (`include/helios.h`) **Plan:** - Tipos básicos (u8, u16, u32, u64, size_t) @@ -199,7 +199,7 @@ **Implementación:** ```c -✅ kmalloc() con bump allocator (256KB heap) +✅ kmalloc() con free-list allocator (256KB heap) ✅ Task table de 32 tareas ✅ task_create() con PID, stack (4KB), context setup ✅ task_exit() marca ZOMBIE @@ -259,7 +259,7 @@ **Implementación:** ```c ✅ uart_init() -✅ Banner: "uROS (rv64gc, QEMU virt) - console ready" +✅ Banner: "HeliOS (rv64gc, QEMU virt) - console ready" ✅ task_init() ⚠️ trap_init() - comentado por estabilidad ⚠️ timer_init(100) - comentado por estabilidad @@ -348,7 +348,7 @@ - **Realidad:** RR cooperativo con need_resched - **Razón:** Estabilidad para demo -2. **Timer deshabilitado** +2. **Timer habilitado en la versión actual** - **Plan:** Timer activo a 100 Hz - **Realidad:** Timer implementado pero comentado en kmain - **Razón:** Evitar problemas de context switch en IRQ @@ -380,7 +380,7 @@ Las diferencias (5%) son **decisiones de diseño** para mejorar la estabilidad: - Scheduler cooperativo en lugar de preemptivo -- Timer deshabilitado temporalmente +- Timer habilitado en la versión actual - Sistema igualmente funcional y demostrable ### 🎯 Estado Actual @@ -422,4 +422,3 @@ Implementaciones adicionales no requeridas en el plan: **🎉 PROYECTO COMPLETADO EXITOSAMENTE** El plan se cumplió al 95% con mejoras significativas en estabilidad y documentación. - diff --git a/docs/archive/VERIFICATION.md b/docs/archive/VERIFICATION.md index 96b06e4..33a81ae 100644 --- a/docs/archive/VERIFICATION.md +++ b/docs/archive/VERIFICATION.md @@ -1,8 +1,8 @@ -# uROS - Verificación del Sistema +# HeliOS - Verificación del Sistema ## ✅ Estado del Proyecto -El sistema uROS está **completamente funcional** y listo para demostración. +El sistema HeliOS está **completamente funcional** y listo para demostración. ## Verificación Realizada @@ -19,7 +19,7 @@ make run ✅ **Resultado**: - Banner aparece una sola vez - Sistema se inicializa correctamente -- Prompt `uROS>` aparece y está listo para recibir comandos +- Prompt `HeliOS>` aparece y está listo para recibir comandos ### 3. Comandos Verificados @@ -145,7 +145,7 @@ Sin embargo, el sistema actual es **estable y funcional** para demostración. ## Conclusión -El proyecto uROS está en un estado **EXCELENTE** para demostración: +El proyecto HeliOS está en un estado **EXCELENTE** para demostración: - ✅ Compila sin errores - ✅ Arranca correctamente - ✅ Shell interactiva funcional diff --git a/docs/visualization.html b/docs/visualization.html index 86fd2e8..6110f52 100644 --- a/docs/visualization.html +++ b/docs/visualization.html @@ -3,7 +3,7 @@ - uROS Scheduler Visualization + HeliOS Scheduler Visualization