Contiki Ported To x86 243
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."
Pushing the limits of computing (Score:5, Insightful)
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.
Re:Wow. (Score:3, Insightful)
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.
What about Minix (Score:3, Insightful)
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.
Re:Neat, now let's talk practical. (Score:4, Insightful)
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.
Re:Pushing the limits of computing (Score:5, Insightful)
However, there's a limit to optimizing code for efficiency's sake (both size and speed). From years of experience developing software, assembler up to Java, keeping your algorithm general allows it to be adaptable and maintainable. Nothing sucks more than spending days rewriting code because one number changes in the spec (yes, you can optimize that far).
As for writing "bloat" code, writing huge software systems in a timely manner in today's marketplace **implies** this situation. When you don't have to perform mundane chores in your code, you are free to produce more faster, and this is what companies want, and in fact, pay you for. It's a sad situation, but it's a dog-eat-dog world, and the consumer cares less about quality these days.
You also bring up an interesting point about when we'll hit the ceiling for computing power. I'm sure there's a real physical OPS/cm^3 limit (the only way to make it faster is to make it larger) but who knows what that is, or when we'll hit it. It'll be interesting to see how it'll affect the code produced. I'm hoping it's some type of golden age, where everbody has the same amount of standard computing hardware, and all code is made to this perfect, end-all spec.
-- If you optimize everything, you will always be unhappy. (Knuth)
Not really (Score:5, Insightful)
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.
No obsolete computers (Score:2, Insightful)
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.
Re: kudos to Adam Dunkels (Score:3, Insightful)
In a strange way, it's almost like completing unfinished business from the 80's!