|
COMP3300 Operating Systems resources |
Updated on |
|||
Watch this page for more links. Assignment-specific content will be updated when assignments are published.
Most will be free; you can access the ACM digital library from campus computers. The IEEE digital library can be accessed via the university library pages. If you want to develop yourself long-term as a professional, consider joining the ACM or IEEE. (Would you go to a doctor who had not looked at any published research since graduating? Then again, leeches are coming back after a century or so in limbo )
Specifically to threads, here are some resources.
IEEE Std 1003.1-2001 <http://www.unix-systems.org/version3/ieee_std.html> (POSIX)
Open Source POSIX Threads for Win32 <http://sources.redhat.com/pthreads-win32/>
For paging, here is some extra reading which may lead to Assignment 2.
B. Jacob, and T. Mudge. Virtual memory in contemporary microprocessors. IEEE Micro, vol. 18, no. 4 July/August 1998, pp. 6075.. PDF at <http://www.eecs.umich.edu/~tnm/papers/vm-hardware.pdf> a useful summary of the way paging etc. are implemented on popular real systems.
The IBM RS/6000 (predecessor of PowerPC and POWER RISC architectures) version of inverted page table is an interesting example <http://www.cs.nmsu.edu/~pfeiffer/classes/473/notes/ipt.html>
For a research project using virtual memory, see the RAMpage project at <http://www.itee.uq.edu.au/~philip/Research/Architecture/rampage.html>.
In Chapter 8, graphs are used to represent potential deadlock situations. You need not understand much more than basic notation, but for those who want to know more, here is a site with common terminology:
Chris Caldwell. Graph Theory Glossary, 1995, <http://www.utm.edu/departments/math/graph/glossary.html>
Here is some further reading on synchronization (Chapter 7), in case you want to delve into some of the research behind the material in the course:
J. Anderson. Lamport on mutual exclusion: 27 years of planting seeds, Proc. 20th ACM Symposium on Principles of Distributed Computing, Newport, RI, August 2001 pp 312, <http://www.cs.unc.edu/~anderson/papers/lamport.pdf>
To extend the material in the book (Chapter 6, which is a bit thin), here is more on processes and threads on specific operating systems, as well as some more up to date simulation concepts:
Soft realtime on Linux:
Mansoor Alicherry and K Gopinath. Predictable Management of System Resources for Linux, Proceedings of the FREENIX Track: 2001 USENIX Annual Technical Conference, June 25-30, 2001, Boston, MA <http://www.usenix.org/events/usenix01/freenix01/full_papers/alicherry/alicherry_html/>
A fair share scheduler is an interesting variation, which ensures that all processes get a fair go at the CPU. Although an old idea, its still interesting. Do a google <http://www.google.com/> search to see if its still in use:
J. Kay and P. Lauder. A fair share scheduler, Communications of the ACM, vol. 31 no. 1 January 1988, pp 4455. <http://doi.acm.org/10.1145/35043.35047>
Full-system simulation is a growing trend in Computer Architecture research, and simulations are now available which are detailed enough and fast enough to boot a whole operating system. While not originally designed for OS research, they would be good tools e.g. to investigate alternative scheduling strategies. Examples:
m5 is a relatively new project at University of Michigan which can either run standalone programs or boot a complete system. It was designed initially around the Alpha instruction set, but comes with an instruction set description language to allow other instruction sets to be implemented
SimOS (free but boots proprietar OSes) simulates a Silicon Graphics system, and boots a full version of Irix 5.3; there are other versions including one simulating an Alpha processor running the Tru64 version of UNIX
Simics (commercial but free academic individual license) simulates a variety of architectures and can boot a range of operating systems, with tools to inspect the result of simulated execution at various levels of detail
ML-RSIM (free) is a fairly complete SPARC simulator (some details are fudged), which boots its own version of NetBSD (with some details simplified to match the fudged details of the simulator)
The Linux Documentation Project, <http://www.tldp.org/guides.html>, also at <http://www.ibiblio.org/mdw/guides.html> of which:
Sven Goldt, Sven van der Meer, Scott Burkett and Matt Welsh. The Linux Programmer's Guide Version 0.4, March 1995, <http://www.tldp.org/LDP/lpg/>
Tigran Aivazian. Linux Kernel 2.4 Internals, 7 August 2002 <http://www.tldp.org/LDP/lki/index.html>
will be most useful. (It mostly seems OK but some things are dated: let me know if you find a more recent alternative.)
To navigate the source of an operating system, try LXR Cross Referencer at <http://lxr.linux.no/>, in the process of moving to <http://sourceforge.net/projects/lxr>
For more on where free software comes from, <http://www.gnu.org/> explains the GNU (GNU is Not UNIX) project. Free in this sense equates with liberty, not free as in free beer. The Free Software Foundations web site <http://www.fsf.org/> resolves to the same address. Documentation which could be of relevance to this course can be found at
For programming aspects of the course, some of you may find these notes I wrote in 1994 useful, but you will need to check them against a more recent C++ reference:
If you want to use the emacs editor, here is a useful tutorial to get you started quickly.
If there is enough interest, I may update this, though the C++ part is the most in need of updating and not relevant to this course. Here, in the meantime, is some notes on learning C from Java:
<http://www.comp.lancs.ac.uk/computing/users/ss/java2c/diffs.html>
If you want a copy of the latest ANSI C standard, you can buy one directly from ANSI in the US (but this is a fairly technical document, aimed at language lawyers). Let me know if you find out how to pick it up, because I haven't had time to navigate the ANSI site (the latest standard is C99). Here are some alternative sites for other information on the current language standard, and answers to some of those pesky questions like why an extra "&" fixes a bug (or causes one):
comp.lang.c Frequently Asked Questions <http://www.eskimo.com/~scs/C-faq/top.html>
Commentary on the language standard: Rationale for American National Standard for Information Systems - Programming Language - C (addendum to American National Standard X3.159-1989) <http://www.lysator.liu.se/c/rat/>
Heres some history. Strangely, lessons from past generations of technology tend to be forgotten. Expect some of these ideas to come back in a new form:
- earliest layered OS: Dijkstras THE
E. W. Dijkstra. The structure of the THE-multiprogramming system, Communications of the ACM, vol. 11 no. 5, May 1968, pp 341346specific systems
- IBM operating system history
- unofficial
- official (PDF; HTML via google.com)
- UNIX history
- Macintosh OS history
- Intel Processor Architecture (mainly interesting for explaining how he protection architecture works)
memory history pages (based on a talk I gave in 1996)
Why is studying history important? Because anticipating when some old idea is worth resurrecting gives you a hige competitive advantage. Not only can you be first with the cool new idea, but you can base it on long-established experience from the past which everyone else has forgotten.
See my architecture research pages for a few ideas inspired by looking at past practice.
Another example: Magnetoresistive Random Access Memory (MRAM) has some properties in common with magnetic core memory; heres a paper which needs a bit of EE (specifically, magnetics) background to understand:
- James M. Daughton, Advanced Magnetoresistive Random Access Memory (MRAM), February 7, 2001, http://www.nve.com/otherbiz/mram2.pdf
In the field of embedded an mobile devices, many of the tricks which applied to early systems where memory was tight are coming back. For example, microkernels with very small memory footprints a big idea in the 1980s could come back (e.g., see the L4 project).
For the curious, here are some thoughts on how learning takes place. See if you can recognize yourself in one of the two categories.
