CSCE A320 - Operating Systems Engineering

Class: Mon/Wed 11:30-12:45 PM, SSB-223

Engineering Building, 2nd Floor, Office 227C
Phone: 907-786-6756
Cell: 303-641-3999
E-mail: ssiewert@uaa.alaska.edu

Office Hours:
Tues, Thurs @ 1:00-3:00PM
Mon, Wed @ 1:00-2:00PM
Or by Appointment (e-mail ssiewert@uaa.alaska.edu)

Please note that all course materials should be consulted on Blackboard at http://uaa.alaska.edu/classes
If for some reason you can't access BB, this page is provided as a backup.


Course Description: An introductory course on operating systems. Topics covered include all aspects of resource management and abstraction required to support application programs including: basic security, processes and threads, processor scheduling, synchronization, memory management, virtual memory, virtual machines, device drivers and input/output, and file systems.

Important Course Links
  1. Modern Operating Systems (3rd Ed.) by Andrew S. Tanenbaum (REQUIRED TEXT).
  2. Linux Systems Programming (2nd Ed.) by Robert Love (OPTIONAL TEXT).
  3. Linux Kernel Development (3rd Ed.) by Robert Love (OPTIONAL TEXT).
  4. Linux Device Drivers, 3rd Ed. (SUPPLEMENTAL MATERIAL - Available as On-line Book)
Installing OpenCV on Ubuntu Linux 12.04 LTS

Link to Example Code for CSCE A320
Labs
Docs
Andrew Tanenbaum's Website
Grading Policies
Instructional Goals and Student Learning Outcomes
Ubuntu 12.04 LTS Local ISO Image Ubuntu Classic Desktop

Syllabus (See Blackboard for Course Information Updates) - All MOS Lecture Notes are Available on Blackboard, so please download from there.


 Week-1: [8/26, 28]

    Read: Chapter 1, Tanenbaum MOS 3rd Ed.
    Lecture: Introduction to Operating Systems - Supplemental Lecture-1, Terminology Used in OS

    Operating System (OS) Concepts and Requirements

    a. Brief history
    b. Purpose
    c. Future Challenges 

    START Lab-1: Virtual Box Ubuntu Linux and Beagle xM Introduction


Week-2: [9/4]
  
    NO CLASS ON MONDAY 9/2
 
    Read: Chapter 2, MOS
    Lecture: Overview Exploration of OS Abstraction

    a. Quick Hardware Review
    b. Major Abstractions – Processes/threads, Files, Device Drivers,
                            Protection Domains, Shells, GUI (Graphical User
                            Interface), Virtual Memory and Machines

    DUE on [9/8/13] Sunday before Midnight - Lab-1


Week-3: [9/9, 11]

    Re-Read: Chapter 2 in MOS, Read Chapter 5 in Linux Kernel Development

    Lecture: Overview Exploration of OS Abstraction (Continued)

    c. System Calls (Chapter 5 in Linux Kernel Development)
    d. OS Design and Architecture Approaches
    e. Run time environment for applications

    START Lab-2 on 9/11: Linux System Calls, Scheduling, Message Queues


Week-4: [9/16, 18]

    Read: Chapter 3 and 4 in Linux Kernel Development

    Lecture: Processes and Threads - Supplemental Lecture-4

    Processes and Threads

    a. Processes (POSIX – Portable Operating Systems Interface)
    b. Threads (POSIX)
    c. Scheduling (Best effort, Fair, Real-time)
    d. Inter-process Communication (POSIX message queues)

    e. Thread Safety and Re-entrant code 
    f. Data corruption, race conditions and need for synchronization
    g. Semaphores (Test-Set-Lock instructions)
    h. Critical Sections for shared memory and resources
    i. Deadlock and live-lock concepts
    j. Deadlock: conditions, avoidance, prevention, detection, recovery
    k. Priority Inversion and Inheritence concepts

    What Really Happened on Mars - Mike Jones, MS Research

    DUE on [9/22/13] Sunday before Midnight - Lab-2


Week-5: [9/23, 25]

    Read: Chapter 3 in MOS, Chapter 15 and 16 in Linux Kernel Development
    Lecture: Memory Management

    Memory Management

    a. Memory Management Challenges and Concepts
    b. Protection Domains

    START Lab-3 on 9/25: Linux Memory Management and Paged/Segmented Address Spaces


