1 | due: Fri 7th February. | Finish the primitive single-block file system. | |
2 | due: Mon 24th February. | Integrate your disc file system with the iosb system. Additional reminders, already said in class, but brought together in one place. | |
3 | due: Sun 6th April. | Improve the disc file system so that file size is only limited by disc size. | |
4 | due: Wed 16th April. | Free block management and subdirectories. | |
5 | due: Wed 23rd April. | First and second steps of the final big thing. | |
6 | due: Tues 29th April. | Third step of the final big thing. | |
5 | due: Tues 6th May. | The final big thing. |
Quick introductions. Learning BCPL, looked at these: functions, local array and floating point, binary tree. | ||||||
Hadn't finished this: extracting words from a string. Tapes and discs: tape drive 1950's, computer room 1970's, important probability fact, A mostly forgotten intermediary 1950's-60's one, two, three, A disc drive, 1963, access 50-205 mS, 15MB, 440V, 20KW. | ||||||
Beginning the almost trivial first file system, Every file exactly one block long, file "name" is block number. | ||||||
The primitive file system is now usable, and here it is. | ||||||
How to use the virtual machine's debugging assistance. Improved systems for making disc blocks into files: Contiguous allocation, simple but slow; level-1 index: header block with pointers to data blocks, limited; header block with "runs" of consecutive blocks, as in NTFS; Maybe extend level-1 index to a tree-like structure? All of this applies almost equally to the new solid state devices. | ||||||
Other file formats: multi (variable) level indexes, header block has ptrs to (ptr blocks with ptrs to)* data blocks. level 0 index good trick for efficient small files. Max and min file size, access times for sequential and random access. Directory entries, the sorts of things they need to contain. Hard links and reference counts (no good for possibly cyclic structures). | ||||||
I-nodes, recovery after disc failure. Learning from mistakes: FAT-16. Clusters and partitions still survive. | ||||||
ReiserFS, a file system for murderers. RAID systems. Journalling file systems. | ||||||
Solid state "discs". Managing free blocks. | ||||||
Some thoughts on the second and third assignments. IOSB: a generalised and improved IO system, same handling for anything like a file. | ||||||
The virtual machine's instruction set. The regions of memory available to a running program. How functions use the stack (pre-call and pre-function instruction sequences) | ||||||
Post-call and post-function instruction sequences and the extra word. Memory technology: M1, M2, N1, C1, C2, C3, C4, C5, C6, C7. | ||||||
Virtual memory, virtual address, physical address, address translation. A primitive but viable hardware solution: multiple segments, base and limit registers. The modern way: paged memory, page tables, TLB in cache for speed. | ||||||
Intel's 32-bit scheme, (CR3; 10, 10, 12), now (CR3; 9, 9, 9, 9, 9, 12). Page protection, how a unix process is created, how interrupts are handled. The big picture, VM is use with two processes. | ||||||
Doing something real but basic with virtual memory. tiny notes from today. Organising the free page list in four steps: one, two, three, four. | ||||||
Setting up virtual memory, almost ready to go. | ||||||
Break | 10th to 14th | |||||
Getting complicated with the VM memory map (see next class for link to diagram). | ||||||
The (almost) completed memory map.
Nearly handled a page fault correctly! In fact there was nothing wrong, just the output being hard to read: This is the code as we had it at the end, just with the $debug call removed, This is the output up to the point where the repeated page faults happened, See if you can work out what it is really saying. | ||||||
Virtual memory fully working. | ||||||
Race conditions, critical sections, read-modify-write on shared resource, mutexes, semaphores, atomic operations, atomic test and set instruction. Starting on the five philosophers. | ||||||
Communicating Sequential Processes (CSP) gives a formal description of the college of philosophers. Deadlock. Can be avoided if it can be predicted, but in general it can't. Avoidance of and dealing with deadlock for the philosophers. Some shared single user devices: card punch, card reader, (codes), line printer, graph plotter. | ||||||
Intel's LOCK, XCHG, BTS, Vax REMQHI, SOBGEQ, Dec-10 SOSL. P and V by software: 0, a, b, c, d, e, f. Monitors, Java's synchronized. How worms always used to break in and still do occasionally. | ||||||
(no class for centennial) | ||||||
Interprocess communication through shared memory with a mutex. Putting everything together for the last big thing, multiprocessing. | ||||||
More about assignment 5. Creating a heap. | ||||||
The Buddy system for heaps illustrated. Garbage collection. The very beginning of networking. | ||||||
More on networking. A bit about the mysterious aspects of security. | ||||||
Filling in the cryptography details. Diagrams to possibly help correct final file system. words. |