Announcements
- Textbooks:
are available at the
UM Bookstore
- Computer Access:
- We will be working in various modes. I recommend strongly that
you have your own computer to work on. We will install Virtual Box and work on virtual
machines hosted by Virtual Box.
- We will also explore cloud computing thanks to a
generous grant from Amazon, under there
AWS for Education program.
- If you do not have a computer of sufficient power to work comfortably with
Virtual Box, please we will discuss options.
- Modus Operandi:
- In this course we will write essays, enter into classroom
discussion and do a lot of
Hacking.
- For a syllabus, or near equivalent, see last
year's offering of the course, or the many previous year's
offerings.
- The "lab instructor" is Daniel Abrams, d.abrams2 _at_ umiami.edu.
He is available to help with any topic in the course, but most likely
you will seek his aid for the practical problems that arise with Linux,
and with your C language problems. We are arranging lab times.
- New media:
- There is a CSC521 topic on my blog.
- You follow twitter.com/cs521. I
will keep it super-low traffic for the courtesy of those who want to enable SMS.
- Thanks to Amazon for a grant under their AWS
for Education program, to explore cloud computing, and integrate cloud computing
concepts into the course.
Class notes
- Introduction
- Kernels
- Processes
- General remarks:
- Scheduling, context switch.
- Other dispatched entities:
- Interrupts and exceptions
- APC/DPC, (Windows)
- Tasklets, Work queues (Linux)
- System class (Solaris)
- Soft interrupts (FreeBSD)
- Work loops (OS X)
- Priority inversion, priority boosting
- Synchronization
- Signals, time and timers.
- Memory
- Introduction
- Swap space, swapping, physical memory structures
- Memory management
- VAT, virtual address allocations.
- Buddy System
- Slab
- heap storage, e.g. malloc
- References
- Linking and loading
- Class notes
- Linking and loading by John Levine
- GOT and PLT
- Relocation, Position Independent Code
- Snapping.
- Well Known DLL's, DLL Hell
- Classic SO's in unix
- ELF and Dwarf.
- Linking and loading tools on all platforms
- Disk technology
- File systems
- Properties and varieties
- Nameing, folders, case sensitive, embedded semantics in names.
- Sharing and locking (op-locks in CIFS)
- streams, resource fork (internal structures)
- Types (resource, extensions, magic numbers)
- ownership and protections
- Stream, block, special file systems such as /dev, /proc and /tmp
- remote file services
- mounting, non-mounting
- Features: ACL's, Journals, roll-backs and snapshots
- Fragments, extents, disk performance, I/O block schedulers
- Examples:
- Journaling file systems
- Log-structured file systems
- Unix and NT Protections
Assignments
- Assignment 1:
- Read:
- Install Virtual Box. Install Ubuntu Linux in a Virtual Box image.
- During the browser wars, Microsoft allegedly attempted to use its dominance in
operating systems to achieve dominance on the web by tieing its web browser to
its operating system. It argued that Internet Explorer was part of the operating
system, and therefore other browsers could not be used. Opponents sued for
monoplistic practices, etc. etc. etc. complex legal arguments, but that
technically speaking the browser is not part of the operating system. Write
three 5 paragraph essays:
- defending the notion that the browser is not part of the operating system;
- defending the notion that the browser is part of the operating system;
- defending the notion that the browser is itself an operating system.
- Due: Wednesday, September 8.
- Assignment 1-a:
- Read chapter 3 from Love.
- Rebuild the kernel of the operating system you installed in Assignment 1.
- Here are some notes on my
experience of this build.
- Next insert the line printk(KERN_DEBUG "setpriority: entered"); at
a reasonable place in kernel/sys.c and rebuild the kernel and reboot
to verify operation of your first kernel patch.
- Due: Wednesday, September 15.
- Assignment 2:
- Read chapters 4 and 5 from Love.
- Read chapters 1, 2 and 5 from the Windows NT book (chapter numbers
refer to 5-th edition).
- Read chapters 1-4 in the FreeBSD book. (chapter numbers refer
to the FreeBSD 5.2 edition).
- Implement a new system call "notnice", same as nice but it lets
you raise your priority, as well of lower it. (Hint: steal code.)
- Due: Wednesday, September 29.
- Late Due: Wednesday, October 6.
- Very Late Due: before finals.
- Assignment 3:
- Read through chapter "Timers and time management" in Love.
- Read appropriate chapters in the Windows NT and FreeBSD books.
- Read Monitors
on Wikipedia, and the handout given in class, from Silberschatz, Galvin and Gagne.
- Implement a monitor in the Linux kernel. We will implement the Java-like
version, a.k.a. "implicit condition monitors" in the language of the Wikipedia
article.
- Some sample code and remarks are posted
HERE.
- Due: Friday, October
22 27.
- Assignment 3-a:
- Assignment 4:
- Read Love, chapters on Virtual File System and Block I/O.
- Read the FAT specifications: FAT
Functional Specs
- Read about FUSE:
- Fuse on sourceforge.
- IBM
Article concerning FUSE. Warning: all documentation about FUSE is wrong.
- FUSE
documentation from another source. Possibly no worse than any other source of misinformation.
- cc -I/usr/local/include/fuse -D_FILE_OFFSET_BITS=64 -L/usr/local/lib -lfuse
hello.c
- /sbin/ldconfig -v <===== very importnat!!!!
- Note: on debian, man pages for gcc are non-free; include non-free in
/etc/apt/sources.list
- Implement FAT-32 on FUSE.
- Due: Wednesday December 1.
- Assignment 5:
- Final project!
- Finish reading the Love book.
- Install a Wordpress blog on and Amazon EC2 image.
- See the detailed instructions.
References
- Optional reading: Understanding the Linux Kernel, Bovet and Cesati.
- Inside the Mac OS X Chaos club
- Linux Boot
- Operating
Systems (wikipedia)
- Improvements
from Linux 2.4 to 2.6, at IBM Developerworks.
- LinuxChix:
hacking for grrls (sic).
- VBoxManage manual
- GDB manual
- Historical Perspective
- Operating system design philosopies and software engineering
- Schedulers
- Linking and loading
- Virtual Memory
- File systems
- EXT3, Journaling Filesystem by Dr. S. Tweedie
- ext3 Journaling File Sytems (ppt) Chadd Williams
- Linux NTFS
- FAT 16, visually, clark@hushmail
- Journaling the Linux ext2fs Filesystem, Stephen Tweedie
- How NTFS Works Microsoft Technet.
- Implementing CIFS by
Christopher Hertel
- CIFS by
Paul Leach and Dan Perry at MSDN.
- draft-leach-cifs-v1-spec-01.txt by Paul Leach. The standard before the Samba people reversed engineered it.
- Op Locks in SMB from MSDN.
- Common Internet File Systems Technical Reference from Storage
Networking Industry Association.
- Understanding NFS Michael Lucas at O'Reilly books.
- 8.3 Filename, and LFN to SFN algorithm, and directory layout (as of 15 Oct 08) Wikipedia.
- Design and Implementation of the Sun Network Filesystem, Sandberg et at.
- Use of NFS Considered Harmful, Shane Kerr.
- FreeBSD fs technologies:
softupdates, snapshots, and comparision to logging.
- Protection
- Graphical systems