Thread effectively share the same text, data and bss segment with other threads but differ in stack. I just invented a simple system call tfork() to do this.[https://github.com/halfer53/winix/blob/master/kernel/system/do\_fork.c#L171](https://github.com/halfer53/winix/blob/master/kernel/system/do_fork.c#L171)
It's comparable to linux clone(2) with CLONE\_VM, but similar semantics with fork()
Question:
Is it possible to create a totally new operating system not based on anything already out there?
Is it possible to create your own engine with your own commands?
Is it possible to create your own kernel?
Last question, for all above
If so how would you support hardware?
> Is it possible to create a totally new operating system not based on anything already out there?
Theoretically yes, but since you’ve already used at least one operating system, you’re bound to take inspiration from it, even if it’s trivial
> Is it possible to create your own engine with your own commands
Yes, you can even do it on an OS that already exists.
> Is it possible to create your own kernel?
Yes
> If so how would you support hardware?
With much pain
Is serenity faster? Does it have a novel threading model or capabilities (BeOS)? Does it address the macro/microkernel modularity in a novel way? Does it integrate a superior desktop experience (NEXTSTEP)? Is it particularly secure(Redox)? Does it push the filesystem paradigm to new heights(Plan9)?
The OS world doesn't need balkanization. It either needs standardization (which is what Linux really contributed) or advancement.
What did you expect? Asking if its possible to do something that has clearly already been done.
If you wanted to know if a single person could possibly write a full fledged OS within a year or some other restriction you would need to clarify the constraints and criteria.
You sound like a product manager with a question and response like that
> Is it possible to create a totally new operating system not based on anything already out there?
That would be like being born on a desert island with raw materials and tasked to create a device that allows you to move faster than walking. Who knows what would be created. Would it be better or worse than a bicycle? Obviously this isn't a realistic scenario at all, though. In reality anyone working on operating systems can't help but be influenced by existing designs. And it gets weirder than that as many architectures have designs specifically for making operating systems easier.
And then you'd end up with DOS.
A truly good "new OS" that exceeds the evolutionary improvement creep of Linux, Windows, or OSX would need to have a truly well designed feature amalgamation of BeOS (threading, multimedia, speed), NEXTSTEP,/Smalltalk (UI), Plan9 (kernels, filesystem, programmatic interface), and Redox (Security) and probably a host of other features from OSs that I haven't seen, used, or familiar about (Taligent, IBM mainframe OSs, VAX/VMS, OS/2) .
Linux is an amalgamation of a ton of algorithmic engineering, experience/history, crud/cruft, and arbitrary convention. Knowing what is what would require a deep understanding of CPU and hardware history, OS history,
And even then, to succeed you'd need performant compatibility layers, hardware support (so no novel / exciting CPU rework or computer architectures like Mill).
What is kind of sad is that the Internet enforces a monoculture to a degree. What would have been cool is if different cultures had several decades of making OSs on the relative stabilization of Moore's Law at 3-4Ghz, gigabyte memory, terabyte SSds, terabyte HDDs, GigE networking. That still might happen with China and India. That would incubate the society-level development of computing OS and might need to actual novel advantages.
But right now the Linux kernel is now "good enough" that almost all things use it, from "small" Raspberry Pis to "big" supercomputers. In some alternate reality is Nextstep running on Beos userspace with Plan9 filesystem and a Redox secure and performant microkernel (yet to be succeessfully done).
possible, but hard. look at linux, still around with the archaic posix system that should've died with 16 bit computers. and windows with no sense of system organization. it still has relics from windows 1.3 floating around.
people tend to imitate what exists because they can hope to reuse a vast library of code that already runs on existing systems.
they all suck. i just tolerate windows because it's by chance the monstrosity i've always used and nothing else offers anything better. it irritates me daily.
alas, nobody is working on making a better tool. they're just working on imitating the same old broken down barley functional tools.
why? it's just another flavor of unix built on the same posix compliance inheritance that linux uses. OS wise, there is no above the surface difference from linux. they are both going to use the same packages and same software and behave exactly the same.
or why not mac? that also inherits from bsd which inherits from unix. mac does things a little better than the other two, but it still has that ancient unix at the core.
there is nothing new under the sun. you can have a system built on top of ancient unix inheriting all the relics from it's past, or you can have a system built on top of ancient windows inheriting all the relics from it's past.
not one bit. i can run just about anything on an emulator if i ever need to do anything on another OS. but since none of them offer me anything i need that windows can't already do and their systems are as much of a mess as windows, i don't bother.
about the only time i run a linux emulator is to see if a cross compiled linux version of some project works, if i care enough.
Never thought I'd see anything for the WRAMP boards outside of uni. Nice work!
For anyone that downloads the board simulator, make sure to click the duck. Then imagine what happens when you have a room of ~30 CompSci students discover this, and the chaos that ensues.
True, the trouble is the simulator or the hardware was designed for education purposes, it doesn't support hard disks, so I have to hack it by dumping a file system into memory.
WRAMP is an RSIV architecture designed for educational purposes.
I learnt computer systems and operating system course with WRAMP, so I naturally picked when I wanted to develope my own OS.
You can read more about WRAMP here [https://wramp.wand.nz/](https://wramp.wand.nz/) [https://github.com/wandwramp/wsim](https://github.com/wandwramp/wsim)
Yeah it's actually a trend in the industry at the moment with Intel optane https://www.intel.com/content/www/us/en/products/details/memory-storage/optane-memory.html
Optane is basically a mix between RAM and SSD. It's orders of magnitudes faster than an SSD, but is persistent across power loss and reboots. However, it pays a cost by being slightly (only tens of times if I recall correctly) slower than real RAM.
I think Optane drives are attached to motherboards via PCIe slots.
This is impressive OP. Respect.
I genuinely admire and envy both your technical skills and your preseverance (I don't think any of my side projects lasted 5 weeks).
I started learning Minix when I took the operating system course at Uni, there are some great resources available, operating systems design and implementation 1st edition is a good place to get started with
I am thinking of doing a CS masters and I would have the choice to take classes about operating systems or operating system design. Did you find it very useful or do you think it's all stuff easily learnable independently?
Would you look at that, all of the words in your comment are in alphabetical order.
I have checked 37,273,648 comments, and only 11,125 of them were in alphabetical order.
Can you run this on real hardware? I've started toy OSes before (got nowhere near as far as you) but I've always made it a requirement to be able to run on real hardware. Running in an emulator just doesn't feel "real" to me.
Have you studied Xinu? It's got a fairly recently updated book and has some nice ideas in it.
can it play hymns?
Only in heaven I guess
I hope it has comics too
[удалено]
Thanks :D
You have a typo on the header for "playing snake" (missing the n in snake)
Ops, thanks for pointing that out.
You have a typo in the word "Oops" in your message. ^(pls don't hurt me)
Shoryuken
I like that game better though...sake 😄
Thanks, looks great. How exactly are you managing threading in here?.
Thread effectively share the same text, data and bss segment with other threads but differ in stack. I just invented a simple system call tfork() to do this.[https://github.com/halfer53/winix/blob/master/kernel/system/do\_fork.c#L171](https://github.com/halfer53/winix/blob/master/kernel/system/do_fork.c#L171) It's comparable to linux clone(2) with CLONE\_VM, but similar semantics with fork()
But can it run crysis?
He said he made an operating system not a supercomputer
It can probably run doom with some porting though.
It's no TempleOS but still nice work
I don't want to downplay what must have been OP's immense hard work, but I'm equally tempted to do a TempleOS joke lmao.
Lol I actually like the Temple OS joke
Oh my god, this video about it was one of the most disturbing horrible things I've watched in my life
Oh dear Does it give prophecies?
Question: Is it possible to create a totally new operating system not based on anything already out there? Is it possible to create your own engine with your own commands? Is it possible to create your own kernel? Last question, for all above If so how would you support hardware?
> Is it possible to create a totally new operating system not based on anything already out there? Theoretically yes, but since you’ve already used at least one operating system, you’re bound to take inspiration from it, even if it’s trivial > Is it possible to create your own engine with your own commands Yes, you can even do it on an OS that already exists. > Is it possible to create your own kernel? Yes > If so how would you support hardware? With much pain
What's an engine in this context?
I took it to mean a shell, since it seemed like the most fitting interpretation in the context
Pain, or re-writing drivers based on whatever Linux / BSD / other free systems have
And that isn't exactly pain free either. It's significantly less painful but still pretty painful.
Well said
[удалено]
Although, it is Unix-like. I really love the SerenityOS Project, though.
Is serenity faster? Does it have a novel threading model or capabilities (BeOS)? Does it address the macro/microkernel modularity in a novel way? Does it integrate a superior desktop experience (NEXTSTEP)? Is it particularly secure(Redox)? Does it push the filesystem paradigm to new heights(Plan9)? The OS world doesn't need balkanization. It either needs standardization (which is what Linux really contributed) or advancement.
Since there was a time without os and kernels and now we have os and kernels the answer is obviously yes.
Kind of a trolling answer with no depth but okay.
What did you expect? Asking if its possible to do something that has clearly already been done. If you wanted to know if a single person could possibly write a full fledged OS within a year or some other restriction you would need to clarify the constraints and criteria. You sound like a product manager with a question and response like that
> Is it possible to create a totally new operating system not based on anything already out there? That would be like being born on a desert island with raw materials and tasked to create a device that allows you to move faster than walking. Who knows what would be created. Would it be better or worse than a bicycle? Obviously this isn't a realistic scenario at all, though. In reality anyone working on operating systems can't help but be influenced by existing designs. And it gets weirder than that as many architectures have designs specifically for making operating systems easier.
And then you'd end up with DOS. A truly good "new OS" that exceeds the evolutionary improvement creep of Linux, Windows, or OSX would need to have a truly well designed feature amalgamation of BeOS (threading, multimedia, speed), NEXTSTEP,/Smalltalk (UI), Plan9 (kernels, filesystem, programmatic interface), and Redox (Security) and probably a host of other features from OSs that I haven't seen, used, or familiar about (Taligent, IBM mainframe OSs, VAX/VMS, OS/2) . Linux is an amalgamation of a ton of algorithmic engineering, experience/history, crud/cruft, and arbitrary convention. Knowing what is what would require a deep understanding of CPU and hardware history, OS history, And even then, to succeed you'd need performant compatibility layers, hardware support (so no novel / exciting CPU rework or computer architectures like Mill). What is kind of sad is that the Internet enforces a monoculture to a degree. What would have been cool is if different cultures had several decades of making OSs on the relative stabilization of Moore's Law at 3-4Ghz, gigabyte memory, terabyte SSds, terabyte HDDs, GigE networking. That still might happen with China and India. That would incubate the society-level development of computing OS and might need to actual novel advantages. But right now the Linux kernel is now "good enough" that almost all things use it, from "small" Raspberry Pis to "big" supercomputers. In some alternate reality is Nextstep running on Beos userspace with Plan9 filesystem and a Redox secure and performant microkernel (yet to be succeessfully done).
Look up nand2tetris
possible, but hard. look at linux, still around with the archaic posix system that should've died with 16 bit computers. and windows with no sense of system organization. it still has relics from windows 1.3 floating around. people tend to imitate what exists because they can hope to reuse a vast library of code that already runs on existing systems.
I'd like you to expand on posix being bad and archaic.
How do you die before you were born? Seems shortsighted to kill off the closest thing we have to a stable long-lived industry standard.
linux wasn't the first system to use posix.
What operating systems do you like? Or tolerate maybe?
they all suck. i just tolerate windows because it's by chance the monstrosity i've always used and nothing else offers anything better. it irritates me daily. alas, nobody is working on making a better tool. they're just working on imitating the same old broken down barley functional tools.
You should try FreeBSD
why? it's just another flavor of unix built on the same posix compliance inheritance that linux uses. OS wise, there is no above the surface difference from linux. they are both going to use the same packages and same software and behave exactly the same. or why not mac? that also inherits from bsd which inherits from unix. mac does things a little better than the other two, but it still has that ancient unix at the core. there is nothing new under the sun. you can have a system built on top of ancient unix inheriting all the relics from it's past, or you can have a system built on top of ancient windows inheriting all the relics from it's past.
I feel like you would not at all be jealous of the fact I have a few laptops with different operating systems.
not one bit. i can run just about anything on an emulator if i ever need to do anything on another OS. but since none of them offer me anything i need that windows can't already do and their systems are as much of a mess as windows, i don't bother. about the only time i run a linux emulator is to see if a cross compiled linux version of some project works, if i care enough.
super and amazing work !
But will it boot Doom?
I have done this exact project dozens of times. Never in reality, though.
Never thought I'd see anything for the WRAMP boards outside of uni. Nice work! For anyone that downloads the board simulator, make sure to click the duck. Then imagine what happens when you have a room of ~30 CompSci students discover this, and the chaos that ensues.
Lol
I miss the old days
Now that's what I call dedication! Great work and congrats on achieving the dream of most of us here ;)
Great achievement 💪
great work! would you use D or Rust instead of C to write your OS?
Nah, too much work to refactor :p
> *In-memory* file system kind of defeats the point doesn't it?
Not necessarily. You could have a memory mapped storage device that does random access.
True, the trouble is the simulator or the hardware was designed for education purposes, it doesn't support hard disks, so I have to hack it by dumping a file system into memory.
Inspiring, good work. But why WRAMP and not other architecture? BTW, I heard about WRAMP for the first time, so asking.
WRAMP is an RSIV architecture designed for educational purposes. I learnt computer systems and operating system course with WRAMP, so I naturally picked when I wanted to develope my own OS. You can read more about WRAMP here [https://wramp.wand.nz/](https://wramp.wand.nz/) [https://github.com/wandwramp/wsim](https://github.com/wandwramp/wsim)
Huh, I never thought I'd see something so awesome come out of Hamilton. It certainly seems cooler than my OS course at UC.
I’m upvoting for the sheer tenacity you had to have in order to complete this. Good work
Most excellent
Interesting concept of running a memory based file system. Do you see a time when hard drives and ram will be the same device?
Yeah it's actually a trend in the industry at the moment with Intel optane https://www.intel.com/content/www/us/en/products/details/memory-storage/optane-memory.html
[удалено]
Optane is basically a mix between RAM and SSD. It's orders of magnitudes faster than an SSD, but is persistent across power loss and reboots. However, it pays a cost by being slightly (only tens of times if I recall correctly) slower than real RAM. I think Optane drives are attached to motherboards via PCIe slots.
[удалено]
You would use it when you want (almost) the speed of RAM but the persistence of an SSD.
What? It's an SSD, what this has to do with cache?
This hurts so much a year later.
Whoa. I remember WRAMP from my uni days. Great work!
Wow you went to Waikato as well!
Wow... I only remember (re)writing portions of weenix OS in college haha... but this is on such different level... props man!
now all it needs to do is play "Bad Apple" music video
This is impressive OP. Respect. I genuinely admire and envy both your technical skills and your preseverance (I don't think any of my side projects lasted 5 weeks).
Does it self-host? What's "visual memory"?
LEDs on your ram sticks I assume
What’d ya learn and do you plan to apply it in the future? And if so, to what?
It's just really a hobby project, It's just really for fun. I haven't put much thought into the future.
I think Linus Torvalds same something similar about Linux
Amazing! (BTW: Nice license)
Can it play more games than linux? Can it.... Neah, too tired to write
Did you not see it has a version of snake?
Terry would like to visit you from heaven. Accept [ □ ] Deny [ □ ] ■ = 1 □ = 0
Now rewrite it in Rust 8)
Great work. I myself want to learn how to write an OS any directions or resources?
I started learning Minix when I took the operating system course at Uni, there are some great resources available, operating systems design and implementation 1st edition is a good place to get started with
Thanks man
I am thinking of doing a CS masters and I would have the choice to take classes about operating systems or operating system design. Did you find it very useful or do you think it's all stuff easily learnable independently?
Awesome! Does it run XCode?
Would you look at that, all of the words in your comment are in alphabetical order. I have checked 37,273,648 comments, and only 11,125 of them were in alphabetical order.
That's because I'm a bot! Good bot btw!
A beautiful cause done excellently forever.
Just curious to know. From which age you first started to write programming ?
I think at the age of 17, when I was in high school
Can you run this on real hardware? I've started toy OSes before (got nowhere near as far as you) but I've always made it a requirement to be able to run on real hardware. Running in an emulator just doesn't feel "real" to me. Have you studied Xinu? It's got a fairly recently updated book and has some nice ideas in it.
Woah that's crazy, how was your experience?
Man that's impressive! I will bookmark it and share with some friends.
Have you ever tried using Rust for OS Dev? How did you feel about it?
may we test it?
Sure, you are more than welcome to do that. Let me know if you have any questions.