| 1 | due: Thursday 22nd January | Five little programs to get used to BCPL. | |
| 2 | due: Monday 9th February | A small library of string functions. | |
| 3 | due: Friday 3rd April | A unified input/output library with basic disc files. |
| A very slight introduction and two motivating mysteries. Starting BCPL, documentation sections 1 to 13 and 15. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Got up to section 38, nearly all done. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Extracting and inserting sub-word-length bit sequences, Frame pointers and how stack frames are organised, Debugging options and other tricks under our virtual machine. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| String operations. This link explains what the next four links lead to, They are two different implementations of the essential parts of the string and "filestring" objects we had by the end of class, but much tidier than anything I could have written on the board. strings_one.b, stringstream_one.b, strings_two.b, stringstream_two.b. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (look briefly at the tidied strings_two and stringstream_two first) Taming an unfortunate but common situation: keyboard input, stringstream input. Design of a trivial and very unhelpful file system. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The implementation of file system version 0. FAT-16, a very bad idea. Single level index file system, multiple levels of indirection, consequences. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SSD needs consideration. Background:
C1,
C2,
C3,
C4,
C5,
C6,
C7. UVEPROMs: X1, X2, X3, X4, X5. Some SSD details. Some ancient background to the background: M1, M2, N1. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The SSD details that we didn't reach. NTFS (from Windows NT, 1993) with its runs, inodes (from unix) and fsck etc. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ReiserFS. Disc structure and directories, making very basic files. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Review of things fom the quiz, let's hope we learn the lesson. More with directories, creating and reading files (contiguous allocation), Here's a little example showing where everything is. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The free block list, how easy it is to change the structure of a file when it gets big, The fake magnetic tape example extended to copy as well as display. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Getting stack frames just right: Program and Memory contents. Base and Limit for a primitive version of virtual memory. Just a brief mention of paged and associative memory. Form your groups of 2 or 3. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (unsigned calculations for physical addresses with base and limit) Interrupts, user and system mode. Intel's segmentation, a version of base and limit. Pages and page tables, virtual address translation, 10/10/12, 10/11/11, 9/9/9/9/9/12. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A whole VM system (just three processes in the end) all in one picture, I hope it was clear enough, but it did get a bit crowded, so let me know if anything needs more explanation. Also most of process creation and life-cycle in unix systems. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A neater picture of two processes with virtual memory.|
|
|
|
| Big trouble with shared memory. | Semaphores (one), (two), usually "mutex" these days. Intel's LOCK, XCHG, BTS, Vax REMQHI, SOBGEQ, Dec-10 SOSL. The dining philosophers, and anthropomorphic picture of deadlock and solutions.
|
|
| Break
|
| 9th to 13th
|
|
|
|
| P and V by software: 0, a, b, c,
d, e, f. | Monitors, Java's synchronized. Some shared single user devices: card punch, card reader, (codes), line printer, graph plotter. How it's done in a program.
|
|
|
|
| Review of the essentials for the assignment. | The virtual machine.
|
|
|
| Complicated virtual address translation tricks to enable modifying page tables.
|
|
|
|
| Here's an address calculator to make part of it easier. | All the tricks in pictures. Doing something real but basic with virtual memory. That, all put together.
|
|
|
| Causing a page fault.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| | |||||||||||||||||||||||||||||||||