This course is a KV (combined course consisting of lectures and
project work) in which you will learn the concepts and the
implementation of common system software such as garbage collectors,
linkers, loaders, debuggers and text editors. In addition to the
principal algorithms the course will also discuss case studies of such
programs. The course is given in English. It is recognized as
"Systemsoftware" (Allgemeine Wahlfächer) in the Computer Science
|Fr March 18, 2011 ||13:45-17:00 (4 units) ||HS 4
|Sa March 19, 2011 ||08:30-11:45 (4 units) ||HS 4
|Fr March 25, 2011 ||13:45-17:00 (4 units) ||HS 4
|Sa March 26, 2011 ||08:30-11:45 (4 units) ||HS 4
Fr June 10, 2011
|13:45-15:15 ||HS 16
|Project submission |
Fr June 10, 2011
Part of the course will be a project in which either a garbage collector, a debugger or a text editor has to be implemented. The
project has to be demonstrated at the end of the semester (June 10, 15:30 - 17:30,
Prof. Mössenböck or DI Löberbauer).
At the end of the semester there will be a written exam about the
contents of the lectures. In order to pass the course, you will need to
implement the project as well. The final grade will be computed from
the exam and from the project.
1. Memory Management
1.2 Allocation and deallocation of memory
1.3 Simple free list
1.4 Multiple free lists
1.5 Buddy system
1.6 Memory fragmentation
2. Garbage Collection
2.2 Basic techniques
2.2.1 Reference Counting
2.2.2 Mark & Sweep
2.2.3 Stop & Copy
2.3.1 Mark & Compact
2.3.2 Generation scavenging
2.4 Incremental garbage collection
2.4.1 Tricolor marking
2.4.2 Train algorithm
2.5 Root pointers
2.5.1 Pointer tables
2.5.2 Conservative garbage collection
2.6 Garbage collection in multi-threaded systems
2.8 Case study: Java Hotspot VM
2.9 Case study: .NET
3. Linkers and Loaders
3.2 Case study: Oberon
3.2.1 Run-time data structures
3.2.2 Resolving external references
3.2.3 Load algorithm
3.3 Case study: Java
3.3.2 Class files
3.3.3 Loading phases
3.3.4 Example: custom class loader
4.2 Case study: Java Platform Debugger
5. Text Editors
5.1 Data structures for texts
5.2 Text representation on the screen (case study)
5.2.1 Line descriptors
5.2.3 Input handling
5.2.4 Updating the view
- Jones R., Lins R.: Garbage Collection. Algorithms for Automatic Dynamic Memory Management. Wiley, 1996.
- Levine J.R.: Linkers & Loaders. Morgan Kaufmann, 2000.
- Rosenberg J.B.: How Debuggers Work. Algorithms, Data Structures, and Architecture. Wiley, 1996.
- Venners B.: Inside the Java Virtual Machine. McGraw-Hill 1999. www.artima.com/insidejvm/ed2/
- Reference counting
- Collins, G. E: A method for overlapping and erasure of lists. Communications of the ACM 3, 12 (Dec 1960), 655-657
- Mark & Sweep
- McCarthy, J.: Recursive functions of symbolic expressions and their computation by machine. Communications of the ACM 3 (1960), 184-195.
- Schorr, Waite: An efficient machine-independent procedure for garbage collection in various list structures. Communications of the ACM (August 1967), 501-505
- Stop & Copy
- Cheney C.J.: A Nonrecursive List Compacting Algorithm. Communications of the ACM, 13(119):677-678, November 1970
- Generation Scavenging
- Ungar, D.: Generation scavenging: A nondisruptive high performance storage reclamation algorithm. ACM SIGPLAN Notices 19, 5 (May 1984) and ACM Software Engineering Notes 9, 3 (May 1984).
- Appel A.W.: Simple Generational Garbage Collection and Fast Allocation. Software Practice and Experience, 1988
- Ungar, D., Jackson, F.: An adaptive tenuring policy for generation scavengers. ACM Transactions on Programming Languages and Systems 1, 1 (January 1992), 1-27
- Pointer tables and conservative garbage collection
- Agesen O., Detlefs D.L.: Finding References in Java Stacks. OOPSLA’97 Garbage Collection and Memory Management Workshop. Atlanta, GA, October 1997. labs.oracle.com/java-topics/pubs/97-finding-references.ps.
- Boehm H.J., Weiser M.: 1988. Garbage collection in an uncooperative environment. Software -- Practice and Experience. 18(9):807-820
- Diwan A., Moss E., Hudson R.: Compiler Support for Garbage Collection in a Statically Typed Language. Proceedings PLDI'92, p. 273-282, San Francisco, CA, June 1992.
- Detlefs D., Printezis T.: A Generational Mostly-Concurrent Garbage Collector. Sun Labs TR-2000-88 labs.oracle.com/techrep/2000/smli_tr-2000-88.pdf
- Deutsch, L P., Bobrow, D. G.: An efficient incremental automatic garbage collector. Communications of the ACM 19,9 (Sept. 1976),522-526.
- Lieberman, H, Hewitt, C. A real-time garbage collector based on the lifetimes of objects. Communications of the ACM 26, 6 (June 1983), 419-429.