Contiki Ported To x86
lt writes "The ultra-small Contiki OS has now been ported to the x86. This should give those of you who have an old x86 PC that is too small to run even the smallest of Linux variants, a chance to browse the web, set up a web server, and doing other essential stuff. If you're curious to see how it looks, there is a live VNC demo running."
Kudos to Adam Dunkels for pushing the envelope of 8-bit computing. Many people will say "whats' the point of this." or "This has no application whatsoever and is a waste of time." but I disagree. Adam is making software and designing methods of programming to run internet based programs on chips and systems that where never designed for it, like the Atari Jaguar the Atari 8-bit console not to mention the C64. This work will allow others to get the motivation to push the envelope in other areas of computing as well.
It seems Adam has what was once prevailant in the computing and electronics industry. Tinkering and programming for the sheer joy of creating something new. In this way, programming and building systems like this are very similar to creating a piece of art, contrary to public opinion and modern developments in computing. Keep up the good work Adam. You are an inspriation to hobbyists in all fields.
MMORPG fan-boy? Prove your worth
Bear in mind the first web servers in the early days of the web were probably running on something of a similar CPU power to a 386.
This should give those of you who have an old x86 PC that is too small to run even the smallest of Linux variants, a chance to browse the web, set up a web server, and doing other essential stuff.
If you have an old pre-386 machine around, why not run Minix? That should make a far more useful machine.
Practical? How about a good solution for impoverished communities worldwide that need web access to do things like report on the ways they're being repressed, tortured, enslaved, etc?
If a community can buy a single 386 and accompanying network setup for $100, then they can probably get a c64 quality computer for around $20, saving $80 of those dollars for things like food and bromine tablets for water purification.
The next Slashdot story will be ready soon, but subscribers can beat the rush and slashdot the links early!
It shows that you can make a simple OS with minimal space. That does not mean that one could do the same of Windows (please, it just looks immature to name call) or Linux. They have far more features, and make far less assumptions, the this OS.
A big one would be preemptive multitasking. All modren OSes have it, Contiki does not. Why not? To quote them "The reason for not supporting pre-emptive multitasking is that it would unnecessarily increase the complexity not only of the operating system, but also of the applications that would run under it." Ahh, so it would make things more complex (and also larger and less efficient) to use PMT. Ok, fine, but CMT makes the assumption that all the apps running are going to be well behaved, will not use more than their fair share of time, there will be no critical evens that need to interrupt them, and that an app won't hang and take the system down with it. Fine, but for your standard desktop or server, that's not a valid assumption.
Or how about features like 3d graphics? I want to be able to use a 3d accelerator. Oooo, well now here's a whole different can of worms. All the 3d accelerators speak a different language, so we need to implement a common apstraction layer, like OpenGL. Then we need to have drivers to interface with that. Here we are talking tons more complexity and size, and much larger programs to boot. This is not even to mention the many other features most OSes have that it does not.
See you can do a lot of huge optimization on a general purpose design by making assumptions and optimizing for it. Like a memory manager. Linux, Windows, etc all have fairly complex memory managers these days. It virtualizes memory for programs and juggles the actual RAM, it changes allocation in real time and protects programs from interfering with each other or the system. However, that wastes space and CPU cycles. It would be much more efficient to assume that all programs are going to play nice and know how much RAM they need. Then when a progam starts, it tells the OS what it wants, and the OS tells it what range of memory it may use. It is then up to the program to keep within its borders. MacOS actually used to use a system much like this. Efficient? Yes, however many problems. The fact aside that a program might want more memory later, this is a huge stability and security hole. Any program can bring down the whole system by accidently writing to system memory, but mroe scary is the security implication. All you have to do is get a service, ANY service on the system to execute code for you and you are in will full permissions.
So there are plenty of things that mainstream OSes provide that a tiny OS like contiki cannot and willnot provide. This is not to bag on their accomplishment, it is a really cool OS and does get a lot out of old hardware. However do not assume that because they can make a simple CMT OS that runs a basic webserver on old hardware they could make an OS as powerful as a full featured Linux or Windows system fit in a couple MB. Not happening.
Do you really need Contiki to surf with an old X86? An 8086-based PC could be used to dial into a shell account, where you could use Lynx, telnet, and so on. College computer labs of the early and mid-1990s were filled with 286 and 386-based PCs, 68XXX-based Macs, and Sun Sparcstations, equipped with Mosaic and capable of surfing at decent speeds.
I completely agree! When I started realizing how many different platforms he has this OS running on, it hit me that this might finally allow cross-platform compatibility on all of these classic 8-bit systems that always wished for it, and never got it in their heyday.
In a strange way, it's almost like completing unfinished business from the 80's!