Show HN: Via Hack Club): MyraOS – My 32-bit operating system in C and ASM

Share This Post

Hi HN, I’m Dvir, a young developer. Last year, I got rejected after a job interview because I lacked some CPU knowledge. After that, I decided to deepen my understanding in the low level world and learn how things work under the hood. I decided to try and create an OS in C and ASM as a way to broaden my knowledge in this area.

This took me on the most interesting ride, where I’ve learned about OS theory and low level programming on a whole new level. I’ve spent hours upon hours, blood and tears, while reading different OS theory blogs, learning low level concepts, debugging, testing and working on this project.

I started by reading University books and online blogs, while also watching videos.
Some sources that helped me out were OSDev Wiki (https://wiki.osdev.org/Expanded_Main_Page), OSTEP (https://pages.cs.wisc.edu/~remzi/OSTEP), open-source repositories like MellOS and LemonOS (more advanced), DoomGeneric, and some friends that have built an OS before.

This part was the longest, but also the easiest. I felt like I understood the theory, but still could not connect it into actual code. Sitting down and starting to code was difficult, but I knew that was the next step I needed to take!

I began by working on the bootloader, which is optional since you can use a pre-made one (I too switched to GRUB later), but implementing it was mainly for learning purposes and to warm up on ASM. These were my steps after that:

  1) I started implementing the VGA driver, which gave me the ability to display text.
  2) Interrupts - IDT, ISR, IRQ, which signal to the CPU that a certain event occurred and
  needs handling (such as faults, hardware connected device actions, etc).
  3) Keyboard driver, which enables me to display the same text I type on my keyboard.
  4) PMM (Physical memory management)
  5) Paging and virtual memory management
  6) RTC driver - clock addition (which was, in my opinion, optional)
  7) PIT driver - Ticks every certain amount of time, and also
  8) FS (File System) and physical HDD drivers - for the HDD I chose PATA (HDD
  communication protocol) for simplicity (SATA is a newer but harder option as well).
  For the FS I chose EXT2 (The Second Extended FileSystem), which is a foundational
  linux FS structure introduced in 1993. This FS structure is not the simplest, but is very
  popular in hobby-OS, it is very supported, easy to set up and upgrade to newer EXT
  versions, it has a lot of materials online, compared to other options.
  This was probably the longest and largest feature I had worked on.
  9) Syscall support.
  10) Libc implementation.
  11) Processing and scheduling for multiprocessing.
  12) Here I also made a shell to test it all.


Comments URL: https://news.ycombinator.com/item?id=45715241

Points: 1

# Comments: 0

Source: github.com

Subscribe To Our Newsletter

Get updates and learn from the best

More To Explore

Windows Securitym Hackers Feeds

Zerobase X Lovable Hackathon – 1K USD Prize

Article URL: https://lovable-x-zerobase-hackathon.devpost.com/ Comments URL: https://news.ycombinator.com/item?id=45721920 Points: 1 # Comments: 0 Source: lovable-x-zerobase-hackathon.devpost.com

Do You Want To Boost Your Business?

drop us a line and keep in touch

We are here to help

One of our technicians will be with you shortly.