Changes between Version 30 and Version 31 of GarbageCollectorNotes


Ignore:
Timestamp:
Apr 2, 2007 8:34:33 PM (7 years ago)
Author:
Stefan O'Rear
Comment:

typo fix "teh"

Legend:

Unmodified
Added
Removed
Modified
  • GarbageCollectorNotes

    v30 v31  
    11= The GHC Garbage Collector Notes =  
    22 
    3 These are my notes of the Glasgow Haskell Compiler’s Garbage Collector made over my period of internship at Microsoft Research in Summer 2006. These notes are in process of constantly being updated as I study the system further. The objective of my work at MSRC is to implement a parallel GC for Haskell – one that will allow multiple threads to simultaneously garbage collect. The GC that is described below is not one that will run in parallel with user code, but one that will stop all the user threads and run multiple GC threads during the garbage collection process.  
     3These are my notes of the Glasgow Haskell Compiler's Garbage Collector made over my period of internship at Microsoft Research in Summer 2006. These notes are in process of constantly being updated as I study the system further. The objective of my work at MSRC is to implement a parallel GC for Haskell - one that will allow multiple threads to simultaneously garbage collect. The GC that is described below is not one that will run in parallel with user code, but one that will stop all the user threads and run multiple GC threads during the garbage collection process.  
    44 
    55GHC programs have two Garbage Collection strategies.  
     
    1616 
    1717== Runtime System == 
    18 The RTS is located in the folder “rts” of the ghc tree. It consists mostly of C code that is compiled into the resulting Haskell executable so that the required runtime services for the executable are packaged in. This is unlike .Net, JVM, Chez Scheme and other systems where the binaries rely heavily on the runtime support provided by their host VMs and thus the binaries cannot be independently deployed onto machines that that don’t have whole or part of the host VM services. Haskell executables are designed to be standalone executable requiring only standard OS services and do not usually require language support binaries.  
     18The RTS is located in the folder "rts" of the ghc tree. It consists mostly of C code that is compiled into the resulting Haskell executable so that the required runtime services for the executable are packaged in. This is unlike .Net, JVM, Chez Scheme and other systems where the binaries rely heavily on the runtime support provided by their host VMs and thus the binaries cannot be independently deployed onto machines that that don't have whole or part of the host VM services. Haskell executables are designed to be standalone executable requiring only standard OS services and do not usually require language support binaries.  
    1919 
    2020The tradeoff is in the fact that every Haskell binary has the RTS compiled into it, making Haskell binaries rather large. The RTS consists of facilities like the support of user threads (or Haskell threads), garbage collection etc. We are interested in focusing on Garbage Collection. However before we get into the GC, let us look at how that is connected to the rest of the system. 
     
    3232 
    3333== GcDataStructures ==  
    34 The data structures decribed in this section give a brief introduction to teh layout of the GHC runtime's heap management and the concepts of generations and steps.  
     34The data structures decribed in this section give a brief introduction to the layout of the GHC runtime's heap management and the concepts of generations and steps.  
    3535 
    3636== Allocation ==