Show HN: My from-scratch OS kernel that runs DOOM
51–60 of 90 posts
Re: Show HN: My from-scratch OS kernel that runs DOOM
#52Great work, I would love to have the skills to do something like this, but I can see you had to read lots of specifications to achieve this and thats my weakest point. One silly question you may know: Imagine you wanted to use GPU acceleration, even in the smallest form. How hard would it be to build a driver for the GPU? Do you think there is good documentation about it?
Umm that's probably the extreme end of OSDev which I likely wouldn't be able to do, at least not for a driver you can buy. Qemu's emulated GPU is documented decently and could be possible, but things like nvidia GPUs are badly documented (and until recently, the docs were fully closed source) - even Linux has issues with this (and I actually see a few other hobby OS devs who just use Linux's GPU drivers in the end).…
I was also thinking about integrated GPUs like the one in a RPi or other SoCs
Re: Show HN: My from-scratch OS kernel that runs DOOM
#53Earlier quoted context omitted.
> A few months work by one guy and already more capable than the Hurd It is no way capable than Hurd. It is a cool project though. Have you used Hurd recently? It can run a modern desktop.
I searched YouTube for actual evidence of Hurd booting to a desktop and only found two videos of Hurd freezing during boot, and a third video of RMS explaining to a very confused convention attendee that he's "never installed GNU slash lynn-ox" because he could just ask someone else to do it. No videos of Hurd running Doom either, but anyone is welcome to create one and share.
Re: Show HN: My from-scratch OS kernel that runs DOOM
#54Great work, I would love to have the skills to do something like this, but I can see you had to read lots of specifications to achieve this and thats my weakest point. One silly question you may know: Imagine you wanted to use GPU acceleration, even in the smallest form. How hard would it be to build a driver for the GPU? Do you think there is good documentation about it?
Umm that's probably the extreme end of OSDev which I likely wouldn't be able to do, at least not for a driver you can buy. Qemu's emulated GPU is documented decently and could be possible, but things like nvidia GPUs are badly documented (and until recently, the docs were fully closed source) - even Linux has issues with this (and I actually see a few other hobby OS devs who just use Linux's GPU drivers in the end).…
Re: Show HN: My from-scratch OS kernel that runs DOOM
#55Hi, congratulations! You must be feeling proud. Nice choice of proof of concept (DOOM). Sorry to disappoint you but all I have are some noob questions. What would be the steps to run this on a laptop? I take it that after building it there would be a process similar to, say, setting up dual-boot in a Windows PC? (Whoa I'm asking a stranger on the Internet how to run dangerous software on my computer...) If one wanted…
Re: Show HN: My from-scratch OS kernel that runs DOOM
#56Re: Show HN: My from-scratch OS kernel that runs DOOM
#57Very cool project! How are you handling process isolation and scheduling in TacOS?
I use paging for virtual memory, which gives each process it's own address space. I have a round-robin scheduler connected to the PIT driver, so every 10ms the PIT fires an interrupt which triggers the scheduler, which selects the next task, saves the current state of the previous task, switches to the new address space, switches the stack, restores registers of the task, then uses the iretq instruction to switch to…
Re: Show HN: My from-scratch OS kernel that runs DOOM
#58Why is running doom one of your milestones, given that doom will run fine on bare metal?
Re: Show HN: My from-scratch OS kernel that runs DOOM
#59Cool! Does OS kernel related to CPU model? Can I boot this kernel in KVM?
Re: Show HN: My from-scratch OS kernel that runs DOOM
#60Earlier quoted context omitted.
I use paging for virtual memory, which gives each process it's own address space. I have a round-robin scheduler connected to the PIT driver, so every 10ms the PIT fires an interrupt which triggers the scheduler, which selects the next task, saves the current state of the previous task, switches to the new address space, switches the stack, restores registers of the task, then uses the iretq instruction to switch to…
Thanks for that explanation. I've been doing some low-level programming lately, and I'm getting interested on running stuff bare-metal. Every previous description of multitasking I've seen has been very hand-wavy.