From: Godmar Back Date: Fri, 29 Aug 2008 22:26:57 +0000 (+0000) Subject: under 5 pages! X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=00518d06da1411fe087ea2a5b84a80dc25f05fba;p=pintos-anon under 5 pages! --- diff --git a/sigcse2009/abstract.tex b/sigcse2009/abstract.tex index 2656271..b472f73 100644 --- a/sigcse2009/abstract.tex +++ b/sigcse2009/abstract.tex @@ -2,7 +2,7 @@ Pintos is an instructional operating system, complete with documentation and ready-made, structured assignments that introduce students to the principles of multi-programming, scheduling, virtual memory, and file systems. By allowing students to run their work product on -actual hardware, while simultaneously benefiting from the debugging +actual hardware, while simultaneously benefiting from debugging and dynamic analysis tools provided in simulated and emulated environments, Pintos increases student engagement. Unlike tailored versions of commercial or open source OS such as Linux, Pintos is designed from the diff --git a/sigcse2009/assignments.tex b/sigcse2009/assignments.tex index 3d8ff0f..b68289c 100644 --- a/sigcse2009/assignments.tex +++ b/sigcse2009/assignments.tex @@ -54,29 +54,28 @@ of how much CPU time a thread has received recently. \paragraph{Testing and Grading} Project 1 is accompanied by 27 tests as shown in Table~\ref{table:tests}, which are run using the Bochs simulator by a grading script. -Most tests are designed to test a single aspect, but some tests -test more involved scenarios. Most of the tests are designed to produce a deterministic -output; the grading script will point out differences between the expected and the actual output. +Most of the tests are designed to produce deterministic output; +the grading script will point out differences between expected and actual output. Usually, a test failure leads students to study the documented source code of the test and understand how the expected output derives from it. -The MLFQS scheduler tests are graded differently. Since those tests rely on estimating CPU +The MLFQS scheduler tests require a different approach. Since those tests rely on estimating CPU usage, they depend on how much CPU time a specific implementation uses, which in turn depends on how efficient it is. We compute the expected CPU consumption values by simulation and provide an envelope within which the output is accepted. The envelope is large enough to allow for minor inefficiencies, but major inefficiencies will usually lead to test failures. Such failures -convey the importance of using efficient algorithms and data structures within a kernel, -because wasting CPU cycles in the kernel reduces the amount available to applications. +convey the importance of using efficient algorithms and data structures within a OS kernel. +% cfl: because wasting CPU cycles in the kernel reduces the amount available to applications. % intro \paragraph{Learning Objectives} Project 1 has three learning objectives. First, students will understand how the illusion that ``computers can do multiple things at once'' is created by a sequence of thread state transitions and context switches. Second, they will understand how -a simple underlying mechanism - such as priority-based scheduling - can lead to more -sophisticated scheduling policies. Third, having seen the mechanisms a preemptive scheduler -uses to create apparent concurrency, students gain a better intuition of the non-determinism -inherent in concurrent systems. +sophisticated scheduling policies can be built on top of a simple priority-based scheduler. +Third, having seen the mechanisms a preemptive scheduler uses to create apparent +concurrency, students gain a better intuition of the non-determinism inherent +in concurrent systems. % % diff --git a/sigcse2009/introduction.tex b/sigcse2009/introduction.tex index cd76579..e591bb8 100644 --- a/sigcse2009/introduction.tex +++ b/sigcse2009/introduction.tex @@ -45,8 +45,8 @@ Assignments should include and emphasize the use of modern software engineering practices and tools, such as dynamic program analysis. This paper introduces Pintos, an instructional operating system kernel that -has been in use at several institutions for about 4 years. Pintos provides -a bootable kernel for standard personal computers. We provide several +has been in use at multiple institutions for about 4 years. Pintos provides +a bootable kernel for standard personal computers. We provide four structured assignments in which students implement a basic priority scheduler, a multi-level feedback queue scheduler, a process-based multi-programming system, page-based virtual memory @@ -77,11 +77,11 @@ the three environments in which the same kernel can be run. Others have used Linux, either on dedicated devices (e.g., iPodLinux~\cite{1352199}), or in virtualized environments~\cite{1008027,1352648,Nieh2005Experiences}, to provide an internal, concrete perspective. Compared to those approaches, Pintos provides -a similar level of realism to students in that they can see the result of their +a similar level of realism in that students can see the results of their work on concrete or virtualized hardware, but does not require that students understand the often arcane and ill-documented interfaces of the Linux kernel, -which were not designed from an educational perspective. By contrast, all -Pintos code is written to be studied by students. +which were not designed from an educational perspective. +By contrast, all Pintos code is written to be studied by students. %This paper summarizes the design philosophy that underlies Pintos, %details its structure, and outlines the nature and learning goals of each diff --git a/sigcse2009/principles.tex b/sigcse2009/principles.tex index 6812348..221fb43 100644 --- a/sigcse2009/principles.tex +++ b/sigcse2009/principles.tex @@ -23,9 +23,9 @@ portions that initially proved difficult to understand or confusing. \paragraph{Maximize Creative Freedom} OS design involves a tremendous amount of creative freedom, both in the -choice of algorithm and data structures. Our projects are designed to +choice of algorithms and data structures. Our projects are designed to stimulate creativity by avoiding the prescription of specific approaches -to accomplish each project's goals. Instead, students must design their +to accomplish each project's goals. Instead, students design their own data structures and associated algorithms as much as possible. \paragraph{Practice Test-driven Development} @@ -57,16 +57,17 @@ is substantially similar to how user programs are being debugged. \paragraph{Include Analysis Tools} Static and dynamic analysis tools are now being widely used; an OS course should -be no exception. We have extended the QEMU emulator~\cite{Bellard2005QEMU} to -perform tailored analyses that point out errors such as race conditions. +be no exception. In Section~\ref{sec:dynamicanalysis}, we describe how we +extended the QEMU emulator~\cite{Bellard2005QEMU} to +perform tailored analyses that find errors such as race conditions. \paragraph{Provide Extensive and Structured Documentation} If using an instructional system requires too much undocumented knowledge, -the system is often not shared, or falls into disuse, because the learning curve -for instructors wishing to use it is too steep and training teaching assistants is difficult. +the system is often not shared or falls into disuse because the learning curve +for instructors is too steep and training teaching assistants is difficult. Pintos includes an extensive 129 page manual, a sample solution, -and instructions for teaching assistants. The assignment documentation separates sections -students must read from sections that merely provide supplemental information. +and grading instructions for teaching assistants. The project documentation +highlights sections students must read from sections that merely provide supplemental information. %Even though Pintos uses an existing and complex architecture, our experience indicates %that the manual is sufficient for most students. diff --git a/sigcse2009/racedt.tex b/sigcse2009/racedt.tex index 5200655..d5e2871 100644 --- a/sigcse2009/racedt.tex +++ b/sigcse2009/racedt.tex @@ -1,4 +1,5 @@ \section{Dynamic Analysis Tools} +\label{sec:dynamicanalysis} Data races and invalid memory accesses are some of the most common and difficult to debug errors that may occur in concurrent C code. diff --git a/sigcse2009/sigcse2009.bib b/sigcse2009/sigcse2009.bib index c121f76..ccb0239 100644 --- a/sigcse2009/sigcse2009.bib +++ b/sigcse2009/sigcse2009.bib @@ -15,7 +15,7 @@ @inproceedings{Yu2005RaceTrack, address = {New York, NY, USA}, author = {Yu, Yuan and Rodeheffer, Tom and Chen, Wei }, - booktitle = {SOSP '05: Proceedings of the twentieth ACM symposium on Operating systems principles}, + booktitle = {SOSP '05: Proc. 20th ACM Symposium on Operating Systems Principles}, citeulike-article-id = {2373000}, doi = {10.1145/1095810.1095832}, isbn = {1595930795}, @@ -85,16 +85,14 @@ @inproceedings{1008027, - address = {New York, NY, USA}, author = {Davoli, Renzo }, - booktitle = {ITiCSE '04: Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education}, + booktitle = {ITiCSE '04: Proc. 9th annual SIGCSE conf. on Innovation and tech. in comp. sc. ed.}, citeulike-article-id = {3170960}, doi = {http://doi.acm.org/10.1145/1007996.1008027}, location = {Leeds, United Kingdom}, pages = {112--116}, posted-at = {2008-08-29 02:36:03}, priority = {2}, - publisher = {ACM}, title = {Teaching operating systems administration with {User Mode Linux}}, url = {http://dx.doi.org/http://doi.acm.org/10.1145/1007996.1008027}, year = {2004} @@ -121,17 +119,14 @@ @inproceedings{563384, - address = {New York, NY, USA}, author = {Atkin, Benjamin and Sirer, Emin G. }, - booktitle = {SIGCSE '02: Proceedings of the 33rd SIGCSE technical symposium on Computer science education}, + booktitle = {SIGCSE '02: Proc. 33rd SIGCSE technical symposium}, citeulike-article-id = {3170954}, doi = {http://doi.acm.org.ezproxy.lib.vt.edu:8080/10.1145/563340.563384}, - location = {Cincinnati, Kentucky}, pages = {116--120}, posted-at = {2008-08-29 02:32:08}, priority = {2}, - publisher = {ACM}, - title = {{PortOS:} an educational operating system for the Post-PC environment}, + title = {{PortOS}: an educational operating system for the Post-PC environment}, url = {http://dx.doi.org/http://doi.acm.org.ezproxy.lib.vt.edu:8080/10.1145/563340.563384}, year = {2002} } @@ -230,7 +225,7 @@ @inproceedings{Bellard2005QEMU, address = {Berkeley, CA, USA}, author = {Bellard, Fabrice }, - booktitle = {ATEC'05: Proceedings of the USENIX Annual Technical Conference 2005 on USENIX Annual Technical Conference}, + booktitle = {ATC'05: Proc. USENIX Annual Technical Conference}, citeulike-article-id = {2373099}, pages = {41}, posted-at = {2008-08-29 02:02:24}, @@ -258,19 +253,7 @@ @book{Deitel2003Operating, - abstract = {The third edition of \_Operating Systems\_**\_ has been entirely updated to -reflect current core operating system concepts and design considerations. To -complement the discussion of operating system concepts, the book features two -in-depth case studies on Linux and Windows XP. The case studies follow the -outline of the book, so readers working through the chapter material can refer -to each case study to see how a particular topic is handled in either Linux or -Windows XP. Using Java code to illustrate key points, \_Operating Systems\_**\_ -introduces processes, concurrent programming, deadlock and indefinite -postponement, mutual exclusion, physical and virtual memory, file systems, -disk performance, distributed systems, security and more. New to this edition -are a chapter on multithreading and extensive treatments of distributed -computing, multiprocessing, performance, and computer security. An ideal up- -to-date book for beginner operating systems readers.}, + abstract = {The third edition of \_Operating Systems\_**\_ has been entirely updated to reflect current core operating system concepts and design considerations. To complement the discussion of operating system concepts, the book features two in-depth case studies on Linux and Windows XP. The case studies follow the outline of the book, so readers working through the chapter material can refer to each case study to see how a particular topic is handled in either Linux or Windows XP. Using Java code to illustrate key points, \_Operating Systems\_**\_ introduces processes, concurrent programming, deadlock and indefinite postponement, mutual exclusion, physical and virtual memory, file systems, disk performance, distributed systems, security and more. New to this edition are a chapter on multithreading and extensive treatments of distributed computing, multiprocessing, performance, and computer security. An ideal up- to-date book for beginner operating systems readers.}, author = {Deitel, Harvey M. and Deitel, Paul J. and Choffnes, David R. }, citeulike-article-id = {3138498}, edition = {3}, @@ -280,7 +263,7 @@ to-date book for beginner operating systems readers.}, posted-at = {2008-08-20 05:38:59}, priority = {2}, publisher = {Prentice Hall}, - title = {Operating Systems (3rd Edition)}, + title = {Operating Systems}, url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&path=ASIN/0131828274}, year = {2003} } @@ -288,15 +271,7 @@ to-date book for beginner operating systems readers.}, @book{Bryant2002Computer, - abstract = {This book explains the important and enduring concepts underlying all computer -systems, and shows the concrete ways that these ideas affect the correctness, -performance, and utility of application programs. The book's concrete and -hands-on approach will help readers understand what is going on “under the -hood” of a computer system. This book focuses on the key concepts of basic -network programming, program structure and execution, running programs on a -system, and interaction and communication between programs. For anyone -interested in computer organization and architecture as well as computer -systems.}, + abstract = {This book explains the important and enduring concepts underlying all computer systems, and shows the concrete ways that these ideas affect the correctness, performance, and utility of application programs. The book's concrete and hands-on approach will help readers understand what is going on “under the hood” of a computer system. This book focuses on the key concepts of basic network programming, program structure and execution, running programs on a system, and interaction and communication between programs. For anyone interested in computer organization and architecture as well as computer systems.}, author = {Bryant, Randal E. and O'Hallaron, David R. }, citeulike-article-id = {3138486}, edition = {US Ed}, @@ -351,13 +326,13 @@ systems.}, @inproceedings{Christopher1993Nachos, address = {Berkeley, CA, USA}, author = {Christopher, Wayne A. and Procter, Steven J. and Anderson, Thomas E. }, - booktitle = {USENIX'93: Proceedings of the USENIX Winter 1993 Conference}, + booktitle = {USENIX'93: Proc. USENIX Winter 1993 Conf.}, citeulike-article-id = {2757938}, pages = {4}, posted-at = {2008-08-20 04:38:57}, priority = {2}, publisher = {USENIX Association}, - title = {The {Nachos} instructional operating system}, + title = {The Nachos instructional operating system}, url = {http://portal.acm.org/citation.cfm?id=1267307}, year = {1993} } @@ -376,7 +351,7 @@ systems.}, posted-at = {2008-08-20 04:37:53}, priority = {2}, publisher = {ACM}, - title = {PortOS: an educational operating system for the Post-PC environment}, + title = {{PortOS:} an educational operating system for the {Post-PC} environment}, url = {http://portal.acm.org/citation.cfm?id=563340.563384}, year = {2002} } @@ -405,14 +380,14 @@ systems.}, @inproceedings{Nieh2005Experiences, address = {New York, NY, USA}, author = {Nieh, Jason and Vaill, Chris }, - booktitle = {SIGCSE '05: Proceedings of the 36th SIGCSE technical symposium on Computer science education}, + booktitle = {SIGCSE '05: Proc. 36th SIGCSE technical symposium}, citeulike-article-id = {1557532}, doi = {10.1145/1047344.1047508}, issn = {0097-8418}, pages = {520--524}, posted-at = {2008-08-20 04:36:38}, priority = {2}, - publisher = {ACM}, + publisher = {ACM Press}, title = {Experiences teaching operating systems using virtual platforms and {Linux}}, url = {http://portal.acm.org/citation.cfm?id=1047508}, year = {2005} @@ -423,7 +398,7 @@ systems.}, @inproceedings{Holland2002New, address = {New York, NY, USA}, author = {Holland, David A. and Lim, Ada T. and Seltzer, Margo I. }, - booktitle = {SIGCSE '02: Proceedings of the 33rd SIGCSE technical symposium on Computer science education}, + booktitle = {SIGCSE '02: Proc. 33rd SIGCSE technical symposium}, citeulike-article-id = {1557559}, doi = {10.1145/563340.563383}, issn = {0097-8418}, @@ -441,7 +416,7 @@ systems.}, @inproceedings{Hovemeyer2004Running, address = {New York, NY, USA}, author = {Hovemeyer, David and Hollingsworth, Jeffrey K. and Bhattacharjee, Bobby }, - booktitle = {SIGCSE '04: Proc. of the 35th SIGCSE technical symposium on Computer science education}, + booktitle = {SIGCSE '04: Proc. 35th SIGCSE technical symposium}, citeulike-article-id = {3138451}, doi = {10.1145/971300.971411}, isbn = {1581137982}, @@ -450,7 +425,7 @@ systems.}, posted-at = {2008-08-20 04:19:33}, priority = {2}, publisher = {ACM}, - title = {Running on the bare metal with GeekOS}, + title = {Running on the bare metal with {GeekOS}}, url = {http://portal.acm.org/citation.cfm?id=971300.971411}, year = {2004} } diff --git a/sigcse2009/sigcse2009.tex b/sigcse2009/sigcse2009.tex index aff1217..d930725 100644 --- a/sigcse2009/sigcse2009.tex +++ b/sigcse2009/sigcse2009.tex @@ -143,7 +143,7 @@ % % { \small -\vskip .2in +\vskip .3in \bibliography{sigcse2009} % sigproc.bib is the name of the Bibliography in this case } \end{document}