home *** CD-ROM | disk | FTP | other *** search
/ ftp.pasteur.org/FAQ/ / ftp-pasteur-org-FAQ.zip / FAQ / os-research / part1 next >
Encoding:
Internet Message Format  |  1997-11-01  |  51.2 KB

  1. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news-out.internetmci.com!newsfeed.internetmci.com!164.67.42.145!awabi.library.ucla.edu!128.32.155.1!agate!news.ucsc.edu!osr
  2. From: bos@serpentine.com (Bryan O'Sullivan)
  3. Newsgroups: comp.os.research,comp.answers,news.answers
  4. Subject: Comp.os.research: Frequently answered questions [1/3: l/m 13 Aug 1996]
  5. Followup-To: poster
  6. Date: 1 Nov 1997 10:00:12 GMT
  7. Organization: Polymorphous Thaumaturgy
  8. Lines: 1085
  9. Approved: comp-os-research@cse.ucsc.edu, news-answers-request@mit.edu
  10. Message-ID: <63eujc$iq@darkstar.ucsc.edu>
  11. Reply-To: os-faq@cse.ucsc.edu
  12. NNTP-Posting-Host: ftp.cse.ucsc.edu
  13. Summary: frequent topics of discussion on the operating systems research group
  14. Originator: osr@cse.ucsc.edu
  15. Xref: senator-bedfellow.mit.edu comp.os.research:6839 comp.answers:28750 news.answers:115888
  16.  
  17. Archive-name: os-research/part1
  18. Version: $Revision: 1.19 $
  19. Posting-Frequency: monthly
  20. Last-Modified: Tue Aug 13 21:03:39 1996
  21. URL: http://www.serpentine.com/~bos/os-faq/
  22.  
  23.         Answers to frequently asked questions
  24.           for comp.os.research: part 1 of 3
  25.  
  26.                Copyright (C) 1993--1996
  27.                Bryan O'Sullivan
  28.  
  29.  
  30.  
  31.               TABLE OF CONTENTS
  32.  
  33.  
  34. 1.     Introduction
  35. 1.1.   How to read this article
  36. 1.2.   Reader contributions and comments
  37. 1.3.   Acknowledgments and caveats
  38.  
  39. 2.     Recurrent discussions
  40. 2.1.   Microkernels, macrokernels, and the in-betweenies
  41. 2.2.   Threads
  42. 2.2.1. Distinguishing features
  43. 2.2.2. Characterising implementations of multithreading
  44. 2.2.3. The history of threads
  45.  
  46. 3.     File systems
  47. 3.1.   Extent-based versus log-structured file systems
  48.  
  49. 4.     Mobile and disconnected computing
  50. 4.1.   Constraints on software
  51. 4.2.   Communications protocols
  52. 4.3.   Access to files
  53. 4.4.   Power management
  54. 4.5.   Other issues
  55. 4.6.   An introductory mobile computing bibliography
  56.  
  57. 5.     Operating systems teaching
  58. 5.1.   What good undergraduate-level texts are available?
  59. 5.2.   Graduate-level texts
  60. 5.3.   Do any texts cover the implementation of specific operating systems?
  61. 5.4.   What instructional operating systems can I use?
  62. 5.5.   Where can I find the canonical list of OS papers for grad courses?
  63.  
  64.  
  65.  
  66. ------------------------------
  67. Subject: [1] Introduction
  68. From: Introduction
  69.  
  70. This posting consists of answers to many of the questions most
  71. frequently asked and summaries of the topics most frequently covered
  72. on comp.os.research, the Usenet operating systems research discussion
  73. group.  The purpose of this posting is to circulate existing
  74. information, and to avoid rehashing old topics of discussion and
  75. questions.  Please read all parts of this document before posting to
  76. this newsgroup.
  77.  
  78. This newsgroup is moderated; the moderator is Darrell Long
  79. <darrell@cse.ucsc.edu>.  A companion posting to the FAQs, `Welcome
  80. to comp.os.research', briefly covers the moderation policy and
  81. guidelines for posting to comp.os.research.  It can be found in either
  82. comp.os.research or news.answers, and is posted regularly.
  83.  
  84. Due to its size, the FAQ is split up into three parts; each is posted
  85. once a month.  The welcome posting is posted fortnightly.  The FAQ is
  86. also available in hypertext form on the World-Wide Web, at
  87. <URL:http://www.serpentine.com/~bos/os-faq>.  You may prefer to browse
  88. the FAQ on the Web rather than on Usenet, as it contains many useful
  89. hyperlinks.
  90.  
  91. Note: chunks of text of the form [92-02-12-21-20.29] indicate the
  92. original posting from which a section of this article was inspired,
  93. snarfed, or just plain copied wholesale.  The FAQ as available on the
  94. Web has hyperlinks to the relevant articles.  Other chunks in square
  95. brackets are comments and reminders to myself.  These latter sections
  96. of text will be removed as appropriate material is added, but the
  97. attributions will remain.
  98.  
  99. ------------------------------
  100. Subject: [1.1] How to read this article
  101. From: Introduction
  102.  
  103. This article is posted in digest format; using the `G%' command from
  104. within the `nn' newsreader should split it up into separate
  105. sub-articles which you can browse through.
  106.  
  107. To skip to a particular question numbered n.m, use `/: \[n\.m\]' from
  108. most pagers.  From within GNU Emacs, you can use `C-s [n.m]'.  This
  109. article is treated as an outline when edited by GNU Emacs.
  110.  
  111. ------------------------------
  112. Subject: [1.2] Reader contributions and comments
  113. From: Introduction
  114.  
  115. Your contributions, comments, and corrections are welcomed; mail sent
  116. to <os-faq@cse.ucsc.edu> will be dealt with as quickly as I can
  117. manage.  Generally, performing a reply or followup to this article
  118. from within your newsreader should do the Right Thing.
  119.  
  120. While I am more than happy to include submissions of material for the
  121. FAQ if they seem appropriate, it would make my life a lot easier if
  122. such text were proof-read in advance, and kept concise.  I don't have
  123. as much time as I would like to digest 15K text files and summarise
  124. them in three paragraphs for inclusion here.  If you are interested in
  125. contributing material, please see the to-do list at the end of part 3
  126. of the FAQ.
  127.  
  128. ------------------------------
  129. Subject: [1.3] Acknowledgments and caveats
  130. From: Introduction
  131.  
  132. Although this FAQ has been the result of a co-operative effort, any
  133. blame for inaccuracies and errors lies entirely with my edits.  I
  134. would like to thank the following people for their part in
  135. contributing to this article:
  136.  
  137. Arindam Banerji        <axb@cse.nd.edu>
  138. Surendar Chandra    <surendar@cs.duke.edu>
  139. Steve Chapin        <sjc@cs.purdue.edu>
  140. Crispin Cowan        <crispin@csd.uwo.ca>
  141. Dan Hildebrand        <danh@qnx.com>
  142. Gordon Irlam        <gordoni@home.base.com>
  143. Alan Judge        <amjudge@dsg.cs.tcd.ie>
  144. Darrell Long        <darrell@cse.ucsc.edu>
  145. Chris Maeda        <cmaeda@cs.washington.edu>
  146. Peter Magnusson        <psm@sics.se>
  147. Craig Partridge        <craig@bbn.com>
  148. Tom Van Vleck        <tom_van_vleck@taligent.com>
  149. Robert Walsh        <rjwalsh@maths.tcd.ie>
  150.  
  151. ------------------------------
  152. Subject: [2] Recurrent discussions
  153. From: Recurrent discussions
  154.  
  155. A number of topics tend to appear with regularity in comp.os.research.
  156. This section attempts to go over some of the most commonly-covered
  157. ground.  I haven't made the list of topics covered exhaustive by any
  158. means.
  159.  
  160. ------------------------------
  161. Subject: [2.1] Microkernels, macrokernels, and the in-betweenies
  162. From: Recurrent discussions
  163.  
  164. A recurrent topic of discussion in this newsgroup has been the
  165. comparison between microkernel (for example Mach and QNX) and
  166. `macrokernel' (traditional Unix) operating systems.  The basic notion
  167. of a microkernel consists of devolving as much functionality as
  168. possible into processes rather than the kernel itself; different
  169. systems take different approaches to implementing this.
  170.  
  171. For example, some systems (such as Mach) leave device drivers in the
  172. kernel, and place higher-level services (such as file systems)
  173. outside; others (such as QNX) move device drivers outside of the
  174. kernel.
  175.  
  176. However, anecdotal evidence [93-03-03-07-56.52] suggests that the
  177. distinction between microkernel and monolithic architectures is
  178. becoming more blurred as time goes on, as the two advance.  For
  179. example, most modern monolithic kernels now implement multiple threads
  180. of execution and fine-grained parallelism.  Architecturally, this
  181. approach begins to appear similar to a microkernel with several
  182. kernel-space processes working from shared memory.
  183.  
  184. As an aside, people often complain that the Mach system can't be a
  185. `real' microkernel, because it is so large (at least, this is the
  186. argument most frequently cited).  However, I have been told that
  187. automatically-generated code stubs contribute very significantly to
  188. the size of the kernel, and that some size reduction would be likely
  189. if MIG (the stub generator) produced better code.  [Can someone from
  190. CMU comment on this?]  As mentioned above, the leaving of device
  191. drivers in the kernel also contributes to Mach's size.
  192.  
  193. Debating microkernels versus monolithic kernels on the basis of kernel
  194. size misses the central, architectural point.  In the same way as the
  195. point of a RISC processor is not to minimise the instruction count,
  196. but rather to make a different tradeoff between what is implemented
  197. in the processor instruction set and what is implemented in other
  198. ways, the microkernel architectural issue is to determine which
  199. services are implemented in the microkernel, and which services are
  200. implemented external to that microkernel.  By making appropriate
  201. choices here, the goal is to enhance various OS attributes in a manner
  202. that might not be addressable with a monolithic kernel OS.  System
  203. attributes such as performance, flexibility, realtime, etc. are all
  204. variables which are taken into account.
  205.  
  206. Some history:
  207.  
  208. Ira Goldstein and Paul Dale were the coiners of the term `microkernel'
  209. back around 1989.
  210.  
  211. ------------------------------
  212. Subject: [2.2] Threads
  213. From: Recurrent discussions
  214.  
  215. The exact meaning of the term `thread' is not generally agreed upon.
  216. One of the more common usages denotes a `lightweight' process
  217. (sequential flow of control) which shares an address space and some
  218. other resources with others, and for which context switching time is
  219. lower than for `heavyweight' (i.e. kernel-supported) processes.
  220.  
  221. Throughout the following material, when we refer to `processes', this
  222. can be taken as meaning heavyweight processes.
  223.  
  224. ------------------------------
  225. Subject: [2.2.1] Distinguishing features
  226. From: Recurrent discussions
  227.  
  228. Some of the features which distinguish different approaches to
  229. threading are listed below:
  230.  
  231. - Number of *concurrent* flows of control: generally, threads may
  232.   potentially make use of multiple processors in order to allow
  233.   several to execute concurrently.  That is, the model usually takes
  234.   into consideration the possibility that there may be more than one
  235.   flow of control active at any time.
  236.  
  237. - Scheduling policy: a thread scheduler may be pre-emptive, in which
  238.   case a thread is put to sleep either when it waits upon some
  239.   resource or runs for the full duration of its time quantum, or
  240.   non-pre-emptive, in which case individual threads continue to run
  241.   until they relinquish the processor themselves (either through
  242.   waiting on a resource or calling the analogue of a sleep()
  243.   function).
  244.  
  245. Systems which are non-pre-emptive and may only ever have a single
  246. active flow of control (regardless of the number of processors
  247. available) are referred to as coroutine systems.  Coroutine
  248. programming requires quite a different approach from threads-based
  249. programming, as many of the synchronisation and resource-sharing
  250. problems which occur in threaded environments need never trouble the
  251. coroutines programmer.
  252.  
  253. ------------------------------
  254. Subject: [2.2.2] Characterising implementations of multithreading
  255. From: Recurrent discussions
  256.  
  257. An important distinction may be made between user-level threads and
  258. kernel-supported threads.  A user-level thread maintains all its state
  259. in user space.  A consequence of this is that no kernel resources need
  260. to be allocated per thread, and switching between threads can be done
  261. without changing address space.  A disadvantage is that user level
  262. threads cannot execute while the kernel is busy, for instance, with
  263. paging or I/O.  This would require some knowledge and participation on
  264. the part of the kernel.
  265.  
  266. It is possible to combine both methods, as is done in SunOS 5.x (aka
  267. Solaris 2.x).  Here, one or more light weight processes (LWPs)
  268. multitask one or more user-level threads, which in turn are
  269. implemented using user-space libraries.
  270.  
  271. Some issues which characterise thread implementations, and which
  272. determine the uses to which a threads package may be put, include:
  273.  
  274. - How much by way of kernel resources does a thread require?  This
  275.   will typically limit the number of threads that can be started by a
  276.   process.
  277.  
  278. - Under what circumstances will the entire process hang?  For
  279.   instance, if some thread gets a page fault, may another thread in
  280.   that process be dispatched?
  281.  
  282. - Does switching threads require a full system call (as on the SPARC),
  283.   or may context switches between threads be performed entirely at
  284.   user level?
  285.  
  286. - How are signals handled?  Can signals be masked individually per
  287.   thread?  Is there a `broadcast' signal?
  288.  
  289. - How are stacks handled?  Will the stacks shrink/grow dynamically on
  290.   a per thread basis?
  291.  
  292. Several systems today (QNX and Plan 9, for instance) take the stance
  293. that threads `fix the symptom, but not the problem'.  Rather than
  294. using threads because the OS context switch time is too slow, a better
  295. approach, according to the architects of these systems, is to fix the
  296. OS.  It's ironic, now that even PC-hosted desktop OSes provide
  297. MMU-protected multitasking, the fashionable programming model has
  298. become multiple threads running in a common address space, making
  299. debugging difficult, and also making it more difficult to generate
  300. reliable code.  With fast context switching, existing OS services like
  301. explicitly allocated shared memory between a team of cooperating
  302. processes can create a `threaded' environment, without opening the
  303. Pandora's box of problems that a fully shared memory space entails.
  304.  
  305. ------------------------------
  306. Subject: [2.2.3] The history of threads
  307. From: Recurrent discussions
  308.  
  309. [93-04-21-13-32.11] [92-01-27-17-05.54] The notion of a thread, as a
  310. sequential flow of control, dates back to 1965, at least, with the
  311. Berkeley Timesharing System.  Only they weren't called threads at that
  312. time, but processes [Dijkstra, 65].  Processes interacted through
  313. shared variables, semaphores, and similar means.  Max Smith did a
  314. prototype threads implementation on Multics around 1970; it used
  315. multiple stacks in a single heavyweight process to support background
  316. compilations.
  317.  
  318. Perhaps the most important progenitor of threads is the programming
  319. language PL/I, from about the 1965 time frame.  The language as
  320. defined by IBM provided a `CALL XXX (A, B) TASK;' construct, which
  321. forked a thread for XXX.  It is not clear whether any IBM compiler
  322. ever implemented this feature, but it was examined closely while
  323. Multics was being designed; it was decided that the TASK call as
  324. defined didn't map onto processes, since there was no protection
  325. between the threads of control.  So Multics took a different
  326. direction, and the TASK feature was removed from PL/I by IBM in any
  327. case, along with the ABNORMAL attribute and lots of other weird stuff.
  328.  
  329. Then came Unix, in the early 1970s.  The Unix notion of a `process'
  330. became a sequential thread of control *plus* a virtual address space
  331. (incidentally, the Unix notion of a process derived directly from the
  332. Multics process design [Saltzer, 66]).  So `processes', in the Unix
  333. sense, are quite heavyweight machines.  Since they cannot share memory
  334. (each has its own address space), they interact through pipes,
  335. signals, etc).  Shared memory (also a rather ponderous mechanism) was
  336. added much later.
  337.  
  338. After some time, Unix users started to miss the old processes that
  339. could share memory.  This led to the `invention' of threads: old-style
  340. processes that shared the address space of a single Unix process.
  341. They also were called `lightweight', by way of contrast with
  342. `heavyweight' Unix processes.  This distinction dates back to the very
  343. late 70s or early 80s, i.e. to the first `microkernels' (Thoth
  344. (precursor of the V-kernel and QNX), Amoeba, Chorus, the
  345. RIG-Accent-Mach family, etc).
  346.  
  347. On a side note, threads have been in continuous use in
  348. telecommunications applications for quite a long time.
  349.  
  350. See also:
  351.  
  352. [Cheriton, 79]
  353.   Cheriton, D. R., `Multi-process structuring and the Thoth operating
  354.     system', Ph.D. Thesis, University of Waterloo, 1979.
  355.  
  356. [Daley & Dennis, 68]
  357.   Daley, R. C., Dennis, J. B., `Virtual memory, processes, and
  358.     sharing in Multics', Comm, ACM 11, 306-312, May 1968.
  359.  
  360. [Dennis & van Horn, 66]
  361.   Dennis, J. B., van Horn, E. C., `Programming semantics for
  362.     multiprogrammed computations', MAC-TR-21, 1966.
  363.  
  364. [Dijkstra, 65]
  365.   Dijkstra, E. W., `Cooperating sequential processes', in `Programming
  366.     Languages', Genuys, F. (ed.), Academic Press, 1965.
  367.  
  368. [Saltzer, 66]
  369.   Saltzer, J. H., `Traffic control in a multiplexed computer system',
  370.     MAC-TR-30 (Sc.D. Thesis), July, 1966.
  371.  
  372.  
  373. ------------------------------
  374. Subject: [3] File systems
  375. From: File systems
  376.  
  377. This field is discussed both here and in the comp.arch.storage
  378. newsgroup.  This section needs fleshing out at the moment; it will
  379. grow over time (hopefully!).
  380.  
  381. ------------------------------
  382. Subject: [3.1] Extent-based versus log-structured file systems
  383. From: File systems
  384.  
  385. [92-11-18-10-57.53] [92-11-22-10-16.26] A general definition for a
  386. log-structured storage system might be the following: logging is an
  387. append-only storage semantics.  The unit of logging is the record.
  388. Write accesses append records to the end of the log.  A log record may
  389. become obsolete.  Useless records are compacted out of the log when
  390. possible.  Other write accesses are forbidden.
  391.  
  392. An extent-based file system is another candicate for better filesystem
  393. performance.  The approach used under QNX, for example, is to have
  394. files exist as an array of extents on disk, where each is extent is as
  395. many contiguous blocks as could be allocated at that location.  By
  396. using a bitmap for space allocation, files can also grow `in-place',
  397. if adjacent free space on disk exists.  This approach allows the unit
  398. of disk space allocation to remain 512 bytes, which is also the
  399. smallest unit of physical I/O.  The potential performance bottleneck
  400. of this approach does not happen because the filesystem code passes
  401. I/O requests to the disk drivers in units of extents, not 512 byte
  402. blocks.  The filesystem also heuristically modifies the size of the
  403. pre-read requests based on the historical access pattern to the
  404. file.  This approach provides the performance advantages of larger
  405. physical disk block sizes, without the wasted disk space that results
  406. from unused portions of large blocks, or the complexity of trying to
  407. allocate space from partially unused blocks.
  408.  
  409.  
  410. ------------------------------
  411. Subject: [4] Mobile and disconnected computing
  412. From: Mobile and disconnected computing
  413.  
  414. The subject of operating systems for mobile and
  415. frequently-disconnected computers has become a recurrent topic in this
  416. newsgroup.  This section attempts to give an overview of issues in
  417. this area.  [Text by Arindam Banerji.]
  418.  
  419. ------------------------------
  420. Subject: [4.1] Constraints on software
  421. From: Mobile and disconnected computing
  422.  
  423. System software for mobile computing is impeded by four distinct
  424. constraints:
  425.  
  426. - Compared to stationary computers, mobile computers will always be
  427.   resource poor [Satyanarayan, 93].  Although currently available PDAs
  428.   (Personal Digital Assistants) compare favourably with the
  429.   stand-alone workstations of a few years ago [Marsh, 93], they'll
  430.   most probably lag behind in compute capabilities, available power,
  431.   storage availability and communication bandwidth, for some time to
  432.   come.
  433.  
  434. - Mobility entails computation amid fluctuating resource availability
  435.   and constraints [Banerji, 93].  Communication bandwidth may be
  436.   available at discrete intervals, an available resource may suddenly
  437.   become unreachable or an otherwise in-expensive communication link
  438.   may be randomly replaced by an expensive alternate in transit.
  439.  
  440. - Security threats to both mobile computational elements as well as
  441.   the data accessed by them are greatly increased [Satyanarayan, 93].
  442.   Not only is it easier to lose, damage or be robbed of a carry-along
  443.   PDA, but it is often easier to tap into the data transferred (as is
  444.   well-known to much of the cellular communication industry).  Very
  445.   little work, except for that undertaken by the cellular
  446.   communication industry, has been done in the area of addressing the
  447.   specific security needs of mobile computing (as far as I know).
  448.  
  449. - User needs and their application requirements may not be the same as
  450.   those in stationary systems [Weiser, 91].  As mobile computers
  451.   become ubiquitous (this phrase coined by Mark Weiser), the number of
  452.   computer users will most probably increase exponentially.  Most or
  453.   many of these users will be far less computer literate than the
  454.   average computer user of today.  In addition, shopping, information
  455.   browsing and entertainment may be the typical use of such mobile
  456.   units, as opposed to traditional scientific computing, database
  457.   support or word processing.
  458.  
  459. - With the presence of PCMCIA slots in a PDA, it also becomes
  460.   necessary for an OS to be able to mount and dismount entire OS
  461.   subsystems on the fly [Hildebrand, 94].  Operating systems need to
  462.   be able to treat networking, filesystems, and other services as
  463.   facilities which may be loaded and unloaded on demand.
  464.   
  465. Based upon an amalgam of these criteria, the next few sections discuss
  466. some of the main areas of ongoing research in mobile computing.
  467.  
  468. ------------------------------
  469. Subject: [4.2] Communications protocols
  470. From: Mobile and disconnected computing
  471.  
  472. Mobile-IP [Myles & Perkins, 93] `allows packets between mobile hosts
  473. or networks and other hosts (including fixed hosts) to be delivered
  474. along close to optimal routes'.  Compatibility with existing IP
  475. implementations is one of the key problems in Mobile-IP.  For example,
  476. [Perkins et. al, 93], have suggested a scheme based upon the loose
  477. source routing option of IP packets, but most existing IP
  478. implementations do not implement this option.  Scalability is yet
  479. another important issue.
  480.  
  481. The Columbia scheme [Ioannidis et al., 91] uses IP-in-IP
  482. encapsulation, thus avoiding problems with non-conforming
  483. implementations; but it achieves only sub-optimal routing for mobility
  484. across widely distributed locations [Aziz, 94].  Some efficient
  485. implementations of IP-in-IP encapsulation capable of supporting
  486. near-optimal wide area mobile routing have been suggested [Aziz, 94],
  487. but more experimentation is required.
  488.  
  489. For resource-constrained mobile computers, hosting a full IP protocol
  490. suite may be an unacceptable resource burden.  Being able to gateway
  491. with a lightweight protocol to a network node which is hosting a
  492. `heavyweight' protocol suite is a valuable capability [Hildebrand,
  493. 94].  Lightweight protocols can also make better use of the bandwidth
  494. limitations of wireless communications.
  495.  
  496. Apart from this, architectures and implementations that handle the
  497. impact of mobility at higher layers have also been proposed -- such as
  498. the connection-oriented services discussed by Katz [Keeton et. al.,
  499. 93], and the mobile socket interface discussed by Casey [Casey, 93].
  500. Current trends would appear to suggest that some form of Mobile-IP
  501. will soon become standard, whereas connection maintenance and caching
  502. in higher-level protocols still needs to be resolved.
  503.  
  504. ------------------------------
  505. Subject: [4.3] Access to files
  506. From: Mobile and disconnected computing
  507.  
  508. File access in a mobile computing environment, where the communication
  509. link to a file server is not guaranteed, has been a major area of
  510. study.  Coda [Satyanarayan, 90], a descendant of the Andrew File
  511. system (AFS), pioneered support for disconnected operations in
  512. file-systems.  Coda increases file availability by replicating a
  513. single volume at multiple server locations.  Disconnected operations
  514. occur when the set of accessible servers for a particular volume
  515. becomes null.  Coda supports disconnected operations by pre-caching
  516. the files a user is most likely to need and then allowing all
  517. operations on cached copies of these files, while disconnected.  Upon
  518. reconnection, reintegration occurs through reconciliation of the
  519. cached copy with the now-reachable server's copy, through the use of a
  520. replay log maintained during the disconnection.
  521.  
  522. Disconnected operations have also been implemented for AFS [Huston,
  523. 93].  The highly available peer-to-peer based Ficus [Page, 91] file
  524. system achieves similar results, although mobile computing was not one
  525. its initial applications.  Caching issues are beginning to predominate
  526. the open research topics in this area.  In between connected and
  527. disconnected states, there are many states of expensive, intermittent
  528. and unreliable connections.  Adapting caching to these varying
  529. situations is a necessity.  More importantly, as introduced by the
  530. Hoarding scheme of Coda, user control over some caching behavior is
  531. extremely beneficial, and this need for user input becomes even more
  532. important when the server connection is weak.
  533.  
  534. ------------------------------
  535. Subject: [4.4] Power management
  536. From: Mobile and disconnected computing
  537.  
  538. Current battery technology limits PDA use to only a few hours.  The
  539. conservation of power through system software is thus becoming a major
  540. area of research in mobile computing.  Two specific approaches to this
  541. problem exist.
  542.  
  543. - Some researchers [Greenawalt, 93] are attempting to analyse the effects
  544.   of application type, user input and operating system implementations on
  545.   device power consumption.  Based upon simulation data, several power
  546.   consumption models have been proposed for disks [Greenawalt, 93]
  547.   [Douglis & Marsh, 93].  Work in characterising and analysing the power
  548.   consumption problem is still ongoing.
  549.  
  550. - Several industry-led efforts, on the other hand, have focussed on
  551.   building system support for dynamic power-saving mechanisms.  The
  552.   Advanced Power Management standard presents an interface and structure
  553.   for manipulating power consumption.  The Nomadic System Group at Sun
  554.   Microsystems has integrated similar support into SVR4 [Bender et. al,
  555.   93]; these facilities are also available in QNX.
  556.  
  557. Complete analysis of peripheral device power usage and experimentation
  558. with different strategies for implementing power management will certainly
  559. be useful.
  560.  
  561. ------------------------------
  562. Subject: [4.5] Other issues
  563. From: Mobile and disconnected computing
  564.  
  565. Two significant aspects of mobile computing give applications in this
  566. environment a very different flavour.
  567.  
  568. - The dynamic nature of the environment forces applications to handle
  569.   changes in the availability and allocation of software resources.
  570.   Dynamic changes to environment variables [Schilit, 93], change in
  571.   the available version of a library [Goldstein, 94] and the ability
  572.   to lookup and retrieve objects from remote locations [Theimer, 93]
  573.   are all required to solve this problem.  For the very same reasons,
  574.   user interfaces add on an extra dimension, an issue which very few
  575.   have addressed so far [Landay & Kaufmann, 93]. All this has caused
  576.   certain vendors to move towards interpreted environments, based on
  577.   scripting(??) languages as such as Script-X (Kaleida) and Open
  578.   Scripting Architecture (Apple).
  579.  
  580. - Money will be a constituent of many of the transactions and
  581.   applications that mobile computers will typically be used for.
  582.   Hence, many pieces of system software will be required to handle,
  583.   understand and optimise the use of money [Kulkarni, 94].  As
  584.   mentioned by Ed Frank at the ICDCS '93 panel discussion on mobile
  585.   computing, transaction involving `money and sex' may well become the
  586.   biggest uses of the mobile computer.  Some initial forays into
  587.   reviewing policies for pricing Internet services [Shenker, 93] may
  588.   prove to be very useful and so will the experience of current
  589.   consumer service providers such as CompuServe and America Online.
  590.   This area will perhaps show the biggest divergence in the years to
  591.   come, since applications will be far more customer-needs driven than
  592.   technology-driven, as they have been in the past.
  593.  
  594. Finally, aspects of hardware support are critical to positioning any
  595. discussion on mobile computing.  The most ambitious system is perhaps
  596. the ParcTab system [Schilit, 93] under development at Xerox PARC.  The
  597. ParcTab is a PDA that communicates via infrared data packets to a
  598. network of infrared transceivers.  The network, designed for use
  599. within a building, designates each room as a communication cell.  This
  600. infrastructure has the responsibility for providing reliable service
  601. as the ParcTab user moves from room to room.  More general purpose but
  602. less ambitious PDAs are currently available from AT&T (EO), Apple
  603. (Newton), IBM (Simon) etc.  Almost all recognise some alternate form
  604. of input, such as handwriting.  The capabilities of these PDAs are
  605. sure to increase in the coming years, and hopefully their prices will
  606. not follow a similar trend.
  607.  
  608. ------------------------------
  609. Subject: [4.6] An introductory mobile computing bibliography
  610. From: Mobile and disconnected computing
  611.  
  612. [Marsh, 93]
  613.   Marsh, B., Douglis, F. & Caceres, R., `System issues in mobile
  614.     computing', Technical Report, Matsushita Information Technology
  615.     Laboratory, ITL-TR-50-93
  616.  
  617. [Satyanarayanan, 93]
  618.   Satyanarayanan et. al, `Experience with disconnected operation in a
  619.     mobile computing environment', Proceedings of Mobile and
  620.     Location-Independent Computing Symposium, August 93, pp. 11-28
  621.  
  622. [Banerji, 93]
  623.   Banerji, A., Cohn, D. & Kulkarni, D., `Mobile computing personae',
  624.     Proceedings of Fourth Workshop on Workstation Operating Systems,
  625.     October 93, pp. 14-20
  626.  
  627. [Weiser, 91]
  628.   Weiser, M., `The computer for the 21st century', Scientific
  629.     American, September 91, pp. 94-104
  630.  
  631. [Myles & Perkins, 94]
  632.   Myles, A. & Perkins, C., Internet Draft, September, 93
  633.  
  634. [Perkins et. al, 93]
  635.   Bhagwat, P. & Perkins, C., `A mobile networking system based on IP',
  636.     Proceedings of Mobile and Location-Independent Computing
  637.     Symposium, August 93, pp. 69-82
  638.  
  639. [Ioannidis et. al, 91]
  640.   `IP based protocols for mobile internetworking', Proceedings of the
  641.     SIGCOMM-91 conference: Communications, Architectures and
  642.     Protocols, September 91, pp. 235-245
  643.  
  644. [Aziz, 94]
  645.   Aziz, A., `A scalable and efficient intra-domain tunneling mobile-IP
  646.     scheme', ACM SIGCOMM-Computer Communications Review, Vol 24.,
  647.     No. 1, January 94, pp. 12-20
  648.  
  649. [Keeton et al., 93]
  650.   Keeton, K. et al., `Providing connection oriented network services
  651.     to mobile hosts', Proceedings of Mobile and Location-Independent
  652.     Computing Symposium, August 93, pp. 83-102
  653.  
  654. [Casey, 94]
  655.   Casey, M., `Application and communication support for mobile
  656.     computing', Dissertation Proposal, University of Notre Dame,
  657.     January 94
  658.  
  659. [Satyanarayanan, 90]
  660.   Satyanarayanan, M., et al., `Coda: A highly available File-system
  661.     for a distributed workstation environment', IEEE Transactions on
  662.     Computers 39(4), April 90
  663.  
  664. [Huston, 93]
  665.   Huston, L. & Honeyman, P., `Disconnected operation for AFS',
  666.     Proceedings of Mobile and Location- Independent Computing
  667.     Symposium, August 93, pp. 1-10
  668.  
  669. [Page, 91]
  670.   Page, T. et al., `Architecture of the Ficus replicated file system',
  671.     Tech Report CSD-910005, University of California, Los Angeles,
  672.     March 91
  673.  
  674. [Greenawalt, 93]
  675.   Greenawalt, P., `Modelling power management for hard disks',
  676.     Intl. Workshop on Modelling, Analysis & Simulation of Computer and
  677.     Telecommunication Systems, January 94
  678.  
  679. [Douglis & Marsh, 93]
  680.   Douglis, F. & Marsh, B., `Low power disk management for mobile
  681.     computers', Technical Report, Matsushita Information Technology
  682.     Laboratory, MITL-TR-53-93
  683.  
  684. [Bender et. al, 93]
  685.   Nomadic Systems Group, Sun Microsystems, `UNIX for Nomads: Making
  686.     UNIX support mobile computing', Proceedings of Mobile and
  687.     Location-Independent Computing Symposium, August 93, pp. 53-68
  688.  
  689. [Schilit, 93]
  690.   Schilit, B., Theimer, M. & Welch, B., `Customizing mobile
  691.     applications', Proceedings of Mobile and Location-Independent
  692.     Computing Symposium, August 93, pp. 129-138
  693.  
  694. [Hildebrand, 94]
  695.   Hildebrand, D., `QNX: microkernel technology for open systems
  696.     handheld computing', Proceedings of Pen and Portable Computing
  697.     Conference Exposition, May 1994.  Available via ftp from
  698.     <URL:ftp://ftp.qnx.com/pub/papers/qnx-pen.ps.Z>.
  699.  
  700. [Goldstein, 94]
  701.   Goldstein, T. & Sloane, A., `The object binary interface -- C++
  702.     objects for evolvable shared class libraries', Proceedings of the
  703.     USENIX C++ Conference, April 94
  704.  
  705. [Theimer, 93]
  706.   Theimer, M., Demers, A. & Welch, B., `Operating system issues for
  707.     PDAs', Proceedings of Fourth Workshop on Workstation Operating
  708.     Systems, October 93, pp. 14-20
  709.  
  710. [Landay & Kaufmann, 93]
  711.   Landay, J. & Kaufmann, T., `User-interface issues in mobile
  712.     computing', Proceedings of Fourth Workshop on Workstation
  713.     Operating Systems, October 93, pp. 40-47
  714.  
  715. [Kulkarni, 94]
  716.   Kulkarni, D., Banerji, A., Cohn, D., `Operating systems and cost
  717.     management', Operating Systems Review, January 94.
  718.  
  719. [Shenker, 93]
  720.   Shenker, S., `Service models and pricing policies for an integrated
  721.     services Internet', Proceedings on Conference on Public Access to
  722.     the Internet, JFK School of Government, Harvard University, May 93
  723.  
  724. [Schlitt, 93]
  725.   Schlitt et al., `The ParcTab mobile computing system', Proceedings
  726.     of Fourth Workshop on Workstation Operating Systems, October 93,
  727.     pp. 34-39
  728.  
  729.  
  730.  
  731. ------------------------------
  732. Subject: [5] Operating systems teaching
  733. From: Operating systems teaching
  734.  
  735. This section attempts to give some useful pointers to people who teach
  736. operating systems, both at undergraduate and postgraduate level.
  737.  
  738. ------------------------------
  739. Subject: [5.1] What good undergraduate-level texts are available?
  740. From: Operating systems teaching
  741.  
  742. The comments below have been provided by a variety of people, so any
  743. `me's or `I's you encounter are not necessarily those of the
  744. maintainer!
  745.  
  746. - `Operating Systems Concepts', fourth edition, by Abraham
  747.   Silberschatz and Peter Galvin is the latest version of this popular
  748.   text.  Addison-Wesley, 1994, ISBN 0-201-50480.  This book has been
  749.   revised to include new and updated information, examples, diagrams,
  750.   and an expanded bibliography.
  751.  
  752.   I think this is the `standard' OS text, although I have a couple of
  753.   others that I also think are good, and that I draw from when I teach
  754.   OS.  Previous editions of the dinosaur book don't have the greatest
  755.   organisation, and sometimes wander when describing things.  Its
  756.   strong point lies in the copious examples.
  757.  
  758.   Speaking of the third edition (I haven't seen a copy of the fourth
  759.   edition yet):
  760.  
  761.     The first 84 pages cover operating system basics, the next 120
  762.     pages cover process management including 30 pages on deadlocks.
  763.     130 pages on storage management: memory, virtual memory, secondary
  764.     storage.  70 pages on file systems and protection.  Then 100 pages
  765.     on distributed systems.  The last part of the book has case
  766.     studies on Unix and Mach: 50 pages on Unix and 30 pages on Mach.
  767.     The last chapter gives a short 10 page historical perspective.
  768.  
  769.   Mail a message with contents `send help' to <os4e@aw.com> for
  770.   further details of the new edition.  The book gives a good (but
  771.   slightly theoretical) overview of operating system concepts.  A good
  772.   complement would be the books covering Minix or BSD, which are more
  773.   implementation-oriented.
  774.  
  775. - `Operating Systems', Harvey Deitel, Addison-Wesley, 1990, ISBN
  776.   0-201-18038-3.  Not a bad book; gives the same sort of theoretical
  777.   treatment of operating systems as the dinosaur book.  Includes case
  778.   studies on Unix, MS DOS, MVS, VM, the Macintosh OS, and OS/2.
  779.  
  780. - `An Operating Systems Vade Mecum', second edition, by Raphael
  781.   Finkel, 1988, Prentice Hall, ISBN 0-13-637950-8.  I really like this
  782.   book; it is a bit more theoretical than the dinosaur book, but is
  783.   well-written and clear.  I would accompany it with labs based on one
  784.   of the educational experimental OS's (NachOS, OSP) for hands-on
  785.   experience.
  786.  
  787.   The edition mentioned above is now out of print.  However, it may be
  788.   obtained via anonymous ftp from
  789.   <URL:ftp://ftp.ms.uky.edu/pub/tech-reports/UK/cs/vade.mecum.2.ps.gz>.
  790.   Here is the associated chunk of README:
  791.  
  792.     This textbook is out of print.  It was published by Prentice Hall.
  793.     The author now owns the copyright.  Permission is granted to copy
  794.     this text for any noncommercial purpose.  Feel free to generate
  795.     copies of the text for your students.  You may also photocopy the
  796.     original book without restriction.  Kindly send suggested upgrades
  797.     to the author: <raphael@ms.uky.edu>.  He is planning a new
  798.     edition sometime.
  799.  
  800.   [It's been a few years since I've looked at this book, so I can't
  801.    remember what it contains.  Can anyone help?]
  802.  
  803. - `The Logical Design of Operating Systems', second edition, Lubomir
  804.   Bic, Alan Shaw, 1988, Prentice Hall, ISBN 0-13-540139-9.  This one
  805.   isn't as theoretical as Finkel's book, nor is it as long as the
  806.   dinosaur book.  I haven't tried to use it in a course yet, but it
  807.   looks like a fairly well-rounded text.
  808.  
  809.   [Can anyone write a paragraph on the various topics covered ... ?]
  810.  
  811. - `Operating Systems', second edition, William Stallings
  812.   <ws@shore.net>, Prentice-Hall, 1995, ISBN 0-02-415493-8.  I
  813.   received very positive feedback from students about the first
  814.   edition of this book; I have not yet seen the second edition.  The
  815.   explanations of topics were easy to understand and complete.  An
  816.   especially nice feature was that at the end of each chapter OS/2,
  817.   Unix and MVS were used to demonstrate real life implementations of
  818.   the theory talked about.  I found this tying together of theory and
  819.   practice much nicer than having the practice lumped at the end of
  820.   the book.
  821.  
  822. - `Modern Operating Systems,' Andrew Tanenbaum <ast@cs.vu.nl>,
  823.   1992, Prentice Hall, ISBN 0-13-588187-0.  This started out as a
  824.   rewrite of the Minix book, but he pulled the Minix-specific material
  825.   and added seven chapters on distributed systems.  It's a bit heavy
  826.   for undergrads, depending on how far into the distributed systems
  827.   you go, but I like Tanenbaum as an author.  He'll be bringing out a
  828.   second edition of the Minix book sometime soon; as he says, one is
  829.   for `hands-on' (Minix) and one is for `hands-off' (Modern OS).
  830.  
  831.   The book is divided into two parts: `traditional' introductory
  832.   material, taken more or less verbatim from the Minix book, and an
  833.   introduction to distributed systems.  Each parts concludes with a
  834.   case study and comparison of two well-known systems (Unix and
  835.   MS-DOS, and Mach and Amoeba).  The bibliography at the end is
  836.   organised well for more advanced coverage of the topics encountered
  837.   throughout the book.
  838.  
  839.   Topics covered in the first part include process concepts, memory
  840.   management, file system organisation and I/O, and deadlock detection
  841.   and avoidance.  The second part addresses issues such as distributed
  842.   communication, synchronisation (the section on clock synchronisation
  843.   is well put together), processes in distributed environments
  844.   (nothing on process migration), and distributed file systems (using
  845.   AFS as an example).  The second part seems more suitable for
  846.   advanced undergraduate level or introductory graduate level studies.
  847.  
  848.   This book has been translated into German; it is available from
  849.   Carl Hanser Verlag as `Moderne Betriebssysteme', ISBN 3-446-17472-9.
  850.  
  851. - `Operating System Design: the Xinu Approach', Douglas Comer, Timothy
  852.   Fossum, 1984, Prentice Hall, ISBNs 0-13-638180-4 (PC edition) and
  853.   0-13-638529-X (Macintosh edition).  A walk-through of the principles
  854.   behind, and implementation of, the Xinu operating system, a small
  855.   instructional OS similar to Unix.  While this text is aging
  856.   somewhat, it presents its material in a clear fashion, and does a
  857.   good job of covering the "standard" fundamentals of operating
  858.   systems.
  859.  
  860. - `Operating Systems: Design and Implementation', Andrew S. Tanenbaum,
  861.   1986 (?), Prentice Hall, ISBN 0-13-637406-9.  This, along with
  862.   Comer's Xinu books, is the classic text which `teaches by doing',
  863.   covering the design and implementation of Minix, a microkernel
  864.   operating system which has a programming and user interface similar
  865.   to Unix.  As with Comer's books, this text is showing its age
  866.   somewhat (the source is very much out of date with the current Minix
  867.   distribution), but it still does a good job of presenting the basics
  868.   of operating system implementation.
  869.  
  870. - `Operating Systems Programming: The SR Programming Language',
  871.   Stephen J. Hartley <shartley@mcs.drexel.edu>, Oxford University
  872.   Press, 1995, ISBN 0-19-5095790.  SR is a language for concurrent
  873.   programming; this book presents the language, presents some example
  874.   programs in the context of operating systems or concurrent
  875.   programming, and provides exercises in the form of Open Student
  876.   Laboratories.  The book is designed to be used in conjunction with
  877.   one of the standard operating systems texts to provide concurrent
  878.   programming experience, or can be used alone as an introductory
  879.   concurrent programming book.  I have not seen a copy of it yet, and
  880.   so cannot comment on its quality.  The example programs in the book
  881.   are intended for running in a Unix environment; they are available
  882.   via anonymous ftp from <URL:ftp://mcs.drexel.edu/pub/shartley>, and
  883.   the SR language itself is available from
  884.   <URL:ftp://cs.arizona.edu/sr>.
  885.  
  886. ------------------------------
  887. Subject: [5.2] Graduate-level texts
  888. From: Operating systems teaching
  889.  
  890. This section is still under construction.
  891.  
  892. - `Distributed Systems', second edition, by Sape Mullender,
  893.   Addison-Wesley, 1994, ISBN 0-201-62427-3.  A review is forthcoming.
  894.  
  895. - `Distributed Operating Systems -- the Logical Design', Andrzej
  896.   Goscinski, Addison-Wesley, 1991, ISBN 0-201-41704-9.  A thorough
  897.   desk reference, but reads a little too much like an encyclopedia for
  898.   use as a textbook.
  899.  
  900. - `Modern Operating Systems,' Andrew Tanenbaum <ast@cs.vu.nl>,
  901.   1992, Prentice Hall, ISBN 0-13-588187-0.  The section of this book
  902.   which covers distributed systems is suitable for use at introductory
  903.   graduate level.  See above for further details.
  904.  
  905. - `Concurrent Systems', Jean Bacon, 1992, Addison-Wesley, ISBN
  906.   0-201-41677-8.  This covers much the same material as `Modern
  907.   Operating Systems', but goes into rather more detail on databases
  908.   and languages.  The book is divided into four parts, and comes with
  909.   a separate instructor's manual (ISBN 0-201-62406-0).  The first
  910.   covers basic material, such as OS functions, and system and language
  911.   support for concurrent processes.  Part 2 deals with simple
  912.   concurrent actions, covering topics such as shared-memory IPC,
  913.   message passing, persistent data, crashes, and distributed data.
  914.   The third part of the book covers transactions, concurrency control,
  915.   and failure recovery.  The final section presents a set of case
  916.   studies, with Unix, Mach and Chorus being covered, along with some
  917.   of the work done at Cambridge over the past decade.  An interesting
  918.   emphasis is placed on language-level support for concurrency
  919.   throughout the book, and the focus on database issues is also a good
  920.   thing.
  921.  
  922.   I haven't read the book in as much detail as I would like, but it
  923.   seems to be well put together.  The cramming of so many topics under
  924.   one cover means that there is probably too much material for a
  925.   single undergraduate course, and the book perforce does not go into
  926.   as much detail as I would like on some topics (a problem I also find
  927.   with Tanenbaum's book).  Well worth a look, however.
  928.  
  929. - `Distributed Systems: Concepts and Design', second edition, George
  930.   Coulouris <George.Coulouris@dcs.qmw.ac.uk>, Jean Dollimore, and
  931.   Tim Kindberg, Addison-Wesley 1994, ISBN 0-201-62433-8.  This text
  932.   treats a wide variety of issues at a level suitable for advanced
  933.   undergraduate and postgraduate teaching.  Basic topics covered
  934.   include IPC, networking and RPC, upon which notions of distributed
  935.   operation and provision of services are built.  Coverage of
  936.   distributed synchronisation leads on to a treatment of replication,
  937.   simple transactions and concurrency control.  The final chapters
  938.   include material on distributed transactions, fault tolerance,
  939.   security, and distributed shared memory.
  940.  
  941.   Illustrative examples taken from modern `real world' systems such as
  942.   Sun RPC, the Andrew File System, and PGP are provided throughout the
  943.   book, and case studies of the Amoeba, Mach, Chorus, and Clouds
  944.   systems appear towards the end.  Exercises are presented at the end
  945.   of each chapter.  The prose is clear, and the layout pleasant.  This
  946.   is, by a narrow margin, the best distributed systems textbook I have
  947.   come across.
  948.  
  949. - `Advanced Concepts in Operating Systems -- Distributed,
  950.   Multiprocessor, and Database Operating Systems', Mukesh Singhal,
  951.   Niranjan G. Shivaratri, McGraw-Hill, 1994, ISBN 0-07-057572-X.  A
  952.   solid work on advanced operating systems, with some emphasis on
  953.   theoretical aspects.  Well over 2/3 of the book focuses on
  954.   distributed operating systems.  It does a good job of covering all
  955.   the bases, but at times omits vital information or obfuscates what
  956.   should be simple issues.
  957.  
  958. ------------------------------
  959. Subject: [5.3] Do any texts cover the implementation of specific operating systems?
  960. From: Operating systems teaching
  961.  
  962. Some books commonly used in conjunction with the texts listed above
  963. are:
  964.  
  965. - `The Design and Implementation of the 4.3BSD Unix Operating System',
  966.   Samuel Leffler, Kirk McKusick, Michael Karels, John Quarterman,
  967.   1989, Addison-Wesley, ISBN 0-201-06196-1.  This book describes the
  968.   kernel of 4.3BSD Unix in some detail, covering process and memory
  969.   management (the latter being heavily VAX-oriented), file system
  970.   organisation, device driver internals, terminal handling, IPC,
  971.   network communications, some details of the Internet protocols, and
  972.   system operation.  I found this book to be well-written and concise.
  973.  
  974.   Accompanying the above is the `4.3BSD Answer Book', Samuel Leffler,
  975.   Kirk McKusick, 1991, Addison-Wesley, ISBN 0-201-54629-9.  This short
  976.   book provides answers to all of the exercises found at the end of
  977.   each chapter in the daemon book.
  978.  
  979. - `The Design of the Unix Operating System', Maurice Bach, 1986,
  980.   Prentice Hall, ISBN 0-13-201757-1.  This is the authoritative
  981.   description of the internals of System V Release 2 Unix.  Due to
  982.   copyright restrictions, it contains no actual code, but rather
  983.   pseudo-code (I didn't find this to be a problem).  Topics covered
  984.   include file system internals, process control and scheduling,
  985.   memory management, IPC, and device driver architecture.  Coverage of
  986.   mutliprocessor and distributed Unix systems is dated, but this
  987.   remains a classic operating systems text.
  988.  
  989. - `The Magic Garden Explained: The Internals of Unix System V Release
  990.   4', Berny Goodheart, James Cox, 1994, Prentice Hall, ISBN
  991.   0-13-098138-9.  This books covers the workings of SVR4 in
  992.   substantial detail; it is more detailed than either of the above
  993.   texts, and appears to be of very high quality.  While the authors
  994.   recommend the book be read in parallel with study of the original
  995.   Unix source code, sufficient pseudocode representation of the key
  996.   algorithms has been included to permit a more or less detailed study
  997.   without restricted access to the original source code.
  998.  
  999. - `Unix Internals: The New Frontiers', Uresh Vahalia, 1995, Prentice
  1000.   Hall, ISBN 0-13-101908-2.  This is quite simply a wonderful book.
  1001.   The broad issues it covers include threads and lightweight
  1002.   processes, and how they interact; signal implementations, process
  1003.   group and session management; process scheduling; IPC; kernel
  1004.   synchronisation and multiprocessor architectures; local and
  1005.   distributed filesystems; kernel memory management; and device driver
  1006.   architectures.  Each topic is accompanied by details of its
  1007.   implementation under modern Unix variants such as Solaris 2.x,
  1008.   SVR4.2, and 4.4BSD, and its treatment by the Mach kernel.  The
  1009.   writing style is concise and pleasant, and the treatment of each
  1010.   topic is satisfyingly thorough and clear.  If you are interested in
  1011.   the implementation of Unix or other operating systems, this book is
  1012.   a "must have".
  1013.  
  1014. - `Unix Systems for Modern Architectures: Caching and Symmetric
  1015.   Multiprocessing for Kernel Programmers', Curt Schimmel, 1995,
  1016.   Addison-Wesley, ISBN 0-201-63338-8.  Covers in extensive detail the
  1017.   operation of caches and symmetric multiprocessors, how they
  1018.   interact, and the issues operating systems must address in order to
  1019.   make effective use of them.  Issues addressed include the management
  1020.   of virtually- and physically-tagged caches on uniprocessors,
  1021.   synchronisation and mutual exclusion techniques for multiprocessors,
  1022.   standard multiprocessor kernel architectures, and multiprocessor
  1023.   cache coherency.  This book is written in a clear manner, and
  1024.   illustrated effectively.  Each chapter ends with lists of exercises
  1025.   and references.  My copy contains a number of typographical errors,
  1026.   but I am told that later printings have addressed this issue.
  1027.  
  1028. I am not aware of any similar book which covers the implementation of
  1029. a distributed system.
  1030.  
  1031. ------------------------------
  1032. Subject: [5.4] What instructional operating systems can I use?
  1033. From: Operating systems teaching
  1034.  
  1035. - Minix, from Amsterdam's Vrije Universiteit, was developed by Andy
  1036.   Tanenbaum <ast@cs.vu.nl>, and is a mostly-Unix lookalike based on
  1037.   a message-passing microkernel-similar architecture.  The system is
  1038.   used in Tanenbaum's `Modern Operating Systems' and its predecessor,
  1039.   `Operating Systems: Design and Implementation'.  See the Minix
  1040.   Information Sheet, posted regularly to comp.os.minix, for ordering
  1041.   information; Minix is copyrighted and is not in the public domain,
  1042.   but is available from <URL:ftp://ftp.cs.vu.nl/pub/minix>.  For
  1043.   further information, see Andy's Web page at
  1044.   <URL:http://www.cs.vu.nl/~ast>.
  1045.  
  1046. - NachOS is an instructional OS developed at Berkeley by Tom Anderson
  1047.   <tea@cs.berkeley.edu>, Wayne Christopher, Stephen Procter (and
  1048.   others?).  It currently runs on DEC MIPS and Sun SPARC workstations,
  1049.   HP PA-RISC, and 386BSD machines.  The NachOS system, along with
  1050.   sample assignments and an overview paper which was presented at
  1051.   Usenix, is available via anonymous ftp from
  1052.   <URL:ftp://ftp.cs.berkeley.edu/ucb/nachos>.
  1053.  
  1054. - OSP (current version is 1.7) is an operating systems simulator,
  1055.   available via ftp from <URL:ftp://sblapis1.cs.sunysb.edu>, with
  1056.   username ospftp, and password as in the instructor's guide.  Used in
  1057.   `OSP---an Environment for Operating Systems', Michael Kifer, Scott
  1058.   Smolka, Addison-Wesley.
  1059.  
  1060. - RCOS (Ron Chernich's Operating System) is a simulated operating
  1061.   system that is intended to demonstrate graphically the concepts
  1062.   behind operating systems.  Students can investigate and modify the
  1063.   algorithms it uses, and write programs in a Pascal-like language
  1064.   (extended with semaphores and shared memory) which it will execute.
  1065.   RCOS has a windowing interface, and currently runs under MS-DOS; an
  1066.   alpha-quality Unix/X11 port is also available.  For further details,
  1067.   check out the Web page at
  1068.   <URL:http://cq-pan.cqu.edu.au/david-jones/projects/rcos>.
  1069.  
  1070. - SunOS Minix consists of a set of patches for Minix which allows the
  1071.   Minix system to run in a single monolithic Unix process on top of
  1072.   SunOS 4.x on Sun 3 and Sun 4 machines.  SunOS Minix is produced by
  1073.   applying a set of patches to Mac Minix 1.5 (both 1.5.10.0 and
  1074.   1.5.10.1 can be used) or PC Minix 1.5.  Also, Atari Minix has been
  1075.   used as the base version by at least one person.  The latest version
  1076.   (2.0) includes a preliminary attempt at a port to Solaris 2.x.
  1077.   SunOS Minix is available via anonymous ftp from
  1078.   <URL:ftp://csc.canterbury.ac.nz/UNIX/SMX_2_00.TAR_Z>.
  1079.  
  1080. - VSTa is not intended as an instructional operating system, but it is
  1081.   certainly small and concise enough to be tractable, and the code is
  1082.   clean and provides modern microkernel features.  See part 2 of the
  1083.   FAQ for further details.
  1084.  
  1085. - Xinu was developed at Purdue by Doug Comer and some others.  It was
  1086.   designed to be small and layered, so that the code is succinct and
  1087.   easily understandable.  It is intended for education, and is a
  1088.   `conventional' operating system.  Xinu runs on the IBM PC, Sun-3,
  1089.   SPARC, LSI, MIPS, Macintosh, and VAX architectures.  The system is
  1090.   used in Comer's `Operating System Design: the Xinu Approach'.
  1091.   See <URL:http://www.cs.purdue.edu/homes/dec/xlicense.html> for
  1092.   licensing information.
  1093.  
  1094. ------------------------------
  1095. Subject: [5.5] Where can I find the canonical list of OS papers for grad courses?
  1096. From: Operating systems teaching
  1097.  
  1098. [93-03-14-17-09.47] Darrell Long <darrell@cse.ucsc.edu> maintains a
  1099. bibliography which provides a good starting point for graduate OS
  1100. course reading lists.  This may be imported using refdbms as
  1101. ucsc.grad.os, from refdbms.cse.ucsc.edu 4117 or refdbms.cs.vu.nl 4117.
  1102.