OSDev.org

The Place to Start for Operating System Developers
It is currently Thu Mar 28, 2024 6:59 am

All times are UTC - 6 hours




Post new topic Reply to topic  [ 6 posts ] 
Author Message
 Post subject: What's the best education for OS development?
PostPosted: Fri Jun 23, 2017 10:27 am 
Offline
User avatar

Joined: Wed Jun 21, 2017 12:36 pm
Posts: 1
Location: Italy
Hi, everyone! I've just registered to this forum two days ago.
I'm a university student of CS with a "nuance" in software engineering.
I'm interested in software development and, in particular, in what I define THE software: the operating system.
I've attended the courses of computer architecture and operating systems during my career, but they weren't as complete as those taught in other universities of my country.
I'm really interested in OS development (in particular in developing schedulers, device drivers and the file system), and I want to get into this task with the right tools and knowledge.
I've already read the sections Required Knowledge and Books, but I think that the knowledge acquired in a university course makes for a solid base.
So, I'm wondering: what's the best education for OS development? Does Computer Science give the knowledge required for developing an OS? Or is Computer Engineering (CE, ECE, EECS) a better option?
I know that some OS developer are computer scientist (like Linus Torvalds and Gary Kildall), while others are engineers (Kenneth Thompson, Klaus Knopper).
So, what do you think? What about you? Are you from CS or from CE, ECE, EECS?
Any answer will be much appreciated.


Top
 Profile  
 
 Post subject: Re: What's the best education for OS development?
PostPosted: Fri Jun 23, 2017 10:34 am 
Offline
Member
Member
User avatar

Joined: Sun Jul 14, 2013 6:01 pm
Posts: 442
you must understand the C programming language to understand everything else and be able to do the operating system in practice. you also need to understand the theory and how various various hardware works - to be able to make good decidsions. all IT university will teach these. but dont expect that somebody will magically teach you how to actually do an operating system (even if maybe once you will have a homework to create a simple kernel).

_________________
Operating system for SUBLEQ cpu architecture:
http://users.atw.hu/gerigeri/DawnOS/download.html


Top
 Profile  
 
 Post subject: Re: What's the best education for OS development?
PostPosted: Sat Jun 24, 2017 11:03 am 
Offline
Member
Member

Joined: Thu May 17, 2007 1:27 pm
Posts: 999
CS education helps with getting things like search trees, schedulers, timing queues and other relatively complex algorithms right. It also helps you gauge if certain algorithms are suitable in specific places: For example running a non-constant time algorithm in certain parts of the kernel might be undesirable as it might enable denial of service attacks. However not a lot of CS is necessary for OS development. Practical programming skills are much more important than the ability to analyze algorithms theoretically. Being able to manage large code bases are always good.

Any CS / software engineering degree that contains some low level courses should prepare you well for OS development.

_________________
managarm: Microkernel-based OS capable of running a Wayland desktop (Discord: https://discord.gg/7WB6Ur3). My OS-dev projects: [mlibc: Portable C library for managarm, qword, Linux, Sigma, ...] [LAI: AML interpreter] [xbstrap: Build system for OS distributions].


Top
 Profile  
 
 Post subject: Re: What's the best education for OS development?
PostPosted: Sat Jun 24, 2017 2:46 pm 
Offline
Member
Member

Joined: Sun Feb 01, 2009 6:11 am
Posts: 1070
Location: Germany
I don't know about your university, but allegedly it's possible to get a CS degree just on the theory without being able to write a program. If that's you, then take a step back and learn programming (including the low-level stuff like pointers).

However, given your interest and that you're posting here, I'd rather assume that indeed you already have the required programming skills. In that case, the only thing you're missing is practice. In other words: You best learn how to develop an OS by writing one. As usual, plan to throw the first one away, or at least to rewrite major parts of it later, but for now, just get started.

_________________
Developer of tyndur - community OS of Lowlevel (German)


Top
 Profile  
 
 Post subject: Re: What's the best education for OS development?
PostPosted: Sat Jul 29, 2017 1:52 am 
Offline

Joined: Sun Sep 11, 2016 12:54 pm
Posts: 9
Opinion:

If you didn't:

1. Get an OS development course in CS.

2. Get a compiler course in CS.

3. Didn't see the heavens open up and a ray of light touch you from above when you realized the beauty of pointers.

Then you have been mis-educated. Go back to your university and demand your money back.

Scott Franco
San Jose, CA


Top
 Profile  
 
 Post subject: Re: What's the best education for OS development?
PostPosted: Sat Jul 29, 2017 4:28 am 
Offline
Member
Member

Joined: Tue May 13, 2014 3:02 am
Posts: 280
Location: Private, UK
CS courses vary massively on a scale from "pure" (all about mathematics and logic) to "applied" (all about programming and hardware). A good course is probably somewhere in the middle, but things like OS design are very much at the "applied" end of the spectrum. Make sure you understand what kind of course is being offered before starting it. There's nothing "wrong" with taking a highly "pure" CS course, but don't expect to be an expert programmer at the end of it.

However, by far the most important skill of any programmer is that they actually understand how to program. Many (if not most) "programmers" do not have this skill (and this includes many that have had long careers in the field), they simply know the syntax and idioms of one or two programming languages and how to copy-paste code from examples and tutorials and do so with little to no understanding of what they're actually doing.

Basically, if you can't pick up the syntax and basic idioms of a new programming language and start writing basic-but-useful code that's not taken directly from a tutorial within a few days of study, you probably lack this skill. If you're the kind of person who goes through the first couple of pages of a tutorial and then find yourself trying out the ideas without guidance, never really returning to the tutorial, you probably do have this skill.

Even if your programming background is in something completely unrelated to OSdev (e.g. web development, mobile apps, databases, etc.), if you understand how to program, you're in a good position.

Once you have this skill, and there's no better way to gain it than study and practice (if you think you're in the "one or two languages with no real understanding" place, try learning a new language/framework, try porting some previous work to a new platform, etc.), then a good starting place for OSdev would be decent book on the theory and practice of operating systems; I'd recommend "Operating Systems: Design and Implementation" by Andrew S Tanenbaum, commonly known as "the MINIX book", but there are others. Once you're at a point where you have a decent (if not necessarily complete) understanding of operating systems start with a good OSdev tutorial (e.g. the "bare bones" tutorial from the wiki) and if you have the previously mentioned skills, you'll probably never really finish the tutorial as such and will be writing your own OS pretty much straight away.

_________________
Image


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

All times are UTC - 6 hours


Who is online

Users browsing this forum: No registered users and 63 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group