<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Using_the_Operating_System</id>
	<title>Using the Operating System - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Using_the_Operating_System"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;action=history"/>
	<updated>2026-05-02T08:32:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1456&amp;oldid=prev</id>
		<title>Rhooper: /* Term Paper */</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1456&amp;oldid=prev"/>
		<updated>2007-09-18T02:24:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Term Paper&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:24, 18 September 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l76&quot;&gt;Line 76:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 76:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For the Term Paper... You don&amp;#039;t have to do a pure literature review.  You could&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For the Term Paper... You don&amp;#039;t have to do a pure literature review.  You could&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;do an original operating system extension.  There&amp;#039;s one caveat:  You&amp;#039;ve got&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;do an original operating system extension.  There&amp;#039;s one caveat:  You&amp;#039;ve got&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;to get what you&#039;re going to do with &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the professor first&lt;/del&gt;.  You have to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tell&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;to get what you&#039;re going to do with &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Professor Somayaji&lt;/ins&gt;.  You have to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;get permission&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;him &lt;/del&gt;a week before the outline is due Oct &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;22nd&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;a week before the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;outline is due (The paper &lt;/ins&gt;outline is due Oct &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;29)&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;What types of things is he thinking of: Say you wanted to implement a new&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;What types of things is he thinking of: Say you wanted to implement a new&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhooper</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1455&amp;oldid=prev</id>
		<title>Rhooper at 01:21, 18 September 2007</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1455&amp;oldid=prev"/>
		<updated>2007-09-18T01:21:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:21, 18 September 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These notes &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;are &lt;/del&gt;have not yet been reviewed for correctness.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These notes have not yet been reviewed for correctness.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Lecture 3: Using the Operating System ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Lecture 3: Using the Operating System ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhooper</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1453&amp;oldid=prev</id>
		<title>Rhooper: /* Lab 1 */</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1453&amp;oldid=prev"/>
		<updated>2007-09-18T01:02:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Lab 1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:02, 18 September 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot;&gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All functioning lab machines are running Debian Linux 4.0 (etch).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All functioning lab machines are running Debian Linux 4.0 (etch).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;They should be connected to the internet.  They should have a browser on them&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;They should be connected to the internet.  They should have a browser on them&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;called [&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;IceWeasel &lt;/del&gt;http://en.wikipedia.org/wiki/Naming_conflict_between_Debian_and_Mozilla].  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;called [http://en.wikipedia.org/wiki/Naming_conflict_between_Debian_and_Mozilla &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;IceWeasel&lt;/ins&gt;].  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Its really Mozilla Firefox.  Because Mozilla has trademarked the name Firefox,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Its really Mozilla Firefox.  Because Mozilla has trademarked the name Firefox,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;in order to use their name, you have to use exactly their binary distribution.  Debian could&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;in order to use their name, you have to use exactly their binary distribution.  Debian could&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhooper</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1452&amp;oldid=prev</id>
		<title>Rhooper: /* Processes and Threads */</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1452&amp;oldid=prev"/>
		<updated>2007-09-18T00:59:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Processes and Threads&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:59, 18 September 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l184&quot;&gt;Line 184:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 184:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;somehow it doesn&amp;#039;t seem to happen.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;somehow it doesn&amp;#039;t seem to happen.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;==== Processes and Threads &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== Processes and Threads ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There&amp;#039;s lots of other devices, but from an OS level, there are two other big ones:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There&amp;#039;s lots of other devices, but from an OS level, there are two other big ones:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhooper</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1451&amp;oldid=prev</id>
		<title>Rhooper: /* Files */</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1451&amp;oldid=prev"/>
		<updated>2007-09-18T00:59:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Files&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:59, 18 September 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l174&quot;&gt;Line 174:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 174:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An even more minimal abstraction would be&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An even more minimal abstraction would be&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;to just treat storage devices as a bunch of fixed size blocks.  However, that&amp;#039;s getting too low level,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;to just treat storage devices as a bunch of fixed size blocks.  However, that&amp;#039;s getting too low level,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;because now all programs have to worry about where they put files.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;because now all programs have to worry about where they put files.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Because the files abstract model is reasonably good, its stuck around for decades.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Because the files abstract model is reasonably good, its stuck around for decades.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l361&quot;&gt;Line 361:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 361:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;with this - which happens to be most applications. You&amp;#039;ll learn this because&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;with this - which happens to be most applications. You&amp;#039;ll learn this because&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;the OS guys did this first.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;the OS guys did this first.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== Graphics ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== Graphics ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhooper</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1448&amp;oldid=prev</id>
		<title>Rhooper at 00:45, 18 September 2007</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1448&amp;oldid=prev"/>
		<updated>2007-09-18T00:45:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:45, 18 September 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These notes are &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;still in the process of being posted&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These notes are &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;have not yet been reviewed for correctness&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Lecture 3: Using the Operating System ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Lecture 3: Using the Operating System ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhooper</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1447&amp;oldid=prev</id>
		<title>Rhooper at 00:42, 18 September 2007</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1447&amp;oldid=prev"/>
		<updated>2007-09-18T00:42:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:42, 18 September 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l255&quot;&gt;Line 255:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 255:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;starts running, then it creates a copy of itself with fork, then another, etc.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;starts running, then it creates a copy of itself with fork, then another, etc.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TODO&lt;/del&gt;: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;diagram&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Image&lt;/ins&gt;:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Comp3000-process-tree.png]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this diagram, What is the value of &amp;#039;&amp;#039;x?&amp;#039;&amp;#039; on the bottom-left-most branch?&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this diagram, What is the value of &amp;#039;&amp;#039;x?&amp;#039;&amp;#039; on the bottom-left-most branch?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhooper</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1445&amp;oldid=prev</id>
		<title>Rhooper at 00:16, 18 September 2007</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Using_the_Operating_System&amp;diff=1445&amp;oldid=prev"/>
		<updated>2007-09-18T00:16:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;These notes are still in the process of being posted.&lt;br /&gt;
