<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rgould</id>
	<title>Soma-notes - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rgould"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Rgould"/>
	<updated>2026-05-12T21:37:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Locus,_V,_Mach&amp;diff=1751</id>
		<title>Locus, V, Mach</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Locus,_V,_Mach&amp;diff=1751"/>
		<updated>2008-02-02T18:25:39Z</updated>

		<summary type="html">&lt;p&gt;Rgould: Add notes for Yuri&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Readings==&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/cheriton-v.pdf David R. Cheriton, &amp;quot;The V Distributed System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/walker-locus.pdf Bruce Walker et al., &amp;quot;The LOCUS Distributed Operating System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
These two papers describe V and LOCUS, two early distributed operating systems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/young-mach-dual.pdf Michael Young et al., &amp;quot;The Duality of Memory and Communication in the Implementation of a Multiprocessor Operating System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
This paper describes some key ideas behind Mach, a seminal microkernel-based operating system.  The design of Mach informs later work in distributed operating systems.  For more background on Mach, I suggest reading [http://en.wikipedia.org/wiki/Mach_kernel Wikipedia&#039;s article on Mach].&lt;br /&gt;
&lt;br /&gt;
==Questions to be discussed==&lt;br /&gt;
&lt;br /&gt;
# What did the (technical) world look like when this distributed OS was designed &amp;amp; implemented?&lt;br /&gt;
# What are the key design features of the OS?  What are the key compromises?&lt;br /&gt;
# To what extent is their system a &amp;quot;distributed operating system&amp;quot;?&lt;br /&gt;
# What is the basic argument for their design choices?  What evidence do they cite in their favor?&lt;br /&gt;
# To what extent do you &amp;quot;believe&amp;quot; their design choices were right?  Why?&lt;br /&gt;
# To what extent does their design work in the context of the modern Internet?  Discuss wins and limitations.&lt;br /&gt;
# What concepts from the paper have been adopted by today&#039;s systems?  What concepts should be adopted?  What should be ignored?&lt;br /&gt;
&lt;br /&gt;
==Debate about the OSes==&lt;br /&gt;
&lt;br /&gt;
Topic: Microsoft has more to learn from ______ rather than ______ or ______&lt;br /&gt;
because....&lt;br /&gt;
&lt;br /&gt;
===LOCUS===&lt;br /&gt;
* + error handling&lt;br /&gt;
* + automatic file merging&lt;br /&gt;
* - sync. hotspots&lt;br /&gt;
** + fix by smart directory placement&lt;br /&gt;
* + automatic backups&lt;br /&gt;
* - not scalable&lt;br /&gt;
&lt;br /&gt;
===V===&lt;br /&gt;
* + standard protocols&lt;br /&gt;
** - less profitable, no lock-in&lt;br /&gt;
* + process migration&lt;br /&gt;
* - slow -&amp;gt; context switches&lt;br /&gt;
* + distributed processes&lt;br /&gt;
&lt;br /&gt;
===MACH===&lt;br /&gt;
* + microkernel -&amp;gt; fault tolerant&lt;br /&gt;
* + user space OS extensions&lt;br /&gt;
* + easy  shared memory (memory  obj)&lt;br /&gt;
* - inefficient finding of resources (ports)&lt;br /&gt;
** + use discovery  service&lt;br /&gt;
*** + more secure&lt;br /&gt;
**** - port search&lt;br /&gt;
* - slow -&amp;gt; context switches&lt;br /&gt;
* + &amp;quot;real&amp;quot; production use&lt;/div&gt;</summary>
		<author><name>Rgould</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Locus,_V,_Mach&amp;diff=1737</id>
		<title>Locus, V, Mach</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Locus,_V,_Mach&amp;diff=1737"/>
		<updated>2008-01-16T20:54:46Z</updated>

		<summary type="html">&lt;p&gt;Rgould: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Readings==&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/cheriton-v.pdf David R. Cheriton, &amp;quot;The V Distributed System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/walker-locus.pdf Bruce Walker et al., &amp;quot;The LOCUS Distributed Operating System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
These two papers describe V and LOCUS, two early distributed operating systems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/young-mach-dual.pdf Michael Young et al., &amp;quot;The Duality of Memory and Communication in the Implementation of a Multiprocessor Operating System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
This paper describes some key ideas behind Mach, a seminal microkernel-based operating system.  The design of Mach informs later work in distributed operating systems.  For more background on Mach, I suggest reading [http://en.wikipedia.org/wiki/Mach_kernel Wikipedia&#039;s article on Mach].&lt;br /&gt;
&lt;br /&gt;
==Debate==&lt;br /&gt;
Debate about the pros and cons of RPC. Topic: RPCs are the right foundation for the distributed applications (on today&#039;s Internet).&lt;br /&gt;
&lt;br /&gt;
===Pros===&lt;br /&gt;
# Easy to use&lt;br /&gt;
#* makes remove procedure calls look like local calls&lt;br /&gt;
#* local is easy&lt;br /&gt;
#* therefore remove is easy with RPC - good!&lt;br /&gt;
# (Counter to first con) Use standards, problem goes away&lt;br /&gt;
# Easy to debug&lt;br /&gt;
# Avoids complexity of protocol design&lt;br /&gt;
# RPC can be abstracted from the protocol design&lt;br /&gt;
# (Counter to fourth con) Use threads for interactivity. Manage complexity by doing things pairwise.&lt;br /&gt;
# (Counter to fifth con) - wrong!&lt;br /&gt;
# (Counter to seventh con) - Use standards (ORBs in CORBA, etc.) for authentication&lt;br /&gt;
# (Counter to eighth con) - But you specify the API&lt;br /&gt;
# (Counter to ninth con) - It&#039;s the same with other methods. But RPC makes it easier to do.&lt;br /&gt;
&lt;br /&gt;
===Cons===&lt;br /&gt;
# Language/implementation specific&lt;br /&gt;
# (Counter to third pro) Not easy to debug. example: NullPointerException thrown on server, containing line of erroneous code running on the server.&lt;br /&gt;
# Counter to fifth pro) But there is more overhead - slower&lt;br /&gt;
# Synchronous - wrong model for large, distributed applications, and also bad for users&lt;br /&gt;
# Limited scalability - hard to do well&lt;br /&gt;
# Limited control of communication details&lt;br /&gt;
# Authentication is opaque&lt;br /&gt;
# Larger attack surface area&lt;br /&gt;
# Poor match to listening (hard for server to communicate information back to client)&lt;br /&gt;
# Backwards compatibility is difficult&lt;br /&gt;
# RPC is not a &amp;quot;natural&amp;quot; interaction style - message passing is more similar to human communication&lt;br /&gt;
# Too much to set up for simple applications&lt;br /&gt;
# Less flexible&lt;br /&gt;
&lt;br /&gt;
===Comments===&lt;br /&gt;
RPC makes the simple things easy, but the most difficult aspects are still prevalent. Good to use if you are only using the common case. For example, a cluster that is isolated from the Internet.&lt;br /&gt;
&lt;br /&gt;
==Questions to be discussed==&lt;br /&gt;
&lt;br /&gt;
# What did the (technical) world look like when this distributed OS was designed &amp;amp; implemented?&lt;br /&gt;
# What are the key design features of the OS?  What are the key compromises?&lt;br /&gt;
# To what extent is their system a &amp;quot;distributed operating system&amp;quot;?&lt;br /&gt;
# What is the basic argument for their design choices?  What evidence do they cite in their favor?&lt;br /&gt;
# To what extent do you &amp;quot;believe&amp;quot; their design choices were right?  Why?&lt;br /&gt;
# To what extent does their design work in the context of the modern Internet?  Discuss wins and limitations.&lt;br /&gt;
# What concepts from the paper have been adopted by today&#039;s systems?  What concepts should be adopted?  What should be ignored?&lt;/div&gt;</summary>
		<author><name>Rgould</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Locus,_V,_Mach&amp;diff=1736</id>
		<title>Locus, V, Mach</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Locus,_V,_Mach&amp;diff=1736"/>
		<updated>2008-01-16T20:48:49Z</updated>

		<summary type="html">&lt;p&gt;Rgould: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Readings==&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/cheriton-v.pdf David R. Cheriton, &amp;quot;The V Distributed System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/walker-locus.pdf Bruce Walker et al., &amp;quot;The LOCUS Distributed Operating System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
These two papers describe V and LOCUS, two early distributed operating systems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/young-mach-dual.pdf Michael Young et al., &amp;quot;The Duality of Memory and Communication in the Implementation of a Multiprocessor Operating System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
This paper describes some key ideas behind Mach, a seminal microkernel-based operating system.  The design of Mach informs later work in distributed operating systems.  For more background on Mach, I suggest reading [http://en.wikipedia.org/wiki/Mach_kernel Wikipedia&#039;s article on Mach].&lt;br /&gt;
&lt;br /&gt;
==Debate==&lt;br /&gt;
Debate about the pros and cons of RPC. Topic: RPCs are the right foundation for the distributed applications (on today&#039;s Internet).&lt;br /&gt;
&lt;br /&gt;
===Pros===&lt;br /&gt;
# Easy to use&lt;br /&gt;
#* makes remove procedure calls look like local calls&lt;br /&gt;
#* local is easy&lt;br /&gt;
#* therefore remove is easy with RPC - good!&lt;br /&gt;
# (Counter to first con) Use standards, problem goes away&lt;br /&gt;
# Easy to debug&lt;br /&gt;
# Avoids complexity of protocol design&lt;br /&gt;
# RPC can be abstracted from the protocol design&lt;br /&gt;
# (Counter to fourth con) Use threads for interactivity. Manage complexity by doing things pairwise.&lt;br /&gt;
# (Counter to fifth con) - wrong!&lt;br /&gt;
# (Counter to seventh con) - Use standards (ORBs in CORBA, etc.) for authentication&lt;br /&gt;
# (Counter to eighth con) - But you specify the API&lt;br /&gt;
# (Counter to ninth con) - It&#039;s the same with other methods. But RPC makes it easier to do.&lt;br /&gt;
&lt;br /&gt;
===Cons===&lt;br /&gt;
# Language/implementation specific&lt;br /&gt;
# (Counter to third pro) Not easy to debug. example: NullPointerException thrown on server, containing line of erroneous code running on the server.&lt;br /&gt;
# Counter to fifth pro) But there is more overhead - slower&lt;br /&gt;
# Synchronous - wrong model for large, distributed applications, and also bad for users&lt;br /&gt;
# Limited scalability - hard to do well&lt;br /&gt;
# Limited control of communication details&lt;br /&gt;
# Authentication is opaque&lt;br /&gt;
# Larger attack surface area&lt;br /&gt;
# Poor match to listening (hard for server to communicate information back to client)&lt;br /&gt;
# Backwards compatibility is difficult&lt;br /&gt;
# RPC is not a &amp;quot;natural&amp;quot; interaction style - message passing is more similar to human communication&lt;br /&gt;
# Too much to set up for simple applications&lt;br /&gt;
# Less flexible&lt;br /&gt;
&lt;br /&gt;
==Questions to be discussed==&lt;br /&gt;
&lt;br /&gt;
# What did the (technical) world look like when this distributed OS was designed &amp;amp; implemented?&lt;br /&gt;
# What are the key design features of the OS?  What are the key compromises?&lt;br /&gt;
# To what extent is their system a &amp;quot;distributed operating system&amp;quot;?&lt;br /&gt;
# What is the basic argument for their design choices?  What evidence do they cite in their favor?&lt;br /&gt;
# To what extent do you &amp;quot;believe&amp;quot; their design choices were right?  Why?&lt;br /&gt;
# To what extent does their design work in the context of the modern Internet?  Discuss wins and limitations.&lt;br /&gt;
# What concepts from the paper have been adopted by today&#039;s systems?  What concepts should be adopted?  What should be ignored?&lt;/div&gt;</summary>
		<author><name>Rgould</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Locus,_V,_Mach&amp;diff=1735</id>
		<title>Locus, V, Mach</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Locus,_V,_Mach&amp;diff=1735"/>
		<updated>2008-01-16T20:37:24Z</updated>

		<summary type="html">&lt;p&gt;Rgould: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Readings==&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/cheriton-v.pdf David R. Cheriton, &amp;quot;The V Distributed System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/walker-locus.pdf Bruce Walker et al., &amp;quot;The LOCUS Distributed Operating System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
These two papers describe V and LOCUS, two early distributed operating systems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/young-mach-dual.pdf Michael Young et al., &amp;quot;The Duality of Memory and Communication in the Implementation of a Multiprocessor Operating System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
This paper describes some key ideas behind Mach, a seminal microkernel-based operating system.  The design of Mach informs later work in distributed operating systems.  For more background on Mach, I suggest reading [http://en.wikipedia.org/wiki/Mach_kernel Wikipedia&#039;s article on Mach].&lt;br /&gt;
&lt;br /&gt;
==Debate==&lt;br /&gt;
Debate about the pros and cons of RPC. Topic: RPCs are the right foundation for the distributed applications (on today&#039;s Internet).&lt;br /&gt;
&lt;br /&gt;
===Pros===&lt;br /&gt;
# Easy to use&lt;br /&gt;
#* makes remove procedure calls look like local calls&lt;br /&gt;
#* local is easy&lt;br /&gt;
#* therefore remove is easy with RPC - good!&lt;br /&gt;
# (Counter to first con) Use standards, problem goes away&lt;br /&gt;
# Easy to debug&lt;br /&gt;
# Avoids complexity of protocol design&lt;br /&gt;
# RPC can be abstracted from the protocol design&lt;br /&gt;
# (Counter to fourth con) Use threads for interactivity. Manage complexity by doing things pairwise.&lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
===Cons===&lt;br /&gt;
# Language/implementation specific&lt;br /&gt;
# (Counter to third pro) Not easy to debug. example: NullPointerException thrown on server, containing line of erroneous code running on the server.&lt;br /&gt;
# Counter to fifth pro) But there is more overhead - slower&lt;br /&gt;
# Synchronous - wrong model for large, distributed applications, and also bad for users&lt;br /&gt;
# Limited scalability - hard to do well&lt;br /&gt;
# Limited control of communication details&lt;br /&gt;
# Authentication is opaque&lt;br /&gt;
# Larger attack surface area&lt;br /&gt;
&lt;br /&gt;
==Questions to be discussed==&lt;br /&gt;
&lt;br /&gt;
# What did the (technical) world look like when this distributed OS was designed &amp;amp; implemented?&lt;br /&gt;
# What are the key design features of the OS?  What are the key compromises?&lt;br /&gt;
# To what extent is their system a &amp;quot;distributed operating system&amp;quot;?&lt;br /&gt;
# What is the basic argument for their design choices?  What evidence do they cite in their favor?&lt;br /&gt;
# To what extent do you &amp;quot;believe&amp;quot; their design choices were right?  Why?&lt;br /&gt;
# To what extent does their design work in the context of the modern Internet?  Discuss wins and limitations.&lt;br /&gt;
# What concepts from the paper have been adopted by today&#039;s systems?  What concepts should be adopted?  What should be ignored?&lt;/div&gt;</summary>
		<author><name>Rgould</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Locus,_V,_Mach&amp;diff=1734</id>
		<title>Locus, V, Mach</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Locus,_V,_Mach&amp;diff=1734"/>
		<updated>2008-01-16T20:23:52Z</updated>

		<summary type="html">&lt;p&gt;Rgould: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Readings==&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/cheriton-v.pdf David R. Cheriton, &amp;quot;The V Distributed System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/walker-locus.pdf Bruce Walker et al., &amp;quot;The LOCUS Distributed Operating System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
These two papers describe V and LOCUS, two early distributed operating systems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homeostasis.scs.carleton.ca/~soma/distos/2008-01-21/young-mach-dual.pdf Michael Young et al., &amp;quot;The Duality of Memory and Communication in the Implementation of a Multiprocessor Operating System.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
This paper describes some key ideas behind Mach, a seminal microkernel-based operating system.  The design of Mach informs later work in distributed operating systems.  For more background on Mach, I suggest reading [http://en.wikipedia.org/wiki/Mach_kernel Wikipedia&#039;s article on Mach].&lt;br /&gt;
&lt;br /&gt;
==Debate==&lt;br /&gt;
Debate about the pros and cons of RPC. Topic: RPCs are the right foundation for the distributed applications (on today&#039;s Internet).&lt;br /&gt;
&lt;br /&gt;
==Pro==&lt;br /&gt;
# Easy to use&lt;br /&gt;
#* makes remove procedure calls look like local calls&lt;br /&gt;
#* local is easy&lt;br /&gt;
#* therefore remove is easy with RPC - good!&lt;br /&gt;
# (Counter to first con) Use standards, problem goes away&lt;br /&gt;
# Easy to debug&lt;br /&gt;
# Avoids complexity of protocol design&lt;br /&gt;
# RPC can be abstracted from the protocol design&lt;br /&gt;
# (Counter to fourth con) Use threads for interactivity. Manage complexity by doing things pairwise.&lt;br /&gt;
&lt;br /&gt;
==Con==&lt;br /&gt;
# Language/implementation specific&lt;br /&gt;
# (Counter to third pro) Not easy to debug. example: NullPointerException thrown on server, containing line of erroneous code running on the server.&lt;br /&gt;
# Counter to fifth pro) But there is more overhead - slower&lt;br /&gt;
# Synchronous - wrong model for large, distributed applications, and also bad for users&lt;br /&gt;
&lt;br /&gt;
==Questions to be discussed==&lt;br /&gt;
&lt;br /&gt;
# What did the (technical) world look like when this distributed OS was designed &amp;amp; implemented?&lt;br /&gt;
# What are the key design features of the OS?  What are the key compromises?&lt;br /&gt;
# To what extent is their system a &amp;quot;distributed operating system&amp;quot;?&lt;br /&gt;
# What is the basic argument for their design choices?  What evidence do they cite in their favor?&lt;br /&gt;
# To what extent do you &amp;quot;believe&amp;quot; their design choices were right?  Why?&lt;br /&gt;
# To what extent does their design work in the context of the modern Internet?  Discuss wins and limitations.&lt;br /&gt;
# What concepts from the paper have been adopted by today&#039;s systems?  What concepts should be adopted?  What should be ignored?&lt;/div&gt;</summary>
		<author><name>Rgould</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Proposal_Meeting_Schedule&amp;diff=1541</id>
		<title>Proposal Meeting Schedule</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Proposal_Meeting_Schedule&amp;diff=1541"/>
		<updated>2007-10-26T03:33:33Z</updated>

		<summary type="html">&lt;p&gt;Rgould: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Tuesday, Oct. 30th==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 10:00 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:10 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:20 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:30 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:40 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:50 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2:30 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2:40 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2:50 PM&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3:00 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3:10 PM&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3:20 PM&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Wednesday, Oct. 31st==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 10:30 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:40 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:50 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:00 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:10 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:20 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:30 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:40 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:50 AM&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 12:00 PM&lt;br /&gt;
| Neil Dickson&lt;br /&gt;
|-&lt;br /&gt;
| 12:10 PM&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 12:20 PM&lt;br /&gt;
| Richard Gould&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Thursday, Nov. 1st==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 1:30 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1:40 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1:50 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2:00 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2:10 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2:20 PM&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tuesday, Nov. 6th==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 10:00 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:10 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:20 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:30 AM&lt;br /&gt;
| David Tremayne&lt;br /&gt;
|-&lt;br /&gt;
| 10:40 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:50 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2:30 PM&lt;br /&gt;
| Maria Krol&lt;br /&gt;
|-&lt;br /&gt;
| 2:40 PM&lt;br /&gt;
| Adam Becevello&lt;br /&gt;
|-&lt;br /&gt;
| 2:50 PM&lt;br /&gt;
| Jeff Snell&lt;br /&gt;
|-&lt;br /&gt;
| 3:00 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3:10 PM&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3:20 PM&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Wednesday, Nov. 7th==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 10:30 AM&lt;br /&gt;
| Kenneth Chan&lt;br /&gt;
|-&lt;br /&gt;
| 10:40 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10:50 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:00 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:10 AM&lt;br /&gt;
| Adam McNamara&lt;br /&gt;
|-&lt;br /&gt;
| 11:20 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:30 AM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:40 AM&lt;br /&gt;
| Geoffrey Johnson&lt;br /&gt;
|-&lt;br /&gt;
| 11:50 AM&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 12:00 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 12:10 PM&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 12:20 PM&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Thursday, Nov. 8th==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 1:30 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1:40 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1:50 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2:00 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2:10 PM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2:20 PM&lt;br /&gt;
| &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rgould</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_System_Organization&amp;diff=1466</id>
		<title>Operating System Organization</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_System_Organization&amp;diff=1466"/>
		<updated>2007-09-24T03:25:22Z</updated>

		<summary type="html">&lt;p&gt;Rgould: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Operating System Organization==&lt;br /&gt;
&lt;br /&gt;
===Device Management===&lt;br /&gt;
&lt;br /&gt;
How do kernels communicate with devices such as a network card? How do drivers for such devices fit into the kernel? We need a mechanism to allow applications to communicate with the devices. Most kernels use a form of message passing, often using a registration system. For example, a network card device driver would register itself with the kernel and identify that it is in fact a network card (as opposed to say, a mouse). MS DOS used interrupt handlers instead.&lt;br /&gt;
&lt;br /&gt;
Glenn&#039;s talk focused mostly on the how the Linux Kernel works. &lt;br /&gt;
&lt;br /&gt;
====File Abstraction in Device Management====&lt;br /&gt;
In Linux there exists a &amp;quot;/proc&amp;quot; directory which contains special information. This directory does not actually exist on disk. When the kernel receives a request to read a file in one of these directories, it retrieves system information and serves it up as a file. For example, executing more /proc/cupinfo gives: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ more /proc/cpuinfo&lt;br /&gt;
processor : 0&lt;br /&gt;
vendor_id : GenuineIntel&lt;br /&gt;
cpu family    : 6&lt;br /&gt;
model         : 13&lt;br /&gt;
model name    : Intel(R) Pentium(R) M processor 1.73GHz&lt;br /&gt;
stepping  : 8&lt;br /&gt;
cpu MHz       : 798.000&lt;br /&gt;
cache size    : 2048 KB&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each process that is currently running on the system gets its own directory in /proc, with the process ID (pid) as the directory name. For example for process with pid 2, there exists &amp;quot;/proc/2/&amp;quot; which contains more information about that process. &lt;br /&gt;
&lt;br /&gt;
=====/dev=====&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;/dev&amp;quot; directory actually exists on the file system and contains entries for devices (called nodes). For example, the first hard drive on the system might reside in &amp;quot;/dev/hda/&amp;quot;. Each device entry has a major node number and a minor node number. For example, the hard drive specified by &amp;quot;/dev/hda&amp;quot; might have major node number &amp;quot;3&amp;quot; and minor node number &amp;quot;0&amp;quot;. At first the node numbers were pre-defined and there could be no more than 255 of them. These major/minor node numbers are used to link the specific device types into the kernel. These nodes existed in &amp;quot;/dev&amp;quot; even if the devices were not connected to the system.&lt;br /&gt;
&lt;br /&gt;
=====devfs=====&lt;br /&gt;
&lt;br /&gt;
This was eventually replaced with a new system called &amp;quot;devfs&amp;quot; (device file system), which was a pseudo-file system similar to /proc. Devfs is implemented in the kernel and knows about the currently available hardware. Some problems still existed with this system: it was implemented in the kernel, and thus a change to hardware required an update to the kernel; and the major and minor node numbers were still fixed in the kernel. It would be nice to dynamically reassign major nodes to unknown devices that are actually present on the system. Devfs also prevented the renaming of nodes in /dev. For example, previously one could rename /dev/hda to /dev/cdrom, but it would still actually point at hard-drive a. This behaviour was prevented in devfs. &lt;br /&gt;
&lt;br /&gt;
=====udev=====&lt;br /&gt;
&lt;br /&gt;
Another problem existed with hot-pluggable devices (such as USB devices). Minor node numbers were assigned by the kernel in the order by which they were discovered. Devices might have different node numbers after a reboot. Also no notifications occur when a device is connected or disconnected from the system.&lt;br /&gt;
&lt;br /&gt;
Devfs has since been replaced by a new system named &amp;quot;udev&amp;quot;, which was implemented in the user space, not the kernel space. The ability to rename nodes in /dev was enabled again by udev. The issue regarding hot-pluggable devices was addressed by permitting minor node numbers to be dynamically assigned. udev also notifies applications when hardware is connected or disconnected. Network cards are a special case - the kernel knows about network protocols, so network cards must be accessed using a different interface.&lt;br /&gt;
&lt;br /&gt;
=====Other files, pipes and sockets=====&lt;br /&gt;
&lt;br /&gt;
An example call for opening the CD-ROM may look something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
handle = open(/dev/cdrom, ...)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is call to the kernel which will use the cd-rom devices drivers to read from the disc.&lt;br /&gt;
&lt;br /&gt;
Pipes and sockets both operate as files and support the basic operations&lt;br /&gt;
* open&lt;br /&gt;
* read&lt;br /&gt;
* write&lt;br /&gt;
* close&lt;br /&gt;
&lt;br /&gt;
Pipes are used for inter-process communication. Each process can open one end of the pipe, and then they can read or write to it. &lt;br /&gt;
&lt;br /&gt;
Sockets are used in a similar manner to communicate over a network.&lt;br /&gt;
&lt;br /&gt;
===Kernel Development===&lt;br /&gt;
&lt;br /&gt;
Standard development tools aren&#039;t always helpful when debugging during kernel development. How can you debug a kernel that crashes before the display drivers work? The Linux kernel outputted Morse code to the LED lights on the keyboard. &lt;br /&gt;
&lt;br /&gt;
Often developers must work around bugs in hardware, as it is usually much cheaper to fix it in software than to change the hardware design.&lt;br /&gt;
&lt;br /&gt;
===Process and Thread Management===&lt;br /&gt;
&lt;br /&gt;
Context switching between different process is very expensive in terms of execution time. Different situations call for different strategies for managing context switches. For example, consider terminals and servers. Server systems can get away with fewer context switches, as they can completely serve up a request for a web-page before moving on to the next request. On a terminal, the user is present and expects instant feedback. If the mouse is moved, and the process that moves the mouse pointer does not respond quickly, the user will perceive that the machine is slow, or unresponsive. &lt;br /&gt;
&lt;br /&gt;
===Memory Management===&lt;br /&gt;
&lt;br /&gt;
Chapter 3 gives just a brief introduction to memory management. &lt;br /&gt;
&lt;br /&gt;
Processes have their own virtual memory map. P3s and P4s used 32-bit addressing, which gave a maximum address space of 4GB. Note that there may not even be 4GB of physical RAM available to be used. When a process requests memory that is not currently in RAM, the operating system must retrieve it from disk (aka paging). &lt;br /&gt;
&lt;br /&gt;
The operating system also needs to protect the kernel&#039;s memory space from other applications. Supervisor (root) vs user mode determines the level of access to memory.&lt;br /&gt;
&lt;br /&gt;
===Kernel Design===&lt;br /&gt;
&lt;br /&gt;
Monolithic vs micro - how much stuff should be implemented in the kernel. Microkernel design means that processes and applications do more work, which requires more context switching, but this permits the kernel to be more reliable. &lt;br /&gt;
&lt;br /&gt;
An example monolithic kernel might include things such as:&lt;br /&gt;
* network driver&lt;br /&gt;
* display&lt;br /&gt;
* clock&lt;br /&gt;
&lt;br /&gt;
A micro kernel might only include the minimal items:&lt;br /&gt;
* memory allocation&lt;br /&gt;
* process switching&lt;br /&gt;
&lt;br /&gt;
===File Systems===&lt;br /&gt;
&lt;br /&gt;
Consist of many items:&lt;br /&gt;
* directories&lt;br /&gt;
* files&lt;br /&gt;
* device nodes&lt;br /&gt;
* links (in Windows these are called shortcuts)&lt;br /&gt;
* pipes&lt;br /&gt;
&lt;br /&gt;
In DOS, only directories, files and device nodes were used. In Windows, they are well hidden under the path &amp;quot;\\&amp;quot; or they are given special names, such as &amp;quot;AUX&amp;quot;, &amp;quot;COM0&amp;quot; or &amp;quot;LPT0&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Rgould</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_System_Organization&amp;diff=1465</id>
		<title>Operating System Organization</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_System_Organization&amp;diff=1465"/>
		<updated>2007-09-24T03:11:31Z</updated>

		<summary type="html">&lt;p&gt;Rgould: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Operating System Organization==&lt;br /&gt;
&lt;br /&gt;
===Device Management===&lt;br /&gt;
&lt;br /&gt;
How do kernels communicate with devices such as a network card? How do drivers for such devices fit into the kernel? We need a mechanism to allow applications to communicate with the devices. Most kernels use a form of message passing, often using a registration system. For example, a network card device driver would register itself with the kernel and identify that it is in fact a network card (as opposed to say, a mouse). MS DOS used interrupt handlers instead.&lt;br /&gt;
&lt;br /&gt;
Glenn&#039;s talk focused mostly on the how the Linux Kernel works. &lt;br /&gt;
&lt;br /&gt;
====File Abstraction====&lt;br /&gt;
In Linux there exists a &amp;quot;/proc&amp;quot; directory which contains special information. This directory does not actually exist on disk. When the kernel receives a request to read a file in one of these directories, it retrieves system information and serves it up as a file. For example, executing more /proc/cupinfo gives: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ more /proc/cpuinfo&lt;br /&gt;
processor : 0&lt;br /&gt;
vendor_id : GenuineIntel&lt;br /&gt;
cpu family    : 6&lt;br /&gt;
model         : 13&lt;br /&gt;
model name    : Intel(R) Pentium(R) M processor 1.73GHz&lt;br /&gt;
stepping  : 8&lt;br /&gt;
cpu MHz       : 798.000&lt;br /&gt;
cache size    : 2048 KB&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each process that is currently running on the system gets its own directory in /proc, with the process ID (pid) as the directory name. For example for process with pid 2, there exists &amp;quot;/proc/2/&amp;quot; which contains more information about that process. &lt;br /&gt;
&lt;br /&gt;
=====/dev=====&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;/dev&amp;quot; directory actually exists on the file system and contains entries for devices (called nodes). For example, the first hard drive on the system might reside in &amp;quot;/dev/hda/&amp;quot;. Each device entry has a major node number and a minor node number. For example, the hard drive specified by &amp;quot;/dev/hda&amp;quot; might have major node number &amp;quot;3&amp;quot; and minor node number &amp;quot;0&amp;quot;. At first the node numbers were pre-defined and there could be no more than 255 of them. These major/minor node numbers are used to link the specific device types into the kernel. These nodes existed in &amp;quot;/dev&amp;quot; even if the devices were not connected to the system.&lt;br /&gt;
&lt;br /&gt;
=====devfs=====&lt;br /&gt;
&lt;br /&gt;
This was eventually replaced with a new system called &amp;quot;devfs&amp;quot; (device file system), which was a pseudo-file system similar to /proc. Devfs is implemented in the kernel and knows about the currently available hardware. Some problems still existed with this system: it was implemented in the kernel, and thus a change to hardware required an update to the kernel; and the major and minor node numbers were still fixed in the kernel. It would be nice to dynamically reassign major nodes to unknown devices that are actually present on the system. Devfs also prevented the renaming of nodes in /dev. For example, previously one could rename /dev/hda to /dev/cdrom, but it would still actually point at hard-drive a. This behaviour was prevented in devfs. &lt;br /&gt;
&lt;br /&gt;
=====udev=====&lt;br /&gt;
&lt;br /&gt;
Another problem existed with hot-pluggable devices (such as USB devices). Minor node numbers were assigned by the kernel in the order by which they were discovered. Devices might have different node numbers after a reboot. Also no notifications occur when a device is connected or disconnected from the system.&lt;br /&gt;
&lt;br /&gt;
Devfs has since been replaced by a new system named &amp;quot;udev&amp;quot;, which was implemented in the user space, not the kernel space. The ability to rename nodes in /dev was enabled again by udev. The issue regarding hot-pluggable devices was addressed by permitting minor node numbers to be dynamically assigned. udev also notifies applications when hardware is connected or disconnected. Network cards are a special case - the kernel knows about network protocols, so network cards must be accessed using a different interface.&lt;br /&gt;
&lt;br /&gt;
=====Other files, pipes and sockets=====&lt;br /&gt;
&lt;br /&gt;
An example call for opening the CD-ROM may look something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
handle = open(/dev/cdrom, ...)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is call to the kernel which will use the cd-rom devices drivers to read from the disc.&lt;br /&gt;
&lt;br /&gt;
Pipes and sockets both operate as files and support the basic operations&lt;br /&gt;
* open&lt;br /&gt;
* read&lt;br /&gt;
* write&lt;br /&gt;
* close&lt;br /&gt;
&lt;br /&gt;
Pipes are used for inter-process communication. Each process can open one end of the pipe, and then they can read or write to it. &lt;br /&gt;
&lt;br /&gt;
Sockets are used in a similar manner to communicate over a network.&lt;br /&gt;
&lt;br /&gt;
====Kernel Development====&lt;/div&gt;</summary>
		<author><name>Rgould</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_System_Organization&amp;diff=1464</id>
		<title>Operating System Organization</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_System_Organization&amp;diff=1464"/>
		<updated>2007-09-24T02:55:12Z</updated>

		<summary type="html">&lt;p&gt;Rgould: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Operating System Organization==&lt;br /&gt;
&lt;br /&gt;
===Device Management===&lt;br /&gt;
&lt;br /&gt;
How do kernels communicate with devices such as a network card? How do drivers for such devices fit into the kernel? We need a mechanism to allow applications to communicate with the devices. Most kernels use a form of message passing, often using a registration system. For example, a network card device driver would register itself with the kernel and identify that it is in fact a network card (as opposed to say, a mouse). MS DOS used interrupt handlers instead.&lt;br /&gt;
&lt;br /&gt;
Glenn&#039;s talk focused mostly on the how the Linux Kernel works. &lt;br /&gt;
&lt;br /&gt;
====File Abstraction====&lt;br /&gt;
In Linux there exists a &amp;quot;/proc&amp;quot; directory which contains special information. This directory does not actually exist on disk. When the kernel receives a request to read a file in one of these directories, it retrieves system information and serves it up as a file. For example, executing more /proc/cupinfo gives: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ more /proc/cpuinfo&lt;br /&gt;
processor : 0&lt;br /&gt;
vendor_id : GenuineIntel&lt;br /&gt;
cpu family    : 6&lt;br /&gt;
model         : 13&lt;br /&gt;
model name    : Intel(R) Pentium(R) M processor 1.73GHz&lt;br /&gt;
stepping  : 8&lt;br /&gt;
cpu MHz       : 798.000&lt;br /&gt;
cache size    : 2048 KB&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each process that is currently running on the system gets its own directory in /proc, with the process ID (pid) as the directory name. For example for process with pid 2, there exists &amp;quot;/proc/2/&amp;quot; which contains more information about that process. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;/dev&amp;quot; directory actually exists on the file system and contains entries for devices (called nodes). For example, the first hard drive on the system might reside in &amp;quot;/dev/hda/&amp;quot;. Each device entry has a major node number and a minor node number. For example, the hard drive specified by &amp;quot;/dev/hda&amp;quot; might have major node number &amp;quot;3&amp;quot; and minor node number &amp;quot;0&amp;quot;. At first the node numbers were pre-defined and there could be no more than 255 of them. These major/minor node numbers are used to link the specific device types into the kernel. These nodes existed in &amp;quot;/dev&amp;quot; even if the devices were not connected to the system.&lt;br /&gt;
&lt;br /&gt;
This was eventually replaced with a new system called &amp;quot;devfs&amp;quot; (device file system), which was a pseudo-file system similar to /proc. Devfs is implemented in the kernel and knows about the currently available hardware. Some problems still existed with this system: it was implemented in the kernel, and thus a change to hardware required an update to the kernel; and the major and minor node numbers were still fixed in the kernel. It would be nice to dynamically reassign major nodes to unknown devices that are actually present on the system. &lt;br /&gt;
&lt;br /&gt;
Devfs has since been replaced by a new system named &amp;quot;udev&amp;quot;&lt;/div&gt;</summary>
		<author><name>Rgould</name></author>
	</entry>
</feed>