CSC 343 - Operating Systems, Fall 2020, MonWed 3-4:20 PM.
Classes are all via Zoom at class time. Zoom student docs are here.
If you need to log in to watch a recording, go here https://kutztown.zoom.us/ and Sign In using KU login.

MEAN vs. MEDIAN grading plan for final grades.
The CSC343 FINAL EXAM SCHEDULE via the regular Zoom class link is:
Monday, December 7, 2020, 11:00 a.m. – 1:00 p.m.
This will be a work session on Assignment 5 for students working on assn5.


Normal Office Hours 11/30-12/3: Monday 1-2, Tuesday 3:30-4:30, Wednesday 12-2, Thursday 3:30-4:30 or by appt.
Final week office hours 12/7-12/10: Monday 1-3, Tuesday & Thursday 11-12:30
See your course page for final exam work-session schedule.

Dr. Dale E. Parson

MonWed 3-4:20, Zoom classes & recordings, http://faculty.kutztown.edu/parson
Class-time Zoom link for CSC343: See D2L Course CSC343 -> Content -> Overview for the link.
IF you don’t want to be recorded or are a minor, use PRIVATE ZOOM CHAT to me for questions.
Please fill out & email Dr. Parson this permission to record slip. I will use it to take attendance in week 1.
The course is 100% via Zoom at class time. I will record & post class videos, but want you there at class time. Thanks.

KU Campus Mask policy: Resident students must wear a mask anytime they are outside of their personal room and within a building or with anyone else but their roommate. Commuter students must wear a mask anytime they are on campus within a building or with anyone. The course is 100% via Zoom at class time. I will record & post class videos, but want you there at class time.

PA: The Secretary's Order requires individuals to wear a face covering, in both indoor public places and in the outdoors when they are not able to consistently maintain social distancing from individuals who are not members of their household, such as on a busy sidewalk, waiting in line to enter a place, or near others at any place people are congregating. Whether inside in a public place or outside, and when wearing a face covering or not, everyone should socially distance at least 6 feet apart from others who are not part of your household.
 
Dr. Dale E. Parson, parson@kutztown.edu, Office hours: https://kutztown.zoom.us/j/94322223872
Office Hours Monday 1-2, Tuesday 3:30-4:30, Wednesday 12-2, Thursday 3:30-4:30 or by appt.

First day handout (syllabus that is specific to this semester).



Handouts

Windows users can download the WinSCP file transfer client in the Computer Science sub-menu below here.

Here is initial documentation on the State Machine language (STM) that we will use for projects.
    STM.doc.txt documents the STM's library functions and events.
    (Edit 8/26/14: Added :/usr/bin to the PATH in the above document. Added export TERM="xterm".
     We will ssh mcgonagall to run our projects. Do not run them on acad!)
I added a STM to simulate a 10-person game of tag on Jan. 28, 2020. It sends events between thread state machines.
    Code is in ~parson/OpSys/tag_2020.zip on acad and mcgonagall.
Here is a conference paper on the Fall 2013 use of STM in the course.

UNIX "man -s3" library functions and "man -s2" system calls and the user mode / kernel mode diagram.


Textbook slides (KU password protected)

    Chapter 1 -- Introduction
    Chapter 2 -- Operating System Structures
    Chapter 3 -- Processes
    Chapter 4 -- Threads
    Chapter 5 -- Process Synchronization
        ~parson/OpSys/PipesPrisoners2018.problem.zip and PipesPrisoners2018.solution.zip,
            Player*.java files show synchronization solutions using atomics, locks, and semaphores.
        Here are Java doc pages for java.util.concurrent, java.util.concurrent.atomic, and java.util.concurrent.locks.
    Chapter 6 -- CPU Scheduling
   
The handout on the STM sample(...) function will be useful in upcoming assignments.
    State machines for first-come first-served, shortest job first, and round robin CPU schedulers
    Chapter 7 -- Deadlocks
    Chapter 8 -- Main Memory
    Chapter 9 -- Virtual Memory
