In article
<alpine.OSX.1.00.0802261507140.17240 RemoveThis @hagrid.ewd.goldmark.org>, Jeffrey
Goldberg <nobody RemoveThis @goldmark.org> wrote:
> In <paul.sture.nospam-C724F0.06134826022008 RemoveThis @mac.sture.ch>, P. Sture wrote:
>
> > I first came across Gigabit Ethernet when it was still expensive, but in
> > the context of a data centre mirroring multiple disk arrays, both
> > locally and with remote data centres.
>
> I saw my first gigabit switch when working on a beowulf cluster of linux
> boxes in the late 1990s. I really was just looking over the shoulder of
> the person putting it together. So I can't claim any expertise in that
> area. I still don't grok how compilers and coders can really make use of
> parallel CPUs.
It is pretty straight-forward. Many programs, which begin life as a
single thread of execution, spawn one or more new processes or threads,
which have their own threads of execution (they execute different parts
of the same program or a different program altogether). This allows a
program to be doing work even if one thread of execution gets blocked
(stalled) waiting for some slow operation like user input or a disk
read. This process is called "multi-tasking" and has been part of
computer architecture for decades
(<http://en.wikipedia.org/wiki/Computer_multitasking>).
This effect proved to be very valuable in speeding up programs and
making them more responsive even when there was only one processor. For
example, it is common for programs that have a GUI interface (like most
Mac programs) to have one thread for handling GUI events and other
threads for doing computations (the actual work) or I/O. This avoids
the beachball effect while actual computation is going on.
If the computer has multiple processors, then the system can run
separate processes (threads) on separate processors simultaneously.
This provides even more of a speedup. The operating system generally
takes care of the scheduling, so programmers don't have to worry about
making sure separate threads run on different CPUs.
All of the CPUs can access the same memory, so it is easy for the OS to
run threads on any available CPU.
A single program with multiple threads does need to arrange that the
threads cooperate in some way. That is usually the difficult part in
creating a multi-tasking program. But the problem existed long before
there were multi-processor systems, and lots of different methods for
what is called "interprocess communication" have been developed: shared
memory, messages, sockets, FIFOs, pipes, semaphores, mutexes, etc.
--
Jim Gibson
Posted Via Usenet.com Premium Usenet Newsgroup Services
----------------------------------------------------------
** SPEED ** RETENTION ** COMPLETION ** ANONYMITY **
----------------------------------------------------------
http://www.usenet.com >> Stay informed about: Did I miss something? 3 gigabit Ethernet really soon?