Lectures
Lecture 1 delivered on 4th March.
Lecture 2 delivered on 6th March.
Lecture 3 delivered on 11th March.
Lecture 4 delivered on 13th March.
Lecture 5 delivered on 18th March.
Lecture 6 delivered on 20th March.
Lecture 7 delivered on 25th March.
Lecture 8 delivered on 27th March.
Lecture 9 delivered on 1st April.
Here are the lecture slides I'm using during weeks 4 and 5.
Lecture 10 delivered on 3rd April.
Lecture 11 delivered on 8th April.
Lecture 12 delivered on 10th April.
Lecture 13 delivered on 22nd April.
Lecture 14 delivered on 24th April.
Lecture 15 delivered on 29th April.
Lecture 16 delivered on 1st May.
Lecture 17 delivered on 6th May.
Lecture 18 delivered on 8th May.
Lecture 19 delivered on 13th May.
Lecture 20 delivered on 15th May.
Lecture 21 delivered on 20th May.
Lecture 22 delivered on 22nd May.
Here are the lecture slides I used during Lectures 22 and 23.
Lecture 23 delivered on 27th May.
Here are the lecture slides I used for the second half of Lecture 23.
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.
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.
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.
In which I further discuss the different process states and process state transitions, and run some small BACI programs to illustrate running multiple threads.
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.
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.
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.
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.
In which I go through the first online multiple-choice quiz.
Semaphores: their use in a variety of circumstances to handle asynchronous concurrent processes, and the necessity of using locks in their implementation.
Resource Management - the problem of deadlock, its seriousness, the four necessary conditions for a deadlock to occur, and ways to try to prevent deadlock.
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.
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.
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.
The rationale behind virtual memory, and an introduction to paging and segmentation.
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.
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.
More on virtual memory, some diagrams from chapter 9 of the text, and more on page replacement algorithms.
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)
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.
I go over the fourth multiple choice quiz, and go through a tutorial exercise related to contiguous, linked, and indexed file allocation.
Some examples from file management and disk scheduling, and a little about protection and security.
Finishing off on protection and security, the exam format and a review of the course.