A 32bit operating system aiming to be able to perform most general purpose tasks. Developed to learn about all the details in the operation of a modern x86 computer. The OS plans to be able to optimize usage of multiple cores by using a GPU style job scheduler for the other cores with asynchronous system calls.
The core design of ApertureOS:
The kernel treats everything as a 'socket'. Although similar to the UNIX abstraction of treating everything as a file, the socket doesn't attempt to generalize into providing any functionality at all. A socket can specify the number of simultaneous connections it can take. Each connection requests the features it desires access to. All actions on sockets are asynchronous and completion is reported to the application through the application message pump. Connections are thread specific. Applications recieve notifications from the OS and optionally from other process by polling a per application socket.
Documentation at http://himanshugoel2797.github.io/ApertureOS/docs/html/
Address Range | Use |
---|---|
0x00000000 -> 0x00100000 | vm86 mode code |
0x00100000 -> 0x10000000 | Kernel Code Memory |
0x10000000 -> 0x20000000 | MMIO |
0x10000000 -> 0x40000000 | Kernel Data Memory |
0x40000000 -> 0xFFFFFFFF | User Memory |
Address Range | Use |
---|---|
0x00000000 -> 0x00100000 | Kernel Managed page heap |
0x00100000 -> 0x40000000 | Kernel Low Memory |
0x40000000 -> 0xEFFFFFFF | User Memory |
0xF0000000 -> 0xFFFFFFFF | Reserved for MMIO |
0xFFFFFFFF+ | Kernel Managed page heap |
-PCI/PCIe support (Proper device power management) -Mouse/Keyboard input (Almost done) -Audio (Intel HDA driver CORB and RIRB buffers not working for some reason) -Networking -Hard disk access, ext2 support (Halfway through) -Multicore initialization -USB support -Fix UEFI boot issues -Window Manager (see himanshugoel2797/Mana project) -User mode desktop environment (see himanshugoel2797/Mana project) -Parse symbol table to allow checking values from debug terminal