AsifOS (educational) is a fully-functioning Operating System from scratch for learning purposes.
The wonders of Operating Systems, especially how they are implemented, always fascinated me. I thought about how a software can actually communicate with the hardware, what happens when we press a key in the keyboard and how a process can read it. With this project I am blessed with the knowledge and wonders of Low-Level computing.
- Bootloader implemented in Intel Real Mode (i8086 16-bit), which will be a raw bootable machine code.
- Small part of bootloader loading the kernel and the entire kernel implementation in Intel Protected Mode (i80386 32-bit).
- The kernel is written in C entirely, the best programming language ever created.
- Memory Management using Paging and Heap.
- Virtual File Systems.
- FAT16 file system implementation.
- Hardware level interrupts using Intel's 8259A PIC.
- Implementation of Disk Drivers.
- PS/2 Keyboard driver.
- Implementation of Processes and Threads/Tasks.
- Preemptive multi-tasking using Round-Robin schedular algorithm.
- Implementation of loading processes from raw binary and 32-bit ELF file format, used by famous OS's like Linux.
- Kernel and user space protections.
- Kernel Commands with interrupt driven System Calls.
- A user space shell program to interact with the Operating System.
- Other miscellaneous implementations like TTY and other microarchitecture related stuff.
Note: AsifOS only supports i386 architecture and BIOS boot for now.
Linux: Install the i386-elf-toolchain
and nasm
according to the distro you are using (Good luck with Ubuntu). We need qemu
for testing as well.
MacOS: Try nativeos/homebrew-i386-elf-toolchain, install nasm
and qemu
with regular homebrew formulae. Haven't tested in Macintosh.
Windows: May God have mercy on your soul.
Just invoke run.sh
. It will then invoke make
to build the entire project generating os.img
and then run it with qemu-system-i386
.
This project is not production ready, I did this project for educational purposes only. Check out AsifOS (production), which I am currently working on.
Peace.