BYU CS Logo
Computing That Serves

CS 345

Course Offerings

Section # Semester Instructor Website Description
1 Fall 2017 Paul Roper
Section # Semester Instructor Website Description
1 Winter 2018 Paul Roper
1 Fall 2017 Paul Roper
1 Spring-Summer 2017 Paul Roper
1 Winter 2017 Paul Roper http://students.cs.byu.edu/~cs345ta
1 Fall 2016 Paul Roper
1 Spring-Summer 2016 Paul Roper
1 Winter 2016 Paul Roper
1 Fall 2015 Paul Roper https://students.cs.byu.edu/~cs345ta
1 Spring-Summer 2015 Paul Roper https://students.cs.byu.edu/~cs345ta/
1 Winter 2015 Paul Roper http://students.cs.byu.edu/~cs345ta
1 Fall 2014 Paul Roper
1 Spring-Summer 2014
1 Winter 2014 Paul Roper http://students.cs.byu.edu/~cs345ta/
1 Fall 2013 Paul Roper
1 Summer 2013 Paul Roper
1 Winter 2013 Eric Mercer https://facwiki.cs.byu.edu/cs345/index.php/Main_Page
2 Winter 2013 Eric Mercer https://facwiki.cs.byu.edu/cs345/index.php/Main_Page
1 Fall 2012 Paul Roper http://students.cs.byu.edu/~cs345ta/
2 Fall 2012 Paul Roper http://students.cs.byu.edu/~cs345ta/
1 Summer 2012 Paul Roper
1 Winter 2012 Eric Mercer https://facwiki.cs.byu.edu/cs345/index.php/Main_Page
2 Winter 2012 Eric Mercer https://facwiki.cs.byu.edu/cs345/index.php/Main_Page
1 Fall 2011 Paul Roper http://students.cs.byu.edu/~cs345ta/
2 Fall 2011 Paul Roper http://students.cs.byu.edu/~cs345ta/
1 Summer 2011 Paul Roper
1 Winter 2011 Eric Mercer https://facwiki.cs.byu.edu/cs345/index.php/Main_Page
2 Winter 2011 Eric Mercer https://facwiki.cs.byu.edu/cs345/index.php/Main_Page
1 Fall 2010 Paul Roper http://students.cs.byu.edu/~cs345ta/
2 Fall 2010 Paul Roper http://students.cs.byu.edu/~cs345ta/
1 Summer 2010 Paul Roper
1 Winter 2010 Eric Mercer https://cswiki.cs.byu.edu/cs345/index.php/Main_Page
2 Winter 2010 Eric Mercer https://cswiki.cs.byu.edu/cs345/index.php/Main_Page
1 Fall 2009 Paul Roper http://students.cs.byu.edu/~cs345ta/
2 Fall 2009 Paul Roper http://students.cs.byu.edu/~cs345ta/
1 Summer 2009 Paul Roper http://students.cs.byu.edu/~cs345a/
1 Winter 2009 Eric Mercer https://cswiki.cs.byu.edu/cs345/index.php/Main_Page
2 Winter 2009 Eric Mercer https://cswiki.cs.byu.edu/cs345/index.php/Main_Page
1 Fall 2008 Paul Roper http://students.cs.byu.edu/~cs345ta/
2 Fall 2008 Paul Roper http://students.cs.byu.edu/~cs345ta/
1 Summer 2008 Paul Roper http://students.cs.byu.edu/~cs345ta/
1 Winter 2008 Eric Mercer http://cswiki.cs.byu.edu/cs345/index.php/Main_Page
2 Winter 2008 Eric Mercer http://cswiki.cs.byu.edu/cs345/index.php/Main_Page
1 Fall 2007 Paul Roper http://students.cs.byu.edu/~cs345ta
2 Fall 2007 Paul Roper http://students.cs.byu.edu/~cs345ta
1 Summer 2007 Paul Roper http://students.cs.byu.edu/~cs345ta
1 Winter 2007 Paul Roper http://students.cs.byu.edu/~cs345ta/
1 Fall 2006 Kent Seamons http://students.cs.byu.edu/~cs345ta
2 Fall 2006 Kent Seamons http://students.cs.byu.edu/~cs345ta
1 Summer 2006 Paul Roper http://students.cs.byu.edu/~cs345ta/
1 Winter 2006 Paul Roper http://students.cs.byu.edu/~cs345ta/
2 Winter 2006 Paul Roper http://students.cs.byu.edu/~cs345ta/
1 Fall 2005 Quinn Snell http://students.cs.byu.edu/~cs345ta/
2 Fall 2005 Paul Roper http://students.cs.byu.edu/~cs345ta/
3 Fall 2005 Kent Seamons http://students.cs.byu.edu/~cs345ta/
3 Fall 2005 Kent Seamons http://students.cs.byu.edu/~cs345ta/

Short Summary: 

Operating System Principles

Credits: 

3

Prerequisites: 

Language: 

C

Operating System Principles

 

Principles and concepts of operating systems design and the implementation of an operating system.

 

 

This document is not a syllabus. Instead, for ALL offerings of this course, this document states the expected objectives and topics for the course and the approximate number of 50-minute lectures to be devoted to each topic. Faculty members teaching this course should adhere to these objectives and topics. Students taking this course can expect to achieve the objectives and cover the topics specified, and faculty members teaching follow-on courses can expect students to have been appropriately exposed to the prerequisite material as stated.

 

Purpose

Every computing system extensively uses operating system resources and services.  CS 345 addresses in depth such operating system principles as scheduling, concurrency, mutual exclusion, and resource management.

 

Learning Outcomes

 

At the end of this course, students should be able to:

  1. describe the basic components of an operating system and their role in implementations for general purpose, real-time, and embedded applications.
  2. define the concepts of processes, threads, asynchronous signals and competitive system resource allocation.
  3. show how a shell works.
  4. explain what multi-tasking is and outline standard scheduling algorithms for multi-tasking.
  5. discuss mutual exclusion principles and their use in concurrent programming, including semaphore construction and resource allocation.
  6. give an overview of system memory management.
  7. explain how file systems are implemented.
  8. discuss the features and strengths of various contemporary operating systems.
  9. implement a functional, pre-emptive, multi-tasking operating system written in C, including a shell, scheduler, file manager, memory manager, and synchronization components.

 

Topics

  • Processes and Threads (4 hours)
    • Interrupts
    • Multi-tasking
    • SMP
    • Micro-kernels
  • Scheduling (6 hours)
    • Uni-processor scheduling
    • Multi-processor scheduling
    • Real-time scheduling
  • Mutual Exclusion (6 hours)
    • Semaphores
    • Starvation
    • Deadlock avoidance/detection/recovery
    • Monitors
    • Concurrency development
  • Memory Management (8 hours)
    • Caching/Cache friendly code
    • Malloc
    • Paging
    • Segmentation
    • Virtual memory
  • Distributed Processing (4 hours)
    • Networking
    • Remote file access
    • Distributed mutual exclusion
    • RPC
  • File Systems (6 hours)
    • Access methods
    • File management primitives
    • Buffering
    • Free-space management
    • Disc scheduling
    • RAID
  • System Security (2 hours)
    • OS security threats
    • Encryption
  • Contemporary Operating Systems (6 hours)
    • Linux
    • Unix
    • Windows
    • Mac OS

Prerequisite(s): CS 224 & CS 240