• 0.1.0 594a6aac54

    drew released this 2023-12-05 18:06:47 -08:00 | 135 commits to main since this release

    This 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