SpyderTL wrote:What about you guys?
Honestly, I do not think this is a fair question to the majority of us. I would rate myself a 0. Sure, I have taken a 32-bit kernel (written in C) to include dynamic task creation and termination. But, the result was quite buggy.
I am now working on a 64-bit pure assembly kernel and have been working on buttoning up the memory management suite. It's interesting how assembly is forcing me to think about the exceptions more than C ever did. I have never attempted a user-space program.
SpyderTL wrote:What is the most difficult task that you have actually accomplished (and understand)?
That's easy.
Recursive mapping of the paging tables. Combuster solidified that for me
(thank's again by the way)!
SpyderTL wrote:what is the least difficult task that you have yet to accomplish (or yet to understand)?
Also easy. Triple faulting.
Brendan wrote:Some people are able to port existing things because their system is so similar to other OSs. These people have often done very little of their own design, very little research, and shown almost no innovation.
This position can be a little harsh, but I have to say that I completely agree. I would not consider my designs to be particularly innovative. In fact, I would real money that people smarter than me have already thought of the things I have dreamed up in my code. As an example, my physical memory manager uses a bitmap to keep track of the frames in the system. To augment this bitmap, I also keep track of the last location in the bitmap where I found a free frame and start my searches from that location since there is no need to search all that allocated space again. I had not seen such a design during my research. However, I also do not think my implementation is innovative at all. The code, however, is all mine.
The problem that I (and most novices here) have to this questions is that, "I don't know what I don't know." I'm quite certain that a design decision I make today will hurt me greatly in the future (who am I kidding, it already has). So, the only reasonable answer to this question for me is 0.
So, I guess I'd like to counter SpyderTL with another question: What do you consider to be included in your Operating system, and in particular, which are you referring to when you ask this question? Is it:
A) The kernel?
B) The kernel with all it's drivers?
C) The kernel, drivers, and all the user-space applications and utilities?, or
D) Something else entirely?