I threw away a lot of code today.
I've had a somewhat operational system for a little bit now that's single process and single user, but with the ability to be expanded.
The reason I threw away all that code was because I came to the realization that my solution to expandability wasn't expansive at all. I had been using function pointers for a couple of different tasks and had an overly elaborate way of registering services with the operating system. It had bugged me for a while and it occurred to me that I'm not creating anything new with it. Instead, I'm hacking together some third-rate implementation of object-oriented concepts with all the inherent problems therein.
One thing that I've seriously considered for Ultimate is self modifying OS code. This will, no doubt, sound absolutely insane to anyone in their right mind. I'm not entirely in disagreement, but I believe that in order for an OS to be of any significant worth in this day and age, it must be capable of actively changing the way it reacts to certain problems.
It's not enough to provide a series of modules and load them in as the time comes. Computers are fast enough and machine learning algorithms good enough that there's no reason that the majority of things such as page swapping algorithms shouldn't be dynamically adjustable based on data the system gathers about how it runs. There are situations that the OS will get itself into that cannot necessarily be planned for (cf. the THE operating system), but it should be able to get itself out.
I would go so far as to say that hard coding things like page replacement algorithms as opposed to page replacement managers is to remove any hope of actually creating something new and interesting in favor of something usable.
This may sound silly, but I don't think Ultimate is intended to necessarily be something usable. It's intended to be a platform on which we can put forth all the crazy ideas we have about how OSes ought to work in complete willful defiant ignorance of the sorts of things that 60+ years of OS papers have said that an OS Should Have.
If it turns out to be usable, so much the better.
In large part, I think this is the misunderstanding that have led some people to post things like "Use NetBSD" or "Use Linux".
Completely out of curiousity: Does anyone else out there share my brain space or am I in danger of losing anyone else's interest in this project? I wonder when not too many people comment on the entries I post ; )
I've had a somewhat operational system for a little bit now that's single process and single user, but with the ability to be expanded.
The reason I threw away all that code was because I came to the realization that my solution to expandability wasn't expansive at all. I had been using function pointers for a couple of different tasks and had an overly elaborate way of registering services with the operating system. It had bugged me for a while and it occurred to me that I'm not creating anything new with it. Instead, I'm hacking together some third-rate implementation of object-oriented concepts with all the inherent problems therein.
One thing that I've seriously considered for Ultimate is self modifying OS code. This will, no doubt, sound absolutely insane to anyone in their right mind. I'm not entirely in disagreement, but I believe that in order for an OS to be of any significant worth in this day and age, it must be capable of actively changing the way it reacts to certain problems.
It's not enough to provide a series of modules and load them in as the time comes. Computers are fast enough and machine learning algorithms good enough that there's no reason that the majority of things such as page swapping algorithms shouldn't be dynamically adjustable based on data the system gathers about how it runs. There are situations that the OS will get itself into that cannot necessarily be planned for (cf. the THE operating system), but it should be able to get itself out.
I would go so far as to say that hard coding things like page replacement algorithms as opposed to page replacement managers is to remove any hope of actually creating something new and interesting in favor of something usable.
This may sound silly, but I don't think Ultimate is intended to necessarily be something usable. It's intended to be a platform on which we can put forth all the crazy ideas we have about how OSes ought to work in complete willful defiant ignorance of the sorts of things that 60+ years of OS papers have said that an OS Should Have.
If it turns out to be usable, so much the better.
In large part, I think this is the misunderstanding that have led some people to post things like "Use NetBSD" or "Use Linux".
Completely out of curiousity: Does anyone else out there share my brain space or am I in danger of losing anyone else's interest in this project? I wonder when not too many people comment on the entries I post ; )
