Running and Operating Systems
Well, I've been running almost every day for the last couple weeks. It has gotten to the point where I can run 10 miles pretty easily. I could probably do it every day. I notice my legs getting stronger and stronger. I want to get it to a point where I can run 20 miles easily, and then 30 miles easily. Wouldn't it be nice to run 30 miles a day, every day? Some people would call that insane or ridiculous or impossible. I don't agree. The body is an amazing piece of machinery if you train it and use mental discipline. I have found that running is more of a mental challenge than a physical one.
I've been thinking about operating systems. I have been nervous about writing too much about my technical ideas of implementing an operating systems because I know that my ideas may change as I go along.
A driving force in creating a new operating system is feeling that I understand the software to a terrific degree. Ideally I would like to feel like I understand and am very familiar to a terrific degree of the most basic and essential pieces of the operating system. I don't want to rely on software that I don't know intimately to create the operating system. For instance I don't want to rely on a C compiler of which I don't know the implementation of and of which I don't know the generated binary code that it generates. I want to know this operating system from it's most essential basic up. It is hard to explain. I just don't want to have the feeling that there's stuff going on that I don't really know about at the software level. And I want to have a terrific certainty of the essential core of the operating system. Understanding, and exporting that understand to others are the most important thing.
For that reason I have been looking at writing an assembler in assembly, that way I know the implementation of the assembler that I use and the x86 binary that it produces. Parts of the OS will probably be written in assembly but I would like a higher level language to implement much of the software. So perhaps I will implement a higher level C or Lisp like language using the assembler that I created, and then use this higher level language to create much of the OS. But writing an assembler and a C or Lisp like language in raw x86 assembly may be too complex. Maybe using a special editor that helps organize assembly code would make it a lot easier. There's lots to be explored.
Practicality and simplicity are goals of this operating system and I will not choose courses of actions or implementations that are overly complex or take forever to do. So I will seek a certain balance and forever attempt a closer approximation of the ideals of total understanding of system, simplicity, speed of implementation and small code base, reliability, usefulness and security.
