Lectures

Links to videos of live lectures, as presented from the Bundaberg campus, will be provided here as soon as possible after the event.

Lecture 1 delivered on 4th March.
Mainly an introduction to the course, with quite a few technical problems, unfortunately. Quite a bit of the lecture was delivered with technicians in the room...! After some comments about lectures, I look at the various resources on the web site, and run one of the animations, illustrating pausing, and going frame-by-frame. I talk about the theoretical nature of the course, the way that it is structured, the way that it is assessed, and some of the rationale behind why I run it the way I do.

Lecture 2 delivered on 6th March.
Looking in detail at the Instruction Execution cycle, the machine code generated by the C++ statement a=a+b; and how this code is fetched from RAM and executed, using three special-purpose registers. Then looking at processes and resources, and the states and transitions that processes undergo throughout their life cycle.

Lecture 3 delivered on 11th March.
After a few words about the book, and the first two chapters in particular, I take a quick look at some of the diagrams, and then spend most of the time focussing on the different process states and state transitions, and the importance of the system clock to send regular interrupts.

Lecture 4 delivered on 13th March.
In which I further discuss the different process states and process state transitions, and run some small BACI programs to illustrate running multiple threads.

Lecture 5 delivered on 18th March.
In which I list some of the possible aims of the short-term scheduler; and look at the principles underlying basic scheduling strategies such as FIFO, SJF, and Round Robin, and more advanced strategies using multiple-level feedback queues.

Lecture 6 delivered on 20th March.
During this lecture I talk about deterministic modelling, as it relates to dispatching processes to the CPU, looking particularly at FIFO, SJF, and RR, and calculating turnaround times and waiting times.

Lecture 7 delivered on 25th March.
On asynchronous concurrent processes, and how they might need to cooperate, such as in buffering, or might be mutually harmful, such as when two or more processes enter their critical sections at the same time and attempt to update a shared variable.

Lecture 8 delivered on 27th March.
More on asynchronous concurrent processes, specifically looking at the need to ensure mutual exclusion between processes, some software solutions to try to achieve this objective, and their advantages and disadvantages.

Lecture 9 delivered on 1st April.
In which I go through the first online multiple-choice quiz.

Here are the lecture slides I'm using during weeks 4 and 5.

Lecture 10 delivered on 3rd April.
Semaphores: their use in a variety of circumstances to handle asynchronous concurrent processes, and the necessity of using locks in their implementation.

Lecture 11 delivered on 8th April.
Resource Management - the problem of deadlock, its seriousness, the four necessary conditions for a deadlock to occur, and ways to try to prevent deadlock.

Lecture 12 delivered on 10th April.
More on the problem of deadlock, specifically deadlock avoidance and the banker's algorithm, resource allocation graphs, deadlock detection and recovery, and the ostrich algorithm.

Lecture 13 delivered on 22nd April.
Going through Quiz 2, and the start of a major new topic, memory management, including questions to be asked regarding memory organization and types of strategies required.

Lecture 14 delivered on 24th April.
In which I look at different ways of organizing real memory, using fixed and dynamic partitions, the need to protect the operating system and other processes, and the need to minimise fragmentation.

Lecture 15 delivered on 29th April.
The rationale behind virtual memory, and an introduction to paging and segmentation.

Lecture 16 delivered on 1st May.
Concentrating almost entirely on paging systems, the use of cache memory to store parts of the currently-active process's page table, and the handling of page faults.

Lecture 17 delivered on 6th May.
In which I go over the 3rd multiple-choice quiz, and then describe some of the important ideas behind different page replacement algorithms, explaining the necessity of reducing page faults and avoiding thrashing.

Lecture 18 delivered on 8th May.
More on virtual memory, some diagrams from chapter 9 of the text, and more on page replacement algorithms.

Lecture 19 delivered on 13th May.
Files: the contents of a typical file control block, operations on files, typical directory structures. and a look at how to allocate files on disk (contiguous, linked, indexed, or some variation thereof), and how to keep track of free space (by a bit map, by a linked list, by grouping, or by counting)

Lecture 20 delivered on 15th May.
A look at the architecture of hard disk drives, the delays involved in servicing requests, and how the operating system can schedule requests to the disk so as to maximise throughput while attempting to be fair to all processes.

Lecture 21 delivered on 20th May.
I go over the fourth multiple choice quiz, and go through a tutorial exercise related to contiguous, linked, and indexed file allocation.

Lecture 22 delivered on 22nd May.
Some examples from file management and disk scheduling, and a little about protection and security.

Here are the lecture slides I used during Lectures 22 and 23.

Lecture 23 delivered on 27th May.
Finishing off on protection and security, the exam format and a review of the course.

Here are the lecture slides I used for the second half of Lecture 23.