Re: What does your OS look like? (Screen Shots..)
Posted: Sat Jun 22, 2024 10:16 am
is it just me or is it de facto to print 'A' and 'B' when working on multi-threading?
The Place to Start for Operating System Developers
http://f.osdev.org/
I like to differ:
That's the thing - inter-ball collision, in the context of each ball being operated by a separate thread, would be more complicated, so I did not bother. Several balls can occupy the same space, and they can't tell that they are. This is just a test so I know that my scheduler works. It tests thread scheduling, multi-core work stealing, spinlocking (each time a ball thread calls DbgPrint() to print itself at its position, a spin lock is held) and timer expiration.
XD I withdraw my statement.iProgramInCpp wrote: ↑Sun Jun 23, 2024 3:10 amI like to differ:
In the above image, each 'ball' (more of a square) is operated by one thread. They don't collide among each other, though.
In the below image, each particle is operated by a thread. Every now and then a particle is launched from the lower center of the screen, and then after some time it explodes into like 50 other particles. It's a neat way to test my threading infrastructure, I feel. I actually caught some bugs with this test, though mostly due to out of memory errors instead of anything related to my scheduler.
nah it was more of a question I just couldnt remember the word
Code: Select all
Hello.
Setting exception handlers.. done
Initializing page tables.. done
Initializing the virtual filesystem.. done
Starting the timer.. done
Starting the scheduler..
Extracting crtbegin.S (2446 bytes).. done
Extracting bin/wc (304164 bytes).. done
Extracting bin/echo (95248 bytes).. done
Extracting bin/sh (318180 bytes).. done
Extracting bin/cat (306012 bytes).. done
Extracting user.elf (140372 bytes).. done
$ bin/echo hello world
hello world
$ bin/echo hello again
hello again
$ wc crtbegin.S
exec wc failed
$ bin/wc crtbegin.S
142 349 2446 crtbegin.S
$
I expect my first "screenshot" will be serial output too, and maybe more than the first. And I like it because I find VGA text mode screenshots very hard to read. I've always had a problem with the low contrast of normal text in bright-for-bold displays. This is why I pay more attention to GUI screenshots even though I know it's all too easy to build a GUI when the OS underpinnings aren't really there; I can hardly read the text-mode screenshots.
It's pretty easy to be misleading with a serial dump too, of course :p it might have looked, for example, like I have a real filesystem. In fact, there is no "bin/" directory, just files with names like "bin/sh".eekee wrote: ↑Tue Jul 30, 2024 4:08 am I expect my first "screenshot" will be serial output too, and maybe more than the first. And I like it because I find VGA text mode screenshots very hard to read. I've always had a problem with the low contrast of normal text in bright-for-bold displays. This is why I pay more attention to GUI screenshots even though I know it's all too easy to build a GUI when the OS underpinnings aren't really there; I can hardly read the text-mode screenshots.
Oh, the old 'just accept / in filenames' trick! But it's not really a trick, just a simplification which I guess may be suboptimal for full-featured filesystems. (I've never written a filesystem.) Tar stored paths this way.lambduh wrote: ↑Fri Aug 02, 2024 8:36 amIt's pretty easy to be misleading with a serial dump too, of course :p it might have looked, for example, like I have a real filesystem. In fact, there is no "bin/" directory, just files with names like "bin/sh".eekee wrote: ↑Tue Jul 30, 2024 4:08 am I expect my first "screenshot" will be serial output too, and maybe more than the first. And I like it because I find VGA text mode screenshots very hard to read. I've always had a problem with the low contrast of normal text in bright-for-bold displays. This is why I pay more attention to GUI screenshots even though I know it's all too easy to build a GUI when the OS underpinnings aren't really there; I can hardly read the text-mode screenshots.
Me either. I might initially target 32-bit PC as that's the only architecture my compiler supports, as baby steps in porting the compiler and its library, but I want to go for ARM32 after that. Maybe ARM64.lambduh wrote: ↑Fri Aug 02, 2024 8:36 am Fortunately I won't need to deal with VGA at all because I'm not targeting PC architecture. I plan on writing a framebuffer terminal when the user space is more stable because I do eventually want to run on real hardware, but as long as I'm only in virtual machines, nothing's going to work better than serial.
I'd suggest you avoid ARM32, because the architecture is a mess. Unless you limit yourself to ARMv7, then it is pretty sane. But attempting to support all ARM architecture versions up to 7 (or even just v4-v7, the range of the EABI) is pretty demanding. ARMv4 didn't even have compare-and-swap.