So... you want to write your own Operating System?
- Masterkiller
- Member
- Posts: 153
- Joined: Sat May 05, 2007 6:20 pm
Re: So... you want to write your own Operating System?
That is why I try to make Operating System.crbenesch wrote:Developing an operating system is delving into the guts of how a computer works, from the lowest level possible.
Great Topic To a lot of people it will be extremely useful
ALCA OS: Project temporarity suspended!
Current state: real-mode kernel-FS reader...
Current state: real-mode kernel-FS reader...
@crbenesch great posts, one of the best none technical reads i have seen on the forum for a while.
But i have been in the OS Dev sean for some time and i have seen people who have never programed in there life, do well in OS Dev, This include coder's of all ages, some codes on this forum <16 are nothing short of genius.
But to me its in your jeans (genea) , if your the right type of person you can start OS Dev, once you can assemble a program and write basic asm code.
I am not saying this is the best place to start or you should start with little programming knowledge, but you will work your way through it, as this is the same as coding for a device with little info available.
I see very little difference between coding as a beginner in dos or coding as a beginner using BIOS ints and using a bootloader like bootprog that loads a com or mz exe, to learn to program.
I know so many coders who are so used to the spoon feeding you get from Windows etc, they could never code in the desert of the OS Dev environment, ever though these coder would get good programming jobs.
Next point, To copy is the same as to learn (in japan there is only one word for both of these things). we learn by copying, when you learn to write your name you copy your name that someone else wrote.
You all started to learn to code by copying "hello world!" code.
As long as you do not take this copying too far, as in cut and paste, your OK.
And as any one who as tryed to cut and paste, many differant bit of code together knows, you will find it much harder than coding from scratch.
The best way is to code from scratch, but break it down in to small chunks, then if you have a problem with it not working as you want, take a look at others code to see the difference.
From my observations, success in OS Dev is down to the makeup of the person, not where they started from or age.
But there again, what is a successfull OS project ?, its imposable to define.
So if we set out to make a hello world OS and suckseed then it was a successfull OS project.
But above all keep posting your opinions, as you have a good way with words.
But i have been in the OS Dev sean for some time and i have seen people who have never programed in there life, do well in OS Dev, This include coder's of all ages, some codes on this forum <16 are nothing short of genius.
But to me its in your jeans (genea) , if your the right type of person you can start OS Dev, once you can assemble a program and write basic asm code.
I am not saying this is the best place to start or you should start with little programming knowledge, but you will work your way through it, as this is the same as coding for a device with little info available.
I see very little difference between coding as a beginner in dos or coding as a beginner using BIOS ints and using a bootloader like bootprog that loads a com or mz exe, to learn to program.
I know so many coders who are so used to the spoon feeding you get from Windows etc, they could never code in the desert of the OS Dev environment, ever though these coder would get good programming jobs.
Next point, To copy is the same as to learn (in japan there is only one word for both of these things). we learn by copying, when you learn to write your name you copy your name that someone else wrote.
You all started to learn to code by copying "hello world!" code.
As long as you do not take this copying too far, as in cut and paste, your OK.
And as any one who as tryed to cut and paste, many differant bit of code together knows, you will find it much harder than coding from scratch.
The best way is to code from scratch, but break it down in to small chunks, then if you have a problem with it not working as you want, take a look at others code to see the difference.
From my observations, success in OS Dev is down to the makeup of the person, not where they started from or age.
But there again, what is a successfull OS project ?, its imposable to define.
So if we set out to make a hello world OS and suckseed then it was a successfull OS project.
But above all keep posting your opinions, as you have a good way with words.
-
- Member
- Posts: 368
- Joined: Sun Sep 23, 2007 4:52 am
In a similar vein to the OP is Alexei Frounze's OS Development Skeptically.
-
- Member
- Posts: 38
- Joined: Mon Mar 24, 2008 4:17 pm
I think Dex is more or less right.
In my opinion, coding without all the libraries and stuff is far more entertaining - I always felt printf was just a bit cheating.
I think if you really want to do it, you can. And everyone asks stupid questions from time to time, even after thinking about it for a very long time, or researching (a lot of the time its knowing what to research as its not always clear); I always feel like I ask stupid questions. But thats because I don't know the answer, and it appears that I should.
If its fun to do, then it doesn't matter who or what you are. Theres much to be learnt, and learning should always be encouraged.
In my opinion, coding without all the libraries and stuff is far more entertaining - I always felt printf was just a bit cheating.
I think if you really want to do it, you can. And everyone asks stupid questions from time to time, even after thinking about it for a very long time, or researching (a lot of the time its knowing what to research as its not always clear); I always feel like I ask stupid questions. But thats because I don't know the answer, and it appears that I should.
If its fun to do, then it doesn't matter who or what you are. Theres much to be learnt, and learning should always be encouraged.
Nice article though I agree with JamesM with it being very generalised.
I think that it has to do with the personality of the person. In the article "How to Become a Hacker" (not network cracker) It says that most hackers enjoy the challenging problems. When I acheive something generally I tell everyone even though they don't care, at least I think they don't care, they might. When I started I began with Cosmos but it was too easy so I started an OS from scratch. I enjoy the challenge. Most people here probably enjoy the challenge. Part of the fun (for me) is being stumped by something and then the other part of the fun is conquering this problem and defeating it.
I'm only 14 (though my B-day is in 1 month exactly), started programming about the age of 10. Self taught myself C#. Came here after Cosmos, read the forums for about a month, taught my self Assembly, and then registered. I can't read C nor C++ . Never used/booted Unix. Have a deticated Linux computer but can only use it for standard stuff and almost never boot it up. I Program my OS on Windows. Now I boot, activate pmode, A20, and load my kernel stub which clears the screen. I believe I defy most of what was said but yet I slowly am getting somewhere, so I believe that it is just the nature of people that try OS dev that matters.
When someone comes here they generally ask for some help. A lot of times they don't have the patience/nature to do OS dev and thus dissapear after this first question. I think that 7 out of 10 new comers never make it to 25 posts and then 2 out of the 3 that are left never make it to 50 posts, they just dissapear. Thos are just off my observations but I think if a real study was done the number would be close to my guess. So I would have to agree with Dex. Few have the nature to do OS dev and those that don't are quickly weeded out. While a lot try few actually stick with it.
Sorry about how long this is...
I think that it has to do with the personality of the person. In the article "How to Become a Hacker" (not network cracker) It says that most hackers enjoy the challenging problems. When I acheive something generally I tell everyone even though they don't care, at least I think they don't care, they might. When I started I began with Cosmos but it was too easy so I started an OS from scratch. I enjoy the challenge. Most people here probably enjoy the challenge. Part of the fun (for me) is being stumped by something and then the other part of the fun is conquering this problem and defeating it.
I'm only 14 (though my B-day is in 1 month exactly), started programming about the age of 10. Self taught myself C#. Came here after Cosmos, read the forums for about a month, taught my self Assembly, and then registered. I can't read C nor C++ . Never used/booted Unix. Have a deticated Linux computer but can only use it for standard stuff and almost never boot it up. I Program my OS on Windows. Now I boot, activate pmode, A20, and load my kernel stub which clears the screen. I believe I defy most of what was said but yet I slowly am getting somewhere, so I believe that it is just the nature of people that try OS dev that matters.
When someone comes here they generally ask for some help. A lot of times they don't have the patience/nature to do OS dev and thus dissapear after this first question. I think that 7 out of 10 new comers never make it to 25 posts and then 2 out of the 3 that are left never make it to 50 posts, they just dissapear. Thos are just off my observations but I think if a real study was done the number would be close to my guess. So I would have to agree with Dex. Few have the nature to do OS dev and those that don't are quickly weeded out. While a lot try few actually stick with it.
Sorry about how long this is...
My OS: SOS (Simple Operating System).
- CmpXchg
- Member
- Posts: 61
- Joined: Mon Apr 28, 2008 12:14 pm
- Location: Petrozavodsk, Russia during school months, Vänersborg Sweden in the summertime
What is good in OSDev is that it makes you round-up all your programming skills. If you have some flaw in programming knowledge, it will show up at some stage of your OS development.
Personally what fascinates me with OSDeving is the pleasure of direct hardware programming. An OS relies on nothing but hardware and itself. So you need some excellent knowledge of the PC internal workings.
But this isn't enough. Sooner or later it will turn out that you need to code sophisticated algorythms. The most obvious examples are memory management and scheduling. So simply learning assembly instructions is not enough. You need to be advanced in programming algorhythms theory. If you fail to do it smartly, it will turn out that your OS is exceptionally slow and impractical.
So that's kinda my opinion...
@tadada: great post, with you being only 14...
Personally what fascinates me with OSDeving is the pleasure of direct hardware programming. An OS relies on nothing but hardware and itself. So you need some excellent knowledge of the PC internal workings.
But this isn't enough. Sooner or later it will turn out that you need to code sophisticated algorythms. The most obvious examples are memory management and scheduling. So simply learning assembly instructions is not enough. You need to be advanced in programming algorhythms theory. If you fail to do it smartly, it will turn out that your OS is exceptionally slow and impractical.
So that's kinda my opinion...
@tadada: great post, with you being only 14...
Well, it seems that C is best suited for OS development, whatever we might wish or think... (edit: though you can get along with ASM quite well)tadada wrote:I can't read C nor C++
Indeed. OS development is more then the ability to write the code, compile it then boot it. I spent a few days on activate pmode/A20 and now I am in the third day of printing to the screen. This is not because I don't know how to program, it is because I am missing part of the theory. But the problem is with newcomers they are either missing all of the theory/programming or they are missing too much of both. The way to correct this would be for people to read up on what they are doing more before they try it. The thing is that most people read a little think they understand then try. Then when they fail (if they do) they think that they had read enough and thus have to ask help. The thing is that society teaches people to ask for help when it is needed but it does not teach enough self reliance. There isn't the balance of self relience and reliance of others. Almost everyone does this once or twice before they learn that they should read more about what they are doing. This is where the attitude/nature thing come into play. During thier trouble they either go with it or give up on it but either way that decision is directed by thier nature defined not only by there genes but also by how society has taught them.
And yes I do all my OS dev in assembly (of the FASM dialect)
And yes I do all my OS dev in assembly (of the FASM dialect)
My OS: SOS (Simple Operating System).
Hey I started out at 7 on a Commodore 64. I didnt mean to say ALL < 16 were idiots, just trying to make a generalization about the millions of posts that seem to defy logic. And I agree its more about the theory and practice of programming than the language. Although IMO C is about the best choice. What I do at work is kind of the speculative coding, higher ups ask "Can we do ..." and I figure out how we can do it with what we have. So I've become adept at taking whatever language / tool is available and using it to do what needs to be done. I guess all I was trying to say from the get go was that this is tough and it seperates the real programmers from the push button programmers. A push button programmer being someone who might have attended school for 6 months or something and has no real ability with computers. A real programmer knows how the computer works from the inside out and can write anything in any language, given the resources to do so.tadada wrote:Indeed. OS development is more then the ability to write the code, compile it then boot it. I spent a few days on activate pmode/A20 and now I am in the third day of printing to the screen. This is not because I don't know how to program, it is because I am missing part of the theory. But the problem is with newcomers they are either missing all of the theory/programming or they are missing too much of both. The way to correct this would be for people to read up on what they are doing more before they try it. The thing is that most people read a little think they understand then try. Then when they fail (if they do) they think that they had read enough and thus have to ask help. The thing is that society teaches people to ask for help when it is needed but it does not teach enough self reliance. There isn't the balance of self relience and reliance of others. Almost everyone does this once or twice before they learn that they should read more about what they are doing. This is where the attitude/nature thing come into play. During thier trouble they either go with it or give up on it but either way that decision is directed by thier nature defined not only by there genes but also by how society has taught them.
And yes I do all my OS dev in assembly (of the FASM dialect)
According to a VB.NET programmer, I'm an idiot, I dont know how to even write hello world at the moment. But to me hes an idiot because he cant write hello world in C on a Unix platform. But... Have us swap tasks, I'll write something in VB and he has to write something in C on my platform, and we'll see who the winner is. Who can adapt to what their given? Thats the real test. Or as in the real world, the question isnt how you do it, but can you do it? "We need a web site to talk to our Informix database which is located behind a firewall, and to be able to handle about 1000 simultaneous connections." Whether you use IIS/ODBC or Apache/PHP or something else isnt the question, its simply, does it work? And thats the situation here, however you wrote your OS, does it work?
I never took anything that you said personally. I knew you didn't mean all just very close to all.
I would agree though that some posts "defy logic," and I also agree OS dev is about the theory more then the programming. but I would have to say that IMO your definition of a "real programmer" is impossible to achieve. I would more say that a "real programmer" is more like the definition givin in the article "How To Become A Hacker". (link: http://www.catb.org/~esr/faqs/hacker-howto.html) Your definition seems to me like you have to next to a god to achieve, also making great programmers seem like a "push button programmer".
I think that there is adapting but it can be the thing your working on or yourself but either way something has to adapt to the other. I plan for my OS to be FASM macro based. The macros will automatically find out who is calling them. (KERNEL or USER) and thus chose the right version for the macro being called. That way when I port FASM all the programmer has to do is include the macro file in thier program and FASM will chose the macros they need. So far it is working. My clear screen macro works very nicely for example.
You raise a lot of issues that most of us have not thought about which I think is good.
I would agree though that some posts "defy logic," and I also agree OS dev is about the theory more then the programming. but I would have to say that IMO your definition of a "real programmer" is impossible to achieve. I would more say that a "real programmer" is more like the definition givin in the article "How To Become A Hacker". (link: http://www.catb.org/~esr/faqs/hacker-howto.html) Your definition seems to me like you have to next to a god to achieve, also making great programmers seem like a "push button programmer".
I think that there is adapting but it can be the thing your working on or yourself but either way something has to adapt to the other. I plan for my OS to be FASM macro based. The macros will automatically find out who is calling them. (KERNEL or USER) and thus chose the right version for the macro being called. That way when I port FASM all the programmer has to do is include the macro file in thier program and FASM will chose the macros they need. So far it is working. My clear screen macro works very nicely for example.
You raise a lot of issues that most of us have not thought about which I think is good.
My OS: SOS (Simple Operating System).