Instead of exposing students to Windows kernel code[1], it would be better to consider to read the ReactOS source code - an open source clean room re-implementation:
Read the comment above by coldpie about WineHQ project. The same is true for the ReactOS project.
In 2006, an overenthusiastic contributor caused troubles. The aftermath slash back the project for several months and stressed the relationship with Wine for some time. Since then, every possible effort is made to keep the code clean and disallow tainted developers. (that's why I wrote the comment above, to warn others) You can read a short summary on Wikipedia: http://en.wikipedia.org/wiki/ReactOS#Internal_audit
Over at the Wine project, we forbid contributions from anyone known to have looked at Windows source code or even done significant "white box" reverse-engineering (decompiling, etc). The intellectual property law landscape is far too frightening to be worth the risk of allowing contributions from "tainted" individuals.
Statements like these are "legally reassuring" but it's very likely that you can get the same functionality but implemented very differently even if you looked at Windows' code. In the end it's probably another thing like piracy: everyone does it, but few would admit.
Additionally the books for user mode programming from Jeffrey Richter and Charles Petzold tend to be quite good and full of valuable information as well.
I really like this, when I'm done with trying to create a JIT compiler I think I'll move on to building a mini-OS in my spare time. I'm sure this combined with this [1] will be a great course unto itself.
I would post this too, it is nice concepts, but it seems stopped, at the most important place, process managment. It would be very nice to complete it.
I am a MsC student & teaching assitant of Operating Systems course and we are considering using Xv6 for more realistic assignments. Right now we give assignments like make a simulator of proces scheduler, it would be much better if they make a real process scheduler under this.
As crazy as its author may be, I think ParrotOS/SparrowOS/whatever it's named now would also make for some interesting studying for those more interested in embedded systems.
All comment on the author aside, that operating system makes a number of highly unusual design decisions that make it a poor candidate for this type of study. In particular, it makes almost no use of the MMU - all memory is identity mapped (physical address = virtual address), and all code runs in ring 0. This makes it impossible to implement a number of really basic OS features, such as virtual memory.
We are using Xv6 in my OS class this semester and have had some pretty fun and interesting assignments. We started off with learning how system calls and traps work by adding our own system calls to the existing system. The next assignment was to implement a signal system with support for user signal handlers. Our current assignment is to implement a user level thread library followed by kernel level threads in a few weeks. Working with Xv6 has been a real pleasure.
I wonder, when computers eventually become 1,000, or better, a 1,000,000 times faster than they are today. Will all these complex algorithms to squeeze out every last drop of performance still be desirable?
Yes. Even with 1000x computing power, having twice as much as that is still valuable. There are any number of applications which will literally use all the computing power you can throw at them.
Remember there are lots of NP hard problems, that soak up any additional computing power you throw at them. A lot of them are very important (placement in EDA for example). Supercomputers today are already 1000000 faster than current desktop computers and still they are no where near where we would want them to be (to simulate the earth athmosphere at sufficient resolution for example, or all the neurons in a human brain)
36 comments
[ 2.9 ms ] story [ 53.5 ms ] threadhttp://www.reactos.org
[1] signing such an NDA will prevent them from contributing to various open source projects, that would be a shame.
In 2006, an overenthusiastic contributor caused troubles. The aftermath slash back the project for several months and stressed the relationship with Wine for some time. Since then, every possible effort is made to keep the code clean and disallow tainted developers. (that's why I wrote the comment above, to warn others) You can read a short summary on Wikipedia: http://en.wikipedia.org/wiki/ReactOS#Internal_audit
I didn't know the Microsoft source NDA was so evil though; good warning. :)
Unfortunately, I was under the impression that it stopped not so long ago (~1year)?
That being said, you are right that this is a valid concern and people should be careful.
http://www.amazon.com/Windows-Internals-Edition-Developer-Re...
http://www.amazon.com/Windows-Internals-Edition-Developer-Re...
Additionally the books for user mode programming from Jeffrey Richter and Charles Petzold tend to be quite good and full of valuable information as well.
[1] http://samypesse.github.io/How-to-Make-a-Computer-Operating-...
[1] http://en.wikipedia.org/wiki/Xinu
Is minix still kicking around? I thought that was the teaching Kernel.
For looking at linux, they put all the redhat source online via LXR. Its online, but you should install your own on your own lini install.
http://src3.org/#RHEL6-2.6.32+220.el6/kernel/
Surely yes, since version 3.0 it got some commercial and EU funding and migrated to NetBSD userland.
Minix is enjoying the fact that it isn't 1992 any longer and there are quite a few micro-kernel OS systems to choose from.