Spring 2022 Syllabus

  1. Catalog Description
  2. Topics and Learning Objectives
  3. Prerequisites
  4. Instruction Modes
  5. Assignment Categories
  6. Student Expectations
  7. Grading
    1. Grading Appeals
    2. Letter Grades
  8. Code of Conduct
  9. List of Changes

Catalog Description

3 Credit Hours

Operating system structures, virtual memory, interrupts, exceptions, system calls, processes. Focuses on design and implementation of advanced concepts in file systems, memory management, mass storage devices, process management, and other operating system-related topics.

Recommended Background: Undergraduate coursework in operating systems.


Topics and Learning Objectives

WARNING: This course is coding heavy. Students will be expected to write a significant amount of technical, low-level code every week.

We will be using the RISC-V architecture for this course.

At the end of this course, students should be able to understand and/or perform the following.

Booting

  • Understand the steps a RISC-V machine takes to boot.
  • Be able to take control from a higher-privileged software system, such as a BIOS or SBI.
  • Distinguish between the SBI and the operating system.

Resource Management

  • Understand and be able to create a page-grained allocator (palloc).
  • Understand and be able to create a heap memory allocator (malloc).
  • Understand when global variables are necessary in an operating system.
  • Understand and be able to manage I/O devices.

Device Drivers

  • Understand the difference between system software and device drivers.
  • Be able to write a driver for a block device, input device, and video device.

Input and Output

  • Understand and be able to enumerate PCI and PCIe devices.
  • Understand the difference between MMIO and PIO.
  • Be able to control a device connected via PCI or MMIO.

Processes and Scheduling

  • Understand and be able to implement in code round-robin, multilevel, and multilevel-feedback scheduling algorithms.
  • Understand a process control block.
  • Be able to switch a processor core (hart) to a given process at a given privilege mode.

User Space, System Calls, and Services

  • Understand and be able to implement system calls for user space applications to request services.
  • Understand how user space processes are started, suspended, and terminated.

File Systems

  • Understand how file systems work.
  • Be able to compare and contrast different types of file systems.
  • Be able to implement a file system.
  • Be able to handle block requests for reading and writing blocks of data to a block device (hard drive).
  • Understand octal file modes and permissions.
  • Be able to use C++ to read a file system on a file.

RISC-V Instruction Set Architecture

  • Be able to write an assembly program using RISC-V instructions.
  • Understand and be able to program the SV39 memory management unit.
  • Understand the boot sequence of the RISC-V architecture.
  • Be able to program control and status registers (CSRs).
  • Be able to handle system calls.
  • Be able to switch privilege modes.
  • Be able to enable and disable interrupts.
  • Be able to handle traps and exceptions.

Asynchronous Programming

  • Be able to to think in asynchronous terms.
  • Understand if and when side-effects will occur.
  • Be able to program a reentrant function.

Prerequisites

Students are assumed to have satisfactory knowledge of the following topics prior to taking this course.

  1. Be solidly proficient in C or C++.
  2. Read and write binary files.
  3. Be able to read and write assembly code.
  4. Understand data types and sizes.
  5. Be able to use bitwise operators (AND, [x]OR, NOT, left shift, right shift).
  6. Be able to use the Canvas LMS.
  7. Be able to use SSH and SCP to work on assignments remotely (on Hydra or Tesla machines).
  8. Understand computer architecture and computer organization.
  9. Be familiar with low-level systems programming, such as fork, exec(ve), pthreads, and so forth.
  10. Understand undergraduate operating system concepts and theory.
    • Processes
    • Scheduling
    • Booting
    • Interrupts
    • Drivers
    • File systems
    • System calls
    • Block and character I/O
      • Memory-mapped IO (MMIO)
      • Port IO (PIO)
      • Disk scheduling (SCAN,SSTF,C-SCAN)
    • Context switching
    • CPU privilege modes
    • Locking and synchronization
      • Semaphores
      • Mutex
      • Barriers
    • Memory management unit (paging)
      • Page tables
      • Translation
    • Busses
      • Universal Serial Bus (USB)
      • Universal Asynchronous Receiver/Transmitter (UART)

Instruction Modes

  • Lecture Pages – these online web pages are geared to teach you the fundamental information required prior to improving understanding of the material. Students who read the lecture pages will most likely know terms, definitions, and have a surface-level understanding of the explained topic. Code will be in snippet form on the lecture pages. Students should consider these snippets pseudocode as they might need additional context to be working code. I also don’t have an editor, so consider it an evolving work in progress.
  • Lecture Slides – these PDF files contain the slides on one side and a place for notes on the other side. The purpose of these slides is to be a visual aid for the in-person lectures. Students should take notes in the provided place to give clarity to the slides themselves.
  • In-person Lectures – the purpose of the in-person lectures is to take your surface-level understanding and improve upon it. In-person lectures will explain a topic in much more depth than the lecture pages and lecture slides. The lecture slides will be used during lectures as a bookmark so students understand the general topic that is being discussed. Students should take notes on the side of the lecture slides with the understanding of the material in his or her own words.

Assignment Categories

Students will be evaluated on the following assignment categories. The weight of each category will be listed on Canvas. Information about assignments, including due dates, will be listed on Canvas.

  • Homework – weekly “quiz” like assignments to ensure students are keeping up with the material.
  • Operating System – students will make their own personal operating system. Students will use a git repository on gitlab.eecs.utk.edu, and they will be graded based on the modifications and evidence that they are developing their OS.

