Homework 13. Please hand in the homework *at the beginning* of the discussion section. Problem 1) Garbage collection, short answer. 1a) Why are cycles a problem with reference-counting garbage collection? Describe a situation (e.g., a data structure) in which this problem could occur. How can you avoid this problem? 1b) What are the "roots" of a process, in the garbage-collection sense? 1c) What is true if an object on the heap cannot be accessed through the roots of a process using garbage collection? 1d) Why is it hard to implement garbage collection in C? Problem 2) Concurrency models, short answer. 2a) What are the advantages of thread pools compared with spawning new threads for each task or client? Disadvantages? 2b) Consider a webserver with just 100 threads, and 100 clients that connect to it and start sending data extremely slowly. What is the problem? Can you think of any strategies for dealing with this problem? Describe them.