Programming assignment #2 - Warmup with Linux and QEMU: System Call Costs and Adding a System Call

Due by 11:59 p.m., Monday, September 30th, 2013.

Please use the class discussion board (you can find it on your blackboard) as a communication and Q&A tool.  Should you still need to send an e-mail inquiry, address it to the TA (Xiaowan Dong: xdong at cs ) and cc the instructor. The group part of this assignment will be examined through demo with the TA. The demo time should be conducted with the TA by the due date or earlier. We expect that each demo will take 20-30 minutes. Please reserve your time slot with the TA ahead of time.

The latter part of this assignment is a group assignment. You should form a group of two to complete this assignment. We urge you to establish safe and flexible policies for managing your code with your group member as soon as possible. A versioning tool would come in handy. You are encouraged to help (and seek help from) people in other groups (except sharing code, of course). Note that we will not generally distinguish grades within a group. but corrective action could be taken if inequitable load distribution is noted.

Disclaimer: Part of this assignment is adapted from a project developed by Dr. Jason Nieh at Columbia University.

Individual assignment description (30 points): System call costs

The goal of this assignment is to get you thinking about the costs of various system calls. This part of the assignment is an individual assignment. However, you are encouraged to help (and to seek help from) your peers (except sharing code, of course). For many of the following measurements, you may need to repeat the experiment many times and then take the average. Use a high resolution timer for x86 when necessary. The goal is to have STABLE measurement results. For some of the questions, I will provide a possible measurement strategy as a hint. You are encouraged to be innovative in designing your own test. Extra credit will be given for such innovations that also (of course) work. For comparison purposes, all measurements MUST be done on machines in the graduate software lab or the CSUG lab.