What I want my OS to be...
Re:What I want my OS to be...
The primary reason I want to write an OS is to control the hardware. As a mainly hardware guy, I find it facinating lerning about and controlling computer hardware. Learning about its history, how it works, what its quirks are. I love the idea of knowing the PC inside out. I Find OS level programming as a gateway into how the PC works. I love finding out how things work.
Some of the OS arch parts are a bit of a bind to be totally honest, but that is much, much more than made up by the sence of achievement that I get when it works and I can think "I made that!" To see a PC do what I want it to do, I made it happen.
Still, I'd love for it to go up against Linux. My design does borrow some of what I see as the best bits of other OSs but it's bound together with my own sence of what a better OS should consist of.
srg
Some of the OS arch parts are a bit of a bind to be totally honest, but that is much, much more than made up by the sence of achievement that I get when it works and I can think "I made that!" To see a PC do what I want it to do, I made it happen.
Still, I'd love for it to go up against Linux. My design does borrow some of what I see as the best bits of other OSs but it's bound together with my own sence of what a better OS should consist of.
srg
- Colonel Kernel
- Member
- Posts: 1437
- Joined: Tue Oct 17, 2006 6:06 pm
- Location: Vancouver, BC, Canada
- Contact:
Re:What I want my OS to be...
My motivations are interest, and career advancement, in that order. I've been interested in OS internals and architecture for years -- it was by far my favourite subject in university. Unfortunately, SFU cancelled the OS lab course the semester before I started there, so I never got the chance to actually cut any kernel code.
I was too busy being a student at the time to do it on my own, plus I didn't really know where to start.
I graduated a few years ago and started a career as a software developer, but in the area of databases (particularly multidimensional databases and OLAP). It's ok, but I'm starting to get restless and thinking about making a move into either wireless/embedded stuff, or OS development (as in, professional, for-pay OS development). So, a major motivation for me is to learn, and eventually have a working OS that I can show prospective employers. This is a pretty long-term goal for me though.
I've been using Windows NT and its progeny for years, and honestly I've never really had a problem with them. Learning about the NT kernel was very interesting, but after seeing microkernels like QNX and L4, I can see the flaws in the monolithic and "macrokernel" approaches. I've read the Tanenbaum-Torvalds debate a few times, and frankly, I think they were both wrong. Tanenbaum's advocacy of microkernels is ok as far as I'm concerned, but I don't think he knows what a good microkernel looks like (have you seen Minix? Ick!). Torvalds was wrong in rejecting the microkernel concept based (seemingly) only on Tanenbaum's warped interpretation of it. So yeah, there is a little competitive bastard in me that wants to show them up, but it will never happen.![Wink ;)](./images/smilies/icon_wink.gif)
If I can actually become employed in this area though, that would be a big thrill for me.
![Sad :(](./images/smilies/icon_sad.gif)
I graduated a few years ago and started a career as a software developer, but in the area of databases (particularly multidimensional databases and OLAP). It's ok, but I'm starting to get restless and thinking about making a move into either wireless/embedded stuff, or OS development (as in, professional, for-pay OS development). So, a major motivation for me is to learn, and eventually have a working OS that I can show prospective employers. This is a pretty long-term goal for me though.
I've been using Windows NT and its progeny for years, and honestly I've never really had a problem with them. Learning about the NT kernel was very interesting, but after seeing microkernels like QNX and L4, I can see the flaws in the monolithic and "macrokernel" approaches. I've read the Tanenbaum-Torvalds debate a few times, and frankly, I think they were both wrong. Tanenbaum's advocacy of microkernels is ok as far as I'm concerned, but I don't think he knows what a good microkernel looks like (have you seen Minix? Ick!). Torvalds was wrong in rejecting the microkernel concept based (seemingly) only on Tanenbaum's warped interpretation of it. So yeah, there is a little competitive bastard in me that wants to show them up, but it will never happen.
![Wink ;)](./images/smilies/icon_wink.gif)
If I can actually become employed in this area though, that would be a big thrill for me.
Top three reasons why my OS project died:
- Too much overtime at work
- Got married
- My brain got stuck in an infinite loop while trying to design the memory manager
Re:What I want my OS to be...
Pure fun and amusement. I've got no delusions about how good a programmer I am (Not very), or being able to design a great OS (Unlikely, it'd be like winning the lottery). I'm simply doing it because I like screwing around with programming and enjoy seeing things I write actually work. That and I'm also cursed with sleepless nights thanks to my head being full of ideas (Glad to hear I'm not the only one Pype
).
It helps that I find logic, maths and hardware fun.
Example:
I've got a half-completed assembler lying around on my HD somewhere that had its first version written using a hex editor, with every subsequent version assembled using the previous version. Did it just for the sheer hell of it, not with any expectation I would actually use it (Or show it to anyone else for that matter ;D).
![Smile :)](./images/smilies/icon_smile.gif)
It helps that I find logic, maths and hardware fun.
Example:
I've got a half-completed assembler lying around on my HD somewhere that had its first version written using a hex editor, with every subsequent version assembled using the previous version. Did it just for the sheer hell of it, not with any expectation I would actually use it (Or show it to anyone else for that matter ;D).
Re:What I want my OS to be...
You're conflating issues here. My primary motivation is to create an OS, but I have no intention of trying to draw in users and developers. I have two immediate specific uses for it, to be used with specific hardware products for specific customers, and I further hope it will serve me in general down the road, but I guess you could say it's for "internal use". I'll probably release it as open source, simply because I'm not really in the OS business -- I'm making my money developing the software that runs under it, not from the OS itself. Whether anyone else ever bothers to download it or finds it useful is not an issue.Solar wrote:- to actually create an OS, that might draw users and developers;
Re:What I want my OS to be...
The only thing worse than having a Muse is not having one... ;DCurufir wrote:That and I'm also cursed with sleepless nights thanks to my head being full of ideas (Glad to hear I'm not the only one Pype).
Annoying, demanding little *mrmf*...
Re:What I want my OS to be...
My primary motivation is personal satisfaction. I want to create something that I can be proud of. I'm not real concerned with what other people think of it. Sure, if at the same time it works for someone else's purpose, all the better. I never plan on making anything "complete" or commercially viable. That's not my intention. If my OS ever becomes somewhat mature, I plan on releasing it under the GPL.
That personal satisfaction is my long-term goal. If something looks ugly to me, or seems like it won't scale to accomodate future needs, then I rethink it and rework it until it does. In the process, however, learning about the internals of PC hardware is enjoyable... if frustrating at times. This is my motivation in the short-term.
That personal satisfaction is my long-term goal. If something looks ugly to me, or seems like it won't scale to accomodate future needs, then I rethink it and rework it until it does. In the process, however, learning about the internals of PC hardware is enjoyable... if frustrating at times. This is my motivation in the short-term.
Re:What I want my OS to be...
Yeh. I'd quite like to be able to use my OS in the future. If I get a move on maybe even for my university entry.Colonel Kernel wrote: can show prospective employers.
Pete
Re:What I want my OS to be...
interesting to hear about other people that have OS visions filling their heads at night. Since I really started getting back into my OS over the past couple of weeks, I'm finding it very hard to fall asleep at night. I'll just lay there for an hour or so, trying to sleep but my mind is racing. I think I have to stop programming earlier and watch a little mind-numbing tv or something before sleep.
As for why I am writing my OS, it has been a goal of mine since I was about 13 years old, and last year I finally realized that I was at the point where I felt that I could actually make some progress towards doing so. The main driving force for me now is learning everything there is to know about computers and how they work, and to see if I can actually do it. Learning all I have over the past year about the underlying workings of the computer have led me to try getting a double major of Electrical and Computer Engineering along with my current Computer Science major, as I have discovered how much I really like working at the hardware level.
Of course, like everyone else there are also some things that I feel should be different in my Operating System and ways I think mine will be better. And someday I do hope to use my Operating System in day-to-day activities. The idea of that is exciting enough to drive me on. But learning is definitely my major goal.
As for why I am writing my OS, it has been a goal of mine since I was about 13 years old, and last year I finally realized that I was at the point where I felt that I could actually make some progress towards doing so. The main driving force for me now is learning everything there is to know about computers and how they work, and to see if I can actually do it. Learning all I have over the past year about the underlying workings of the computer have led me to try getting a double major of Electrical and Computer Engineering along with my current Computer Science major, as I have discovered how much I really like working at the hardware level.
Of course, like everyone else there are also some things that I feel should be different in my Operating System and ways I think mine will be better. And someday I do hope to use my Operating System in day-to-day activities. The idea of that is exciting enough to drive me on. But learning is definitely my major goal.
Re:What I want my OS to be...
Wow 13, Although I had my interest in hardware, I didn't even want to start programming untill I was 15.bkilgore wrote:As for why I am writing my OS, it has been a goal of mine since I was about 13 years old, and last year I finally realized that I was at the point where I felt that I could actually make some progress towards doing so.
srg
Re:What I want my OS to be...
Heh. I got a TI-99/4A home computer when I was 13, and started programming the same day. This was 1982 -- at the time, computers tended to boot to a BASIC programming prompt. The next day, I ran out and bought a cassette tape recorder so I could actually start saving my programs. Took me about a month to fill my first tape.srg wrote:Wow 13, Although I had my interest in hardware, I didn't even want to start programming untill I was 15.
However, it wasn't until I picked up an Apple IIc in 1984, with a built in floppy disk drive (5.25", 140k per side) that I learned what an operating system was. Ah yes, the old DOS 3.3 vs. ProDOS debate...
To this day, I still think the 65C02, and later the 65C816, processors were the most fun to program. The Motorola 68030 was fun too. Intel architecture processors bite the wax tadpole...
Re:What I want my OS to be...
For years with my Amiga and my PC I wasn't interested in programming, finally in May '99 I got Delphi 2 on a coverdisk, that started me off.Dreamsmith wrote:Heh. I got a TI-99/4A home computer when I was 13, and started programming the same day. This was 1982 -- at the time, computers tended to boot to a BASIC programming prompt. The next day, I ran out and bought a cassette tape recorder so I could actually start saving my programs. Took me about a month to fill my first tape.srg wrote:Wow 13, Although I had my interest in hardware, I didn't even want to start programming untill I was 15.
However, it wasn't until I picked up an Apple IIc in 1984, with a built in floppy disk drive (5.25", 140k per side) that I learned what an operating system was. Ah yes, the old DOS 3.3 vs. ProDOS debate...
To this day, I still think the 65C02, and later the 65C816, processors were the most fun to program. The Motorola 68030 was fun too. Intel architecture processors bite the wax tadpole...
Anyway, from what I've read Intel chips aren't a programmer's dream. Buy hey, this is Intel, always been crap at instruction sets AFAIK, not to mention segmentation!
srg
Re:What I want my OS to be...
Hi,
As a side note, three cheers for 6502 ;D
Cheers,
Brendan
Intel CPUs suffer due to backwards compatability (no other 8 bit CPU has had to contend with 128 bit SIMD instructions). To me the crappy-ness of 80x86 is one of the attractions - to be doing one of the most complex projects (OS), on one of the worst architectures (IA-PC), in one of the hardest languages (Intel/80x86 assembly).srg wrote: Anyway, from what I've read Intel chips aren't a programmer's dream. Buy hey, this is Intel, always been crap at instruction sets AFAIK, not to mention segmentation!
As a side note, three cheers for 6502 ;D
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Re:What I want my OS to be...
Well, I'd love to use segmentation, because you can do some very nifty security concepts with them... the problem is that GCC doesn't support them, and I'm not in a mind of writing all my OS code in ASM.srg wrote:
Buy hey, this is Intel, always been crap at instruction sets AFAIK, not to mention segmentation!
![Wink ;-)](./images/smilies/icon_wink.gif)
Every good solution is obvious once you've found it.
Re:What I want my OS to be...
Trouble is that segmented os aren't portable, which is one of my goals.Solar wrote:Well, I'd love to use segmentation, because you can do some very nifty security concepts with them... the problem is that GCC doesn't support them, and I'm not in a mind of writing all my OS code in ASM.srg wrote:
Buy hey, this is Intel, always been crap at instruction sets AFAIK, not to mention segmentation!![]()
The thing is though, If you cut your teeth on something complex like x86, then if in a professional context you end up programming something simpler like 68000, you should find it very easy, well relatively anyway.
srg
Re:What I want my OS to be...
I beg to differ:srg wrote:
Trouble is that segmented os aren't portable, which is one of my goals.
- an OS supporting multiple platforms, where applications can be easily made to run on any supported platform (i.e., an OS supporting portability), or
- an OS capable of being ported to other platforms?
I suppose you mean the latter; however, the bad news is that this is possible only in a very limited meaning of the word.
It's not only segments that are non-portable. Your task handling is most likely to be highly CPU-dependent, your page directory handling as well. The CPU you're porting to might only support 1k or 1M pages instead of the 4k/4M of the Intel, or might force you to a different page table layout altogether.
Do you focus on using memory (stack) or registers? On the Intel, stack sounds like the thing to do because you have so few GP registers; that's the wrong thing altogether on a MIPS.
That's not even going into interrupt handling, BIOS, etc. etc.
It's tricky to identify the level at which to do the abstraction. But that level certainly isn't anywhere within the kernel. There might be modules you can carry from one CPU to the other - the scheduling algorithm for example - but most of the kernel doesn't really cater to HAL'ing.
IMHO, as always. (And OT, as far too often.
![Wink ;-)](./images/smilies/icon_wink.gif)
Every good solution is obvious once you've found it.