Serena OS is not just another operating system—it’s a playground for hackers, tinkerers, and Amiga enthusiasts pushing vintage hardware to new limits. Born from modern design principles and featuring pervasive preemptive concurrency and multi-user support, [dplanitzer]’s Serena OS is far from ordinary.
Running on Amiga systems with a 68030 or better CPU, it challenges traditional OS concepts by ditching threads in favor of dispatch queues, akin to Apple’s Grand Central Dispatch. The result? A dynamic, flexible kernel that combines forward-thinking design with retro charm.
The real innovation in Serena is its kernel, which uses a virtual processor concept to manage system resources efficiently. Instead of threads, Serena dynamically adjusts a pool of virtual processors based on dispatch queue needs, ensuring tasks are executed with precision and speed. Interrupt handling is also unique: interrupts are converted into semaphore signals, allowing the code to handle these signals at its convenience without missing any, making hardware interactions more controlled, especially where timing is critical.
For Amiga enthusiasts already customizing their setups, Serena OS offers new possibilities. It shares some spirit with projects like AROS (Amiga Research Operating System) but adds its own twist with object-oriented design and cross-platform goals. Whether you’re developing software for your classic Amiga or exploring new hardware interfaces, Serena OS provides a robust and adaptable foundation.
The Amiga depicted in the article’s header image would not be able to run SerenaOS. The Amiga 2000 did not originally ship with a 68030-class CPU.
How did you look inside it?
The particular A2000 in the image has an 030 accelerator card.
Nothing innovative here. Windows ME tried this concept and it was such a shitshow.
Source/docs/context?
from memory they might be talking about the Win32 ThreadPool kernel subsystem introduced in Vista, upon which the TPL builds it’s task processing capability upon
Damn. A missed Deadpool variant? Threadpool would have been better than Headpool!
I thought the special thing about Windows ME was that it was the last version based on DOS.
LOL!!! What do you expect from the bloatware that Microsoft produces?? AmigaOS is extremely resource efficient. It’ll easily boot to Workbench with 2 MB of RAM in a few seconds.
Source for this?
That all sounds fine and good but I’m not touching it until I hear they kept the Guru Meditation.
i think it’s interesting that this has not one but two ‘innovations’ that aren’t anything but rehashes (and i appreciate that the write up made that easy to understand :) ). which isn’t an insult, because how you think about things does matter even if fundamentally it’s the same under the covers.
i just read a summary of ‘grand central dispatch’ and it’s just threads. it’s just threads. i assume that if you use threads in java then the underlying implementation dispatches it to a pool of OS threads just like grand central dispatch does. the only ‘innovation’ is that they say their threads are cheaper than the OS threads, which, ok, but it’s just light threads. it’s threads. at best, there’s just this tiny improvement you can get by saying “call my function when select() wouldn’t block” instead of “call my function now and let it block in select()”. on the other hand, i wouldn’t be surprised if it is “pretty slick” once you pervasively move the blocking into the precondition.
though, i mean, we’re talking about whether it’s best to do a loop on read(), knowing that read() may block, or to dispatch a new thread that has a precondition that it can’t be executed until read would not block…and dispatching that again each time (so there is no loop — you just dispatch something that dispatches itself repeatedly until it’s done). it’s actually exactly the same — what kind of data structures do you think the kernel uses to keep track of blocked threads? — but how you think about it does matter. it’s very much like ‘continuation passing style’ — a beautiful mind-f!@# for the sophomore computer science curriculum, but after enough meditation it becomes a six of one versus half a dozen kind of thing. of course if you’re actually writing a compiler then these little philosophical differences can really change your perspective.
and the other thing is treating hardware interrupts like semaphores. i have no doubt that, as a toy OS, they’ve done it more cleanly than “a real kernel”. but i’ve been aware of ‘bottom halves’ in linux kernel for 20 years now. the interrupt does the bare minimum to satisfy the hardware constraints, copies things into a buffer if they absolutely must be copied right now, and then triggers a ‘bottom half handler’, which the kernel schedules asynchronously. this is vaguely related to why linux these days allocates dozens / hundreds of pids for kernel tasks. that’s the exact same as this innovation. but again, maybe knowing that’s where you’re starting, rather than that being where you wind up after a decade of struggling with I/O hardware, it might be “pretty slick.”
anyways thanks for something to think about
You seem to be knowledgeable. Maybe you can contribute to the project:
https://github.com/dplanitzer/Serena
I’m an old Amiga Nerd age 66 and from Norway. I’ve had once upon a time several model’s like A500, A600, A1000, A1200 and A4000. But that’s a long time ago. Today I’ve might have a A1200 in a room whee my cousin put everything rare inside. But my opinion is that Amiga was, and still are one of the best computers available both when it came and probably also for eternity. My last program to use active was Scala. God save Amiga.
It’s a shame earlier 68000 and 68010 procs aren’t supported. I have 2 X 2000s and a 500 I’d like to tinker with.
Slap a PiStorm in them and get a 68030….
No MMU though, which you need.
I imagine that’s the way to go (I might even cave and pick one up despite being more ‘purist’) and for the best with targeting later models, those guys always seem to be clamoring for more/better OS/SW support for their hardware, especially with all the dead end AmigaOS update revivals.
Since we originally reported about the project (already months ago about the first version), the developer is active on our website. So maybe you can find some interesting facts about it:
https://www.amiga-news.de/de/news/AN-2024-08-00046-DE.html
(German version where he comments)
https://www.amiga-news.de/en/news/AN-2024-08-00046-EN.html
(English version with many additional facts provided by the developer)
Shame you didn’t post screenshots and/or video of it running.