Originally posted by: kcthomas
in order to take advantage of dual cores, doesn't it require different software?
It depends on what you mean by "take advantage."
All modern operating systems (Linux, UNIX, Mac OS X, and Windows NT) support multiple processors. The typical user machine runs dozens of processes, so there are ample opportunities to share the workload between the two processors on your dual-core chip.
However, having multiple processors doesn't speed up most individual programs, as most software has a single thread of execution. Developing multithreaded software tends to be difficult; it's hard for people to think about and common computer languages like C/C++ and Java offer primtiive tools at best for dealing with such applications.
Functional languages like Erlang, OCaML, Haskell, and Scheme are thread-safe by nature, and may become more popular as the need to exploit concurrency at the language level becomes more important with multi-core processors.
See
http://www.gotw.ca/publications/concurrency-ddj.htm for a good discussion of the implications of multi-core processors.
how are people preparing to write for dual core (seeing how there is nothing to test run it on).
There are plenty of dual processor machines out there to test it on. However, even if we were talking about a completely new processor design, we could test it on a software emulator for that processor. Software for unreleased processors is typically developed using emulators and cross-compilers (compilers that generate machine code for a processor other than the one you're running the compiler on.)