Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what operating system concepts should every programmer be aware of? [closed]

I am compiling various lists of competencies that self taught programmers must have.

Among all subjects, Operating Systems is the trickiest one, because creating even a toy operating system is a rather non-trivial task. However, at the same time an application developer (who may not have formally learned CS) must at least be aware of and hopefully should have implemented some key concepts to appreciate how an OS works, and to be a better developer.

I have a few specific questions:

  • What key concepts of operating systems are important for a self taught programmer to understand so they can be better software developers (albeit working on regular application development)?
  • Is it even remotely possible to learn such a subject in byte sized practical pieces ? (Even a subject like compiler construction can be learned in a hands on way, at a rather low level of complexity)
like image 308
Parag Avatar asked Jul 20 '12 12:07

Parag


People also ask

What are the important concepts in operating system?

An Operating System (OS) is an interface between a computer user and computer hardware. An operating system is a software which performs all the basic tasks like file management, memory management, process management, handling input and output, and controlling peripheral devices such as disk drives and printers.

What operating system should a computer programmer use?

Most software developers worldwide report the use of Windows operating system as their preferred development environment, as of 2021. Apple's macOS comes in third with 44 percent, behind the 47 percent of developers preferring Linux.

What are the concepts of operating systems and why are they important?

An operating system is the most important software that runs on a computer. It manages the computer's memory and processes, as well as all of its software and hardware. It also allows you to communicate with the computer without knowing how to speak the computer's language.


2 Answers

I would suggest reading Andrew S. Tanenbaum ( http://en.wikipedia.org/wiki/Andrew_S._Tanenbaum ) book on Modern Operating Systems (ISBN 978-0-13-600663-3) as everything is there.

However from the book index we can identify the minimum key topics:

  • Processes
  • Memory management
  • File systems
  • Input/output

And the easiest way to start playing with this topics will be to download MINIX:

http://www.minix3.org/

and study the code. Older versions of this operating system might be easier to understand.

Another useful resource is Mike Saunders How to write a simple operating system that shows you how to write and build your first operating system in x86 assembly language:

http://mikeos.sourceforge.net/write-your-own-os.html

like image 56
luigif Avatar answered Oct 13 '22 00:10

luigif


Every OS designer must understand the concepts behind Multics. One of the most brilliant ideas is the notion of of a vast virtual memory partioned into directly readable and writable segments with full protections, and multiprocessor support to boot; with 64 bit pointers, we have enough bits to address everything on the planet directly. These ideas are from the 1960s yet timeless IMHO.

The apparent loss of such knowledge got us "Eunuchs" now instantiated as Unix then Linux and an equally poor design from Microsoft, both of which organize the world as a flat process space and files. Those who don't know history are doomed to doing something dumber.

Do anything you can to get a copy of Organick's book on Multics, and read it, cover to cover. (Elliott I. Organick, The Multics System: An Examination of Its Structure).

The wikipedia site has some good information; Corbato's papers are great.

like image 40
Ira Baxter Avatar answered Oct 12 '22 23:10

Ira Baxter