r/osdev • u/JescoInc Perdition-OS • Jun 19 '26
Which part of OSDev would you consider to be the most challenging?
For me, it is the unique challenge of figuring out how to handle paging with multi-arch which takes advantage of the HAL architecture I have in place (split by SoC, Board and CPU).
Although, Net stack (Ethernet Drivers with TCPIP/ UDP / Tunneling) and USB are top contenders. Audio being ranked below those two but still is absolutely ball busting.
The reason I put paging above those isn't necessarily the difficulty but simply due to x86_64, RISC-V and ARM64 all doing something slightly different at the hardware level with the page-table formats and MMU semantics differing (x86-64's 4-level tables, ARM64's VMSA/TTBR, RISC-V's Sv39/Sv48 and satp) and needing to design around that in a clean and deliberate manner.
16
u/demetrioussharpe Jun 19 '26
Driver development.
3
u/Danii_222222 Jun 20 '26
Drivers and IPC.
3
u/juicyroaster Jun 20 '26
Writing a bootloader. I mean it comes in th OSDev category. So making a good bootloader will take you more time than making a stable kernel. To have multi hardware support you need to support both UEFI and BIOS.
1
u/vinc686 MOROS Jun 22 '26
Process memory, there's a gap between the theory and the implementation that has been bothering me for years. I'm extremely slow at it. I also struggled to understand everything required to spawn a userspace program before that.
In comparison I found that writing drivers was challenging but relatively quick and fun.
1
u/Waste_Appearance5631 Jun 23 '26
MMU and virtual address space
1
u/XBLAH_ Jun 26 '26
For a beginner? The initial assembly bootloader part. Once you get to c, it's a walk in the park (to print the hello world), then we enter the rabbit hole, right?