The 2013 STMs for PAGING -- FIFO paging, LRU paging & LRU paging with dirty bit consideration -- have the same graph.
        FIFO uses a FIFO queue, LRU uses a priority queue sorted on use recency, and LRU w. dirty bit sorts on clean-vs-dirty status & recency.
        FIFO puts each new (page -> frame) mapping in a FIFO queue, pulls a victim frame from front when no free frame is available.
        LRU uses simulation time() as priority for a min-queue, removes from queue and reinserts on every memory reference.
            This queue manipulation is for simulation only. Hardware bits in TLB track most recent usage for each page -> frame reference.
        LRU-dirty uses (dirty, time()) as priority for min queue, preferring clean-page victims because it doesn't have to page them out,
            because there is already an identical clean copy sitting on disk. Dirty victims need to be paged out when victimized.
    Chapter 10 -- Mass Storage Systems
    Chapter 11 -- File System Interface
    Chapter 12 -- File System Implementation
    Chapter 13 -- I/O Systems
    Chapter 14 -- Protection
    Chapter 15 -- Security
    Chapter 16 -- Virtual Machines
    Chapter 17 -- Distributed Systems
    Chapter 18 -- The Linux System
    Chapter 19 -- Windows 7
    Appendix A -- Free BSD

ASSIGNMENTS

    Users of the vim editor: Nathan Rew has graciously coded vim config files for syntax highlighting of our STM source code.
        Please see ~parson/OpSys/STMSyntax/ for instructions in READMEstm.txt and the two config files. Thanks, Nathan!
Assignment 1 on completing a tutorial state machine is due by 11:59 PM on Thursday September 17 via make turnitin.
Assignment 2 on modeling unbounded & bounded buffers is due by 11:59 PM on Thursday October 15 via make turnitin.

Assignment 3 on modeling CPU (a.k.a. context) scheduling due by 11:59 PM on Thursday November 12 via make turnitin.

Assignment 4 on modeling page replacement algorithms is due by 11:59 PM on Thursday December 3 via make turnitin.

Assignment 5 adding CPU burst time estimation and preemption to shortest-job first CPU scheduling is
    due by 11:59 PM on Thursday December 10 via make turnitin.


ZOOM Recordings
August 24 video - First day handout & related policies, overview of the semester, COVID@KU graphical simulation, Q&A.
August 26 video - We started looking at the Human1STM state machine code & build/test environment as an example.
August 31 video - Completed detailed analysis of the Human1STM state machine code & build & test setup.
September 2 video - Walked through the ~parson/OpSys.tag_2020.zip state machine & started Assignment 1. Work session 9/9.
September 9 video - We completed walking through assn1 code and handout. PLEASE SEE ASSN1 PAGE 1 UPDATED IN RED.
September 14 video - We worked on Chapter 1 slides up to "Clustered Systems", used end of class for Q&A on Assignment 1.
September 16 video - Went from "Clustered Systems" in Chapter 1 slides to "System Call Parameter Passing" in Chapter 2.
September 21 video - Went from "System Call Parameter Passing" in Chapter 2 to "Interprocess Communication" in Chapter 3.
September 23 video - We finished out Chapter 3 on Interprocess Communication.
September 28 video - Went over Chapter 4 slides on Threads.
September 30 video - Went over Assignment 2 up through Part 3 PolledRendevous.stm.
October 5 video - Started Chapter 5 slides up to Mutex.
October 7 video - Examined state machine code in ~parson/OpSys/criticalSection2020 for Unsafe, Atomic, and Mutex synchronization.
October 12 video - Semaphores through Condition Variables slides, some STM code.
        Textual outline of Mutex without Condition Variable and Mutex with Condition Variable.
October 14 video - Condition variables through end of Chapter 5 slides. STM sample() function for exponential & revexponential curves.
October 19 video - (REMOVED) My solution to assn2. Java examples of Mutex, Condition Variables, & Binary Semaphores.
October 21 video - Chapter 6, processor (a.k.a. CPU or context) scheduling slides, related materials.
October 26 video - Complete examination of Assignment 3 requirements on CPU (context) scheduling for threads.
October 28 video - Overview Chapter 7 Deadlocks, start Chapter 8 Main Memory.
November 2 video - Memory management, relocation registers & segmentation, start paging & translation look-aside buffers.
November 4 video - Translation look-aside buffers through start of Chapter 9 demand paging and victimization algorithms.
November 9 video - Finished Chapter 9 on demand paging, thrashing, working set, looked over a state machine model on swapping.
November 11 video - Work session on Assignment 3, mostly round-robin modeling detail Q&A.
November 16 video - Start looking at Assignment 4 on demand paging, page replacement algorithm modeling.
November 18 video - Complete going over Assignment 4, also Median vs. Mean semester grading plan.
November 30 video - Go over Assignment 5 handout, answer questions about Assignments 4 & 5.
    The Q&A about TLB hardware bit(s) for LRU-dirty, assn4 README Q4, starts at 39:50 in the recording.
December 2 video - Chapter 11 on File System Interface, including examples from acad.