When offset2 != 0 it doesn't necessarily mean that we need an extra page. Fix calculation to map extra page only when necesarry. This is needed as next page may be unavailable like when available RAM follows XSDT and hence not available for mapping. |
||
---|---|---|
apps | ||
arch | ||
boot/x86 | ||
desktop | ||
drivers | ||
help | ||
kernel | ||
ports | ||
res | ||
shared | ||
util | ||
.gitignore | ||
LICENSE.md | ||
README.md | ||
start.sh |
README.md
Essence — An Operating System
Video demonstration as of October 2021, running on real hardware: (YouTube)
Links
For discussion, join our Discord server: https://discord.gg/skeP9ZGDK8.
Alternatively, visit the forums (not very active): https://essence.handmade.network/forums.
Supporters
To support development, you can donate to my Patreon: https://www.patreon.com/nakst.
Essence was a recipient of the prestigious 2021 Icculus Microgrant. You can view more details here: https://icculus.org/microgrant/.
Testing
You can download and test the latest nightly build from https://github.com/nakst/build-essence/releases. Download and extract Essence.tar.xz
. If you are using VirtualBox, import Essence.ova
. If you are using Qemu, run
qemu-kvm -drive file=drive,format=raw -m 2048 -smp 2 || qemu-system-x86_64 -enable-kvm -drive file=drive,format=raw -m 2048 -smp 2
These builds are configured to run on emulators only, to make testing easier. Builds for real hardware are coming soon :)
Building
See help/Building.md
for a description of how to build and test the system.
Features
Kernel
- Filesystem independent cache manager.
- Memory manager with shared memory, memory-mapped files and multithreaded paging zeroing and working set balancing.
- Networking stack for TCP/IP.
- Scheduler with multiple priority levels and priority inversion.
- On-demand module loading.
- Virtual filesystem.
- Window manager.
- Audio mixer. (being rewritten)
- Optional POSIX subsystem, capable of running GCC and some Busybox tools.
Applications
- File Manager
- Text Editor
- IRC Client
- System Monitor
Ports
- Bochs
- GCC and Binutils
- FFmpeg
- Mesa (for software-rendered OpenGL)
- Musl
Drivers
- Power management: ACPI with ACPICA.
- Secondary storage: IDE, AHCI and NVMe.
- Graphics: BGA and SVGA.
- Read-write filesystems: EssenceFS.
- Read-only filesystems: Ext2, FAT, NTFS, ISO9660.
- Audio: HD Audio.
- NICs: 8254x.
- USB: XHCI, bulk storage devices, human interface devices.
Desktop
- Custom user interface library.
- Software vector renderer with complex animation support.
- Tabbed windows.
- Multi-lingual text rendering and layout with FreeType and Harfbuzz.