Operating Systems (Fall 2018): Difference between revisions
(30 intermediate revisions by the same user not shown) | |||
Line 35: | Line 35: | ||
<td> | <td> | ||
<p>[[Operating Systems 2018F Lecture 2|Lecture 2]]: [http://pages.cs.wisc.edu/~remzi/OSTEP/cpu-api.pdf Process API] | <p>[[Operating Systems 2018F Lecture 2|Lecture 2]]: [http://pages.cs.wisc.edu/~remzi/OSTEP/cpu-api.pdf Process API] | ||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Sept. 12 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 3|Lecture 3]]: [http://pages.cs.wisc.edu/~remzi/OSTEP/cpu-intro.pdf Processes] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Sept. 14 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 4|Lecture 4]]: [http://pages.cs.wisc.edu/~remzi/OSTEP/vmm-intro.pdf Virtual Machines] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Sept. 19 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 5|Lecture 5]]: [http://pages.cs.wisc.edu/~remzi/OSTEP/file-intro.pdf Files and Directories] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Sept. 21 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 6|Lecture 6]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Sept. 26 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 7|Lecture 7]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Sept. 28 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 8|Lecture 8]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Oct. 3 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 9|Lecture 9]]: [http://pages.cs.wisc.edu/~remzi/OSTEP/threads-intro.pdf Concurrency & Threads], [http://pages.cs.wisc.edu/~remzi/OSTEP/threads-locks.pdf Locks], [http://pages.cs.wisc.edu/~remzi/OSTEP/threads-sema.pdf Semaphores] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Oct. 5 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 10|Lecture 10]] (via cuLearn/BigBlueButton) | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Oct. 10 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 11|Lecture 11]]: Test 1 review | |||
</p> | </p> | ||
</td> | </td> | ||
Line 44: | Line 134: | ||
</td> | </td> | ||
<td> | <td> | ||
<p>Test 1 | <p>Test 1 [https://homeostasis.scs.carleton.ca/~soma/os-2018f/comp3000-test1-2018f-sol.pdf (solutions)] | ||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Oct. 17 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 12|Lecture 12]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Oct. 19 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 13|Lecture 13]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Oct. 31 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 14|Lecture 14]]: [http://pages.cs.wisc.edu/~remzi/OSTEP/vm-mechanism.pdf Address Translation], [http://pages.cs.wisc.edu/~remzi/OSTEP/vm-segmentation.pdf Segmentation], [http://pages.cs.wisc.edu/~remzi/OSTEP/vm-freespace.pdf Free Space Management], [http://pages.cs.wisc.edu/~remzi/OSTEP/vm-paging.pdf Paging], [http://pages.cs.wisc.edu/~remzi/OSTEP/vm-tlbs.pdf TLBs] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Nov. 2 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 15|Lecture 15]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Nov. 7 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 16|Lecture 16]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Nov. 9 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 17|Lecture 17]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Nov. 14 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 18|Lecture 18]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Nov. 16 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 19|Lecture 19]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Nov. 21 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 20|Lecture 20]]: Test 2 Review | |||
</p> | </p> | ||
</td> | </td> | ||
Line 54: | Line 234: | ||
</td> | </td> | ||
<td> | <td> | ||
<p>Test 2 | <p>Test 2 [https://homeostasis.scs.carleton.ca/~soma/os-2018f/comp3000-test2-2018f-sol.pdf (solutions)] | ||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Nov. 28 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 21|Lecture 21]] | |||
</p> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<p>Nov. 30 | |||
</p> | |||
</td> | |||
<td> | |||
<p>[[Operating Systems 2018F Lecture 22|Lecture 22]] | |||
</p> | </p> | ||
</td> | </td> | ||
Line 72: | Line 272: | ||
==Tutorials== | ==Tutorials== | ||
Each week you will get a progress grade from 0-4, given to you by a TA. If you are being diligent, you should be able to get 4's every week. The easiest way to get your grade is to come to tutorial and meet with your TA; alternately, you can meet a TA in their office hours or, at their discretion, discuss things with them online. | Each week you will get a progress grade from 0-4, given to you by a TA. If you are being diligent, you should be able to get 4's every week. The easiest way to get your grade is to come to tutorial and meet with your TA; alternately, you can meet a TA in their office hours or, at their discretion, discuss things with them online. Tutorials from before Test 1 should be completed by Test 1, and similarly tutorials for Test 2 should be completed before Test 2 (if you wish to receive credit). | ||
<table style="width: 100%;" border="1" cellpadding="4" cellspacing="0"> | <table style="width: 100%;" border="1" cellpadding="4" cellspacing="0"> | ||
Line 109: | Line 309: | ||
</td> | </td> | ||
<td> | <td> | ||
<p>[[Operating Systems 2018F: Tutorial 3| | <p>[[Operating Systems 2018F: Tutorial 3|3000test.c]] | ||
</p> | </p> | ||
</td> | </td> | ||
Line 119: | Line 319: | ||
</td> | </td> | ||
<td> | <td> | ||
<p>[[Operating Systems 2018F: Tutorial 4| | <p>[[Operating Systems 2018F: Tutorial 4|3000pc.c]] | ||
</p> | </p> | ||
</td> | </td> | ||
Line 129: | Line 329: | ||
</td> | </td> | ||
<td> | <td> | ||
<p>[[Operating Systems 2018F: Tutorial 5| | <p>[[Operating Systems 2018F: Tutorial 5|Linux kernel modules]] | ||
</p> | </p> | ||
</td> | </td> | ||
Line 139: | Line 339: | ||
</td> | </td> | ||
<td> | <td> | ||
<p>[[Operating Systems 2018F: Tutorial 6| | <p>[[Operating Systems 2018F: Tutorial 6|Filesystems]] | ||
</p> | </p> | ||
</td> | </td> | ||
Line 149: | Line 349: | ||
</td> | </td> | ||
<td> | <td> | ||
<p>[[Operating Systems 2018F: Tutorial 7| | <p>[[Operating Systems 2018F: Tutorial 7|Kernel memory management]] | ||
</p> | </p> | ||
</td> | </td> | ||
Line 160: | Line 360: | ||
</td> | </td> | ||
<td> | <td> | ||
<p>[[Operating Systems 2018F: Tutorial 8| | <p>[[Operating Systems 2018F: Tutorial 8|FUSE and kernel tracing]] | ||
</p> | </p> | ||
</td> | </td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
==Assignments== | ==Assignments== | ||
Line 202: | Line 401: | ||
<tr> | <tr> | ||
<td> | <td> | ||
<p>Nov. 7 | <p><del>Nov. 7 </del>Nov. 9 | ||
</p> | </p> | ||
</td> | </td> | ||
Line 227: | Line 426: | ||
You may use other Linux distributions to complete the assigned work; there will be differences, however, in some aspects (such as installing software), particularly if you use a distribution not based on Ubuntu or Debian. | You may use other Linux distributions to complete the assigned work; there will be differences, however, in some aspects (such as installing software), particularly if you use a distribution not based on Ubuntu or Debian. | ||
==Course Project== | |||
* Must be related to operating systems (you have to make the argument if it isn't obvious). | |||
* Implementation or literature review project | |||
* Implementation | |||
** Write code! | |||
** Do something interesting! | |||
** Write a report! Make sure it has references and an evaluation section as appropriate | |||
** Interesting is subjective - run it by me first | |||
** Implementation projects will be graded on the difficulty of what is being attempted, what you accomplished, the quality of the writing, and how well you explained what you did (design and implementation) | |||
** Be sure to submit your source code along with your report | |||
* Literature review | |||
** Start with a research paper related to OS | |||
** Choose some aspect of it | |||
** Find related papers | |||
** Write a report that tells me about how they all connect | |||
** make sure to cite papers properly (bibliography and inline citations) | |||
** Literature reviews will be graded on the quality of writing, technical quality, and quality of references | |||
* Collaboration is allowed in pairs, and you can turn in one project...but you should explain in your report who did what. | |||
You should run your project ideas by Prof. Somayaji by November 19th. | |||
Resources you may find helpful: [https://scholar.google.ca/ Google Scholar], [https://www.usenix.org/conference/osdi18/ OSDI 2018], [http://sosp.org/ SOSP], [https://www.usenix.org/conferences/past Past USENIX conferences] | |||
To help you write a literature review, read the following: | |||
* Harvey, "What Is a Literature Review?" [http://www.cs.cmu.edu/~missy/WritingaLiteratureReview.doc (DOC)] [http://www.cs.cmu.edu/~missy/Writing_a_Literature_Review.ppt (PPT)] | |||
* [http://www.writing.utoronto.ca/advice/specific-types-of-writing/literature-review Taylor, "The Literature Review: A Few Tips On Conducting It"] | |||
==Contributing Notes== | ==Contributing Notes== | ||
The instructions and guidelines for contributing notes to the wiki can be [[Notetaking_for_Operating_Systems_(Fall_2018)|found here]]. | The instructions and guidelines for contributing notes to the wiki can be [[Notetaking_for_Operating_Systems_(Fall_2018)|found here]]. | ||
==Online Resources== | |||
Other than [http://pages.cs.wisc.edu/~remzi/OSTEP/ the textbook], there are many, many other good online sources of information about operating systems. Here are a few that may be of interest: | |||
* Jian Huang's [http://web.eecs.utk.edu/~huangj/cs360/lecture_notes.html Systems Programming notes] | |||
==How to Succeed and How to Fail in COMP 3000== | |||
While the use of outside resources is acceptable, even encouraged, use them to achieve '''understanding''' rather than answers. | |||
It is very possible to get full tutorial marks by doing little more than showing up, and assignments can be quickly finished (and you can even get most of the marks) by working with partners, looking at old assignments, and doing lots of online searches. If this is all you do, however, you will fail the tests and you won't get a very good grade in the course. | |||
Successful students use the tutorials and assignments as learning opportunities. They look at the code and ask "what does that do?" - not just in a general sense, but by looking at every line and asking why it is there. They modify the code in order to better understand it, and when they are confused they ask questions until they get the answers they need. This sort of learning takes time, generally much more than the time allocated for lectures and tutorials. A tutorial is only "finished" when you understand essentially all the material in it - not when 80 minutes are up. | |||
If you find you are confused about the concepts, make sure to read and review the textbook and the Linux man pages. They provide much deeper answers than most online resources. The tutorials are designed to help you ask the right questions - the textbook and manual pages (and the lectures) help provide the answers. | |||
Take the tutorials seriously. Understand the answers for all the questions on the assignments. Use the textbook and manual pages. Ask questions. | |||
Good luck! |
Latest revision as of 18:39, 28 November 2018
Course Outline
Here is the course outline for COMP 3000: Operating Systems.
Lectures, Tests, & Project
Note that the topics below are primarily chapters from the class textbook, Operating Systems: Three Easy Pieces. Note that while introductory and summary dialogues are not linked below, they are worth reading for an informal take on the material.
Assigned readings are subject to change, please check this page each week.
Date |
Topic |
---|---|
Sept. 5 |
|
Sept. 7 |
|
Sept. 12 |
|
Sept. 14 |
|
Sept. 19 |
|
Sept. 21 |
|
Sept. 26 |
|
Sept. 28 |
|
Oct. 3 |
|
Oct. 5 |
Lecture 10 (via cuLearn/BigBlueButton) |
Oct. 10 |
Lecture 11: Test 1 review |
Oct. 12 |
Test 1 (solutions) |
Oct. 17 |
|
Oct. 19 |
|
Oct. 31 |
Lecture 14: Address Translation, Segmentation, Free Space Management, Paging, TLBs |
Nov. 2 |
|
Nov. 7 |
|
Nov. 9 |
|
Nov. 14 |
|
Nov. 16 |
|
Nov. 21 |
Lecture 20: Test 2 Review |
Nov. 23 |
Test 2 (solutions) |
Nov. 28 |
|
Nov. 30 |
|
Dec. 12 |
Project due |
Tutorials
Each week you will get a progress grade from 0-4, given to you by a TA. If you are being diligent, you should be able to get 4's every week. The easiest way to get your grade is to come to tutorial and meet with your TA; alternately, you can meet a TA in their office hours or, at their discretion, discuss things with them online. Tutorials from before Test 1 should be completed by Test 1, and similarly tutorials for Test 2 should be completed before Test 2 (if you wish to receive credit).
Date |
Tutorials |
---|---|
Sept. 10,11 |
|
Sept. 17, 18 |
|
Sept. 24, 25 |
|
Oct. 1, 2 |
|
Oct. 15, 16 |
|
Oct. 29, 30 |
|
Nov. 5, 6 |
|
Nov. 12, 13 |
Assignments
Assignments are due before class on the due dates (2:30 PM).
Due Date |
Assignments |
---|---|
Sept. 26 |
|
Oct. 10 |
|
|
|
Nov. 21 |
Course Software
In this course we will primarily working with Ubuntu, a widely-used family of Linux distributions. We will be using Ubuntu Server on the SCS's Openstack installation (accessible only from the Carleton network).
You may use other Linux distributions to complete the assigned work; there will be differences, however, in some aspects (such as installing software), particularly if you use a distribution not based on Ubuntu or Debian.
Course Project
- Must be related to operating systems (you have to make the argument if it isn't obvious).
- Implementation or literature review project
- Implementation
- Write code!
- Do something interesting!
- Write a report! Make sure it has references and an evaluation section as appropriate
- Interesting is subjective - run it by me first
- Implementation projects will be graded on the difficulty of what is being attempted, what you accomplished, the quality of the writing, and how well you explained what you did (design and implementation)
- Be sure to submit your source code along with your report
- Literature review
- Start with a research paper related to OS
- Choose some aspect of it
- Find related papers
- Write a report that tells me about how they all connect
- make sure to cite papers properly (bibliography and inline citations)
- Literature reviews will be graded on the quality of writing, technical quality, and quality of references
- Collaboration is allowed in pairs, and you can turn in one project...but you should explain in your report who did what.
You should run your project ideas by Prof. Somayaji by November 19th.
Resources you may find helpful: Google Scholar, OSDI 2018, SOSP, Past USENIX conferences
To help you write a literature review, read the following:
- Harvey, "What Is a Literature Review?" (DOC) (PPT)
- Taylor, "The Literature Review: A Few Tips On Conducting It"
Contributing Notes
The instructions and guidelines for contributing notes to the wiki can be found here.
Online Resources
Other than the textbook, there are many, many other good online sources of information about operating systems. Here are a few that may be of interest:
- Jian Huang's Systems Programming notes
How to Succeed and How to Fail in COMP 3000
While the use of outside resources is acceptable, even encouraged, use them to achieve understanding rather than answers.
It is very possible to get full tutorial marks by doing little more than showing up, and assignments can be quickly finished (and you can even get most of the marks) by working with partners, looking at old assignments, and doing lots of online searches. If this is all you do, however, you will fail the tests and you won't get a very good grade in the course.
Successful students use the tutorials and assignments as learning opportunities. They look at the code and ask "what does that do?" - not just in a general sense, but by looking at every line and asking why it is there. They modify the code in order to better understand it, and when they are confused they ask questions until they get the answers they need. This sort of learning takes time, generally much more than the time allocated for lectures and tutorials. A tutorial is only "finished" when you understand essentially all the material in it - not when 80 minutes are up.
If you find you are confused about the concepts, make sure to read and review the textbook and the Linux man pages. They provide much deeper answers than most online resources. The tutorials are designed to help you ask the right questions - the textbook and manual pages (and the lectures) help provide the answers.
Take the tutorials seriously. Understand the answers for all the questions on the assignments. Use the textbook and manual pages. Ask questions.
Good luck!