ARCH TERM PAPER (2)

download ARCH TERM PAPER (2)

of 22

Transcript of ARCH TERM PAPER (2)

  • 8/7/2019 ARCH TERM PAPER (2)

    1/22

    Term paperOf

    Bca-mca

    COMPUTER ORGANISATION AND

    ARCHITECTURE

    on

    topic

    VIRTUAL MEMORY ARCHITECTURE

    SUBMITTED TO:- SUBMITTED BY:-

    Ms - ketin sood Maninder singh

    ROLLNO:RE3802b43

    Bca-mca(int)

  • 8/7/2019 ARCH TERM PAPER (2)

    2/22

  • 8/7/2019 ARCH TERM PAPER (2)

    3/22

    TABLE OF CONTENTS:- VIRTUAL MEMORY ARCHITECTURE HISTORY PAGED VIRTUAL MEMORY PAGE TABLES DYNAMIC ADDRESS TRANSLATION PAGING SUPERVISOR SEGMENTED VIRTUAL MEMORY ABSTRACT BACKGROUND DETAILS BIBILOGRAPHY

  • 8/7/2019 ARCH TERM PAPER (2)

    4/22

    Virtual memory architecture

    Virtual memory is a computer system technique which gives an application program the impression that it has contiguous working memory (an addressspace), while in fact it may be physically fragmented and may even overflowon to disk storage. Systems that use this technique make programming of large applications easier and use real physical memory (e.g. RAM ) moreefficiently than those without virtual memory. Virtual memory differssignificantly from memory virtualization in that virtual memory allowsresources to be virtualized as memory for a specific system, as opposed to alarge pool of memory being virtualized as smaller pools for many differentsystems.

    Note that "virtual memory" is more than just "using disk space to extend

    physical memory size" - that is merely the extension of the memoryhierarchy to include hard disk drives . Extending memory to disk is a normalconsequence of using virtual memory techniques, but could be done by other means such as overlays or swapping programs and their data completely outto disk while they are inactive. The definition of "virtual memory" is basedon redefining the address space with a contiguous virtual memory addressesto "trick" programs into thinking they are using large blocks of contiguousaddresses.

    All modern general-purpose computer operating systems use virtual memorytechniques for ordinary applications, such as word processors, spreadsheets,multimedia players, accounting, etc. Older operating systems, such as DOS of the 1980s, or those for the mainframes of the 1960s, generally had novirtual memory functionality - notable exceptions being the Atlas , B5000 and Apple Computer' s Lisa .

    Embedded systems and other special-purpose computer systems whichrequire very fast and/or very consistent response times may choose not touse virtual memory due to decreased determinism .

    Virtual memory is intended to help the programmer by taking care of somememory housekeeping duties.Virtual memory or virtual memory addressing is a memory managementtechnique, used by multitasking computer operating system s wherein non-contiguous memory is presented to a software application (aka process) as

    http://en.wikipedia.org/wiki/Computerhttp://en.wikipedia.org/wiki/RAMhttp://en.wikipedia.org/wiki/Memory_virtualizationhttp://en.wikipedia.org/wiki/Memory_hierarchyhttp://en.wikipedia.org/wiki/Memory_hierarchyhttp://en.wikipedia.org/wiki/Hard_disk_driveshttp://en.wikipedia.org/wiki/Overlay_(programming)http://en.wikipedia.org/wiki/Operating_systemhttp://en.wikipedia.org/wiki/DOShttp://en.wikipedia.org/wiki/Mainframe_computerhttp://en.wikipedia.org/wiki/Atlas_Computer_(Manchester)http://en.wikipedia.org/wiki/B5000http://en.wikipedia.org/wiki/Apple_Inc.http://en.wikipedia.org/wiki/Apple_Lisahttp://en.wikipedia.org/wiki/Deterministic_algorithmhttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/5268.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/5268.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/22194.xml&stylehttp://en.wikipedia.org/wiki/Computerhttp://en.wikipedia.org/wiki/RAMhttp://en.wikipedia.org/wiki/Memory_virtualizationhttp://en.wikipedia.org/wiki/Memory_hierarchyhttp://en.wikipedia.org/wiki/Memory_hierarchyhttp://en.wikipedia.org/wiki/Hard_disk_driveshttp://en.wikipedia.org/wiki/Overlay_(programming)http://en.wikipedia.org/wiki/Operating_systemhttp://en.wikipedia.org/wiki/DOShttp://en.wikipedia.org/wiki/Mainframe_computerhttp://en.wikipedia.org/wiki/Atlas_Computer_(Manchester)http://en.wikipedia.org/wiki/B5000http://en.wikipedia.org/wiki/Apple_Inc.http://en.wikipedia.org/wiki/Apple_Lisahttp://en.wikipedia.org/wiki/Deterministic_algorithmhttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/5268.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/22194.xml&style
  • 8/7/2019 ARCH TERM PAPER (2)

    5/22

    contiguous memory. The contiguous memory is referred to as the virtualaddress space .

    Virtual memory addressing is typically used in paged memory systems. Thisin turn is often combined with memory swapping, whereby memory pagesstored in primary storage are written to secondary storage , thus freeingfaster primary storage for other processes to use. A further benefit of this isthat, since secondary storage is typically larger than primary storage, thecombined storage of all virtual address spaces may be larger than the total

    primary storage in a system.

    The term "virtual memory" is often confused with "memory swapping" (or "page/swap file" use), probably due in part to the prolific MicrosoftWindows family of operating systems referring to the enabling/disabling of

    memory swapping as virtual memory. In fact, Windows uses paged memoryand virtual memory addressing, even if the so called "virtual memory" isdisabled.

    In technical terms, virtual memory allows software to run in a memoryaddress space whose size and addressing are not necessarily tied to thecomputer's physical memory. To properly implement virtual memorythe CPU (or a device attatched to it) must provide a way for theoperating system to map virtual memory to physical memory and for itto detect when an address is required that does not currently relate tomain memory so that the needed data can be swapped in. While itwould certainly be possible to provide virtual memory without theCPU's assistance it would essentially require emulating a CPU that did

    provide the needed feature

    http://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/934423.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/934423.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/311193.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/88241.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/88248.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/507144.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/934423.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/934423.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/311193.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/88241.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/88248.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/507144.xml&style
  • 8/7/2019 ARCH TERM PAPER (2)

    6/22

    History

    In the 1940s and 1950s, before the development of a virtual memory, alllarger programs had to contain logic for managing two-level storage(primary and secondary, today's analogies being RAM and hard disk), suchas overlaying techniques. Programs were responsible for moving overlays

    back and forth from secondary storage to primary.

    The main reason for introducing virtual memory was therefore not simply toextend primary memory, but to make such an extension as easy to use for

    programmers as possible.

    Many systems already had the ability to divide the memory betweenmultiple programs (required for multiprogramming and multiprocessing ), provided for example by "base and bounds registers" on early models of thePDP-10 , without providing virtual memory. That gave each application a

    private address space starting at an address of 0, with an address in the private address space being checked against a bounds register to make sureit's within the section of memory allocated to the application and, if it is,having the contents of the corresponding base register being added to it togive an address in main memory. This is a simple form of segmentation without virtual memory.

    Virtual memory was developed in approximately 19591962, at theUniversity of Manchester for the Atlas Computer , completed in 1962.However, Fritz-Rudolf Gntsch , one of Germany's pioneering computer scientists and later the developer of the Telefunken TR 440 mainframe ,claims to have invented the concept in 1957 in his doctoral dissertationLogischer Entwurfeines digitalen Rechengertes mit mehreren asynchronlaufenden Trommeln und automatischem Schnellspeicherbetrieb (LogicConcept of a Digital Computing Device with Multiple Asynchronous DrumStorage and Automatic Fast Memory Mode).

    In 1961, Burroughs released the B5000 , the first commercial computer withvirtual memory. It used segmentation rather than paging .

    Like many technologies in the history of computing, virtual memory was notaccepted without challenge. Before it could be implemented in mainstreamoperating systems, many models, experiments, and theories had to be

    http://en.wikipedia.org/wiki/Overlay_(programming)http://en.wikipedia.org/wiki/Multiprogramminghttp://en.wikipedia.org/wiki/Computer_multitaskinghttp://en.wikipedia.org/wiki/PDP-10http://en.wikipedia.org/wiki/Segmentation_(memory)http://en.wikipedia.org/wiki/University_of_Manchesterhttp://en.wikipedia.org/wiki/Atlas_Computerhttp://en.wikipedia.org/w/index.php?title=Bearbeiten_von_Fritz-Rudolf_G%C3%BCntsch&action=edit&redlink=1http://en.wikipedia.org/wiki/Telefunkenhttp://en.wikipedia.org/w/index.php?title=TR_440&action=edit&redlink=1http://en.wikipedia.org/wiki/Mainframehttp://en.wikipedia.org/wiki/Burroughs_Corporationhttp://en.wikipedia.org/wiki/B5000http://en.wikipedia.org/wiki/Segmentation_(memory)http://en.wikipedia.org/wiki/Paginghttp://en.wikipedia.org/wiki/Overlay_(programming)http://en.wikipedia.org/wiki/Multiprogramminghttp://en.wikipedia.org/wiki/Computer_multitaskinghttp://en.wikipedia.org/wiki/PDP-10http://en.wikipedia.org/wiki/Segmentation_(memory)http://en.wikipedia.org/wiki/University_of_Manchesterhttp://en.wikipedia.org/wiki/Atlas_Computerhttp://en.wikipedia.org/w/index.php?title=Bearbeiten_von_Fritz-Rudolf_G%C3%BCntsch&action=edit&redlink=1http://en.wikipedia.org/wiki/Telefunkenhttp://en.wikipedia.org/w/index.php?title=TR_440&action=edit&redlink=1http://en.wikipedia.org/wiki/Mainframehttp://en.wikipedia.org/wiki/Burroughs_Corporationhttp://en.wikipedia.org/wiki/B5000http://en.wikipedia.org/wiki/Segmentation_(memory)http://en.wikipedia.org/wiki/Paging
  • 8/7/2019 ARCH TERM PAPER (2)

    7/22

    developed to overcome the numerous problems. Dynamic address translationrequired a specialized, expensive, and hard to build hardware, moreover initially it slightly slowed down the access to memory. There were alsoworries that new system-wide algorithms of utilizing secondary storagewould be far less effective than previously used application-specific ones.

    By 1969 the debate over virtual memory for commercial computers wasover. An IBM research team led by David Sayre showed that the virtualmemory overlay system consistently worked better than the best manuallycontrolled systems.

    Possibly the first minicomputer to introduce virtual memory was the Norwegian NORD-1 . During the 1970s, other minicomputers implementedvirtual memory, notably VAX models running VMS .

    Virtual memory was introduced to the x86 architecture with the protectedmode of the Intel 80286 processor. At first it was done with segmentswapping , which became inefficient with larger segments. The Intel 80386 introduced support for paging underneath the existing segmentation layer.The page fault exception could be chained with other exceptions withoutcausing a double fault .

    Before the development of the virtual memory technique, programmers inthe 1940s and 1950s had to manage two-level storage (main memory or

    RAM, and secondary memory in the form of hard disks or earlier, magneticdrum s) directly.

    Virtual memory was developed in approximately 1959 - 1962 , at theUniversity of Manchester for the Atlas Computer , completed in 1962 .However, Fritz-Rudolf Gntsch, one of Germany's pioneering computer scientists and later the developer of the Telefunken TR 440 mainframe,claims to have invented the concept in his doctoral dissertation Logischer Entwurf eines digitalen Rechengertes mit mehreren asynchron laufendenTrommeln und automatischem Schnellspeicherbetrieb (Logic Concept of aDigital Computing Device with Multiple Asynchronous Drum Storage andAutomatic Fast Memory Mode) in 1957.

    Like many technologies in the history of computing, virtual memory was notaccepted without challenge. Before it could be regarded as a stable entity,many models, experiments, and theories had to be developed to overcomethe numerous problems with virtual memory. Specialized hardware had to be

    http://en.wikipedia.org/wiki/IBMhttp://en.wikipedia.org/wiki/Minicomputerhttp://en.wikipedia.org/wiki/NORD-1http://en.wikipedia.org/wiki/VAXhttp://en.wikipedia.org/wiki/OpenVMShttp://en.wikipedia.org/wiki/Protected_modehttp://en.wikipedia.org/wiki/Protected_modehttp://en.wikipedia.org/wiki/Intel_80286http://en.wikipedia.org/w/index.php?title=Segment_swapping&action=edit&redlink=1http://en.wikipedia.org/w/index.php?title=Segment_swapping&action=edit&redlink=1http://en.wikipedia.org/wiki/Intel_80386http://en.wikipedia.org/wiki/Segmentation_(memory)http://en.wikipedia.org/wiki/Double_faulthttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/13777.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/146961.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/146961.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34662.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34717.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/83266.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/2592.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34717.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/653812.xml&stylehttp://en.wikipedia.org/wiki/IBMhttp://en.wikipedia.org/wiki/Minicomputerhttp://en.wikipedia.org/wiki/NORD-1http://en.wikipedia.org/wiki/VAXhttp://en.wikipedia.org/wiki/OpenVMShttp://en.wikipedia.org/wiki/Protected_modehttp://en.wikipedia.org/wiki/Protected_modehttp://en.wikipedia.org/wiki/Intel_80286http://en.wikipedia.org/w/index.php?title=Segment_swapping&action=edit&redlink=1http://en.wikipedia.org/w/index.php?title=Segment_swapping&action=edit&redlink=1http://en.wikipedia.org/wiki/Intel_80386http://en.wikipedia.org/wiki/Segmentation_(memory)http://en.wikipedia.org/wiki/Double_faulthttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/13777.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/146961.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/146961.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34662.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34717.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/83266.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/2592.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34717.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/653812.xml&style
  • 8/7/2019 ARCH TERM PAPER (2)

    8/22

    developed that would take a "virtual" address and translate it into an actual physical address in memory (secondary or primary). Some worried that this process would be expensive, hard to build, and take too much processor power to do the address translation.

    By 1969 the debates over virtual memory for commercial computers wereover. An IBM research team, lead by David Sayre, showed that the virtualmemory overlay system worked consistently better than the best manual-controlled systems.

    http://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34610.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/14632.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34610.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/14632.xml&style
  • 8/7/2019 ARCH TERM PAPER (2)

    9/22

    Paged virtual memory

    Almost all implementations of virtual memory divide the virtual addressspace of an application program into pages ; a page is a block of contiguousvirtual memory addresses. Pages are usually at least 4K bytes in size, andsystems with large virtual address ranges or large amounts of real memory(e.g. RAM ) generally use larger page sizes.

    Page tables

    Almost all implementations use page tables to translate the virtual addressesseen by the application program into physical addresses (also referred to as

    "real addresses") used by the hardware to process instructions. Each entry inthe page table contains a mapping for a virtual page to either the realmemory address at which the page is stored, or an indicator that the page iscurrently held in a disk file. (Although most do, some systems may notsupport use of a disk file for virtual memory.)

    Systems can have one page table for the whole system or a separate pagetable for each application. If there is only one, different applications whichare running at the same time share a single virtual address space, i.e. theyuse different parts of a single range of virtual addresses. Systems which usemultiple page tables provide multiple virtual address spaces - concurrentapplications think they are using the same range of virtual addresses, buttheir separate page tables redirect to different real addresses.

    Dynamic address translation

    http://en.wikipedia.org/wiki/Virtual_address_spacehttp://en.wikipedia.org/wiki/Virtual_address_spacehttp://en.wikipedia.org/wiki/Page_(computer_memory)http://en.wikipedia.org/wiki/Bytehttp://en.wikipedia.org/wiki/RAMhttp://en.wikipedia.org/wiki/Page_tablehttp://en.wikipedia.org/wiki/Physical_addresshttp://en.wikipedia.org/wiki/Multiprogramminghttp://en.wikipedia.org/wiki/Virtual_address_spacehttp://en.wikipedia.org/wiki/Virtual_address_spacehttp://en.wikipedia.org/wiki/Page_(computer_memory)http://en.wikipedia.org/wiki/Bytehttp://en.wikipedia.org/wiki/RAMhttp://en.wikipedia.org/wiki/Page_tablehttp://en.wikipedia.org/wiki/Physical_addresshttp://en.wikipedia.org/wiki/Multiprogramming
  • 8/7/2019 ARCH TERM PAPER (2)

    10/22

    If, while executing an instruction, a CPU fetches an instruction located at a particular virtual address, fetches data from a specific virtual address or stores data to a particular virtual address, the virtual address must betranslated to the corresponding physical address. This is done by a hardwarecomponent, sometimes called a memory management unit , which looks upthe real address (from the page table) corresponding to a virtual address and

    passes the real address to the parts of the CPU which execute instructions. If the page tables indicate that the virtual memory page is not currently in realmemory, the hardware raises a page fault exception (special internal signal)which invokes the paging supervisor component of the operating system (see

    below).

    Paging supervisor

    This part of the operating system creates and manages the page tables. If thedynamic address translation hardware raises a page fault exception, the

    paging supervisor searches the page space on secondary storage for the pagecontaining the required virtual address, reads it into real physical memory,updates the page tables to reflect the new location of the virtual address andfinally tells the dynamic address translation mechanism to start the searchagain. Usually all of the real physical memory is already in use and the

    paging supervisor must first save an area of real physical memory to disk and update the page table to say that the associated virtual addresses are nolonger in real physical memory but saved on disk. Paging supervisorsgenerally save and overwrite areas of real physical memory which have beenleast recently used , because these are probably the areas which are used leastoften. So every time the dynamic address translation hardware matches avirtual address with a real physical memory address, it must put a time-stamp in the page table entry for that virtual address.

    http://en.wikipedia.org/wiki/CPUhttp://en.wikipedia.org/wiki/Memory_management_unithttp://en.wikipedia.org/wiki/CPUhttp://en.wikipedia.org/wiki/Page_faulthttp://en.wikipedia.org/wiki/Exceptionhttp://en.wikipedia.org/wiki/Operating_systemhttp://en.wikipedia.org/wiki/Page_replacement_algorithm#Least_recently_usedhttp://en.wikipedia.org/wiki/CPUhttp://en.wikipedia.org/wiki/Memory_management_unithttp://en.wikipedia.org/wiki/CPUhttp://en.wikipedia.org/wiki/Page_faulthttp://en.wikipedia.org/wiki/Exceptionhttp://en.wikipedia.org/wiki/Operating_systemhttp://en.wikipedia.org/wiki/Page_replacement_algorithm#Least_recently_used
  • 8/7/2019 ARCH TERM PAPER (2)

    11/22

    Permanently resident pages

    All virtual memory systems have memory areas that are "pinned down", i.e.cannot be swapped out to secondary storage, for example:

    Interrupt mechanisms generally rely on an array of pointers to thehandlers for various types of interrupt ( I/O completion, timer event,

    program error, page fault , etc.). If the pages containing these pointersor the code that they invoke were pageable, interrupt-handling would

    become even more complex and time-consuming; and it would beespecially difficult in the case of page fault interrupts.

    The page tables are usually not pageable.

    Data buffers that are accessed outside of the CPU, for example by peripheral devices that use direct memory access (DMA) or by I/Ochannels . Usually such devices and the buses (connection paths) towhich they are attached use physical memory addresses rather thanvirtual memory addresses. Even on buses with an IOMMU , which is aspecial memory management unit that can translate virtual addressesused on an I/O bus to physical addresses, the transfer cannot bestopped if a page fault occurs and then restarted when the page faulthas been processed. So pages containing locations to which or fromwhich a peripheral device is transferring data are either permanently

    pinned down or pinned down while the transfer is in progress. Timing-dependent kernel/application areas cannot tolerate the varying

    response time caused by paging.

    Segmented virtual memory

    Some systems, such as the Burroughs large systems , do not use paging toimplement virtual memory. Instead, they use segmentation , so that anapplication's virtual address space is divided into variable-length segments.

    http://en.wikipedia.org/wiki/Interrupthttp://en.wikipedia.org/wiki/I/Ohttp://en.wikipedia.org/wiki/Timerhttp://en.wikipedia.org/wiki/Page_faulthttp://en.wikipedia.org/wiki/Data_bufferhttp://en.wikipedia.org/wiki/Direct_memory_accesshttp://en.wikipedia.org/wiki/I/O_channelhttp://en.wikipedia.org/wiki/I/O_channelhttp://en.wikipedia.org/wiki/Bus_(computing)http://en.wikipedia.org/wiki/IOMMUhttp://en.wikipedia.org/wiki/Memory_management_unithttp://en.wikipedia.org/wiki/Burroughs_large_systemshttp://en.wikipedia.org/wiki/Segmentation_(memory)http://en.wikipedia.org/wiki/Interrupthttp://en.wikipedia.org/wiki/I/Ohttp://en.wikipedia.org/wiki/Timerhttp://en.wikipedia.org/wiki/Page_faulthttp://en.wikipedia.org/wiki/Data_bufferhttp://en.wikipedia.org/wiki/Direct_memory_accesshttp://en.wikipedia.org/wiki/I/O_channelhttp://en.wikipedia.org/wiki/I/O_channelhttp://en.wikipedia.org/wiki/Bus_(computing)http://en.wikipedia.org/wiki/IOMMUhttp://en.wikipedia.org/wiki/Memory_management_unithttp://en.wikipedia.org/wiki/Burroughs_large_systemshttp://en.wikipedia.org/wiki/Segmentation_(memory)
  • 8/7/2019 ARCH TERM PAPER (2)

    12/22

    A virtual address consists of a segment number and an offset within thesegment.

    Memory is still physically addressed with a single number (called absoluteor linear address). To obtain it, the processor looks up the segment number in a segment table to find a segment descriptor. The segment descriptor contains a flag indicating whether the segment is present in main memoryand, if it is, the address in main memory of the beginning of the segment(segment's base address) and the length of the segment. It checks whether the offset within the segment is less than the length of the segment and, if itisn't, an interrupt is generated. If a segment is not present in main memory, ahardware interrupt is raised to the operating system, which may try to readthe segment into main memory, or to swap in. The operating system mighthave to remove other segments (swap out) from main memory in order to

    make room in main memory for the segment to be read in.

    Notably, the Intel 80286 supported a similar segmentation scheme as anoption, but it was unused by most operating systems.

    It is possible to combine segmentation and paging, usually dividing eachsegment into pages. In systems that combine them, such as Multics and theIBM System/38 and IBM System i machines, virtual memory is usuallyimplemented with paging, with segmentation used to provide memory

    protection. With the Intel 80386 and later IA-32 processors, the segmentsreside in a 32-bit linear paged address space, so segments can be moved intoand out of that linear address space, and pages in that linear address spacecan be moved in and out of main memory, providing two levels of virtualmemory; however, few if any operating systems do so. Instead, they onlyuse paging.

    The difference between virtual memory implementations using pages andusing segments is not only about the memory division with fixed andvariable sizes, respectively. In some systems, e.g. Multics , or later System/38 and Prime machines, the segmentation was actually visible to theuser processes, as part of the semantics of a memory model. In other words,instead of a process just having a memory which looked like a single largevector of bytes or words, it was more structured. This is different from using

    pages, which doesn't change the model visible to the process. This hadimportant consequences.

    http://en.wikipedia.org/wiki/Base_addresshttp://en.wikipedia.org/wiki/Intel_80286http://en.wikipedia.org/wiki/Multicshttp://en.wikipedia.org/wiki/IBM_System/38http://en.wikipedia.org/wiki/IBM_System_ihttp://en.wikipedia.org/wiki/Intel_80386http://en.wikipedia.org/wiki/IA-32http://en.wikipedia.org/wiki/32-bithttp://en.wikipedia.org/wiki/Multicshttp://en.wikipedia.org/wiki/System/38http://en.wikipedia.org/wiki/Prime_Computerhttp://en.wikipedia.org/wiki/Base_addresshttp://en.wikipedia.org/wiki/Intel_80286http://en.wikipedia.org/wiki/Multicshttp://en.wikipedia.org/wiki/IBM_System/38http://en.wikipedia.org/wiki/IBM_System_ihttp://en.wikipedia.org/wiki/Intel_80386http://en.wikipedia.org/wiki/IA-32http://en.wikipedia.org/wiki/32-bithttp://en.wikipedia.org/wiki/Multicshttp://en.wikipedia.org/wiki/System/38http://en.wikipedia.org/wiki/Prime_Computer
  • 8/7/2019 ARCH TERM PAPER (2)

    13/22

    A segment wasn't just a "page with a variable length", or a simple way tolengthen the address space (as in Intel 80286 ). In Multics, the segmentationwas a very powerful mechanism that was used to provide a single-levelvirtual memory model, in which there was no differentiation between"process memory" and "file system" - a process' active address spaceconsisted only a list of segments (files) which were mapped into its potentialaddress space, both code and data. It is not the same as the later mmap function in Unix, because inter-file pointers don't work when mapping filesinto semi-arbitrary places. Multics had such addressing mode built into mostinstructions. In other words it could perform relocated inter-segmentreferences, thus eliminating the need for a linker completely. This alsoworked when different processes mapped the same file into different placesin their private address spaces.

    Avoiding thrashing

    All implementations need to avoid a problem called " thrashing ", where thecomputer spends too much time shuffling blocks of virtual memory betweenreal memory and disks, and therefore appears to work slower. Better designof application programs can help, but ultimately the only cure is to installmore real memory.

    Abstract

    Real-time ray tracing offers a number of interesting benefits over currentrasterization techniques. However, a major drawback has been that raytracing requires access to the entire scene data base. This is particularly

    problematic for hardware implementations that only have a limited amountof dedicated on-board memory.

    http://en.wikipedia.org/wiki/Intel_80286http://en.wikipedia.org/wiki/Mmaphttp://en.wikipedia.org/wiki/Linker_(computing)http://en.wikipedia.org/wiki/Thrashing_(computer_science)http://en.wikipedia.org/wiki/Intel_80286http://en.wikipedia.org/wiki/Mmaphttp://en.wikipedia.org/wiki/Linker_(computing)http://en.wikipedia.org/wiki/Thrashing_(computer_science)
  • 8/7/2019 ARCH TERM PAPER (2)

    14/22

  • 8/7/2019 ARCH TERM PAPER (2)

    15/22

    and forth. The programmer would do this by determining which sections of the program (and also its data) were mutually exclusive , and then arrangingfor loading and unloading the appropriate sections from physical memory, asneeded. The disadvantage of this approach is that each application's

    programmer must spend time and effort on designing, implementing, anddebugging this mechanism, instead of focusing on his or her application; thishampers programmer's efficiency. Also, if any programmer could trulychoose which of their items of data to store in the physical memory at anyone time, they could easily conflict with the decisions made by another

    programmer, who also wanted to use all the available physical memory atthat point.

    Another option is to store some form of handles to data rather than direct pointers and let the OS deal with swapping the data associated with those

    handles between the swapfile and physical memory as needed. This works but has a couple of problems, namely that it complicates application code,that it requires applications to play nice (they generally need the power tolock the data into physical memory to actually work on it) and that it stopsthe languages standard library doing its own suballocations inside large

    blocks from the OS to improve performance. The best known example of this kind of arrangement is probably the 16-bit versions of Windows .

    The modern solution is to use virtual memory, in which a combination of special hardware and operating system software makes use of both kinds of memory to make it look as if the computer has a much larger main memorythan it actually does and to lay that space out differently at will. It does thisin a way that is invisible to the rest of the software running on the computer.It usually provides the ability to simulate a main memory of almost any size(as limited by the size of the addresses being used by the operating systemand cpu; the total size of the Virtual Memory can be 2 32 for a 32 bit system,or approximately 4 Gigabytes (though OS design decisions can make theamount available to applications in practice much less than this), whilenewer 64 bit chips and operating systems use 64 or 48 bit addresses and can

    index much more virtual memory).

    This makes the job of the application programmer much simpler. No matter how much memory the application needs, it can act as if it has access to amain memory of that size and can place its data wherever in that virtualspace that it likes. The programmer can also completely ignore the need to

    http://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/312648.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/23716.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/323395.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/5310.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/22194.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/312648.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/23716.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/323395.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/5310.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/22194.xml&style
  • 8/7/2019 ARCH TERM PAPER (2)

    16/22

    manage the moving of data back and forth between the different kinds of memory.

    Basic operation

    When virtual memory is used, or when a main memory location is read or written to by the CPU, hardware within the computer translates the addressof the memory location generated by the software (the virtual memoryaddress ) into either:

    the address of a real memory location (the physical memory address )which is assigned within the computer's physical memory to hold thatmemory item, or

    an indication that the desired memory item is not currently resident inmain memory (a so-called virtual memory exception or page fault )

    In the former case, the memory reference operation is completed, just as if the virtual memory were not involved. In the latter case, the operatingsystem is invoked to handle the situation, since the actions needed before the

    program can continue are usually quite complex.

    The effect of this is to swap sections of information between the physicalmemory and the disk; the area of the disk which holds the information whichis not currently in physical memory is called the swap file (OS/2, earlyWindowses, and others), page file (Windows), or swap partition (a dedicated

    partition of a hard disk, commonly seen in the Linux operating system).

    Also on most modern systems virtual address space can be mapped to disk storage other than the swapfile. This allows parts of executables to be pagedin as needed direct from the executable saving the need to load the entireexecutable at application load time and reducing the demand for swap space.It also allows the operating system to keep one copy of an executable inmemory at once rather than loading it separately for each running instancethereby reducing the pressure on physical memory.

    http://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/1157143.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/934423.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/1157143.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/934423.xml&style
  • 8/7/2019 ARCH TERM PAPER (2)

    17/22

    Details

    The translation from virtual to physical addresses is implemented by anMMU (Memory Management Unit). This may be either a module of theCPU, or an auxiliary, closely coupled chip.

    The operating system is responsible for deciding which parts of the program's simulated main memory are kept in physical memory. Theoperating system also maintains the translation tables which provide themappings between virtual and physical addresses, for use by the MMU.

    Finally, when a virtual memory exception occurs, the operating system isresponsible for allocating an area of physical memory to hold the missinginformation (and possiblly in the process pushing something else out todisk), bringing the relevant information in from the disk, updating thetranslation tables, and finally resuming execution of the software thatincurred the virtual memory exception.

    In most computers, these translation tables are stored in physical memory.Therefore, a virtual memory reference might actually involve two or more

    physical memory references: one or more to retrieve the needed addresstranslation from the page tables, and a final one to actually do the memoryreference.

    To minimize the performance penalty of address translation, most modernCPUs include an on-chip MMU, and maintain a table of recently usedvirtual-to-physical translations, called a Translation Lookaside Buffer , or TLB. Addresses with entries in the TLB require no additional memoryreferences (and therefore time) to translate, However, the TLB can onlymaintain a fixed number of mappings between virtual and physical

    addresses; when the needed translation is not resident in the TLB, action willhave to be taken to load it in.

    On some processors, this is performed entirely in hardware; the MMU has todo additional memory references to load the required translations from thetranslation tables, but no other action is needed. In other processors,assistance from the operating system is needed; an exception is raised, and

    http://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/177112.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/528352.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/177112.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/528352.xml&style
  • 8/7/2019 ARCH TERM PAPER (2)

    18/22

    on this exception, the operating system replaces one of the entries in theTLB with an entry from the translation table, and the instruction which madethe original memory reference is restarted.

    The hardware that supports virtual memory almost always supports memory protection mechanisms as well. The MMU may have the ability to vary itsoperation according to the type of memory reference (for read, write or execution), as well as the privilege mode of the CPU at the time the memoryreference was made. This allows the operating system to protect its owncode and data (such as the translation tables used for virtual memory) fromcorruption by an erroneous application program and to protect application

    programs from each other and (to some extent) from themselves (e.g. by preventing writes to areas of memory which contain code).

    One additional advantage of virtual memory is that it allows a computer tomultiplex its CPU and memory between multiple programs without the needto perform expensive copying of the programs' memory images. If thecombination of virtual memory system and operating system supportsswapping, then the computer may be able to run simultaneous programswhose total size exceeds the available physical memory. Since most

    programs have a small subset ( active set ) of pages that they reference over significant periods of their execution, the performance penalty is less thanthat which might be expected. If too many programs are run at once, or if asingle program continuously accesses widely scattered memory locations,then page swapping becomes excessively frequent and overall system

    performance will become unacceptably slow. This is often called thrashing(since the disk is being excessively overworked - thrashed) or paging storm ,which corresponds to accessing the swap medium being three orders of magnitude slower compared to main memory access.

    Note that virtual memory is not a requirement for precompilation of

    software, even if the software is to be executed on a multiprogrammingsystem. Precompiled software loaded by the operating system has theopportunity to carry out address relocation at load time. This suffers bycomparison with virtual memory in that a copy of program relocated at loadtime cannot run at a distinct address once it has started execution.

  • 8/7/2019 ARCH TERM PAPER (2)

    19/22

    It is possible to avoid the overhead of address relocation using a processcalled rebasing , which uses metadata in the executable image header toguarantee to the run-time loader that the image will only run within a certainvirtual address space . This technique is used on the system libraries onWin32 platforms, for example.

    Also many systems run multiple instances of the same program using thesame physical copy of the program in physical memory but separate virtualaddress spaces. This is possible because the separate virtual address spacescan all have the same layout and thus avoid the need to relocate the code atload time. Some operating systems take this even further implementing copyon write systems to allow a process to fork into two copies of itself without acomplete copy of its data being created immediately.

    Paging and virtual memory

    Virtual memory is usually (but not necessarily) implemented using paging .In paging, the low order bits of the binary representation of the virtualaddress are preserved, and used directly as the low order bits of the actual

    physical address; the high order bits are treated as a key to one or moreaddress translation tables, which provide the high order bits of the actual

    physical address.

    For this reason a range of consecutive addresses in the virtual address spacewhose size is a power of two will be translated in a corresponding range of consecutive physical addresses. The memory referenced by such a range iscalled a page . The page size is typically in the range of 512 to 8192 bytes

    (with 4K currently being very common), though page sizes of 4 megabytesor larger may be used for special purposes. (Using the same or a relatedmechanism, contiguous regions of virtual memory larger than a page areoften mappable to contiguous physical memory for purposes other thanvirtualization, such as setting access and caching control bits.)

    http://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/411418.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/934423.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/407603.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/407603.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/311193.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/934423.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/376948.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/411418.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/934423.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/407603.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/407603.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/311193.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/934423.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/376948.xml&style
  • 8/7/2019 ARCH TERM PAPER (2)

    20/22

    The operating system stores the address translation tables, the mappingsfrom virtual to physical page numbers, in a data structure known as a pagetable .

    If a page that is marked as unavailable (perhaps because it is not present in physical memory, but instead is in the swap area), when the CPU tries toreference a memory location in that page, the MMU responds by raising anexception (commonly called a page fault ) with the CPU, which then jumpsto a routine in the operating system. If the page is in the swap area, thisroutine invokes an operation called a page swap , to bring in the required

    page.

    The page swap operation involves a series of steps. First it selects a page inmemory, for example, a page that has not been recently accessed and

    (preferably) has not been modified since it was last read from disk or theswap area. (See page replacement algorithms for details.) If the page has been modified, the process writes the modified page to the swap area. Thenext step in the process is to read in the information in the needed page (the

    page corresponding to the virtual address the original program was trying toreference when the exception occurred) from the swap file. When the pagehas been read in, the tables for translating virtual addresses to physicaladdresses are updated to reflect the revised contents of the physical memory.Once the page swap completes, it exits, and the program is restarted andcontinues on as if nothing had happened, returning to the point in the

    program that caused the exception.

    It is also possible that a virtual page was marked as unavailable because the page was never previously allocated. In such cases, a page of physicalmemory is allocated and filled with zeros, the page table is modified todescribe it, and the program is restarted as above.

    Windows example

    Virtual memory has been a feature of Microsoft Windows since Windows3.1 in 1992 . 386SPART.PAR (or WIN386.SWP on Windows 3.11 and

    http://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/674962.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/674962.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/727476.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/18890.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34669.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/674962.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/674962.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/727476.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/18890.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34669.xml&style
  • 8/7/2019 ARCH TERM PAPER (2)

    21/22

    Windows for Workgroups) is a hidden file created by Windows 3.x for useas a virtual memory swap file. It is generally found in the root directory , butit may appear elsewhere (typically in the WINDOWS directory). Its sizedepends on how much virtual memory the system has set up under ControlPanel - Enhanced under "Virtual Memory." If a user moves or deletes thisfile, Windows will BSoD the next time it is started with "The permanentswap file is corrupt" and will ask the user if they want to delete the file (Itasks whether or not the file exists).

    Windows 95 uses a similar file, except it is named WIN386.SWP, and thecontrols for it are located under Control Panel - System - Performance tab -Virtual Memory. Windows automatically sets the page file to be 1.5 x

    physical memory. This page file is located at C:\pagefile.sys on all NT- based versions of Windows (including Windows 2000 and Windows XP ). If

    you run memory intensive applications on a low physical memory system itis preferable to manually set the size to a value higher than default.Additionally, fixing the size of the swap file will prevent it from beingdynamically resized by Windows. This resizing causes the swap file to

    become fragmented, resulting in reduced performance. This page file cannot be defragmented with Windows' built-in defragmenting tools, such asntfsdefrag.

    Virtual Memory in Linux

    In Linux operating system, it is possible to use a whole partition of the HDDfor virtual memory. Though it is still possible to use a file for swapping, it isrecommended to use a separate partition, because this excludes chances of

    fragmentation , which reduces the performance of swapping. A swap area iscreated using the command ' mkswap filename/device , and may be turnedon and off using the commands swapon and swapoff ', respectively,accompanied by the name of the swap file or the swap partition.

    http://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/158871.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/1615714.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/1615714.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/4532.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34064.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/33941.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/33879.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/17506.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/158871.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/1615714.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/1615714.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/4532.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/34064.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/33941.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/33879.xml&stylehttp://infao5501.ag5.mpi-sb.mpg.de:8080/topx/archive?link=Wikipedia-Lip6-2/17506.xml&style
  • 8/7/2019 ARCH TERM PAPER (2)

    22/22

    Bibliography

    www.wikipedia.com

    www.ask.com

    www.livemint.com

    www.script.com