&lt;br /&gt;
== Lecture 3: Using the Operating System ==&lt;br /&gt;
&lt;br /&gt;
=== Administrative ===&lt;br /&gt;
&lt;br /&gt;
==== Course Notes ====&lt;br /&gt;
The course webpage has been changed to point to this wiki.  Notes for lectures will continue to be posted here.&lt;br /&gt;
&lt;br /&gt;
We still need volunteers to take notes and put them up.  Don&amp;#039;t forget the up to 3% bonus for doing so.&lt;br /&gt;
&lt;br /&gt;
==== Lab 1 ====&lt;br /&gt;
&lt;br /&gt;
Lab 1 will be up soon. Starting tomorrow, there are labs. Please show up.&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re clever, you can probably find most of the answers online.  Avoid looking up the answers&lt;br /&gt;
though, because you&amp;#039;ll learn much more than the just answers if you explore&lt;br /&gt;
while using the computer.&lt;br /&gt;
&lt;br /&gt;
You&amp;#039;ll do better on the tests if you do the labs.&lt;br /&gt;
&lt;br /&gt;
The point of this course is to build up a conceptual model of&lt;br /&gt;
how computers work.  This conceptual model is not made up of answers, its made up&lt;br /&gt;
of connections.  You&amp;#039;ll start to make these connections by doing the labs.&lt;br /&gt;
&lt;br /&gt;
The Lab will posted as a PDF.  You can print it out to bring with it with you.&lt;br /&gt;
When you go to hand in the lab, print off your answers on a separate piece of paper.&lt;br /&gt;
Answers will be due in two weeks.&lt;br /&gt;
&lt;br /&gt;
All functioning lab machines are running Debian Linux 4.0 (etch).&lt;br /&gt;
They should be connected to the internet.  They should have a browser on them&lt;br /&gt;
called [IceWeasel http://en.wikipedia.org/wiki/Naming_conflict_between_Debian_and_Mozilla]. &lt;br /&gt;
Its really Mozilla Firefox.  Because Mozilla has trademarked the name Firefox,&lt;br /&gt;
in order to use their name, you have to use exactly their binary distribution.  Debian could&lt;br /&gt;
have had a waiver, but because Debian is about freedom, Debian didn&amp;#039;t want&lt;br /&gt;
the users of Debian to be bound by the terms of the Firefox agreement.&lt;br /&gt;
&lt;br /&gt;
One thing you&amp;#039;ll notice while studying operating systems is that there&amp;#039;s a lot&lt;br /&gt;
of culture.  This is because users get used to a particular way of doing things.&lt;br /&gt;
For example, lots of us are probably used to Windows and how it works.  If&lt;br /&gt;
you changed the fundamentals of how Windows worked, many of us would be unhappy.&lt;br /&gt;
&lt;br /&gt;
Some of the things we&amp;#039;ll be studying are based on decisions made long ago, often &lt;br /&gt;
arbitrarily of for a technical reason was true at the time.&lt;br /&gt;
Even if it was wrong the, or is now wrong, we&amp;#039;re often stuck with it.&lt;br /&gt;
&lt;br /&gt;
We&amp;#039;re going to look at some of the baggage in the operating systems as we progress in this course.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the lab, we&amp;#039;ll be given a set of questions in 2 parts.&lt;br /&gt;
&lt;br /&gt;
Part A we should be able to finish during the hour, give or take a few minutes.&lt;br /&gt;
If it takes you 3-4 hours, you&amp;#039;re probably doing something wrong.&lt;br /&gt;
&lt;br /&gt;
Part B will take longer. Will need more research, and a bit more reading. You&lt;br /&gt;
should be working together. If you have trouble finding a buddy, talk to Dr.&lt;br /&gt;
S. Talk to each other to learn. The purpose isn&amp;#039;t just about the right&lt;br /&gt;
answers, but more so about the operating systems.&lt;br /&gt;
&lt;br /&gt;
We&amp;#039;re going to look at:&lt;br /&gt;
&lt;br /&gt;
- Processes, and how Unix deals with them.&lt;br /&gt;
- How are the parts of the system divided up.&lt;br /&gt;
- Dynamic libraries, where they are, where they fit in memory.&lt;br /&gt;
- What are the dependencies.&lt;br /&gt;
- How does the graphical subsystem fit in there.  X-Windows, the classical&lt;br /&gt;
Unix graphical environment.&lt;br /&gt;
- Practice on the command line. (If you&amp;#039;re wondering where these fit in&lt;br /&gt;
in modern graphical environments, read Neal Stephenson&amp;#039;s essay)&lt;br /&gt;
&lt;br /&gt;
Try to finish part A in the lab.  &lt;br /&gt;
Answers due in class 2 weeks from today.&lt;br /&gt;
&lt;br /&gt;
==== Term Paper ====&lt;br /&gt;
&lt;br /&gt;
For the Term Paper... You don&amp;#039;t have to do a pure literature review.  You could&lt;br /&gt;
do an original operating system extension.  There&amp;#039;s one caveat:  You&amp;#039;ve got&lt;br /&gt;
to get what you&amp;#039;re going to do with the professor first.  You have to tell&lt;br /&gt;
him a week before the outline is due Oct 22nd.&lt;br /&gt;
&lt;br /&gt;
What types of things is he thinking of: Say you wanted to implement a new&lt;br /&gt;
file-system? This is inherently more work, because you still have to give a&lt;br /&gt;
nice write-up. The report should still cite other work.&lt;br /&gt;
&lt;br /&gt;
All of us should have started the process by next week, even if its just&lt;br /&gt;
googling for 15 minutes. Just google and see what results come up. IF you&lt;br /&gt;
start now, you&amp;#039;ll have time to pick a topic that you like, instead of the&lt;br /&gt;
first thing that comes along.  Its better to work on something you like,&lt;br /&gt;
instead of stuck reading papers you&amp;#039;re not interested in.&lt;br /&gt;
&lt;br /&gt;
If you want to find good OS papers:&lt;br /&gt;
* USENIX association has a number of systems oriented conferences.&lt;br /&gt;
** OSDI &lt;br /&gt;
** USENIX Annual Technical Conference&lt;br /&gt;
** LISA&lt;br /&gt;
&lt;br /&gt;
=== Using the Operating System ===&lt;br /&gt;
&lt;br /&gt;
Chapter 2 looks at the programming model of an operating system. &lt;br /&gt;
The operating system provides certain abstractions to help programmers work with it.&lt;br /&gt;
&lt;br /&gt;
What are some examples of abstractions?&lt;br /&gt;
&lt;br /&gt;
==== Files ====&lt;br /&gt;
&lt;br /&gt;
A file is a metaphor.  What was the original metaphor?  The manilla&lt;br /&gt;
coloured folder that we put paper in.  Its interesting to note that a file is used&lt;br /&gt;
to hold many pages or documents, but that a computer file is a single document.  Instead, a directory&lt;br /&gt;
holds many files, which are each generally one document. &lt;br /&gt;
The metaphor hasn&amp;#039;t made much sense for a long time, but it is still in use.&lt;br /&gt;
&lt;br /&gt;
What is a file?  &lt;br /&gt;
&lt;br /&gt;
A file is a bytestream you can read and write from.&lt;br /&gt;
&lt;br /&gt;
We also have an abstraction called a byte, 256 possible values, 0-255.&lt;br /&gt;
We as computer scientists think we can represent just about anything&lt;br /&gt;
with these.&lt;br /&gt;
&lt;br /&gt;
; file :  named bytestream(s). &lt;br /&gt;
&lt;br /&gt;
In modern operating systems there are potentially more than &lt;br /&gt;
one bytestream in a file.  When there is more than one bytestream, we&lt;br /&gt;
call this a forked file.&lt;br /&gt;
&lt;br /&gt;
An early operating system that used forked files was OS 9.&lt;br /&gt;
On a traditional system, you get a sequence of bytes&lt;br /&gt;
when you open a file.  In a forked file, when you read it, you get some data,&lt;br /&gt;
but there is also other data hanging around.  We&amp;#039;ll talk about that later.&lt;br /&gt;
&lt;br /&gt;
The standard API calls for a file are:&lt;br /&gt;
&lt;br /&gt;
* open&lt;br /&gt;
* read&lt;br /&gt;
* write&lt;br /&gt;
* close&lt;br /&gt;
* seek&lt;br /&gt;
&lt;br /&gt;
As well as a other operations that one might need to perform on files, such as:&lt;br /&gt;
* truncate&lt;br /&gt;
* append - (seek to end of file and write)&lt;br /&gt;
* execute&lt;br /&gt;
&lt;br /&gt;
Why open and close?  Why can&amp;#039;t we just operate on a filename?  &lt;br /&gt;
Because it (usually) takes a long time to go through the filesystem to find the files.&lt;br /&gt;
Open and close are optimizations -- the abstraction is a stateful interface.&lt;br /&gt;
You start by using open to obtain some sort of &amp;quot;handle&amp;quot; representing the file, &lt;br /&gt;
and pass this &amp;quot;handle&amp;quot; value to read and write.  When you&amp;#039;re done, closing the &lt;br /&gt;
file frees the resources allocated when opening the file.  On most systems&lt;br /&gt;
you can only have a specific number of files open at any given time.&lt;br /&gt;
&lt;br /&gt;
There are some filesystems where open and close don&amp;#039;t do much of anything,&lt;br /&gt;
such as some networked filesystems.&lt;br /&gt;
&lt;br /&gt;
File represent storage, on disks... They&amp;#039;re random access.  If they&amp;#039;re random access&lt;br /&gt;
like RAM, why don&amp;#039;t we access disks like we access RAM?   &lt;br /&gt;
Why couldn&amp;#039;t we just allocate objects as we need them?  We could indeed do this, but&lt;br /&gt;
it turns out that there&amp;#039;s a reason that we don&amp;#039;t generally do this.&lt;br /&gt;
&lt;br /&gt;
The file interface is a procedural interface.  &lt;br /&gt;
&lt;br /&gt;
One nice things about files is they&amp;#039;re a minimal functionality interface.  The concept of&lt;br /&gt;
minimal functionality is a recurring theme you&amp;#039;ll find when we discuss  filesystems.  &lt;br /&gt;
&lt;br /&gt;
The abstraction used to interface the filesystem&lt;br /&gt;
shouldn&amp;#039;t prohibit you from creating particular forms of applications.  If we chose &lt;br /&gt;
to use an object model, we&amp;#039;d be implying you don&amp;#039;t want to give arbitrary access to the&lt;br /&gt;
data on disk, as objects tend to encapsulate their data.&lt;br /&gt;
&lt;br /&gt;
The abstraction listed above is the minimal abstraction for efficiently&lt;br /&gt;
managing persistent storage (disks).&lt;br /&gt;
&lt;br /&gt;
This doesn&amp;#039;t necessarily mean this is the most absolutely minimal abstraction.  &lt;br /&gt;
An even more minimal abstraction would be&lt;br /&gt;
to just treat storage devices as a bunch of fixed size blocks.  However, that&amp;#039;s getting too low level,&lt;br /&gt;
 because now all programs have to worry about where they put files.&lt;br /&gt;
&lt;br /&gt;
Because the files abstract model is reasonably good, its stuck around for decades.&lt;br /&gt;
&lt;br /&gt;
Fundamentally, though, its a legacy.  Some models of filesystems try to get&lt;br /&gt;
away from it.  Look at the PalmOS - it resisted having files for a long time, but eventually&lt;br /&gt;
gave in to support removable media, but the primary OS and API still don&amp;#039;t support files.  &lt;br /&gt;
Microsoft&amp;#039;s been wanting to get away from the legacy files abstraction too, but &lt;br /&gt;
somehow it doesn&amp;#039;t seem to happen.&lt;br /&gt;
&lt;br /&gt;
===== Processes and Threads =====&lt;br /&gt;
&lt;br /&gt;
There&amp;#039;s lots of other devices, but from an OS level, there are two other big ones:&lt;br /&gt;
CPU and RAM.  These two are generally abstracted with processes.&lt;br /&gt;
The process is the basic abstraction in operating systems for these two,&lt;br /&gt;
but is not the only abstraction.  There are also threads.&lt;br /&gt;
&lt;br /&gt;
CPU + RAM are abstracted as:&lt;br /&gt;
* processes&lt;br /&gt;
* threads&lt;br /&gt;
&lt;br /&gt;
A process may have multiple threads.  A thread shares memory with its processes.&lt;br /&gt;
&lt;br /&gt;
* A process is an exclusive allocation of CPU and RAM.&lt;br /&gt;
* A thread is a non-exclusive allocation of RAM within a process,&lt;br /&gt;
but is an exclusive allocation of CPU.&lt;br /&gt;
* One or more threads constitute a process.&lt;br /&gt;
&lt;br /&gt;
Another way to talk about processes is in terms of address spaces and&lt;br /&gt;
execution context: &lt;br /&gt;
* An address space is just a virtual version of RAM. It may&lt;br /&gt;
be instantiated in physical memory, it may not be. Its a set of addresses you&lt;br /&gt;
can call your own. &lt;br /&gt;
* Execution context is CPU state (Registers, processor status&lt;br /&gt;
words, etc.). There&amp;#039;s lots of state surrounding the processor when its running&lt;br /&gt;
a program.  This state can be saved, and then restored later to resume execution&lt;br /&gt;
at a later time.&lt;br /&gt;
&lt;br /&gt;
* A thread is one execution context matched with an address space.&lt;br /&gt;
* A process is one or more execution contexts plus an address space.&lt;br /&gt;
* A single-threaded process has one execution context, and one address space.&lt;br /&gt;
* A multithreaded process has multiple execution contexts, and one address space.&lt;br /&gt;
&lt;br /&gt;
The concept of multiple address spaces is somewhat new in modern computing.&lt;br /&gt;
However, if you go back to the old days of MS-DOS, there was only one address space, the&lt;br /&gt;
physical address space.  We used to have things like TSRs, a 640kb limit,&lt;br /&gt;
etc.  There was no virtualization of memory.  In order to run at the same&lt;br /&gt;
time, they had to co-exist in the physical memory address space.&lt;br /&gt;
&lt;br /&gt;
If you don&amp;#039;t have multiple address spaces, you don&amp;#039;t have processes and threads.&lt;br /&gt;
At best, you have threads, sharing the one address space you have.&lt;br /&gt;
&lt;br /&gt;
Historically, threads were abstracted differently than now: These are&lt;br /&gt;
capitalized here to differentiate them from the newer terms: FORK, JOIN, QUIT.&lt;br /&gt;
&lt;br /&gt;
Why FORK?  Think of a fork in the road.  You&amp;#039;re going along, then things split.&lt;br /&gt;
A FORK is supposed to represent that split.&lt;br /&gt;
&lt;br /&gt;
By FORKing, the main thing to note is that you&amp;#039;re creating two execution&lt;br /&gt;
contexts, that may be sharing memory. The execution may start at the same&lt;br /&gt;
place, but may be diverging. How do you stop creating more and more and more&lt;br /&gt;
of these, to bring them back under control or stop them? That&amp;#039;s the JOIN&lt;br /&gt;
operation. Each thread tracks how many threads are running, if you JOIN and&lt;br /&gt;
you&amp;#039;re not the last one running, you just go away, otherwise you need to&lt;br /&gt;
synchronize back into the main thread.&lt;br /&gt;
&lt;br /&gt;
What&amp;#039;s QUIT? QUIT stops the the whole program -- all execution. It will cut&lt;br /&gt;
all threads off, even if the thread is one of the branches and not the main&lt;br /&gt;
thread.&lt;br /&gt;
&lt;br /&gt;
This was one of the earliest ways to abstract multiple execution context.&lt;br /&gt;
&lt;br /&gt;
What if, when you did the fork, you made a copy of the entire process? There&lt;br /&gt;
are now two separate instances of the program, with the same state? The&lt;br /&gt;
difference here, is if you quit one, the other will stay around -- but the&lt;br /&gt;
difference is more profound: they&amp;#039;re not sharing the same address space (nor&lt;br /&gt;
execution context). This is the Unix model of processes.&lt;br /&gt;
&lt;br /&gt;
In the Unix process model the system starts with only one process: init. It&lt;br /&gt;
starts running, then it creates a copy of itself with fork, then another, etc.&lt;br /&gt;
&lt;br /&gt;
TODO: diagram&lt;br /&gt;
&lt;br /&gt;
In this diagram, What is the value of &amp;#039;&amp;#039;x?&amp;#039;&amp;#039; on the bottom-left-most branch?&lt;br /&gt;
&amp;#039;&amp;#039;x&amp;#039;&amp;#039; is 5 in the Unix process model. However, if this was multithreaded,&lt;br /&gt;
&amp;#039;&amp;#039;x&amp;#039;&amp;#039; could be 7 or 5, depending on how fast the threads are running. It might&lt;br /&gt;
be 5 if the thread asking for the value of &amp;#039;&amp;#039;x&amp;#039;&amp;#039; runs before the thread setting &amp;#039;&amp;#039;x&amp;#039;&amp;#039;&lt;br /&gt;
to 7. This is known as a race condition, &lt;br /&gt;
because we don&amp;#039;t know which thread will run or finish first.&lt;br /&gt;
&lt;br /&gt;
In Unix, they decided to make it easy and have different processes. These&lt;br /&gt;
processes can&amp;#039;t change the state of their parents or children. &lt;br /&gt;
To share a value, you have to set the value before forking.  (Or through other means)&lt;br /&gt;
&lt;br /&gt;
There&amp;#039;s a small glitch with what we&amp;#039;ve said so far about Unix processes: That&lt;br /&gt;
they have exactly the same state when you fork. If this was true, they&amp;#039;d&lt;br /&gt;
always do the same thing.  How do they know that they&amp;#039;re different?&lt;br /&gt;
&lt;br /&gt;
Turns out that Unix fork is very simple, yet it helps with this.&lt;br /&gt;
The idiom you&amp;#039;ll usually see is:&lt;br /&gt;
  &lt;br /&gt;
 pid = fork();&lt;br /&gt;
  &lt;br /&gt;
fork takes no arguments.&lt;br /&gt;
&lt;br /&gt;
When you fork, the result of fork is the pid (process ID) of the new process,&lt;br /&gt;
or 0 if you&amp;#039;re the child.&lt;br /&gt;
&lt;br /&gt;
The tree of processes effectively becomes a family tree. (However, with some&lt;br /&gt;
bizarre genealogy that we&amp;#039;ll see later)&lt;br /&gt;
&lt;br /&gt;
What you usually do is check the value of pid, and if its 0, do one thing,&lt;br /&gt;
otherwise do something else. If pid is nonzero, it is the pid of the child&lt;br /&gt;
process we just created by forking. You usually use this to track your child.&lt;br /&gt;
The classic use of fork is to create disposable children that do a specific&lt;br /&gt;
task for a short while, then go away.&lt;br /&gt;
&lt;br /&gt;
The nice thing about this model is that it keeps things separate. You don&amp;#039;t&lt;br /&gt;
need to worry about what the child is doing. If you want to communicate, you&lt;br /&gt;
have to explicitly set up to do this. There are some standard ways of doing&lt;br /&gt;
that communication.  We&amp;#039;ll look at these later too.&lt;br /&gt;
&lt;br /&gt;
So now we know how to make new processes? How do we do something different? In&lt;br /&gt;
principle we don&amp;#039;t need anything else. We could open a file, read new code,&lt;br /&gt;
then jump to the new code.  However, we have the idea of exec(). &lt;br /&gt;
Exec  replaces the running program with the specified program, but preserves&lt;br /&gt;
the pid.&lt;br /&gt;
&lt;br /&gt;
In Unix, to start a new program you usually fork() then you exec() the desired&lt;br /&gt;
program on the child.  If you don&amp;#039;t fork() first, then exec() will kill the&lt;br /&gt;
original process, replacing it with the program you called exec on.&lt;br /&gt;
&lt;br /&gt;
Exec causes the kernel to throw away the old address space, and give a new&lt;br /&gt;
address space, with the new binary.  The pid stays the same though.&lt;br /&gt;
&lt;br /&gt;
The Windows equivalent is CreateProcess()&lt;br /&gt;
&lt;br /&gt;
CreateProcess() takes lots of arguments about how to create the new&lt;br /&gt;
process (what to load, permissions, etc).  Fork takes none.  With fork(), &lt;br /&gt;
you can set things up yourself, and most of the settings will carry over to&lt;br /&gt;
the new program. (Including open files).  Note how different these two are.&lt;br /&gt;
&lt;br /&gt;
In Unix, you have the building blocks to do things, and you have to put them&lt;br /&gt;
together yourself. In Windows, you have the single API call to do them all at&lt;br /&gt;
once. Neither is strictly right or wrong.&lt;br /&gt;
&lt;br /&gt;
On older systems, when a big process was forked, everything was copied. On&lt;br /&gt;
newer systems, fork doesn&amp;#039;t necessarily copy everything. With virtual memory&lt;br /&gt;
you can share much of the memory between two processes.&lt;br /&gt;
&lt;br /&gt;
In older APIs there was vfork() - suspend parent, fork, exec, then let the&lt;br /&gt;
parent and child both start to go again.  This idea avoided the copying when&lt;br /&gt;
the first thing you were going to do was exec.&lt;br /&gt;
&lt;br /&gt;
The basic idea to make this efficient is that the descriptions of the virtual&lt;br /&gt;
memory address spaces don&amp;#039;t have to be mutually exclusive.  You could have&lt;br /&gt;
10 programs sharing portions of their address space -- such as the read-only&lt;br /&gt;
portions like the program code, but not the read-write portions.&lt;br /&gt;
&lt;br /&gt;
What if you didn&amp;#039;t want to do an exec after forking? A classic one is a&lt;br /&gt;
daemon. One listening on the network for an incoming connection. When that&lt;br /&gt;
incoming request comes in, the main program can deal with the request, but it&lt;br /&gt;
would also have to keep checking for more requests at the same time. Instead,&lt;br /&gt;
in Unix the typically idiom is to fork off a child to process that connection,&lt;br /&gt;
and then go back and wait for more.&lt;br /&gt;
&lt;br /&gt;
You can have shared memory.  But the default model for processes is&lt;br /&gt;
that nothing is shared, but the threading model is everything is shared.&lt;br /&gt;
For threads you have to implement protections, but for processes, you have to&lt;br /&gt;
opt-in to share.&lt;br /&gt;
&lt;br /&gt;
Processes win out on reliability: fewer chances for errors.  You control&lt;br /&gt;
exactly what state is shared.&lt;br /&gt;
&lt;br /&gt;
Another thing we&amp;#039;ll talk about later regarding threads versus processes is&lt;br /&gt;
how does this play on multiple cores?  This depends on the implementation,&lt;br /&gt;
and sometimes is a little tricky.&lt;br /&gt;
&lt;br /&gt;
Chapter two is talking about the model presented to the programmer.  An API&lt;br /&gt;
for your processes and threads to talk to the world.&lt;br /&gt;
&lt;br /&gt;
This course is fundamentally about how these things are implemented. Its&lt;br /&gt;
useful to know about these tricks, so that you know how the computer is used.&lt;br /&gt;
It turns out the same tricks are useful in lots of other circumstances. Such&lt;br /&gt;
as concurrency - when you have to deal with an application that has to deal&lt;br /&gt;
with this - which happens to be most applications. You&amp;#039;ll learn this because&lt;br /&gt;
the OS guys did this first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Graphics ====&lt;br /&gt;
&lt;br /&gt;
This part of the lecture should help you with the lab.  Its about graphics.&lt;br /&gt;
&lt;br /&gt;
We&amp;#039;ve talked about some standard abstractions so far: files, processes, threads.&lt;br /&gt;
&lt;br /&gt;
However, the thing you really interact with is the keyboard, mouse, and&lt;br /&gt;
display. In the standard Unix model, these are not a part of the operating&lt;br /&gt;
system. They&amp;#039;re implemented in an application.&lt;br /&gt;
&lt;br /&gt;
The Unix philosophy is that if you don&amp;#039;t have to put it in the kernel,&lt;br /&gt;
don&amp;#039;t put it there, or if you do, make it interchangeable.&lt;br /&gt;
&lt;br /&gt;
The standard way to do graphics in Unix is X-Windows, or X for short.&lt;br /&gt;
Before X there was the W system.  There was a Y system at one point,&lt;br /&gt;
as well as Sun NeWs.&lt;br /&gt;
&lt;br /&gt;
There was also a system called Display Postscript.  Postscript is a&lt;br /&gt;
fully fledged programming language.  Originally used for printers.&lt;br /&gt;
It was developed for laser printers, by a little company called Adobe.&lt;br /&gt;
When laser printers came out, they had really high resolutions.  It was&lt;br /&gt;
hard to get the data necessary to print a page to the printer fast&lt;br /&gt;
enough...  So postscript programs were sent to the printer.  In the&lt;br /&gt;
early days of the MacIntosh, the processor in the printer was more powerful&lt;br /&gt;
than the processor in the computer.  Postscript is a funny little language.&lt;br /&gt;
Its a post-fix operator language.  Instead of saying things like &amp;quot;4+5&amp;quot; you&lt;br /&gt;
say &amp;quot;4 5 +&amp;quot; -- you push them onto the stack, then run an operator on them.&lt;br /&gt;
The same with function calls.&lt;br /&gt;
&lt;br /&gt;
In the 80s, there were many competing technologies for how to do graphics&lt;br /&gt;
in the Unix world.  X won.  But Display Postscript also kind of won,&lt;br /&gt;
because Macs use Display PDF in a system called Quartz, which was&lt;br /&gt;
created as a successor to Display Postscript. Because Postscript was linear,&lt;br /&gt;
it was hard to parallelize.  PDF is easier to parallelize.&lt;br /&gt;
&lt;br /&gt;
NeXT was the one that used Display Postscript first... NeXT was founded by&lt;br /&gt;
Steve Jobs. OS X is Unix with Display PDF... And you can run X-Windows on top&lt;br /&gt;
of that.&lt;br /&gt;
&lt;br /&gt;
X-Windows lets you open windows on remote computers. The way you create a&lt;br /&gt;
window on your local computer is the same way that you open a window on a&lt;br /&gt;
remote computer, 1000s of miles away. X is based on something called the X&lt;br /&gt;
Window Protocol. It just happens to work locally as well (with some&lt;br /&gt;
optimization like shared memory), but the messages were designed to work well&lt;br /&gt;
over ethernet.&lt;br /&gt;
&lt;br /&gt;
This was created by folks that wanted to talk to hundreds of computers, such&lt;br /&gt;
as the supercomputer in another room... but they wanted to see the windows&lt;br /&gt;
on their own computer.&lt;br /&gt;
&lt;br /&gt;
Consider what you have to do to see a remote window in Windows. You fire up&lt;br /&gt;
Remote Desktop Client, and you get the whole desktop remotely. If you want to&lt;br /&gt;
do 10 computers, you end up with 10 windows with 10 desktops and 10 start&lt;br /&gt;
buttons. This difference is a result of X-Windows being designed for networks&lt;br /&gt;
and Windows being designed for one computer.&lt;br /&gt;
&lt;br /&gt;
The terminology for X-Windows is a bit backwards from what we&amp;#039;re used to: The&lt;br /&gt;
server is what we mostly think of of as a client.  The server is what controls&lt;br /&gt;
access to the display: it runs where your display is to control your display,&lt;br /&gt;
mouse, keyboard... And to display a window, remotely or locally, you run a&lt;br /&gt;
program known as a client in X-Windows which connects over the network to&lt;br /&gt;
display a window on your X-Windows server.&lt;br /&gt;
&lt;br /&gt;
A funny thing about X is it took the abstraction to an extreme. The people who&lt;br /&gt;
created X-Windows didn&amp;#039;t know anything about usability or graphics or art. The&lt;br /&gt;
original X-Windows tools were created by regular programmers. Technically&lt;br /&gt;
underneath its very nice.. But they knew they didn&amp;#039;t know, so they made it so&lt;br /&gt;
the user could decide what it should look like themselves. So that you can&lt;br /&gt;
just switch out a few programs and things keep on working.&lt;br /&gt;
&lt;br /&gt;
This means that when you do things like moving your mouse to a window -- what&lt;br /&gt;
happens? Do you take focus or not? This is something known as click to focus.&lt;br /&gt;
In older X Systems, you could just point your mouse there, and focus followed.&lt;br /&gt;
This is potentially very efficient, but also very confusing if you&amp;#039;re not used&lt;br /&gt;
to it... Or how do you handle key sequences, or minimize? Who decides how to&lt;br /&gt;
do this all? They had the idea of something called a Window Manager. This goes&lt;br /&gt;
back to X Servers providing the technical minimums so that you&amp;#039;re not limited&lt;br /&gt;
to one behaviour. The Window Manager is just another X client, with some&lt;br /&gt;
special privileges so it can run anywhere. It could run 1000s of miles away.&lt;br /&gt;
&lt;br /&gt;
This is why on Linux there&amp;#039;s Gnome, KDE, etc. There&amp;#039;s Motif, GTK, QT, IceWM,&lt;br /&gt;
Aferstep, Blackbox, Sawfish, fvwm, twm. Etc. Other graphical toolkits too,&lt;br /&gt;
abstracted away. These choices are all available there because the X-Windows&lt;br /&gt;
people left it very open by not making the choice for us. This does make&lt;br /&gt;
things a little confusing at times, though, because each application could&lt;br /&gt;
have different assumptions.&lt;/div&gt;</summary>
		<author><name>Rhooper</name></author>
	</entry>
</feed>