email to grader521 at rabbit.eng.miami.edu, include typescript/screenshot. | |||||||||
1 | due | Thursday 30th January 11:59:59.9 p.m. | A recursive function properly using stack frames. | ||||||
2 | due | Thur 20th February | An interrupt based input system. | ||||||
3 | due | Tues 4th March | Basic data structures in BCPL. | ||||||
4 | due | Tues 25th March | newvec and freevec. | ||||||
5 | due | Tues 15th April | Simple file system. | ||||||
6 | due | Mon 31st March | Design for full file system. | ||||||
Tues 22nd April - Last day for submitting assigments already due. | |||||||||
7 | due | Sat 26th April | Full file system. | ||||||
8 | due | Mon 5th May | Multiprocessing. | ||||||
The grader's reminders page. |
Class 1 ‑ | Tue 14‑1‑2014 | Quick introductions, and a taste of two of the mysteries to be addressed: disc file systems and virtual memory. | ||||
Class 2 ‑ | Thur 16‑1‑2014 | How computers work. All the instruction set, in detail. Tiny example of entering, assembling, and single-stepping through a program | ||||
Class 3 ‑ | Tue 21‑1‑2014 | Effective assembly language programming - keep it high level until the last minute. Big expressions and global variables are easy, So are just about all the statements you could want. | ||||
Class 4 ‑ | Thur 23‑1‑2014 | How functions work. The stack, stack frames, the frame pointer. Recursion is automatic, you don't need to do anything to allow it. | ||||
Class 5 ‑ | Tue 28‑1‑2014 | Reading documentation is good. Interrupts. System/user mode controlling everything. Two stacks. | ||||
Class 6 ‑ | Thur 30‑1‑2014 | Being practical with interrupts:
first step - just a repeating timer, now the added complication of interacting with a peripheral device. | ||||
Class 7 ‑ | Tue 4‑2‑2014 | Playing with packed strings. Things to learn from magnetic tapes (picture A, B), a reminder about probability, Blocks, CRCs, inter-block gaps: all very necessary, even for modern discs. | ||||
Class 8 ‑ | Thur 6‑2‑2014 |
An interesting article
on the unreliability of tape backups. Magnetic drums, the next technological step: one, two, specs from 1957. A disc from from 1963. Contiguous allocation file systems, easy to implement, maybe viable for very small systems, but condense takes too long for anything large. Partitions and clusters, the parable of the bigger disc with the smaller capacity. | ||||
Class 9 ‑ | Tue 11‑2‑2014 | Other file system structures, working out sequential and random access times, and costs of creating and enlarging files. Linked-list file organisation is quite bad. Meta-data: what goes in a header block; considering representations for dates and times. One Level Index is good and efficient, but only has a 51,200 byte maximum file size. | ||||
Class 10 ‑ | Thur 13‑2‑2014 | Clusters, effect on file capacity, effect of secret disc geometry. 2-, 3-, 4-, etc level indexes, analysing access times. The unix I-node way, variable level indexes, even zero is useful. Bad FAT-16. | ||||
Class 11 ‑ | Tue 18‑2‑2014 | Managing free space on discs: Bitmaps are terrible, Linked lists are terrible. One
giant empty file is a good reuse of programmer resources. List of block numbers
accessed like a stack with moving window copied into memory works well. Make it
a circular queue with a window at each end and decovering accidentally deleted
files is possible. The rest of the story of the I-node, recovery when things go wrong. | ||||
Class 12 ‑ | Thur 20‑2‑2014 | BCPL documentation. | ||||
Class 13 ‑ | Tue 25‑2‑2014 | What primitive arrays are really like. Why you must never let a pointer to a local variable, array, or object escape. newvec, freevec, and data structures. | ||||
Class 14 ‑ | Thur 27‑2‑2014 | samples, in preparation for file system construction. | ||||
Class 15 ‑ | Tue 4‑3‑2014 | Dynamic (heap) memory management systems. | ||||
Class 16 ‑ | Thur 6‑3‑2014 | More advanced dynamic memory management methods. Various kinds of memory: Mercury, again, Nickel, Ferrite one, two, three, four, five, six, seven. | ||||
Break | ||||||
Class 17 ‑ | Tue 18‑3‑2014 | primitive memory segmentation. Four segments was a popular plan. Paged Virtual Memory, each 4K page of memory individually translated to its own physical page. Swapping pages out to disc when memory is tight, individual page protection settings, no fragmentation, but associative memory is too expensive. | ||||
Class 18 ‑ | Thur 20‑3‑2014 | Fixes for second assembly language assignment due Sunday. A little program that will be used to experiment with vm. 1: turn VM on, but make address translation have no effect. 2: just add one "unnatural" extra stack page, | ||||
Class 19 ‑ | Tue 25‑3‑2014 | 3: Really examining the memory map, and working out
how to handle a page fault. How unix processes are created. | ||||
Class 20 ‑ | Thur 27‑3‑2014 | All about fork, creating processes, and the life cycle of a process. Process states, paging out, swapping out, killing zombies, COWs. | ||||
Class 21 ‑ | Tue 1‑4‑2014 | Cache basics: lines, partial associative addressing. TLB, how cache makes virtual memory
efficient, the dirty bit, the accessed bit. Locality of access increases cache hits
(matrix example). The fork bomb. Copying /bin/sh and the setuid bit. Buffer overrun worms. | ||||
Class 22 ‑ | Thur 3‑4‑2014 |
4: We realised that there is also a system frame pointer. 5: Now we're in user mode, HALT is restricted. 6: Perfect for one page of stack. Now we need a page fault handler. 7: An attempt. Oh no, page table entries are all physical addresses. 8: That did the trick. and our first thoughts on inter-process communications. Shared memory causes troubles. | ||||
Class 23 ‑ | Tue 8‑4‑2014 | The exact nature of the race condition, critical sections, atomic operations, the basic semaphore (now usually called a mutex), a selection of interlocked instructions (atomic test and set) that are used to implement semaphores. The mostly pointless derivative counting semaphores. Card readers and line printers, Deadlock. | ||||
Class 24 ‑ | Thur 10‑4‑2014 | The dining philosophers as a model of sharing resources within an operating system. Only with complete knowledge of the software can deadlock sometimes be predicted. Butler, Footman, Forkboy, Fork Monster, Murderer, T.A., off-line processing. | ||||
Class 25 ‑ | Tue 15‑4‑2014 |
Monitors little, big. Java's synchroniZed. Coroutines. Threads, a basic pthreads example. | ||||
Class 26 ‑ | Thur 17‑4‑2014 | Tiny little low-power processors: graphics transformations and sorting networks. Linking: static (the files we explored - mylib.b and useit.b) and dynamic (dlls, etc). | ||||
Class 27 ‑ | Tue 22‑4‑2014 | Latest possible submission date for anything already due. Making multi-processing work. | ||||
Class 28 ‑ | Thur 24‑4‑2014 | More about multiprocessing, and 15 minutes on ReiserFS, the file system muderers prefer. Here are all the source files in .zip format. Read "readme.txt" before trying to do anything. My scripts use CC and cc for compiling, your system may use g++ and gcc or something else, and if "." isn't in your path, you'll need "./" in front of some commands. |