11.07.2015 Views

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

microprocessor 303ing system designers. In particular, distributed databasesystems where data objects can reside on many differentmachines in the network require sophisticated algorithmsthat take not only memory speed but also network load<strong>and</strong> speed into consideration.Further ReadingBlunden, Bill. Memory Management: Algorithms <strong>and</strong> Implementationsin C/C++. Plano, Tex.: Wordware Publishing, 2002.Jones, Richard, <strong>and</strong> Rafael D. Lins. Garbage Collection: Algorithmsfor Automatic Dynamic Memory Management. New York:Wiley, 1996.“The Memory Management Reference Beginner’s Guide: Overview.”Available online. URL: http://www.memorymanagement.org/articles/begin.html. Accessed August 15, 2007.message passingIn the early days <strong>of</strong> computing, a single program usuallyexecuted sequentially, with interruptions for calls to variousprocedures or functions that would perform data processingtasks <strong>and</strong> then return control to the main program(see procedures <strong>and</strong> functions). However, by the 1970sUNIX <strong>and</strong> other operating systems had introduced thecapability <strong>of</strong> running several programs at the same time(see multitasking). Additionally, it became common tocreate a large program that would manage data <strong>and</strong> smallerprograms that could link users to that service (see clientservercomputing). Further, programs themselves beganto be organized in a new way (see object-oriented programming).A program now consisted <strong>of</strong> a number <strong>of</strong> entities(objects) representing data <strong>and</strong> methods (things thatcan be done with the data).Thus, both at the operating system <strong>and</strong> application levelit became necessary to have various objects communicatewith one another. For example, a client program requestsa service from the server. The server performs the requiredservice <strong>and</strong> reports its completion. The mechanism bywhich information can be sent from one program to another(or between objects in a program) is called message passing.In one message-passing scheme, two objects (such as client<strong>and</strong> server) agree on a st<strong>and</strong>ard memory location calleda port. Each program checks the port regularly to see if amessage (containing instructions, data, or an address wheredata can be found) is pending. In turn, outgoing messagescan be left at the port.The client-server idea can be found within operatingsystems as well. For example, there can be a componentdevoted to providing file-related services, such as openingor reading a file (see file). An application that wants toopen a file leaves an appropriate message to the operatingsystem. The operating system has a message dispatcher thatexamines incoming messages <strong>and</strong> routes them to the correctcomponent (the file system manager in this case).Within an object-oriented program, an object is sent amessage by invoking one <strong>of</strong> its methods (Smalltalk <strong>and</strong> otherlanguages) or member functions (C++ or Java). For example,suppose there’s an object call Speaker that represents thesystem’s internal speaker. As part <strong>of</strong> a user alert procedure,there might be a call toSpeaker.Beep (500)which might be defined to mean “sound a beep for 500 milliseconds.”There are a number <strong>of</strong> issues involved in setting upmessage-passing systems. For example, it is convenient formany programs or objects to use the same port or otherfacility for leaving <strong>and</strong> retrieving messages, but that meansthe operating system must spend additional time routingor dispatching the messages. On the other h<strong>and</strong>, if twoobjects create a bound port, no others can use it, so each canassume that any message left there is from the other object.During the 1992–1994 period, a st<strong>and</strong>ard called MPI(Message Passing Interface) was established by a group<strong>of</strong> more than 40 industry organizations. It has since beensuperseded by MPI-2.Further ReadingGropp, William, Ewing Lusk, <strong>and</strong> Rajeev Thakur. Using MPI: PortableParallel Programming With the Message-Passing Interface.2nd ed. Cambridge, Mass.: MIT Press, 1999.“The Message Passing Interface (MPI) St<strong>and</strong>ard.” Available online.URL: http://www-unix.mcs.anl.gov/mpi/. Accessed February6, 2000.Petzold, Charles. Programming Windows: the Definitive Guide to theWin32 API. 5th ed. Redmond, Wash.: Micros<strong>of</strong>t Press, 1998.Quinn, Michael J. Parallel Programming in C with MPI <strong>and</strong> OpenMP.New York: McGraw-Hill Education, 2003.microprocessorA microprocessor is an integrated circuit chip that containsall <strong>of</strong> the essential components for the central processingunit (CPU) <strong>of</strong> a microcomputer system such as a personalcomputer.Schematic <strong>of</strong> a simple microprocessor. The control unit is responsiblefor fetching <strong>and</strong> decoding instructions, as well as fetching orwriting data to memory. The Arithmetic Logic Unit (ALU) does theactual computing (including arithmetic <strong>and</strong> logical comparisons).The registers hold data being currently used by the ALU, while thecache contains instructions that have been pre-fetched because theyare likely to be needed soon.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!