4 ms·
Unix-like is definitely a misnomer, and I've gone ahead and removed it from the home page. It might've been true many years ago, but it's no longer the case. a
by codyd51 3y ago
Unix-like is definitely a misnomer, and I've gone ahead and removed it from the home page. It might've been true many years ago, but it's no longer the case.
axle is fundamentally organised around structured messages. This mechanism is used both for interaction between userspace applications, and for nearly all interaction between kernel and userspace.
For example, creating a process, allocating virtual memory regions, profiling the system and registering process hooks, are all just special messages that are sent to the kernel, rather than to another userspace app. Want to transmit a packet? If you have the rights, send a message to the NIC. Want to create a window on the desktop, or update its contents? Send a message to the window manager. It'll send some messages back to you when the user interacts with your content. The GUI toolkits use custom idioms. It's certainly true that axle reuses some common ideas (like featuring a desktop environment, and a process model), but I'm happy to go my own way from there!
It's also true, as pjmlp mentioned, that some level of POSIX compatibility is necessary if you want to run external software, which I certainly do! DOOM, for example, requires read() and write(), among other common syscalls. If you want to run, say, GCC, you need fork().
- ianai 3y agoSounds very similar to objective-c.
- pavlov 3y agoQNX is the canonical example of this kind of OS kernel. Everything happens by calling MsgSend(). https://en.wikipedia.org/wiki/QNX https://en.wikipedia.org/wiki/QNX It’s quite successful in the embedded space.
- ksaj 3y agoQNX is where I initially learned my Unix-like ways. Because of that exposure, I was never enthusiastic about what I saw as extreme limitations of Microsoft DOS and then Windows when I discovered them. One thing that really set it apart at the time, is that you could have a fully functional desktop environment boot off a single diskette. So much power in so little space. And it had features I still never see in current OS's. (For example, in QPaint you could save graphical images as a C header file. Weird perhaps, but awesome if you were making a graphical application.) It's all arguable nowadays I suppose, but I've grown so much with Unix-like OS's that it's a very hard sell.
- ianai 3y agoIt’s awesome for me to find out QNX is message based. It makes sense though - I knew it was a microkernel. It’d be a lot easier to have a solid, real time OS if the kernel is minimal and just accepts/serves requests. Sounds like an interesting engineering project. As for “why posix”. Any OS gains decades and decades of work by simply adhering to posix. It might not be perfect with only that but doing only that does have huge benefits. It might be boring to some, but it’s not like there’s a Windows standard a new OS can easily target and at no financial cost.
- CrampusDestrus 3y agoThank you for listening and making this correction. This is your personal project so there ks really no need to "sell" this OS to anybody, but maybe a clearer elevator pitch in the home page about what makes this project different (a bit like you wrote in your reply) might dispel a few doubts
- codyd51 3y agoOne thing I just realised it's worthwhile to show: the POSIX interfaces I mentioned above are just wrappers around message-passing. For example, read() is a function implemented in an optional userspace library that's available for programs to link against. When invoked, it constructs and sends a message with the right parameters to the filesystem server, and awaits its response: https://github.com/codyd51/axle/blob/paging-demo/programs/subprojects/libfiles/libfiles.c#L186-L210 https://github.com/codyd51/axle/blob/paging-demo/programs/su...