-
AcadiaOS 0.1.0 Stable
released this
2023-12-05 18:06:47 -08:00 | 135 commits to main since this releaseThis marks the first release of AcadiaOS! There is very little user functionality currently but a
lot of foundational work has been done.Zion Kernel
Capability-based microkernel.
Boot Process:
- Initializes GDT and IDT.
- Sets up a separate stack for page faults and general protection faults.
- Enables SSE.
- Minimally initializes the APIC in order to use its timer as well as map the PS/2 Keyboard and PCI
interrupts. - Enables Syscalls using the sysenter instruction.
- Enables the scheduler.
- Loads the Yellowstone init program and yields to it.
Features:
- Physical memory manager can dole out single pages as well as continuous chunks. Freed pages and
chunks can be reused. - Kernel memory allocation done primarily using a slab allocator for sizes up to 128 bytes. (Larger
allocations are done by simply incrementing a pointer and are never truly freed. However currently
none occur.). - Round robin scheduler with a single priority level.
Interface:
- Capability-based interface.
- Process Management: ProcessInit, ProcessExit.
- Thread Management: ThreadCreate, ThreadStart, ThreadExit.
- Memory Management: MemoryObjectCreate, MemoryObjectCreateContiguous, MemoryObjectCreatePhysical,
MemoryObjectDuplicate, MemoryObjectInspect, AddressSpaceMap, AddressSpaceUnmap. - IPC with Channels, Ports, and Endpoints.
- Channel: ChannelCreate, ChannelSend, ChannelRecv.
- Ports: PortCreate, PortSend, PortRecv, PortPoll.
- Endpoints: EndpointCreate, EndpointSend, EndpointRecv, ReplyPortSend, ReplyPortRecv.
- Capability Management: CapDuplicate, CapRelease.
- Irq Management: IrqRegister.
- Synchronization: ProcessWait, ThreadWait, MutexCreate, MutexLock, MutexRelease, SemaphoreCreate,
SemaphoreWait, SemaphoreSignal. - Debug Output: Debug.
Yellowstone
Initialization process that starts up the other necessary boot processes then maintains a registry
of the available IPC Servers running on the system.- Spawns the AHCI Client "Denali".
- Once it is online, reads the GPT and spawns the VFS service "VictoriaFallS".
- Once it is online, reads "init.txt" and spawns the processes listed in the file from the /bin dir.
Denali
Barebones AHCI Driver.
- Reads the SATA PCI region the HBAs associated with it.
- Starts the Denali service to allow clients to read directly from disk.
- Currently only one command port is used so reads are done in serial.
VictoriaFallS
Barebones VFS Server. Currently passes all calls to it directly to the ext2 filesystem at the root
of the VFS.- Allows reading of files and directories.
- Does not cache results or inodes so all calls go directly to the AHCI Server.
Teton
Very basic terminal and shell.
- Supports ls, pwd, cd, and exec commands.
- All commands must use absolute paths.
- Starts a child process when using exec and waits for it to complete.
Yunq
IDL for IPC on AcadiaOS with cpp codegen for messages, clients, and servers.
- Supports serializing capabilities for IPC.
- Supports repeated integer fields.
- Supports string files.
- Allows namespacing cpp definitions.
Downloads