Software Systems Spring 2008 For today, you should have: 1) Finished Homework 4 2) Worked on your project. 3) Read Chapter 17 of the Cow Book. 4) Read the solution of the writer-priority readers-writers problem, and the statement of the no-starve mutex problem. Outline: 1) feedback feedback 2) starvation and semaphores 3) in-class reading exercise: Berger Zorn McKinley 4) interrogating the heap For next time you should: 1) have a good break! Survey responses ---------------- Workload: Average is around 12, but several people are over. I will try harder to scale back the other work as we get into the projects. (But it's all so much fun!) Depth vs. breadth: Most people happy where we are, but a couple of calls for more depth, especially practical software. Readings: Generally positive comments, many people appreciate the reading questions. Some calls for more exercises, especially C programming. Also more overview/introduction. Homeworks: Goals are not clear, not sure if learning the right stuff. Programming is sometimes a hangup that makes it hard to get to the experiments. Need more time. Would like more programming, less fiddling with experiments. Quizzes: Generally positive comments. One call for less ambiguous questions, and for the chance to work out the gotchas on a quiz before they show up on an exam. Suggestion for a take-home quiz. Several suggestions for C programming on quizzes (but see below) Exams: The C programming question messed some people up. Doing it as a take-home worked out better. Programming on paper is an unnatural act. Project: Too early to tell, but many people excited. Favorite thing: C and synchronization were the most common answers. Also the project, the OS algorithms/policies, and the joy of demystifying how computers work. Overall, many positive comments, which I appreciate. And the tone of suggestions/complaints was constructive, which I also appreciate. If you have any other thoughts, send email or grab me in person. What's coming up? ----------------- 1) file system implementation file system abstraction database implementation 2) synchronization pthread support, lock implementation, performance 3) I/O implementation, coordination I/O abstraction asynchronous/synchronous I/O important thematic idea: the kernel is a big interrupt handler 4) TCP/IP congestion control, performance 5) distributed data systems replicated data / RAID ? distributed hash tables / peer to peer Berger Zorn McKinley -------------------- 1) Read the abstract carefully. 2) Read the Introduction medium carefully. 3) Read the Conclusions section. What information _should_ be included in each of these sections? Abstract: Intro: Conclusions: Allen's pet peeve: papers in which these three sections are identical. 4) Sketch the outline of the paper by reading the section headings and the summary at the end of Section 1 What are the sections you think you need to read in detail in order to understand the important ideas in this paper? The following are the standard questions you should ask about any paper of this kind: 1) What kind of work did the authors do? 2) What workload did they use? 3) What are the performance metrics? 4) What are their conclusions? 5) Do their results support their conclusions? 6) What is the "take-away" message? Take 20 minutes to read the paper and answer these questions. Interrogating the heap ---------------------- wget wb/ss/code/pointer.tgz tar -xzf pointer.tgz cd pointer make ./pointer Take a minute to read the code and make sense of the output. 1) Does free have the effect you expected? What can we tell about the coalescing policy? 2) What can we tell about malloc's data structures? 3) What happens if a process writes beyond the end of a dynamically allocated array?