Week-6: [9/30, 10/2]

    QUIZ - On Terminology ONLY through Lab 2, MOS Chapter 2 and lecture notes - Terminology Used in OS
    A good glossary review guide, but terms will only be taken from material covered to date.
    Re-Read: Chapter 3, MOS
    Memory Management (continued)

    c. Segmentation and Paged/Segmented Systems (e.g., Linux)
    d. Review of Hardware MMU (Memory Management) and VM (Virtual Memory) features
    e. Logical and Physical Addressing
    f. Paging and Page Replacement

    DUE on [10/6/13] Sunday before Midnight - Lab-3


Week-7: [10/7, 9]

    Read: Chapter 4 in MOS, Chapter 13 and 14 in Linux Kernel Development
    Lecture: File Systems

    File systems

    a. File abstraction
    b. Directory Structure (name spaces)
    c. File system data structures and indirection (I-nodes)
    d. File system cache
    e. File system interface to block storage devices 



Week-8: [10/14, 16]

    Review: EXAM-1 - Supplemental Lecture-8 EXAM-1 Review Notes

    Summary of Material and Theory Through File system and Block I/O Concepts
    Day 1 Review: MOS Chapters 1 & 2 and In-Class Materials
    Day 2 Review: MOS Chapters 3 & 4


Week-9: [10/21, 23] - EXAM-1

    EXAM-1: Through File systems and Block I/O Concepts
    Day 1 - In Class Concepts and Theory Exam
    Day 2 - In Class Analysis and Design, Take Home Programming Exam

    DUE: At Home Programming Must be Uploaded to Blackboard no later than 10/27 before Midnight


Week-10: [10/28, 30]

    Read: Chapter 5 in MOS, Chapter 17 in LKD
    Lecture: Device Drivers and I/O - Supplemental Lecture-10

    Device Drivers and I/O (Input/Output)

    a. Device Driver Concepts
    b. Programmed Character I/O interfaces (Serial, Terminal)
    c. Block oriented I/O and DMA (Direct Memory Access) interfaces (e.g., Disk and Network)
    d. Interrupts and I/O attention, request and completion
    e. Clocks

    START Lab-4: Linux Devices and I/O


Week-11: [11/4, 6]

    Read: Chapter 6 in MOS, Chapters 9 and 10 in Linux Kerenel Development

    Lecture: Driver Performance and Kernel Synchronization - Supplemental Lecture-12
  
    Synchronization (A More In-Depth Look)

    a. Reminders on Chapter 2 and Data corruption, race conditions and need for synchronization
    b. Reminder about Chapter 2 Semaphores and monitors (Test-Set-Lock instructions)
    c. Reminder about Chapter 2 Critical Sections for shared memory and resources
    d. GUI and HCI (Human Computer Interface) basics - Gnome Window Manager, X-Windows, 2D Desktops
    e. Power management basics 

    DUE on [11/10/13] Sunday before Midnight - Lab-4


Week-12: [11/11, 13]

    Read: Chapter 9, MOS
    Lecture: Security

    Basic Security

    a. Threats – bug exploitation and denial of service attacks 
    b. Authentication methods for login, biometrics, and passwords
    c. Fundamentals of encryption
    d. Access Control

    More in-depth self-study on Encryption - https://www.udacity.com/course/cs387 (OPTIONAL)

    START Lab-5: Basic Encryption and Platform Security


Week-13: [11/18, 20]

    Read: Chapter 7, MOS
    Lecture: Multi-media Applications - Supplemental Lecture-13

    Multi-media

        a. Audio/Video Encoding
        b. Audio/Video Decoding and Playback

    DUE on [11/24/13] Sunday before Midnight - Lab-5


Week-14: [11/25, no class on 11/27]

    Read: Chapter 8, MOS
    Lecture: Multi-Core Systems - Supplemental Lecture-14

    Multi-Core Operating Systems

    a. Quick Hardware review of multi-core UMA (Uniform Memory Access), NUMA (Non-Uniform Memory Access)
    b. SMP (Symmetric Multi-processing) and AMP (Asymmetric Multi-processing) concepts for multi-core
    c. Load balancing
    d. Virtualization and type-1/type-2 hypervisors
    e. Distributed systems
    f. Barriers, spin-locks, and multi-core

    START Lab-6: Linux RAID and Driver Development


Week-15: [12/2, 4]

    REVIEW: - Exam #2 and Final

    EXAM #2

    DUE on [12/08/13] Sunday before Midnight - Lab-6

Finals Week: [12/9 - 12/14]

    FINAL EXAM (In-Class Take-Away Concepts and Theory)
    FINAL EXAM - Wed 12/11 10:00am-12:45pm in SSB 223