CSE A335 - Operating Systems Engineering

Class: Tues/Thurs 2:30-3:45 PM, ENGR-342

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

Office Hours:
Tues, Wed, Thurs @ 12:00-2:00 PM; or By Appointment
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. Link to Order REQUIRED TEXT, Modern Operating Systems (3rd Ed.) by Andrew S. Tanenbaum, from Amazon
  2. Link to Order OPTIONAL TEXT, Linux Kernel Development (3rd Ed.) by Robert Love, from Amazon
Linux Device Drivers, 3rd Ed.
Link to Example Code for CSE A335
Labs
Docs
Grading Policies

Syllabus (See Blackboard for Definitive Copy)


 Week-1 [1/15, 17]:

    Read: Chapter 1, Tanenbaum MOS 3rd Ed.
    Lecture: Introduction to Operating Systems

    Operating System (OS) Concepts and Requirements

    a. Brief history
    b. Purpose
    c. Future Challenges 

    Lab: Virtual Box Ubuntu Linux Introduction
    Lab: Beagle xM Lab Introduction


Week-2 [1/22, 24]:
   
    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

Week-3 [1/29, 31]:

    Re-Read: Chapter 2, MOS

    Lecture: Overview Exploration of OS Abstraction (Continued)

    c. System Calls
    d. OS Design and Architecture Approaches
    e. Run time environment for applications

Week-4 [2/5, 7]:

    Lecture: Processes and Threads

    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. Priority Inversion and Inheritence concepts


Week-5 [2/12, 14]:

    Read: Chapter 3, MOS
    Lecture: Memory Management

    Memory Management

    a. Memory Management Challenges and Concepts
    b. Protection Domains


Week-6 [2/19, 21]:

    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

    THURSDAY, 2/21, NO CLASS (Dr. Siewert at Intel Embedded Symposium)


Week-7 [2/26, 28]:

    Read: Chapter 4, MOS
    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 

    Read: Chapter 5, MOS
    Lecture: Device Drivers and I/O

    Device Drivers and I/O (Input/Output)

    a. Device Driver Concepts
    b. Programmed Character I/O interfaces (Serial, Terminal)


Week-8 [3/5, 7]:

    Review: EXAM-1

    EXAM-1: Through Device Drivers and I/O Concepts

    3/5 Short In-Class Quiz on Theory Covered to Date
    3/7 Take Home Programming Asessment Due on 3/8
    3/7 - NO CLASS (use time to work on Programming Take Home Exam)


Week-9 [3/12, 14]: SPRING BREAK, NO CLASS

    Complete Take Home Exam (if not already done).


Week-10 [3/19, 21]:

    Device Drivers and I/O (Input/Output) - continued

    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
    f. GUI and HCI (Human Computer Interface) basics
    g. Power management 


Week-11 [3/26, 28]:

    Read: Chapter 6, MOS
    Lecture: Synchronization
  
    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. Deadlock: conditions, avoidance, prevention, detection, recovery
    e. Barriers, spin-locks, and multi-core


Week-12 [4/2, 4]:

    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


Week-13 [4/9, 11]:

    Read: Chapter 7, MOS
    Lecture: Multi-media Application

    Multi-media

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


Week-14 [4/16, 18]:

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

    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


Week-15 [4/23, 25]:

    REVIEW: - Exam #2 and Final

    EXAM #2
    4/23 - In-Class Quiz (After Review)
    4/25 - In-Class VB-Linux Programming Assessment

Finals Week [4/30 - 5/4]:

    FINAL EXAM (In-Class Theory and VB-Linux Programming)