Recording links
for CS40 Zoom meetings

February 18, 2021- today's Perseverence Mars landing, operating systems used by lander components. Operating system interfaces as illusions masking underlying complexity. Reviewed website, syllabus, course outline. Showed use of virtual machine on VirtualBox. Covered part of slides at link entitled "OS installation" on course outline.
(original and captioned versions)

February 25, 2021 - completed "OS Installation" slides, proceeded to do a demonstration installation of Fedora 15 linux in a virtual machine. Talked about the mechanics of access to the remote server sputnik.smc.edu, per the link on the main web page entitled "Remote Unix system account." Talked about number systems, in particular the decimal and binary ones, per the links in the Reading column of section 1 of the course outline.

     February 28, 2020 - office hours, VirtualBox installation and virtual machine importation

March 4, 2021 - numbers as a set of mathematical magnitudes, or a set of characters (symbols), or a set of instructions; memory, registers; "The answer is" post (6+5=11); Intel manuals, in course outline section 3; "von Neumann architecture" slides; begin "Ch1" (textbook's) slides, demo

March 11, 2021 - we discussed the extra credit in the "assembly language" assignment and its resultant 2 versions of the "disassembly" output file -- one version contains a hex 43 instruction while the other has FF C3 instead. In binary, you can see that the latter is the same value as the former with its significant bits left-padded with ones to a size of 64 bits. Left padding with ones (non-intuitive) is how to widen a signed binary number while keeping its value. We showed the ddd debugger running the "disassembly" homework with its machine language program that prints "Hello World." It illustrates the use of system function calls (it uses the write and the terminate calls). We commented on the noteworthy sections of the Intel manuals that are specified in course outline section 3 Reading column. I demonstrated and discussed the program at the link entitled "executing data as code" in course outline section 3 Topic column. We continued the slides at the link entitled "Ch 1" course outline section 3 Slides column. I described the homework assignment that modifies textbook Figure 1.4 by extending it to include devices.

March 18, 2021 - showed discreet components (hobbyist packages of resistors and capacitors) as the basis of circuits, miniaturized in the latter 20th century into integrated circuits (chips); these are what integrated circuits integrate. Discussed the memory hierarchy and locality of reference, which lead to the benefit of caching. Ran program examples that visibly demonstrate that speed benefit. Discussed data structures.

March 25, 2021 - finished data structures slides treatment of stacks, emphasizing the role they play in saving return points when calls are made. Demonstrated branch prediction as a strategy that, like caching, seeks to save time by doing work faster and so finishing it sooner. Made a partial demo of the upcoming homework, using the debugger to step through a program that adds 3 plu 2. Summarized some concepts about interrupts from the podcast on the subject by Steve Gibson (course outline section 4's "hardware interrupts" link). Showed the linux kernel's record of interrupt occurrences (revealed through the /proc/ pseudo-filesystem). Gave a side-by-side comparison of code execution with and without interrupts, based on textbook's Figure 1.5a and 1.5b. Applied hypothetical numbers expressing how long it took to perform each part of the program, and that with interrupts the program finishes sooner than without them.

April 1, 2021 - demonstrated y-cruncher calculating digits of pi, a pure computation program. Demonstrated the "top" program that measures and reports per-process and per-cpu resource utilization. Showed slides for textbook chapter 2, to be continued next week. Talked about process scheduling in relation to this week's "waste time" homework.

April 8, 2021 - demo using linux "trap" command to set custom responses to "signals," example to automate clean up of temporary files upon termination. Portion of chapter 2 slides about processes. Mention of concurrency problems, among processes, like failed mutual exclusion (headline: "Couple Robs Bank, ATMs as Weapons"). Professor's "processes" slides, fork( ) system function is the creator of processes.

April 15, 2021 - spring break

April 22, 2021 - computer security anecdote, "you don't know the things that you don't know and, you don't know what they are." Demo of "forkdemo2" revealing the functionality of the methodology of creating processes (i.e. the operation of the fork( ) system function). Demo of the difference in operational behavior of the current process scheduler in linux, and the predecessor scheduler it replaced 10 years ago-- same program on a new and an old installation of linux yields different output due to different scheduler. Demo of the ps (process status) command. It is a reader of the process list, showing one line of information for each process descriptor in the list (i.e., running on the computer). I used it to shows2 things. First, it has many options allowing custom display of whichever process descriptor items (there are many of them) are of interest. Second, it can show the chain of process lineage or genealogy, displaying for each process that process's parent process. Touched on slides from chapter 9 (process scheduling), as needed to support the assigned process scheduling homework. Discussed/explained the homework. Returned to chapter 3 slides (processes generally).

April 29, 2021 - "linux process scheduling" slides and related "process scheduling and prioritization exercise" from course outline's sections 9 and 10. Featured the "top" dynamic process display utility. Performed the "deadlock" demonstration, course outline section 7. Covered the several slides in the "Ch 2" slideset dealing with memory management and virtual memory. Discussed the process states homework and upcoming test.

May 6, 2021 - discussed and demonstrated threadng. Showed that an unthreaded version of y-cruncher calculating pi is scheduled onto one core only, while the work of its threaded version is scheduled across multiple cores. discussed Peterson's algorithm for mutual exclusion and the related assignment. Covered half of the slides at the course outline link "IPC and mutual exclusion"

May 13, 2021 - completed "IPC and mutual exclusion" slides with focus on semaphores. Used lending library book analogy to express semaphores' operation. "Ch7" memory management slides through the part about the buddy system.

May 20, 2021 - discussed buddy system homework common error, edit-compile-link-load process and symbol management (text appendix 7A), completed "Ch7" slides, began "Ch8" slides with memory3.c demonstration of the virtual memory manager's rescue of the system under memory exhaustion

May 27, 2021 - completed/repeated the demonstration and discussion of virtual memory/swap and the graceful termination by the OS of a rogue program that exhausts all virtual memory, as opposed to the OS crashing. Covered most of "Ch8" slides on the topic of virtual memory. Talked about how page replacement algorithms work, related to homework assignment. Started discussion of filesystems, upcoming homework at course outline's "ext2 filesystem" link.

June 3, 2021 - concluded Ch8 slides, limited coverage of Ch12 slides on the different kinds of file allocation (contiguous, chained, indexed, etc) and similar slides of my own in slideset link "Linux landscape." Completed explanation of "ext2 filesystem" homework. Performed demonstration at link "device vs file" in course outline section 13 illustrating the concepts of "Devices, and friends".