Compare commits
No commits in common. "f1c67d88ed391ed28dfd46067a2b8d317fc327ae" and "815a603c1c8d646581f1286d3a2047b64bca1f9f" have entirely different histories.
f1c67d88ed
...
815a603c1c
89
RELEASES.md
89
RELEASES.md
|
@ -1,89 +0,0 @@
|
||||||
# Releases
|
|
||||||
|
|
||||||
## AcadiaOS 0.1.0 (2023-12-08)
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
# System TODO
|
# System TODO
|
||||||
|
|
||||||
|
## Yellowstone
|
||||||
|
|
||||||
|
- Start the next service from a configuration file.
|
||||||
|
|
||||||
## Denali
|
## Denali
|
||||||
|
|
||||||
- Add the ability to send multiple Ahci commands at once.
|
- Add the ability to send multiple Ahci commands at once.
|
||||||
|
|
||||||
## VictoriaFalls
|
## VictoriaFalls
|
||||||
|
|
||||||
- Cache the fs structure rather than reading it each time.
|
|
||||||
|
|
10
zion/TODO.md
10
zion/TODO.md
|
@ -17,9 +17,19 @@
|
||||||
|
|
||||||
- Use a buddy allocator with a real free when an object is too large for
|
- Use a buddy allocator with a real free when an object is too large for
|
||||||
the slab allocator.
|
the slab allocator.
|
||||||
|
- Free kernel stacks on thread/process exit.
|
||||||
|
|
||||||
|
## Process Management
|
||||||
|
|
||||||
|
- Clean up process state and capabilities when it exits.
|
||||||
|
|
||||||
|
## Processor
|
||||||
|
|
||||||
|
- Enable all instruction types before passing to user space.
|
||||||
|
|
||||||
## Faults and Interrupts
|
## Faults and Interrupts
|
||||||
|
|
||||||
|
- Exit process rather than panicking on unhandled Page Fault (and others).
|
||||||
- Add additional fault handlers to avoid GP faults.
|
- Add additional fault handlers to avoid GP faults.
|
||||||
- Improve process for registering interrupt handlers.
|
- Improve process for registering interrupt handlers.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue