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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

60 bufferingKismet, a robot that includes dynamically changing “emotions.”Brooks’s student Cynthia Breazeal would build herown research career on Kismet <strong>and</strong> what she calls “sociablerobots” (see Breazeal, Cynthia).By 1990, Brooks wanted to apply his ideas <strong>of</strong> behaviorbasedrobotics to building marketable robots that couldperform basic but useful tasks, <strong>and</strong> he enlisted two <strong>of</strong> hismost innovative <strong>and</strong> hard-working students, Colin Angle<strong>and</strong> Helen Greiner (see iRobot Corporation). The companyis best known for the Roomba robotic vacuum cleaner.Brooks remains the company’s chief technical <strong>of</strong>ficer.Meanwhile Brooks has an assured place as one <strong>of</strong> thekey innovators in modern robotics research. He is a FoundingFellow <strong>of</strong> the American Association for Artificial Intelligence<strong>and</strong> a Fellow <strong>of</strong> the American Association for theAdvancement <strong>of</strong> <strong>Science</strong>. Brooks received the 1991 <strong>Computer</strong>s<strong>and</strong> Thought Award <strong>of</strong> the International Joint Conferenceon Artificial Intelligence. He has participated innumerous distinguished lecture series <strong>and</strong> has served as aneditor for many important journals in the field, includingthe International Journal <strong>of</strong> <strong>Computer</strong> Vision.Further ReadingBrockman, John. “Beyond Computation.” Edge 2000. Availableonline. URL: http://www.edge.org/3rd_culture/brooks_beyond/beyond_index.html. Accessed May 3, 2007.———. “The Deep Question: A Talk with Rodney Brooks.” Edge29 (November 19, 1997). Available online. URL: http://www.edge.org/documents/archive/edge29.html. Accessed May 3,2007.Brooks, Rodney. Flesh <strong>and</strong> Machines: How Robots Will Change Us.New York: Pantheon Books, 2002.<strong>Computer</strong> <strong>Science</strong> <strong>and</strong> Artificial Intelligence Laboratory (CSAIL),MIT. Available online. URL: http://www.csail.mit.edu/index.php. Accessed May 3, 2007.Henderson, Harry. Modern Robotics: Building Versatile Machines.New York: Chelsea House, 2006.O’Connell, Sanjida. “Cog—Is It More than a Machine?” LondonTimes (May 6, 2002): 10. Rodney Brooks [homepage]. CSAIL.Available online. URL: http://people.csail.mit.edu/brooks/.Accessed May 3, 2007.“Rodney Brooks—The Past <strong>and</strong> Future <strong>of</strong> Behavior Based Robotics”[Podcast]. Available online. URL: http://lis.epfl.ch/resources/podcast/mp3/TalkingRobots-RodneyBrooks.mp3.Accessed May 3, 2007.buffering<strong>Computer</strong> designers must deal with the way different parts<strong>of</strong> a computer system process data at different speeds. Forexample, text or graphical data can be stored in main memory(RAM) much more quickly than it can be sent to aprinter, <strong>and</strong> in turn data can be sent to the printer fasterthan the printer is able to print the data. The solution tothis problem is the use <strong>of</strong> a buffer (sometimes called aspool), or memory area set aside for the temporary storage<strong>of</strong> data. Buffers are also typically used to store data to bedisplayed (video buffer), to collect data to be transmittedto (or received from) a modem, for transmitting audio orvideo content (see streaming) <strong>and</strong> for many other devices(see input/output). Buffers can also be used for data thatmust be reorganized in some way before it can be furtherprocessed. For example, character data is stored in a communicationsbuffer so it can be serialized for transmission.Buffering TechniquesThe two common arrangements for buffering data are thepooled buffer <strong>and</strong> the circular buffer. In the pool buffer,multiple buffers are allocated, with the buffer size beingequal to the size <strong>of</strong> one data record. As each data record isreceived, it is copied to a free buffer from the pool. When itis time to remove data from the buffer for processing, datais read from the buffers in the order in which it had beenstored (first in, first out, or FIFO). As a buffer is read, it ismarked as free so it can be used for more incoming data.In the circular buffer there is only a single buffer, largeenough to hold a number <strong>of</strong> data records. The buffer is setup as a queue (see queue) to which incoming data recordsare written <strong>and</strong> from which they are read as needed for processing.Because the queue is circular, there is no “first” or“last” record. Rather, two pointers (called In <strong>and</strong> Out) aremaintained. As data is stored in the buffer, the In pointer isincremented. As data is read back from the buffer, the Outpointer is incremented. If either pointer reaches aroundback to the beginning, it begins to wrap around. The s<strong>of</strong>twaremanaging the buffer must make sure that if the Inpointer goes past the Out pointer, then the Out pointermust not go past In. Similarly, if Out goes past In, then Inmust not go past Out.The fact that programmers sometimes fail to check forbuffer overflows has resulted in a seemingly endless series<strong>of</strong> security vulnerabilities, such as in earlier versions <strong>of</strong> theUNIX sendmail program. In one technique, attackers canuse a too-long value to write data, or worse, comm<strong>and</strong>sinto the areas that control the program’s execution, possiblytaking over the program (see also computer crime <strong>and</strong>security).Buffering is conceptually related to a variety <strong>of</strong> othertechniques for managing data. A disk cache is essentially aspecial buffer that stores additional data read from a disk inanticipation that the consuming program may soon requestit. A processor cache stores instructions <strong>and</strong> data in anticipation<strong>of</strong> the needs <strong>of</strong> the CPU. Streaming <strong>of</strong> multimedia(video or sound) buffers a portion <strong>of</strong> the content so it can beplayed smoothly while additional content is being receivedfrom the source.Depending on the application, the buffer can be a part<strong>of</strong> the system’s main memory (RAM) or it can be a separatememory chip or chips onboard the printer or other device.Decreasing prices for RAM have led to increases in thetypical size <strong>of</strong> buffers. Moving data from main memoryto a peripheral buffer also facilitates the multitasking featurefound in most modern operating systems, by allowingapplications to buffer their output <strong>and</strong> continue processing.Further ReadingBuffer Overflow [articles]. Available online. URL: http://doc.bughunter.net/buffer-overflow/.Accessed May 23, 2007.Grover, S<strong>and</strong>eep. “Buffer Overflow Attacks <strong>and</strong> Their Countermeasures.”Linux Journal, March 3, 2003. Available online.URL: http://www.linuxjournal.com/article/6701. AccessedMay 23, 2007.

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

Saved successfully!

Ooh no, something went wrong!