\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.
%
%
@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},
@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}
@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}
}
@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},
@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},
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}
}
@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},
@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}
}
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}
}
@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}
@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},
@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},
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}
}