Page 1 of 1
New to OS development, have a couple of general questions.
Posted: Wed Sep 21, 2016 2:47 am
by PhantomWhiskers
Hello everybody.
I just recently discovered this website, and I am incredibly glad that I did.
I am a senior year undergraduate Software Engineering student, and I plan on writing my own kernel/OS for my senior project. I have a good amount of knowledge in C and have written a large number of user-space programs in it. I have taken a class on x86 assembly so I understand the basics, but I haven't done a lot of actual work in it. Ever since I became interested in programming I have been fascinated by operating systems and how they function internally, and it became my dream/goal to create my own OS and get a job/career doing OS development.
Originally, my idea for my project was to write a hobby OS for the Raspberry Pi (I currently have a Raspberry Pi 3), and would like to continue that goal, but I am still in the planning phase and would be open to writing my OS for x86 (preferably 64 bit) instead of ARM because I have some previous experience in x86.
So now for my questions.
I plan on using the wiki here to help me get started, but I also have a copy of the textbook Operating Systems Concepts 9th edition from a class I took about a year and a half ago. I am also wondering if the book Modern Operating Systems by Tanenbaum would be better to use instead. Which book would you recommend? (Book suggestions other than the two I listed are also welcome.) Also, is it worth it to read through the whole book before I start writing my own OS, or should I read through it alongside development on my project?
My other question is would writing my own hobby OS help push me towards my goal of getting a job in OS development? I don't expect to get a software job in that field immediately after graduating, but would having a self-implemented OS on my resume help with achieving that goal in the long run?
I also welcome any other general advice you all have to give, and will take anything I can.
Sorry for the lengthy post, I just really want to make sure that I make as few mistakes as possible in the initial phases of writing my own OS. Thank you in advance for any responses.
Re: New to OS development, have a couple of general question
Posted: Wed Sep 21, 2016 3:22 am
by Mikumiku747
PhantomWhiskers wrote: I am also wondering if the book Modern Operating Systems by Tanenbaum would be better to use instead.
I can't speak for the other book, but I've read Modern Operating Systems, it's a great book for learning the high level concepts, and it makes it way easier to understand some of the topics discussed on the wiki, although I'm sure as a Software Eng. student, you'll probably be familiar with a lot of it already. The case studies are especially useful I think, since they show you how the things you've learnt are relevant and give you a taste of what you can get out of OS dev. That said, the book has little focus on code examples, but I don't think that's a bad thing, just make sure you know what you're getting into.
Apart from that, welcome, and good luck with your project!
Re: New to OS development, have a couple of general question
Posted: Wed Sep 21, 2016 3:36 am
by Antti
In my opinion there are two main problems here. First of all, it seems that you are trying to build your first OS as a project with too much planning. It is good if you are a little bit more experienced but at this stage you probably learn faster if you just start doing experiments and find the joy in the journey.
The second problem, in my opinion, is this career-driven approach. It could be very likely that your hobby OS helps advance your career but, an important but, it might do it in a different way than you think. It is not necessarily the hobby OS on your resume that does the trick. It is simply the passion for working on a project like this, increased patience, increased knowledge, and things like these that modify your self-concept in a way that, at the end of the day, helps qualifying yourself for this position.
Basically, do enjoy the journey and all the other things you currently pay so much attention to will come as an extra gift. If it will not happen, the reasons are other than "mistakes made in the initial phases" or something similar.
Re: New to OS development, have a couple of general question
Posted: Wed Sep 21, 2016 3:40 am
by MichaelFarthing
Well said Anttii
We have an advertisement for a washing powder in England that has the tag line, "Dirt is good for you!"
Well, mistakes are good for you too. Very good for you!
Re: New to OS development, have a couple of general question
Posted: Wed Sep 21, 2016 4:03 am
by PhantomWhiskers
Antti wrote:In my opinion there are two main problems here. First of all, it seems that you are trying to build your first OS as a project with too much planning. It is good if you are a little bit more experienced but at this stage you probably learn faster if you just start doing experiments and find the joy in the journey.
The second problem, in my opinion, is this career-driven approach. It could be very likely that your hobby OS helps advance your career but, an important but, it might do it in a different way than you think. It is not necessarily the hobby OS on your resume that does the trick. It is simply the passion for working on a project like this, increased patience, increased knowledge, and things like these that modify your self-concept in a way that, at the end of the day, helps qualifying yourself for this position.
Basically, do enjoy the journey and all the other things you currently pay so much attention to will come as an extra gift. If it will not happen, the reasons are other than "mistakes made in the initial phases" or something similar.
Thank you a lot for this insight. It might have come off wrong in the way I asked my original question, but I am not doing this project purely out of career-driven motives. The original idea for my project came out of a passion for learning and understanding about how operating systems function and a desire to try creating my own. This passion led me to want to eventually pursue a career in the field, but that is not my main motive for starting this project. My question was purely about if a working product I implemented myself would help gain entry to that field, but once again it is not the reason I decided to pick this as my project.
As for the planning, my main concern is being able to have something presentable within the time frame for my senior project. I essentially have two semesters for my project, and while I don't expect having a fully featured OS by then, I still need something that I am able to present. I will definitely do a lot of experimenting, as the reason why I chose this project is to see and learn about how different approaches and techniques affect the end result.
Re: New to OS development, have a couple of general question
Posted: Wed Sep 21, 2016 4:15 am
by Kevin
PhantomWhiskers wrote:Originally, my idea for my project was to write a hobby OS for the Raspberry Pi (I currently have a Raspberry Pi 3), and would like to continue that goal, but I am still in the planning phase and would be open to writing my OS for x86 (preferably 64 bit) instead of ARM because I have some previous experience in x86.
Start with x86 to get some experience. You already know some x86, everyone here knows it and the wiki is full of it, so it makes your life easier. Once you got an x86 OS that covers all the basics, you can still start over on ARM (or just extend your existing OS to support both architectures).
Also, is it worth it to read through the whole book before I start writing my own OS, or should I read through it alongside development on my project?
Some people like to just jump into experimenting, others want to get the theory about all parts of the OS 100% right before they start implementing it. The former group tends to rewrite (or heavily refactor) their kernel after a while because it's become a mess quickly, and the latter group never gets to actually writing the OS because there is always another detail to figure out first. The healthy place is probably somewhere in the middle grounds.
My own approach to hobby OSes is to write them incrementally and read up only on the specific part I'm currently working on (with a slight tendency towards just experimenting and learning from mistakes).
My other question is would writing my own hobby OS help push me towards my goal of getting a job in OS development? I don't expect to get a software job in that field immediately after graduating, but would having a self-implemented OS on my resume help with achieving that goal in the long run?
Having a hobby OS on your resume often makes interviewers curious, so that's a good thing and can help you get a job. That doesn't necessarily mean that it will be a job in OS development, though, because there aren't that many OS dev jobs (not to say that it's impossible to get one, just maybe not that likely).
Re: New to OS development, have a couple of general question
Posted: Wed Sep 21, 2016 4:24 am
by PhantomWhiskers
Kevin wrote:My own approach to hobby OSes is to write them incrementally and read up only on the specific part I'm currently working on (with a slight tendency towards just experimenting and learning from mistakes).
This is probably the approach I will take as well. Reading too much about theory beforehand will most likely just continually delay my actual implementation, and I think I will probably learn more from doing and experimenting rather than reading.
Having a hobby OS on your resume often makes interviewers curious, so that's a good thing and can help you get a job. That doesn't necessarily mean that it will be a job in OS development, though, because there aren't that many OS dev jobs (not to say that it's impossible to get one, just maybe not that likely).
That is understandable. I don't expect writing a hobby OS to immediately get me a job, but it would be nice to have something I could show to interviewers. The main thing I want to get out of this is knowledge.