Minix vs Linux for learning how to develop an operating system?

I want to learn the design of the operating system. I wondered if I should tackle Minix or GNU / Linux in this process. I like books, so I will mainly follow the book, although video resources (presumably in videos) will also be welcome.

I officially studied C and C # and can program small and medium-sized programs in them. I also have a very basic understanding of data structures.

If I take the Minix route, should I solve version 2 (is it easier?) Or version 3?

+7
source share
5 answers

I would go on the Minix route, only because of my personal experience with it. Minix is ​​very simple and educationally written. The Linux kernel, on the other hand, has been around for so long and is therefore highly optimized. I do not think this is a good start.

I would not worry too much about which version of minix. The concept remains the same. With newer versions, you can run X on it, which may be useful, but at the same time adds more complexity. Just go with the version you find in a good book.

+16
source

Operating Systems: Design and implementation spans Minix, so this might be a good pro Minix argument.

Without touching on this topic itself, Linux is quite large (last time I checked 10 million lines +, although, of course, you would not have to study all this), and Minix uses a microkernel architecture with separate modules, so it can be easier to understand.

I would go for Minix.

(O'Reilly, on the other hand, has several books on Linux, but I think I’ll continue to work with Minix, having this phat book as a reference)

+7
source

During the internship, I had to change the hard drive driver in Minix so that it would handle requests using the elevator algorithm instead of the first one. I had to do it in Minix 2, but I wanted to do it in Minix 3 because I never like the old technology.

For 2 months I worked on this, the most unpleasant: Minix 3 took about 20 minutes to compile in VMWare on a laptop with an I5 processor, 4 GB of RAM running Windows 7. Finally, after 2 months, I gave up on Minix 3 and switched to Minix 2, compiled after about 20 seconds.

Now I’m not saying that there could be something very bad in the way I assembled the system, but I tried very hard to speed it up without success.

Let me say that at the time I just got a master's degree in computer science, I had 5 years of intensive programming experience in C (just so that you would not think that I was a self-taught programmer who just decided to switch to programming, reworking the operating system: D)

EDIT: In the end, I suggest you try compiling Minix 3 to find out how this works for you. If you have more luck, definitely go with this because it has more modern OS concepts, on the other hand, if you're a complete newbie, you'll probably learn tons from Minix 2. I did.

+4
source

Like other posters, starting with Linux can be difficult, because now it is so large and complex that there is a barrier to entry on a rocket. But, if you chose this route, I recommend starting with one small subsystem and focus on it.

0
source

There are other possibilities: FreeBSD or even GNU / Hurd (or even your own toy kernel). And it depends on what you really want to know.

If you know Linux and how to learn how to write drivers, then writing your own Linux kernel kernel module is reasonable.

It also depends on your exact definition of the operating system. This is not necessarily the same as the OS kernel.

Not all Unix-like operating systems, for example. coyotos , Kangaroo , ... See also tunes.org

J.Pitrat Book Artificial beings (the conscience of a conscious machine) have interesting information about what the OS might be.

0
source

All Articles