Student Expectations

  1. Students must come to class prepared by reviewing the lecture slides, lecture notes, and/or lecture videos.
  2. Students must use the discussion system (e.g., Teams, Piazza, and so forth) to ask questions. Do not email the professor or TAs directly. Doing so could slow responses. We use a discussion system so that everyone that can help you can see your messages and the responses. This ensures you get the most accurate and timely information.
    • The discussion system being used and associated links will be on Canvas.
    • Students must seek answers from the syllabus, Canvas, or other posts before creating a new post.
  3. Students must attend all classes and submit all assignments.
    • Students who cannot attend class are still responsible for the material they missed.
    • If a student misses an exam, it will be considered unexcused until the student submits and absence request with the Dean of Students, and it is approved. Unexcused exams will not be eligible to be taken at a later time and will be graded 0.
  4. Students who require a disability accommodation must coordinate with the Office of Student Disability Services (SDS). https://sds.utk.edu. Students who are not approved prior to an exam or class will not be able to receive accommodations.

Grading

  1. Some assignments may be turned in late for a 15% per day grade penalty.
  2. Grades are not rounded and are not curved.
  3. Per UT policy: students are not permitted to submit extra work to boost a grade.

Grading Appeals

  • Students may appeal an assignment grade provided:
    • The appeal is made within 7 days of the grade being revealed.
    • The student uses the grade appeal form on Canvas.
    • Students must document their grievances and why the grade should be changed.
      • Appeals can only be made when an error has been made in graded.
      • Appeals can NOT be used for relief or an exception to policy.
    • Appeals with no or invalid justification will be denied.
  • An appeal will force a regrade of your work. Your old score will be deleted and NOT be considered when your work is regraded.
    • It is possible to get a lower score after a regrade.

Letter Grades

LetterScore
A94
A-90
B+87
B84
B-80
C+78
C75
D70
F0
Grading schema.

Code of Conduct

Cheating and Plagiarism

Students who are accused of cheating or plagiarism on any single assignment worth 5 points or more towards their final grade will receive an F for the course. Otherwise, students will receive a 0 for the assignment and a 10 point drop to his or her final grade.

The instructor and/or TAs are not investigation units. If there is contention about a cheating case, it will be investigated by the Office of Student Conduct: https://studentconduct.utk.edu. At that point, they will determine the outcome and sentence.

Examples of Cheating

  • Plagiarism and cheating may result from a student copying an assignment or sections of an assignment from another student, from an online source, or from the student’s own previous assignment (from a previous attempt at the course). Students may not use a tool to produce their lab submission, including but not limited to external sources, a disassembler, or a compiler.
  • SECTION 10.4 FROM HILLTOPICS. Plagiarism is using the intellectual property or product of someone else without giving proper credit. The undocumented use of someone else’s words or ideas in any medium of communication (unless such information is recognized as common knowledge) is a serious offense, subject to disciplinary action that may include failure in a course and/or dismissal from the University. Specific examples of plagiarism include, but are not limited to:
    1. Using without proper documentation (quotation marks and citation) written or spoken words, phrases, or sentences from any source.
    2. Summarizing without proper documentation (usually a citation) ideas from another source (unless such information is recognized as common knowledge).
    3. Borrowing facts, statistics, graphs, pictorial representations, or phrases without acknowledging the source (unless such information is recognized as common knowledge).
    4. Collaborating on a graded assignment without the instructor’s approval.
    5. Collaborating on a graded assignment without citing all collaborators.
    6. Submitting work, either in whole or partially created by a professional service or used without attribution (e.g., paper, speech, bibliography, or photograph).
  • SECTION 10.5 FROM HILLTOPICS. Specific examples of other types of academic dishonesty include, but are not limited to:
    1. Providing or receiving unauthorized information during an examination or academic assignment, or the possession and/or use of unauthorized materials during an examination or academic assignment.
    2. Providing or receiving unauthorized assistance in connection with laboratory work, field work, scholarship, or another academic assignment.
    3. Falsifying, fabricating, or misrepresenting data, laboratory results, research results, citations, or other information in connection with an academic assignment.
    4. Serving as, or enlisting the assistance of, a substitute for a student in the taking of an examination or the performance of an academic assignment.
    5. Altering grades, answers, or marks in an effort to change the earned grade or credit.
    6. Submitting without authorization the same assignment for credit in more than one course, including if that student is repeating the same course.
    7. Forging the signature of another or allowing forgery by another on any class or University-related document such as a class roll or drop/add sheet.
    8. Gaining an objectively unfair academic advantage by failing to observe the expressed procedures or instructions relating to an exam or academic assignment.
    9. Engaging in an activity that unfairly places another student at a disadvantage, such as taking, hiding, or altering resource material, or manipulating a grading system

Tips to Avoid Cheating

  • Students are encouraged to work together provided the students cannot see each other’s code.
  • Students should work where their laptop screens are back-to-back. You can talk algorithms and logic, but not code.
  • Do not allow students to even peek at your code. If a student gets their hands on your code, both will be in violation of the plagiarism policy regardless of who actually wrote the code.
  • Google is a great tool; however, it is the primary way students cheat. They will find code on the internet and copy it as their own. Try using the lectures, notes, and videos given in the class.
  • ALWAYS cite who you worked with and where you got help, including any TA or instructor.

List of Changes

This syllabus is subject to change before, during, or after the semester. Any changes will be listed below sorted by descending date.

  • (5-Jan-2022) Initial release