CSC 343 - Operating Systems, Spring 2024, TuTh 12-1:20 or 1:30-2:50. Old Main 159.

FINAL EXAM TIME SLOTS -- We will go over my solution to Assignment 4.
    Noon class:     Tuesday, May 7, 2024 8-10 a.m.
    1:30 class:       Thursday, May 9, 2023 2-4 p.m.

Dr. Dale E. Parson
Class-time Zoom link for CSC343 OR See D2L Course CSC343 -> Content -> Overview for the link.

Student instructions for using Zoom
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.
Dr. Dale E. Parson,, Office hours:
Office Hours Monday 3-5 PM, Tuesday 3-5 PM, Thursday 10-11 AM, or by appt.
All office hours are either Zoom (preferred) using the above link or at Old Main 260.


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


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!)
Here is a conference paper on the Fall 2013 use of STM in the course.
We will use one or more of these models under ~parson/OpSys/ on acad / mcgongall to introduce the state machines.
    Make sure to attend and watch the Zoom videos.
    [:-) ~/OpSys] ls -ld hi* demo* prisonerd2020*
    -rw-r--r--. 1 parson domain users 17983 Aug 23 10:42
    -rw-r--r--. 1 parson domain users 26781 Sep  1 23:24
    -rw-r--r--. 1 parson domain users 26895 Aug 21 16:09

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

Textbook slides (KU password protected, use full, works better with Firefox)

    Chapter 1 -- Introduction
    Chapter 2 -- Operating System Structures
    Chapter 3 -- Processes
    Chapter 4 -- Threads
    Chapter 5 -- Process Synchronization
A mutex without a condition variable versus a mutex with a condition variable.       
        ~parson/OpSys/ and,
            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.
    Chapter 7 -- Deadlocks
    Chapter 8 -- Main Memory
    Chapter 9 -- Virtual Memory
    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 -- From acad you must "ssh mcgonagall" to build & test all 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!

    If you are new to working on our Linux systems, you can bring up a Windows CMD prompt and from there:

It is possible to use the scp, ssh-based file copy command in Mac or Windows command line utilities.

If you do not have a favorite Linux text editor, try running nano on acad. Assignments must run on mcgonagall.

ASSIGNMENT 1 is due at 11:59 PM on Thursday February 22 via make turnitin on the command line.

We will go over Interpreting State Machine Log Files before Assignment 2.

ASSIGNMENT 2 WAS due at 11:59 PM on Thursday March 14 via make turnitin on the command line.
    As of March 11, anyone turning it in by end of March 14 gets 10% bonus points. Bugs still count as before.
    The final due date is now Thursday March 21 at 11:59 PM with a 10% per day late penalty.
    Anything coming in after I go over it in class March 26 at noon is worth 0%.

ASSIGNMENT 3 on context scheduling is due at 11:59 PM on Thursday April 11 via make turnitin.

ASSIGNMENT 4 on Using Reference Strings to simulate page replacement algorithms in demand paging,
        make turnitin due by 11:59 PM on Thursday May 2.
    April 4 class is examination of 2021 Assignment 4 on variations of process swapping.
    I will go over ~parson/OpSys/ demo in class.

ZOOM Recordings

Jan 23 Class Intro to operating systems and discussion of state machine diagram models.
    There is dead space from around 10 to 17 minutes when we lost power in Old Main 159.
Jan 25 Class Went over example state machine code and generated diagram. To try it on acad:
    cd $HOME ; mkdir OpSys ; cd ./OpSys ; cp ~parson/OpSys/
    unzip ; cd ./demo1fall2020 ; make clean test
    make graphs # Try this on acad, not mcgonagall. Let me know if it fails.

Jan 30 Class Went over last spring's Assignment 1 as an example.
    Spring 2023 Assignment 1 demo and state diagram for that assignment.
    Code on acad or mcgonagall is at ~parson/OpSys/
Feb 1 Class Went over our Assignment 1. Tuesday Feb 6 will include 60 minutes work time.
Feb 6 Class First 15 minutes were Chapter 1 slides up to interrupts, the Assignment 1 Q&A.
Feb 8 Class a few clarifications on Assignment 1, Chapter 1 slides interrupts to start of memory.
Feb 13 Class (remote) completed Chapter 1 slides process management to file systems.
    Started Chapter 2 through slide 5.
Feb 15 Class finished Chapter 2 and start Chapter 3 up to slide 7 Process State.
Feb 20 Class finished Chapter 3 slides on processes including running examples on mcgonagall.
    Thursday's 1:30 class will not be held because of a meeting affecting Rohrbach Library funding.
    1:30 students are welcome to attend the noon class (same room & Zoom link) or watch the
        video that I will post here after the Rohrbach meeting.
Feb 22 Class Chapter 4 on threads started Chapter 5 to slide 9, live examples on Linux bash & Java.
Feb 27 Class went over solution to Assignment 1 then Assignment 2 handout specs and code.
    Thursday February 29 will be a work session on Assignment 2.
Feb 29 Class work session, especially using enq() and deq() examples from Mutex.stm, and sample(...) from Assn1.
    Note that enq() and deq() are spelled with the letter "q", not "g", which appeared in a comment.
Mar 5 Class Chapter 5 slides up to Monitors plus examples of atomic spin locks and mutexes in Java.
    Some material related to Assignment 2 near the end of this recording.
Mar 7 class Chapter 5 Monitors & Conditional Variables thru Ch. 6 Shortest-job First CPU scheduling
    with examples from state machines & Java code. First 2 mins. 48 secs. are silent (mic was muted).
Mar 19 class Chapter 6 slides on FCFS thru RR context schedulers and then Part 1 of Assignment 3.
Mar 21 Class Completed going over Assignment 3 handout and then some more Chapter 6 slides.
Mar 26 Class Assignment 3 work session questions & answers.
Mar 28 Class Finish Chapter 6 on CPU scheduling, race through Chapter 7 Deadlocks, and then
    Chapter 8 up through slide 23.
Apr 2 Class Finish Chapter 8 on memory, segmentation, start of paging including acad examples
    of content-address-memory for translation lookaside buffer registers (TLB).
April 4 Class went over swapping-simulating state machines
April 9 Class start Chapter 9 slides up to page replacement algorithms with Linux examples.
April 12 Class Went over a few slides related to Assignment 4 then Assignment 4 handout.
     Next class will be a work session.
April16 Class My Assignment 3 README answers & summary of Final Assignment 5 plan,
    no real Q&A about Assignment 4 during the work session.
April 18 Class Finish Ch. 9 on Virtual Memory, Ch. 10 on storage systems, start Ch. 11 on file systems.
April 23 Class Finish Chapter 11 on file systems.