Ok, since my Adventure Hame OS Idea I have spent a little time here and there thinking about implementing an “os” in uxn.

I think one of the main things that has been me working things out has been what a kernel would look like on uxn now pretty much seems like a bunch of wasted though.

Why write a kernel for it when uxn basically already is a kernel. It already supplies almost all of the important hardware abstraction needed.

My proposal is... no kernel.

Not as such anyhow.

What, in my mind, a uxn ‘os’ would look like is basically 3 applications.

A memory manager, this launches applications and keeps tabs on where in memory they all are.

A shell, it’s a shell. It allows you to interact with the file system and stuff. (Technically made up of lots of smaller applications that get called)

An assembler that gives you access to some sort of standard library of convenient methods.

Now, I haven’t fully fleshed out how this works. It’s fully possible I am still barking up the wrong tree.

However, I see it working a bit like this:

You first launch the memory manager. It always sits at the same spot in memory and reserves most of the zero page for operating.

It provides a set of methods at fixed locations used for launching, tracking and clearing applications from memory.

The memory manager kicks the shell into life and then retires into the background.

The shell, when commands are invoked, passes the compiled binary off to the memory manager to launch using methods to interact with the memory manage from the standard lib.

This is all very rough. I really don’t see the need for the traditional bootloader/ kernel implementation here though.

There is an argument to be made that the memory manager is a kernel, but really it’s only half a kernel living in user space. It cares nothing for peripherals at all, leaving all of that up to the host system.

In return the host system gives not a hoot about how the uxn processor deals with it’s useable memory locations.

Anyhow, you see where about I am right now.

As an extra thought:

The memory manager is also going to have to be in charge of swapping what the vectors point at between applications.

It’s not much use swapping from a text editor to something else and back if the memory manager doesn’t also swap the vectors in and out for each application lifecycle.

Maybe it does have to act a bit more like a traditional kernel than original intended.

I am still not sure providing a full kernel that provides a metaphor such as everything being a file has a huge amount of relevance on uxn though.

@jameschip This sounds intriguing, but I need some context to follow along ... can you point me at something that starts the conversation about "uxn"?


@jameschip Site bookmarked ... thank you. Looks intriguing. I doubt that I have the skills or time to get involved, but I'll enjoy a peruse.

Typo on this page: 100r.co/site/sailing.html


My Chartodon 'bot couldn't chart your thread ... is your account locked in some way?

· · Web · 0 · 0 · 0
Sign in to participate in the conversation

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!