Understanding and Improving Device Access Complexity By Asim Kadav A dissertation submitted in partial fulﬁllment of the requirements for the degree of Doctor of Philosophy (Computer Sciences) at the UNIVERSITY OF WISCONSIN-MADISON 2013
Date of ﬁnal oral examination: 6/4/2013 The dissertation is approved by the following members of the Final Oral Committee: Prof. Michael M. Swift, Assistant Professor, Computer Sciences Prof. Remzi Arpaci-Dusseau, Professor, Computer Sciences Prof. Ben Liblit, Associate Professor, Computer Sciences Prof. Somesh Jha, Professor, Computer Sciences Prof. Parmesh Ramanathan, Professor, Electrical and Computer Engineering Prof. Thomas Ristenpart, Assistant Professor, Computer Sciences
© Copyright by Asim Kadav 2013 All Rights Reserved
To the systems research community, for inspiring me to create.
Acknowledgments When I arrived at Wisconsin, my plan was to leave with only a Masters. However, a fun and productive summer in 2008 as a research assistant with Mike changed all that. I changed my degree goal to PhD under his supervision. However, more than the degree, I was looking forward to the educating and enjoyable collaboration with him. Over the next ﬁve years, I learnt how to estimate the importance of research problems, how to simplify the art of building complex systems and how to distill this experience in clear technical writing. I hope to continue to build upon these valuable skills in my career and would like to thank Mike for his knowledge, guidance and patience. I am also grateful to the members of my thesis committee: Remzi Arpaci-Dusseau, Somesh Jha, Ben Liblit, Parmesh Ramanathan and Tom Ristenpart. My journey in operating systems research started with Remzi’s CS 736 class, which I greatly enjoyed. I have always enjoyed the short and casual conversations on the seventh ﬂoor of the CS department with Remzi, Somesh and Tom. I started working on applying programming language techniques for improving driver reliability with Ben’s CS 706. I really enjoyed his class and recommend it to new students whenever they have asked me for advice (sometimes even when they didn’t). I am also thankful to Parmesh for agreeing to be a part of my committee at such a short notice. I would like to thank all of them for the useful feedback. During my PhD, I did three internships at Microsoft Research. My ﬁrst internship was at the Silicon Valley Lab, where I had a great time with Mahesh Balakrishnan, Vijayan Prabhakaran and Dahlia Malkhi working on the Differential RAID project. During my second internship, I worked with Ed Nightingale on the ThinCloud project. I returned a third time to work with Ed and James Mickens on the same project. I enjoyed working closely with each one of them and their approach to problems has had a signiﬁcant impact on my research skills. I am grateful to all of them for this opportunity to collaborate. I would also like to thank Mahesh Balakrishnan, Theo Benson, Haryadi Gunawi and Ed Nightingale for their useful advice during my job hunt. I am also thankful to my fellow students at Wisconsin. My ofﬁce mates over the years, members of the SONAR system group and the ADSL lab were always available to share my joys, frustrations and the free food that graduate school offers. I am especially thankful to Matt Renzelmann for collaborating with me on several projects. His quality of thoroughness improved our projects and also allowed me to learn this valuable skill. I am also thankful to my friends at various departments at Wisconsin, my undergraduate friends (some of whom visited me during the course of my PhD) and the new ones I made during my internships. I really appreciate their friendship and affection. They gave me a much needed reality check about the outside world especially when I got too busy with my graduate studies or when I occasionally took life too seriously. Finally, I would like to thank my family, my parents, sister and brother-in-law for their love and support all these years. Without