<?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=Hassansaid</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=Hassansaid"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Hassansaid"/>
	<updated>2026-05-12T18:06:38Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20793</id>
		<title>SystemsSec 2016W Lecture 13</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20793"/>
		<updated>2016-03-08T01:20:30Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Classic Buffer Overflow Attack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Topics &amp;amp; Readings ==&lt;br /&gt;
* Reading: Aleph One (aka Elias Levy), [http://www.phrack.com/issues/49/14.html#article Smashing The Stack For Fun And Profit] (Phrack 49, 1996)&lt;br /&gt;
* Buffer Overflow Attack&lt;br /&gt;
* Memory Corruption Attack&lt;br /&gt;
&lt;br /&gt;
== Class Notes ==&lt;br /&gt;
&lt;br /&gt;
==== Unsafe Language ====&lt;br /&gt;
Defined as languages, such as C, that are susceptible to buffer overflow attacks. Safe languages are not susceptible because they have really strong compilers.&lt;br /&gt;
&lt;br /&gt;
Secure systems are not susceptible to overflow attacks because the reference monitor is small enough to verify and remove any bugs. The reference monitor is also resilient due to the fact that it is outside the domain of process execution.&lt;br /&gt;
&lt;br /&gt;
==== Memory Corruption Attack ====&lt;br /&gt;
[[File:systemMemory.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Figure 1:&#039;&#039;&#039; System structure with certain portions of memory re severed for those types&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a buffer overflow attack you can essentially over write some other portion of memory. For example an attacker may put too much information into the memory portion reserved for string such that it overflows into the memory space reserved for array. Safe languages such as Java are not susceptible to memory corruption attacks unless there is some bug in the compiler.&lt;br /&gt;
&lt;br /&gt;
A common way to know that your code is vulnerable to a buffer overflow/memory corruption attack is if you get a segmentation fault.&lt;br /&gt;
&lt;br /&gt;
==== Classic Buffer Overflow Attack ====&lt;br /&gt;
[[File:ClassicBufferOverflow.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Figure 2:&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Code Pointer:&#039;&#039;&#039; Not typically writing to pointer. You are writing to region of memory where the pointer is. &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Bad Code:&#039;&#039;&#039; The bad code attacker injects is &amp;quot;shell code&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The bad code comes from user input (network, keyboard, disk), in the program itself (just run in different way), environment variable. You can use function pointers, etc, but most code pointers used are return addresses. Return addresses are stored on stack (built in modern processes). You have stack for local variables (when you enter function you allocate space for that function, and when you return from that function you clean up local variables). There is no requirement that local variable stack and return address stack be the same but in practice they are. Local variables stick around longer, and it can be something that attackers can modify. Local variables can be modified using C functions such as gets().&lt;br /&gt;
&lt;br /&gt;
Since attackers are trying to change the code pointer to their bad code, they must figure out where their code is in memory. To do this the bad code is created in such a way that there is a &amp;quot;landing strip&amp;quot; at the beginning of the code. This &amp;quot;landing strip&amp;quot; is usually a bunch of NO OPS. This gives an attacker a bit of extra cushion to ensure that their code could be executed.&lt;br /&gt;
&lt;br /&gt;
==== Buffer Overflow Prevention ====&lt;br /&gt;
&#039;&#039;&#039; Fuzzing &#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
To find Buffer Overflow/Memory Corruption Attack vulnerability you try to find segmentation fault using fuzzing. Fuzzing: you take program and throw well formed legitimate data at it first. As the fuzzing progresses you tweak it (essentially starts well formed and then gets more random). Fuzzing can be done without source code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Randomization of Stack &#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
Buffer Overflow defenses make it hard to find landing strip. The best method is to make it hard for attacker to store bad code in memory (example randomize stack).&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20792</id>
		<title>SystemsSec 2016W Lecture 13</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20792"/>
		<updated>2016-03-08T01:13:27Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Memory Corruption Attack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Topics &amp;amp; Readings ==&lt;br /&gt;
* Reading: Aleph One (aka Elias Levy), [http://www.phrack.com/issues/49/14.html#article Smashing The Stack For Fun And Profit] (Phrack 49, 1996)&lt;br /&gt;
* Buffer Overflow Attack&lt;br /&gt;
* Memory Corruption Attack&lt;br /&gt;
&lt;br /&gt;
== Class Notes ==&lt;br /&gt;
&lt;br /&gt;
==== Unsafe Language ====&lt;br /&gt;
Defined as languages, such as C, that are susceptible to buffer overflow attacks. Safe languages are not susceptible because they have really strong compilers.&lt;br /&gt;
&lt;br /&gt;
Secure systems are not susceptible to overflow attacks because the reference monitor is small enough to verify and remove any bugs. The reference monitor is also resilient due to the fact that it is outside the domain of process execution.&lt;br /&gt;
&lt;br /&gt;
==== Memory Corruption Attack ====&lt;br /&gt;
[[File:systemMemory.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Figure 1:&#039;&#039;&#039; System structure with certain portions of memory re severed for those types&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a buffer overflow attack you can essentially over write some other portion of memory. For example an attacker may put too much information into the memory portion reserved for string such that it overflows into the memory space reserved for array. Safe languages such as Java are not susceptible to memory corruption attacks unless there is some bug in the compiler.&lt;br /&gt;
&lt;br /&gt;
A common way to know that your code is vulnerable to a buffer overflow/memory corruption attack is if you get a segmentation fault.&lt;br /&gt;
&lt;br /&gt;
==== Classic Buffer Overflow Attack ====&lt;br /&gt;
[[File:ClassicBufferOverflow.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Figure 2:&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Code Pointer:&#039;&#039;&#039; Not typically writing to pointer. You are writing to region you where pointer is.&lt;br /&gt;
&#039;&#039;&#039;Bad Code:&#039;&#039;&#039; The bad code attacker injects is &amp;quot;shell code&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The bad code comes from user input (network, keyboard, disk), in the program itself (just run in different way), environment variable. You can use function pointers, etc, but most code pointers used are return addresses. Return addresses are stored on stack (built in modern processes). You have stack for local variables (when you enter function you allocate space for that function, and when you return from that function you clean up local variables). There is no requirement that local variable stack and return address stack be the same but in practice they are. Local variables stick around longer, and it can be something that attackers can modify. Local variables can be modified using C functions such as gets().&lt;br /&gt;
&lt;br /&gt;
Since attackers are trying to change the code pointer to their bad code, they must figure out where their code is in memory. To do this the bad code is created in such a way that there is a &amp;quot;landing strip&amp;quot; at the beginning of the code. This &amp;quot;landing strip&amp;quot; is usually a bunch of NO OPS. This gives an attacker a bit of extra cushion to ensure that their code could be executed.&lt;br /&gt;
&lt;br /&gt;
==== Buffer Overflow Prevention ====&lt;br /&gt;
&#039;&#039;&#039; Fuzzing &#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
To find Buffer Overflow/Memory Corruption Attack vulnerability you try to find segmentation fault using fuzzing. Fuzzing: you take program and throw well formed legitimate data at it first. As the fuzzing progresses you tweak it (essentially starts well formed and then gets more random). Fuzzing can be done without source code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Randomization of Stack &#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
Buffer Overflow defenses make it hard to find landing strip. The best method is to make it hard for attacker to store bad code in memory (example randomize stack).&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Computer_Systems_Security_(Winter_2016)&amp;diff=20791</id>
		<title>Computer Systems Security (Winter 2016)</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Computer_Systems_Security_(Winter_2016)&amp;diff=20791"/>
		<updated>2016-03-07T08:22:50Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Lectures and Exams */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Course Outline==&lt;br /&gt;
&lt;br /&gt;
[[Computer Systems Security: Winter 2016 Course Outline|Here]] is the course outline.&lt;br /&gt;
&lt;br /&gt;
==Hacking Opportunities==&lt;br /&gt;
&lt;br /&gt;
The [[SystemsSec 2016W Hacking Opportunities|Hacking Opportunities]] page lists potential hacking opportunities that you can attempt for your hacking journal.  If you attempt but do not successfully accomplish one of them, be sure to document what you tried.  As you learn more, you may come back to them and try again.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
===Readings===&lt;br /&gt;
&lt;br /&gt;
* For the first part of the course we will be reading selections from Trent Jaeger&#039;s [http://www.morganclaypool.com/doi/abs/10.2200/S00126ED1V01Y200808SPT001 Operating Systems Security] textbook.  You can download the PDF [http://www.morganclaypool.com.proxy.library.carleton.ca/doi/abs/10.2200/S00126ED1V01Y200808SPT001 through Carleton&#039;s library].  In the reading assignments this text will be referred to as &amp;quot;Jaeger&amp;quot;.&lt;br /&gt;
* An excellent but dated text on browser security is Michal Zalewski&#039;s [https://code.google.com/p/browsersec/wiki/Main Browser Security Handbook].&lt;br /&gt;
&lt;br /&gt;
===Other Courses===&lt;br /&gt;
&lt;br /&gt;
* Dan Boneh ran an excellent course at Stanford in Spring 2015 on [https://crypto.stanford.edu/cs155/ Computer and Network Security].  This course has many interesting readings that we will not be covering.  Also, the assignments are very good sources for hacking opportunities.&lt;br /&gt;
* The assignments from the Winter 2015 run of COMP 4108 [https://ccsl.carleton.ca/~dmccarney/COMP4108/ are available].  They are a reasonable start for several hacking opportunities.&lt;br /&gt;
&lt;br /&gt;
==Lectures and Exams==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%;&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Date&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Topic&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Readings&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 7&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 1|Introduction]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 1 (Introduction)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 12&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 2|Access Control, Security Hacking 101]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 2 (Access Control Fundamentals)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 14&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 3|Multics, UNIX, and Windows]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 3 (Multics) and Chapter 4 (UNIX &amp;amp; Windows) &amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 19&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 4|Secure OSs, theory and practice]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 6 (Security Kernels) and Chapter 7 (Securing Commercial Operating Systems)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 21&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 5|LSM, SELinux, &amp;amp; Capabilities]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 9 (LSM &amp;amp; SELinux) and Chapter 10 (Secure Capability Systems)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 26&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 6|Secure Virtual Machines, Systems Assurance]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 11 (Secure Virtual Machine Systems) and Chapter 12 (System Assurance)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 28&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 7|Lecture 7]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 2&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 8|Lecture 8]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 4&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 9|Defensive Security Technologies / Hacking Opportunities]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 9&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 10|Security Research, Hashes, and Secure Protocols]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 11&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 11|Modeling a potential attack/ Midterm FAQ]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 23&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 12|Midterm Review]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 25&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Midterm (in class)&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 1&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 13|Buffer Overflow/Memory Corruption Attacks]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Aleph One (aka Elias Levy), [http://www.phrack.com/issues/49/14.html#article Smashing The Stack For Fun And Profit] (Phrack 49, 1996)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 3&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 14|Lecture 14]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Wikipedia, [https://en.wikipedia.org/wiki/Buffer_overflow_protection Buffer Overflow Protection]&amp;lt;br&amp;gt;&lt;br /&gt;
       Crispin Cowan et al., [https://www.usenix.org/legacy/publications/library/proceedings/sec98/cowan.html StackGuard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks] (USENIX Security, 1998)&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 8&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 15|Lecture 15]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Hovav Shacham et al., [http://dx.doi.org/10.1145/1030083.1030124 On the effectiveness of address-space randomization] (ACM CCS, 2004) [http://dl.acm.org.proxy.library.carleton.ca/ft_gateway.cfm?id=1030124&amp;amp;ftid=285463&amp;amp;dwn=1&amp;amp;CFID=588127386&amp;amp;CFTOKEN=74533951 (proxy)]&amp;lt;br&amp;gt;&lt;br /&gt;
           Hovav Shachem [http://dx.doi.org/10.1145/1315245.1315313 The geometry of innocent flesh on the bone: return-into-libc without function calls (on the x86)] (ACM CCS 2007) [http://dl.acm.org.proxy.library.carleton.ca/ft_gateway.cfm?id=1315313&amp;amp;ftid=476749&amp;amp;dwn=1&amp;amp;CFID=588127386&amp;amp;CFTOKEN=74533951 (proxy)]&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 10&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 16|Lecture 16]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Bellovin and Cheswick, [http://dx.doi.org/10.1109/35.312843 Network Firewalls] (IEEE Communications Magazine, 1994) [http://ieeexplore.ieee.org.proxy.library.carleton.ca/stamp/stamp.jsp?tp=&amp;amp;arnumber=312843 (proxy)]&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 15&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 17|Lecture 17]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 17&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 18|Lecture 18]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 22&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 19|Lecture 19]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 24&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 20|Lecture 20]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 29&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 21|Lecture 21]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 31&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 22|Lecture 22]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Apr. 5&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 23|Lecture 23]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;April 7&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 24|Lecture 24]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;April 19, 9 AM&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Final Exam&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assignments==&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%;&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Due Date&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Assignments&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 30&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W: Assignment 1|Assignment 1]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 22&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W: Assignment 2|Assignment 2]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 19&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W: Assignment 3|Assignment 3]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;April 4&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W: Assignment 4|Assignment 4]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture Notes Guidelines==&lt;br /&gt;
&lt;br /&gt;
Part of your participation mark is doing notes for at least one of the lectures.  Here are the guidelines for those notes.&lt;br /&gt;
&lt;br /&gt;
The class TA Borke (BorkeObadaObieh at cmail.carleton.ca) will be handling course notes.  Please contact her to schedule your class to take notes.&lt;br /&gt;
&lt;br /&gt;
Borke or Anil will set you up with an account on this wiki.  You&#039;ll enter your initial draft notes here and then work with Borke to make sure they are of sufficient quality.  This may require a few rounds of revisions; however, if you follow the guidelines below it shouldn&#039;t be too bad.&lt;br /&gt;
&lt;br /&gt;
You should plan on organizing your notes as follows:&lt;br /&gt;
* Organize them in at least the following sections: Topics &amp;amp; Readings and Notes.&lt;br /&gt;
* The Topics &amp;amp; Readings section lists the main topics covered in the class, e.g. &amp;quot;buffer overflows&amp;quot;.  Please use an unordered bulleted list (using *&#039;s in wiki markup).  In this section also list readings relevant to the lecture that were mentioned in class.&lt;br /&gt;
* Put your notes in the Notes section.&lt;br /&gt;
&lt;br /&gt;
Use (nested) lists if appropriate for the notes; however, please have some text that isn&#039;t bulleted.  Please try to make the notes even if you did not attend lecture; however, you don&#039;t need to cover every small bit of information that was covered.  In particular the notes do not need to include digressions into topics only tangentially related to the course.  Complete sentences are welcome but not required.&lt;br /&gt;
&lt;br /&gt;
==Security Reading Analysis Guidelines==&lt;br /&gt;
&lt;br /&gt;
A security reading analysis is a detailed analysis of a security research paper.  In it you analyze the key arguments of the paper and give your informed opinion.&lt;br /&gt;
&lt;br /&gt;
Most security papers can be classified as attack or defense papers.  You should analyze them differently.&lt;br /&gt;
&lt;br /&gt;
For attack papers:&lt;br /&gt;
* What systems are vulnerable to the attack?&lt;br /&gt;
* What is the nature of the vulnerability?&lt;br /&gt;
* What is the the exploit?  In particular, what is its technical core?&lt;br /&gt;
* How reproducible is the exploit?&lt;br /&gt;
* Are there likely to be many similar exploits, in the targeted system or other systems?&lt;br /&gt;
* How difficult will it be mitigate/fix the vulnerability in targeted systems?&lt;br /&gt;
&lt;br /&gt;
For defense papers:&lt;br /&gt;
* What is the security problem the paper addresses?  In what kind of threat model(s) does the problem exist?&lt;br /&gt;
* How significant is the problem?  Specifically, to what degree do existing solutions not work sufficiently well?&lt;br /&gt;
* What is the defense?  How does it work?&lt;br /&gt;
* To what degree will the defense potentially solve the targeted security problem?  In particular, how difficult will it be for attackers to adapt to this defense?&lt;br /&gt;
* What are the challenges facing deployment of the defense?  Are they likely to be overcome?&lt;br /&gt;
&lt;br /&gt;
For both kinds of papers, you should give your reaction by addressing questions like the following:&lt;br /&gt;
* Did you like the paper?&lt;br /&gt;
* What it easy to understand, or was it hard to read?&lt;br /&gt;
* Did you learn much from the paper?&lt;br /&gt;
* How surprised were you by the result?&lt;br /&gt;
&lt;br /&gt;
Your analysis should not cover the above questions separately (this would tend to make for a very wordy analysis); instead, use these questions as a guide in writing a short essay (1-2 pages) on the paper in question.&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20780</id>
		<title>SystemsSec 2016W Lecture 13</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20780"/>
		<updated>2016-03-03T00:31:54Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Topics &amp;amp; Readings ==&lt;br /&gt;
* Reading: Aleph One (aka Elias Levy), [http://www.phrack.com/issues/49/14.html#article Smashing The Stack For Fun And Profit] (Phrack 49, 1996)&lt;br /&gt;
* Buffer Overflow Attack&lt;br /&gt;
* Memory Corruption Attack&lt;br /&gt;
&lt;br /&gt;
== Class Notes ==&lt;br /&gt;
&lt;br /&gt;
==== Unsafe Language ====&lt;br /&gt;
Defined as languages, such as C, that are susceptible to buffer overflow attacks. Safe languages are not susceptible because they have really strong compilers.&lt;br /&gt;
&lt;br /&gt;
Secure systems are not susceptible to overflow attacks because the reference monitor is small enough to verify and remove any bugs. The reference monitor is also resilient due to the fact that it is outside the domain of process execution.&lt;br /&gt;
&lt;br /&gt;
==== Memory Corruption Attack ====&lt;br /&gt;
[[File:systemMemory.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Figure 1:&#039;&#039;&#039; System structure with certain portions of memory re severed for those types&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In a buffer overflow attack you can essentially over write some other portion of memory. For example an attacker may put to much information into the memory portion reserved for string such that it overflows into the memory space reserved for array. Safe languages such as Java are not susceptible to memory corruption attacks unless there is some bug in the compiler.&lt;br /&gt;
&lt;br /&gt;
A common way to know that your code is vulnerable to a buffer overflow/memory corruption attack is if you get a segmentation fault.&lt;br /&gt;
&lt;br /&gt;
==== Classic Buffer Overflow Attack ====&lt;br /&gt;
[[File:ClassicBufferOverflow.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Figure 2:&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Code Pointer:&#039;&#039;&#039; Not typically writing to pointer. You are writing to region you where pointer is.&lt;br /&gt;
&#039;&#039;&#039;Bad Code:&#039;&#039;&#039; The bad code attacker injects is &amp;quot;shell code&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The bad code comes from user input (network, keyboard, disk), in the program itself (just run in different way), environment variable. You can use function pointers, etc, but most code pointers used are return addresses. Return addresses are stored on stack (built in modern processes). You have stack for local variables (when you enter function you allocate space for that function, and when you return from that function you clean up local variables). There is no requirement that local variable stack and return address stack be the same but in practice they are. Local variables stick around longer, and it can be something that attackers can modify. Local variables can be modified using C functions such as gets().&lt;br /&gt;
&lt;br /&gt;
Since attackers are trying to change the code pointer to their bad code, they must figure out where their code is in memory. To do this the bad code is created in such a way that there is a &amp;quot;landing strip&amp;quot; at the beginning of the code. This &amp;quot;landing strip&amp;quot; is usually a bunch of NO OPS. This gives an attacker a bit of extra cushion to ensure that their code could be executed.&lt;br /&gt;
&lt;br /&gt;
==== Buffer Overflow Prevention ====&lt;br /&gt;
&#039;&#039;&#039; Fuzzing &#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
To find Buffer Overflow/Memory Corruption Attack vulnerability you try to find segmentation fault using fuzzing. Fuzzing: you take program and throw well formed legitimate data at it first. As the fuzzing progresses you tweak it (essentially starts well formed and then gets more random). Fuzzing can be done without source code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Randomization of Stack &#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
Buffer Overflow defenses make it hard to find landing strip. The best method is to make it hard for attacker to store bad code in memory (example randomize stack).&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:ClassicBufferOverflow.png&amp;diff=20779</id>
		<title>File:ClassicBufferOverflow.png</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:ClassicBufferOverflow.png&amp;diff=20779"/>
		<updated>2016-03-03T00:00:08Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:SystemMemory.png&amp;diff=20778</id>
		<title>File:SystemMemory.png</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:SystemMemory.png&amp;diff=20778"/>
		<updated>2016-03-03T00:00:00Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20777</id>
		<title>SystemsSec 2016W Lecture 13</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20777"/>
		<updated>2016-03-02T23:59:23Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Topics &amp;amp; Readings ==&lt;br /&gt;
* Reading: Aleph One (aka Elias Levy), [http://www.phrack.com/issues/49/14.html#article Smashing The Stack For Fun And Profit] (Phrack 49, 1996)&lt;br /&gt;
* Buffer Overflow Attack&lt;br /&gt;
* Memory Corruption Attack&lt;br /&gt;
&lt;br /&gt;
== Class Notes ==&lt;br /&gt;
&lt;br /&gt;
==== Unsafe Language ====&lt;br /&gt;
Defined as languages, such as C, that are susceptible to buffer overflow attacks. Safe languages are not susceptible because they have really strong compilers.&lt;br /&gt;
&lt;br /&gt;
Secure systems are not susceptible to overflow attacks because the reference monitor is small enough to verify and remove any bugs. The reference monitor is also resilient due to the fact that it is outside the domain of process execution.&lt;br /&gt;
&lt;br /&gt;
==== Memory Corruption Attack ====&lt;br /&gt;
[[File:systemMemory.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Figure 1: System structure with certain portions of memory re severed for those types&lt;br /&gt;
&lt;br /&gt;
In a buffer overflow attack you can essentially over write some other portion of memory. For example an attacker may put to much information into the memory portion reserved for string such that it overflows into the memory space reserved for array. Safe languages such as Java are not susceptible to memory corruption attacks unless there is some bug in the compiler.&lt;br /&gt;
&lt;br /&gt;
A common way to know that your code is vulnerable to a buffer overflow/memory corruption attack is if you get a segmentation fault.&lt;br /&gt;
&lt;br /&gt;
==== Classic Buffer Overflow Attack ====&lt;br /&gt;
The bad code comes from user input (network, keyboard, disk), in the program itself (just run in different way), environment variable.&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20776</id>
		<title>SystemsSec 2016W Lecture 13</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20776"/>
		<updated>2016-03-02T23:48:02Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Class Notes&lt;br /&gt;
Unsafe Language&lt;br /&gt;
Defined as languages, such as C, that are susceptible to buffer overflow attacks. Safe languages are not susceptible because they have really strong compilers.&lt;br /&gt;
&lt;br /&gt;
Secure systems are not susceptible to overflow attacks because the reference monitor is small enough to verify and remove any bugs. The reference monitor is also resilient due to the fact that it is outside the domain of process execution.&lt;br /&gt;
&lt;br /&gt;
Memory Corruption Attack&lt;br /&gt;
Figure 1: System structure with certain portions of memory re severed for those types&lt;br /&gt;
&lt;br /&gt;
In a buffer overflow attack you can essentially over write some other portion of memory. For example an attacker may put to much information into the memory portion reserved for string such that it overflows into the memory space reserved for array. Safe languages such as Java are not susceptible to memory corruption attacks unless there is some bug in the compiler.&lt;br /&gt;
&lt;br /&gt;
A common way to know that your code is vulnerable to a buffer overflow/memory corruption attack is if you get a segmentation fault.&lt;br /&gt;
&lt;br /&gt;
Classic Buffer Overflow Attack&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20775</id>
		<title>SystemsSec 2016W Lecture 13</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_13&amp;diff=20775"/>
		<updated>2016-03-02T23:27:42Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: Created page with &amp;quot;Class Notes Unsafe Language Defined as languages, such as C, that are susceptible to buffer overflow attacks. Safe languages are not susceptible because they have really stron...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Class Notes&lt;br /&gt;
Unsafe Language&lt;br /&gt;
Defined as languages, such as C, that are susceptible to buffer overflow attacks. Safe languages are not susceptible because they have really strong compilers.&lt;br /&gt;
&lt;br /&gt;
Secure systems are not susceptible to overflow attacks because the reference monitor is small enough to verify and remove any bugs. The reference monitor is also resilient due to the fact that it is outside the domain of process execution.&lt;br /&gt;
&lt;br /&gt;
Memory Corruption Attack&lt;br /&gt;
[[File:C:/Users/hsaid1/Desktop/systemMemory.png]]&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=User:Hassansaid&amp;diff=20010</id>
		<title>User:Hassansaid</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=User:Hassansaid&amp;diff=20010"/>
		<updated>2015-03-16T19:16:32Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: Created page with &amp;quot;Hello World!&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello World!&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_10&amp;diff=20005</id>
		<title>DistOS 2015W Session 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_10&amp;diff=20005"/>
		<updated>2015-03-16T19:14:06Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Kademlia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Feel free to tweak the questions!&lt;br /&gt;
&lt;br /&gt;
==Kademlia==&lt;br /&gt;
Members: Kirill, Deep, Jason, Hassan&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Why are DHTs relevant to distributed OSs?&#039;&#039;&#039;&lt;br /&gt;
** Using many system, having repetition&lt;br /&gt;
** DHT to distributed content over  multiple nodes&lt;br /&gt;
** Decentralized therefore peer-to-peer&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;How is content divided?&#039;&#039;&#039;&lt;br /&gt;
** File hashes&lt;br /&gt;
** Node ID to locate the value&lt;br /&gt;
** 160 bit key space, binary tree for partition and searching down the tree&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;How is the network traversed?&#039;&#039;&#039;&lt;br /&gt;
** Highest prefix and increase the number of digit it used to get close to the target nodes&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;What trust assumptions does the system make?&#039;&#039;&#039;&lt;br /&gt;
** DHT by itself is insecure&lt;br /&gt;
** The academic and practitioner communities have realized that all current DHT designs suffer from a security weakness, known as the Sybil attack&lt;br /&gt;
** K-buckets&lt;br /&gt;
*** Binary tree with each node having k-buckets as leaf&lt;br /&gt;
*** Any given k-node is very unlikely to fail within an hour of each other&lt;br /&gt;
*** New nodes are only inserted when there is room in the bucket or the oldest node doesn&#039;t respond&lt;br /&gt;
** Uses UDP therefore packets are often lost&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Performance constraints?&#039;&#039;&#039;&lt;br /&gt;
** Binary tree traversing, therefore traversing is maximum O(log n)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Kademlia for this purpose?&#039;&#039;&#039;&lt;br /&gt;
** DNS&lt;br /&gt;
** Any kind of meta-data service&lt;br /&gt;
&lt;br /&gt;
==Comet==&lt;br /&gt;
Members: Mohamed Ahmed, Apoorv Sangal, Ambalica Sharma&lt;br /&gt;
&lt;br /&gt;
* Why are DHTs relevant to distributed OSs?&lt;br /&gt;
DHT is an infrastructure than enables many clients to share information, and scale to handle node arrival, departure and failure. DHT&#039;s serve many of the design goals of disbtributed operating systems. The paper states that &amp;quot;DHTs are increasingly used to support a variety of distributed applications, such as file-sharing, distributed resource tracking, end-system multicast, publish-subscribe systems, distributed search engines&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* How is content divided?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the three main components of the comet system is a routing substrate which&lt;br /&gt;
implements the value/node mapping. This allows a client to find the node htat stores&lt;br /&gt;
a specific data item. Since Comet uses a DHT implementation, routing occurs by applying&lt;br /&gt;
a hash function to the key to compute node ID&#039;s that store the associated value.&lt;br /&gt;
&lt;br /&gt;
* How is the network traversed?&lt;br /&gt;
&lt;br /&gt;
* What trust assumptions does the system make?&lt;br /&gt;
&lt;br /&gt;
A client node running COmet should be protected from the execution of handlers &lt;br /&gt;
e.g. an executing handler cannot corrupt the node or use unlimited resources. &lt;br /&gt;
Handlers should not be able to mount messaging attacks on other nodes.&lt;br /&gt;
&lt;br /&gt;
Users downloading Comet must trust it and have guarantees about its behavior. For this reason, Comet enforces four important restrictions:&lt;br /&gt;
1. Limited knowledge: an ASO is not aware of other objects&lt;br /&gt;
or resources stored on the same node and has no&lt;br /&gt;
direct way to learn about them.&lt;br /&gt;
2. Limited access: an object handler can manipulate only its own value and cannot modify the values of other objects on its storage node.&lt;br /&gt;
3. Limited communication: an active storage object cannot&lt;br /&gt;
send arbitrary messages over the network.&lt;br /&gt;
4. Limited resource consumption: an ASO’s resource usage is strictly bounded, e.g., the system limits the amount of computation and memory it can consume.&lt;br /&gt;
&lt;br /&gt;
* Performance constraints?&lt;br /&gt;
&lt;br /&gt;
* What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Kademlia for this purpose?&lt;br /&gt;
&lt;br /&gt;
==Tapestry==&lt;br /&gt;
Members:&lt;br /&gt;
&lt;br /&gt;
* Why are DHTs relevant to distributed OSs?&lt;br /&gt;
&lt;br /&gt;
Because they provide a way to distribute information over large networks (distributed key/value store).&lt;br /&gt;
&lt;br /&gt;
* How is content divided?&lt;br /&gt;
&lt;br /&gt;
Uses consistent hashing (SHA-1), upon node creation (join) creates optimal routing table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* How is the network traversed?&lt;br /&gt;
&lt;br /&gt;
You look at your neighbours, you see which neighbour is closest to your destination, and recurse.&lt;br /&gt;
&lt;br /&gt;
* What trust assumptions does the system make?&lt;br /&gt;
&lt;br /&gt;
It assumes the system is entirely trustworthy from adversaries. While network failures may happen and nodes may go down, no node will explicitly try to mess with the network.&lt;br /&gt;
&lt;br /&gt;
* Performance constraints?&lt;br /&gt;
&lt;br /&gt;
O(log n) access times to any given node. Best effort publishing/unpublishing via decentralized object location routing.&lt;br /&gt;
&lt;br /&gt;
* What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Tapestry for this purpose?&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_10&amp;diff=20003</id>
		<title>DistOS 2015W Session 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_10&amp;diff=20003"/>
		<updated>2015-03-16T19:11:37Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Kademlia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Feel free to tweak the questions!&lt;br /&gt;
&lt;br /&gt;
==Kademlia==&lt;br /&gt;
Members: Kirill, Deep, Jason, Hassan&lt;br /&gt;
&lt;br /&gt;
* Why are DHTs relevant to distributed OSs?&lt;br /&gt;
** Using many system, having repetition&lt;br /&gt;
** DHT to distributed content over  multiple nodes&lt;br /&gt;
** Decentralized therefore peer-to-peer&lt;br /&gt;
&lt;br /&gt;
* How is content divided?&lt;br /&gt;
** File hashes&lt;br /&gt;
** Node ID to locate the value&lt;br /&gt;
** 160 bit key space, binary tree for partition and searching down the tree&lt;br /&gt;
&lt;br /&gt;
* How is the network traversed?&lt;br /&gt;
** Highest prefix and increase the number of digit it used to get close to the target nodes&lt;br /&gt;
&lt;br /&gt;
* What trust assumptions does the system make?&lt;br /&gt;
** DHT by itself is insecure&lt;br /&gt;
** The academic and practitioner communities have realized that all current DHT designs suffer from a security weakness, known as the Sybil attack&lt;br /&gt;
** K-buckets: binary tree with each node having k-buckets as leaf. Any given k-node is very unlikely to fail within an hour of each other. New nodes are only inserted when there is room in the bucket or the oldest node doesn&#039;t respond&lt;br /&gt;
** Uses UDP therefore packets are often lost&lt;br /&gt;
&lt;br /&gt;
* Performance constraints?&lt;br /&gt;
** Binary tree traversing, therefore traversing is maximum O(log n)&lt;br /&gt;
&lt;br /&gt;
* What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Kademlia for this purpose?&lt;br /&gt;
&lt;br /&gt;
==Comet==&lt;br /&gt;
Members: Mohamed Ahmed, Apoorv Sangal, Ambalica Sharma&lt;br /&gt;
&lt;br /&gt;
* Why are DHTs relevant to distributed OSs?&lt;br /&gt;
DHT is an infrastructure than enables many clients to share information, and scale to handle node arrival, departure and failure. DHT&#039;s serve many of the design goals of disbtributed operating systems. The paper states that &amp;quot;DHTs are increasingly used to support a variety of distributed applications, such as file-sharing, distributed resource tracking, end-system multicast, publish-subscribe systems, distributed search engines&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* How is content divided?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the three main components of the comet system is a routing substrate which&lt;br /&gt;
implements the value/node mapping. This allows a client to find the node htat stores&lt;br /&gt;
a specific data item. Since Comet uses a DHT implementation, routing occurs by applying&lt;br /&gt;
a hash function to the key to compute node ID&#039;s that store the associated value.&lt;br /&gt;
&lt;br /&gt;
* How is the network traversed?&lt;br /&gt;
&lt;br /&gt;
* What trust assumptions does the system make?&lt;br /&gt;
&lt;br /&gt;
A client node running COmet should be protected from the execution of handlers &lt;br /&gt;
e.g. an executing handler cannot corrupt the node or use unlimited resources. &lt;br /&gt;
Handlers should not be able to mount messaging attacks on other nodes&lt;br /&gt;
&lt;br /&gt;
* Performance constraints?&lt;br /&gt;
&lt;br /&gt;
* What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Kademlia for this purpose?&lt;br /&gt;
&lt;br /&gt;
==Tapestry==&lt;br /&gt;
Members:&lt;br /&gt;
&lt;br /&gt;
* Why are DHTs relevant to distributed OSs?&lt;br /&gt;
&lt;br /&gt;
Because they provide a way to distribute information over large networks (distributed key/value store).&lt;br /&gt;
&lt;br /&gt;
* How is content divided?&lt;br /&gt;
&lt;br /&gt;
Uses consistent hashing (SHA-1), upon node creation (join) creates optimal routing table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* How is the network traversed?&lt;br /&gt;
&lt;br /&gt;
You look at your neighbours, you see which neighbour is closest to your destination, and recurse.&lt;br /&gt;
&lt;br /&gt;
* What trust assumptions does the system make?&lt;br /&gt;
&lt;br /&gt;
It assumes the system is entirely trustworthy from adversaries. While network failures may happen and nodes may go down, no node will explicitly try to mess with the network.&lt;br /&gt;
&lt;br /&gt;
* Performance constraints?&lt;br /&gt;
&lt;br /&gt;
O(log n) access times to any given node. Best effort publishing/unpublishing via decentralized object location routing.&lt;br /&gt;
&lt;br /&gt;
* What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Tapestry for this purpose?&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_10&amp;diff=19999</id>
		<title>DistOS 2015W Session 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_10&amp;diff=19999"/>
		<updated>2015-03-16T18:59:52Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Kademlia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Feel free to tweak the questions!&lt;br /&gt;
&lt;br /&gt;
==Kademlia==&lt;br /&gt;
Members: Kirill, Deep, Jason, Hassan&lt;br /&gt;
&lt;br /&gt;
* Why are DHTs relevant to distributed OSs?&lt;br /&gt;
&lt;br /&gt;
* How is content divided?&lt;br /&gt;
&lt;br /&gt;
* How is the network traversed?&lt;br /&gt;
&lt;br /&gt;
* What trust assumptions does the system make?&lt;br /&gt;
&lt;br /&gt;
* Performance constraints?&lt;br /&gt;
&lt;br /&gt;
* What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Kademlia for this purpose?&lt;br /&gt;
&lt;br /&gt;
==Comet==&lt;br /&gt;
Members: Mohamed Ahmed, Apoorv Sangal, Ambalica Sharma&lt;br /&gt;
&lt;br /&gt;
* Why are DHTs relevant to distributed OSs?&lt;br /&gt;
&lt;br /&gt;
* How is content divided?&lt;br /&gt;
&lt;br /&gt;
* How is the network traversed?&lt;br /&gt;
&lt;br /&gt;
* What trust assumptions does the system make?&lt;br /&gt;
&lt;br /&gt;
* Performance constraints?&lt;br /&gt;
&lt;br /&gt;
* What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Kademlia for this purpose?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tapestry==&lt;br /&gt;
Members:&lt;br /&gt;
&lt;br /&gt;
* Why are DHTs relevant to distributed OSs?&lt;br /&gt;
&lt;br /&gt;
Because they provide a way to distribute information over large networks (distributed key/value store).&lt;br /&gt;
&lt;br /&gt;
* How is content divided?&lt;br /&gt;
&lt;br /&gt;
* How is the network traversed?&lt;br /&gt;
&lt;br /&gt;
* What trust assumptions does the system make?&lt;br /&gt;
&lt;br /&gt;
* Performance constraints?&lt;br /&gt;
&lt;br /&gt;
* What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Tapestry for this purpose?&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19853</id>
		<title>DistOS 2015W Session 6</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19853"/>
		<updated>2015-02-09T21:45:30Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Group 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Midterm==&lt;br /&gt;
 &lt;br /&gt;
The midterm from last year [http://homeostasis.scs.carleton.ca/~soma/distos/2015w/comp4000-2014w-midterm.pdf is now available].&lt;br /&gt;
&lt;br /&gt;
==Group 1==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Team:&#039;&#039;&#039; Kirill, Jamie, Alexis, Veena, Khaled, Hassan&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! FARSITE&lt;br /&gt;
! OceanStore&lt;br /&gt;
|-&lt;br /&gt;
! Fault Tolerance&lt;br /&gt;
| Used Byzantine Fault Tolerance Algorithm - Did not manage well&lt;br /&gt;
| Used Byzantine Fault Tolerance Algorithm - Did not manage well&lt;br /&gt;
|-&lt;br /&gt;
! Cryptography&lt;br /&gt;
| Trusted Certificates&lt;br /&gt;
| A strong cryptographic algorithm on read-only operations&lt;br /&gt;
|-&lt;br /&gt;
! Implementation&lt;br /&gt;
| Did not mention what programming they used, but it was based on Windows. They did not implement the file system&lt;br /&gt;
| Implemented in JAVA&lt;br /&gt;
|-&lt;br /&gt;
! Scalability&lt;br /&gt;
| Scalable to a University or large corporations, maximum 10&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Worldwide scalability, maximum 10&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! File Usage&lt;br /&gt;
| Was designed for general purpose files&lt;br /&gt;
| Was designed for small file sizes&lt;br /&gt;
|-&lt;br /&gt;
! Scope&lt;br /&gt;
| All clients sharing the available resources&lt;br /&gt;
| Transient centralized service&lt;br /&gt;
|-&lt;br /&gt;
! Object Model&lt;br /&gt;
| Didn&#039;t use the object model&lt;br /&gt;
| Used the object model&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Group 2==&lt;br /&gt;
Team Members: Apoorv, Ambalica, Ashley, Eric, Mert, Shivjot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Group 3== &lt;br /&gt;
DANY, MOE, DEEP, SAMEER, TROY&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FARSITE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039; &lt;br /&gt;
•	Cascading certificates system through directory hierarchy &lt;br /&gt;
•	 Keys &lt;br /&gt;
•	Three types of certificates &lt;br /&gt;
•	CFS required to authorized certificate&lt;br /&gt;
•       Because directory groups only modify their shared state via a Byzantine-fault-tolerant protocol, we trust the group not to make &lt;br /&gt;
        an incorrect update to directory metadata. This metadata includes an access control list (ACL) of public keys of all users&lt;br /&gt;
        who are authorized writers to that directory and to files in it&lt;br /&gt;
•       Both file content and user-sensitive metadata (meaning file and directory names) are encrypted for privacy.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;System Architecture&#039;&#039;&#039; &lt;br /&gt;
•	Client Monitor, directory group, file host&lt;br /&gt;
•	When space runs out in directory group, delegate’s ownership to sub tree to other delegate group. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OCEANSTORE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039; &lt;br /&gt;
•	GUID and ACLs used for write, encryption used for reads.&lt;br /&gt;
•       To prevent unauthorized reads, it encrypts&lt;br /&gt;
        all data in the system that is not completely public and distributes the encryption key to those users with read permission&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19850</id>
		<title>DistOS 2015W Session 6</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19850"/>
		<updated>2015-02-09T21:11:17Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Group 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Midterm==&lt;br /&gt;
 &lt;br /&gt;
The midterm from last year [http://homeostasis.scs.carleton.ca/~soma/distos/2015w/comp4000-2014w-midterm.pdf is now available].&lt;br /&gt;
&lt;br /&gt;
==Group 1==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Team:&#039;&#039;&#039; Kirill, Jamie, Alexis, Veena, Khaled, Hassan&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! FARSITE&lt;br /&gt;
! OceanStore&lt;br /&gt;
|-&lt;br /&gt;
! Fault Tolerance&lt;br /&gt;
| Used Byzantine Fault Tolerance Algorithm - Did not manage well&lt;br /&gt;
| Used Byzantine Fault Tolerance Algorithm - Did not manage well&lt;br /&gt;
|-&lt;br /&gt;
! Cryptography&lt;br /&gt;
| Trusted Certificates&lt;br /&gt;
| A strong cryptographic algorithm on read-only operations&lt;br /&gt;
|-&lt;br /&gt;
! Implementation&lt;br /&gt;
| Did not mention what programming they used, but it was based on Windows. They did not implement the file system&lt;br /&gt;
| Implemented in JAVA&lt;br /&gt;
|-&lt;br /&gt;
! Scalability&lt;br /&gt;
| Scalable to a University or large corporations, maximum 10&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Worldwide scalability, maximum 10&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! File Usage&lt;br /&gt;
| Was designed for general purpose files&lt;br /&gt;
| Was designed for small file sizes&lt;br /&gt;
|-&lt;br /&gt;
! Scope&lt;br /&gt;
| All clients sharing the available resources&lt;br /&gt;
| Transient centralized service&lt;br /&gt;
|-&lt;br /&gt;
! Object Model&lt;br /&gt;
| Didn&#039;t use the object model&lt;br /&gt;
| Used the object model&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Group 2==&lt;br /&gt;
Team Members: Apoorv, Ambalica, Ashley, Eric, Mert, Shivjot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Group 3==&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19849</id>
		<title>DistOS 2015W Session 6</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19849"/>
		<updated>2015-02-09T21:10:32Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Group 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Midterm==&lt;br /&gt;
 &lt;br /&gt;
The midterm from last year [http://homeostasis.scs.carleton.ca/~soma/distos/2015w/comp4000-2014w-midterm.pdf is now available].&lt;br /&gt;
&lt;br /&gt;
==Group 1==&lt;br /&gt;
&lt;br /&gt;
==Group 2==&lt;br /&gt;
Team Members: Apoorv, Ambalica, Ashley, Eric, Mert, Shivjot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Group 3==&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19848</id>
		<title>DistOS 2015W Session 6</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19848"/>
		<updated>2015-02-09T21:06:53Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Group 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Midterm==&lt;br /&gt;
 &lt;br /&gt;
The midterm from last year [http://homeostasis.scs.carleton.ca/~soma/distos/2015w/comp4000-2014w-midterm.pdf is now available].&lt;br /&gt;
&lt;br /&gt;
==Group 1==&lt;br /&gt;
&lt;br /&gt;
==Group 2==&lt;br /&gt;
Team Members: Apoorv, Ambalica, Ashley, Eric, Mert, Shivjot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Group 3==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Team:&#039;&#039;&#039; Kirill, Jamie, Alexis, Veena, Khaled, Hassan&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! FARSITE&lt;br /&gt;
! OceanStore&lt;br /&gt;
|-&lt;br /&gt;
! Fault Tolerance&lt;br /&gt;
| Used Byzantine Fault Tolerance Algorithm - Did not manage well&lt;br /&gt;
| Used Byzantine Fault Tolerance Algorithm - Did not manage well&lt;br /&gt;
|-&lt;br /&gt;
! Cryptography&lt;br /&gt;
| Trusted Certificates&lt;br /&gt;
| A strong cryptographic algorithm on read-only operations&lt;br /&gt;
|-&lt;br /&gt;
! Implementation&lt;br /&gt;
| Did not mention what programming they used, but it was based on Windows. They did not implement the file system&lt;br /&gt;
| Implemented in JAVA&lt;br /&gt;
|-&lt;br /&gt;
! Scalability&lt;br /&gt;
| Scalable to a University or large corporations, maximum 10&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Worldwide scalability, maximum 10&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! File Usage&lt;br /&gt;
| Was designed for general purpose files&lt;br /&gt;
| Was designed for small file sizes&lt;br /&gt;
|-&lt;br /&gt;
! Scope&lt;br /&gt;
| All clients sharing the available resources&lt;br /&gt;
| Transient centralized service&lt;br /&gt;
|-&lt;br /&gt;
! Object Model&lt;br /&gt;
| Didn&#039;t use the object model&lt;br /&gt;
| Used the object model&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19847</id>
		<title>DistOS 2015W Session 6</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19847"/>
		<updated>2015-02-09T21:04:33Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Group 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Midterm==&lt;br /&gt;
 &lt;br /&gt;
The midterm from last year [http://homeostasis.scs.carleton.ca/~soma/distos/2015w/comp4000-2014w-midterm.pdf is now available].&lt;br /&gt;
&lt;br /&gt;
==Group 1==&lt;br /&gt;
&lt;br /&gt;
==Group 2==&lt;br /&gt;
Team Members: Apoorv, Ambalica, Ashley, Eric, Mert, Shivjot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Group 3==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! FARSITE&lt;br /&gt;
! OceanStore&lt;br /&gt;
|-&lt;br /&gt;
! Fault Tolerance&lt;br /&gt;
| Used Byzantine Fault Tolerance Algorithm - Did not manage well&lt;br /&gt;
| Used Byzantine Fault Tolerance Algorithm - Did not manage well&lt;br /&gt;
|-&lt;br /&gt;
! Cryptography&lt;br /&gt;
| Trusted Certificates&lt;br /&gt;
| A strong cryptographic algorithm on read-only operations&lt;br /&gt;
|-&lt;br /&gt;
! Implementation&lt;br /&gt;
| Did not mention what programming they used, but it was based on Windows. They did not implement the file system&lt;br /&gt;
| Implemented in JAVA&lt;br /&gt;
|-&lt;br /&gt;
! Scalability&lt;br /&gt;
| Scalable to a University or large corporations, maximum 10{{sup|5}} &lt;br /&gt;
| Worldwide scalability, maximum 10{{sup|10}}&lt;br /&gt;
|-&lt;br /&gt;
! File Usage&lt;br /&gt;
| Was designed for general purpose files&lt;br /&gt;
| Was designed for small file sizes&lt;br /&gt;
|-&lt;br /&gt;
! Scope&lt;br /&gt;
| All clients sharing the available resources&lt;br /&gt;
| Transient centralized service&lt;br /&gt;
|-&lt;br /&gt;
! Object Model&lt;br /&gt;
| Didn&#039;t use the object model&lt;br /&gt;
| Used the object model&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19846</id>
		<title>DistOS 2015W Session 6</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_6&amp;diff=19846"/>
		<updated>2015-02-09T21:03:34Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Group 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Midterm==&lt;br /&gt;
 &lt;br /&gt;
The midterm from last year [http://homeostasis.scs.carleton.ca/~soma/distos/2015w/comp4000-2014w-midterm.pdf is now available].&lt;br /&gt;
&lt;br /&gt;
==Group 1==&lt;br /&gt;
&lt;br /&gt;
==Group 2==&lt;br /&gt;
Team Members: Apoorv, Ambalica, Ashley, Eric, Mert, Shivjot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Group 3==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! FARSITE&lt;br /&gt;
! OceanStore&lt;br /&gt;
|-&lt;br /&gt;
! Fault Tolerance&lt;br /&gt;
| Used Byzantine Fault Tolerance Algorithm - Did not manage well&lt;br /&gt;
| Used Byzantine Fault Tolerance Algorithm - Did not manage well&lt;br /&gt;
|-&lt;br /&gt;
! Cryptography&lt;br /&gt;
| Trusted Certificates&lt;br /&gt;
| A strong cryptographic algorithm on read-only operations&lt;br /&gt;
|-&lt;br /&gt;
! Implementation&lt;br /&gt;
| Did not mention what programming they used, but it was based on Windows. They did not implement the file system&lt;br /&gt;
| Implemented in JAVA&lt;br /&gt;
|-&lt;br /&gt;
! Scalability&lt;br /&gt;
| Scalable to a University or large corporations, maximum 10^5 &lt;br /&gt;
| Worldwide scalability, maximum 10{{su|10}}&lt;br /&gt;
|-&lt;br /&gt;
! File Usage&lt;br /&gt;
| Was designed for general purpose files&lt;br /&gt;
| Was designed for small file sizes&lt;br /&gt;
|-&lt;br /&gt;
! Scope&lt;br /&gt;
| All clients sharing the available resources&lt;br /&gt;
| Transient centralized service&lt;br /&gt;
|-&lt;br /&gt;
! Object Model&lt;br /&gt;
| Didn&#039;t use the object model&lt;br /&gt;
| Used the object model&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_4&amp;diff=19754</id>
		<title>DistOS 2015W Session 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_4&amp;diff=19754"/>
		<updated>2015-02-01T22:34:50Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Andrew File System =&lt;br /&gt;
AFS (Andrew File System) was set up as a direct response to NFS. Essentially universities found issues when they tried to scale NFS in a way that would allow them to share files amongst their staff effectively. AFS was more scalable than NFS because read-write operations happened locally before they were committed to the server (data store). As such the largest file size that AFS could deal with was the size of its local disk cache. &lt;br /&gt;
&lt;br /&gt;
AFS open-close operations were more time-consuming, while for NFS its read-write operations were more time consuming.&lt;br /&gt;
&lt;br /&gt;
= Amoeba Operating System =&lt;br /&gt;
&lt;br /&gt;
=== Capablities: ===&lt;br /&gt;
* Pointer to the object&lt;br /&gt;
* Capability assigning right to perform to some operation to the object ticket &lt;br /&gt;
* Communicate wide area network &lt;br /&gt;
* a kind of ticket or key that allows the holder of the capa- bility to perform some (not neces- sarily all) &lt;br /&gt;
* Each user process owns some collection of capabilities, which together define the set of objects it may access and the types of operations that my ne performed on each &lt;br /&gt;
* After the server has performed the operation, it sends back a reply message that unblocks the client &lt;br /&gt;
* Sending messages, blocking and accepting forms the remote procedure call that can be encapsulate using to make entire remote operation look like local procedure &lt;br /&gt;
* Second field:  used by the sever to identify which of its objects is being addressed server port and object number identify object which operation to performed  &lt;br /&gt;
* Generates 48-bit random number     &lt;br /&gt;
* The third field is the right field which contains a bit map telling which operation the holder of the capability  may performed &lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
=== Thread Management: ===&lt;br /&gt;
* Same process have multiple thread and each process has its own registered counter and stack &lt;br /&gt;
* Behave like process&lt;br /&gt;
* It can synchronized using mutex semaphore &lt;br /&gt;
* File: Multiple thread, &lt;br /&gt;
* Blocked when there&#039;s multiple threads &lt;br /&gt;
* Buttlet thread the mutex&lt;br /&gt;
* The careful reader may have noticed that user process can pull 813kbytes/sec&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= The V Distributed System = &lt;br /&gt;
&lt;br /&gt;
* First tent in V design: High Performance communication is the most critical facility for distributed systems.&lt;br /&gt;
* Second; The protocols, not the software, define the system.&lt;br /&gt;
* Third; a relatively small operating system kernel can implement the basic protocols and services providing a simple network-transparent process, address space &amp;amp; communication model.&lt;br /&gt;
&lt;br /&gt;
=== Ideas that significantly affected the design ===&lt;br /&gt;
* Shared Memory.&lt;br /&gt;
* Dealing with group of entities same as they deal w/individual entities.&lt;br /&gt;
* Efficient file caching mechanism using the virtual memory caching mechanism.&lt;br /&gt;
&lt;br /&gt;
=== Design Decisions ===&lt;br /&gt;
* Designed for a cluster of workstations with high speed network access ( only really supports LAN ).&lt;br /&gt;
* Abstract the physical architecture of the participating workstations, by defining common protocols providing well-defined interfaces.&lt;br /&gt;
&lt;br /&gt;
V was run on LAN, and its developers developed a really fast IPC protocol which allowed for it to be a fasted distributed operating system in a small geographic area. Aside from the IPC protocols, V also implemented RPC calls in the background.&lt;br /&gt;
&lt;br /&gt;
V uses the strong consistency model. This model can cause issues with concurrency because in V files are a memory space. Thus two different users accessing the same file and in fact accessing the same memory location. This could result in issues unless there is an effective implementation to deal with multiple versions, etc.&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_3&amp;diff=19753</id>
		<title>DistOS 2015W Session 3</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_3&amp;diff=19753"/>
		<updated>2015-02-01T22:09:39Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &#039;&#039;&#039;Reading Response Discussion&#039;&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
== Multics ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Team:&#039;&#039;&#039; Sameer, Shivjot, Ambalica, Veena&lt;br /&gt;
&lt;br /&gt;
It came into being in the 1960s and it completely vanished in 2000s. It was started by Bell, General Electric and MIT but Bell backed out of the project in 1969.&lt;br /&gt;
Multics is a time sharing OS which provides Multitasking and Multiprogramming. It is not a Distributed OS but it a Centralized system which was written in the assembly language.&lt;br /&gt;
&lt;br /&gt;
It provides following features:&lt;br /&gt;
# Utility Computing&lt;br /&gt;
# Access Control Lists&lt;br /&gt;
# Single level storage&lt;br /&gt;
# Dynamic linking&lt;br /&gt;
#* Sharded libraries or files can be loaded and linked to Random Access Memory at run time. &lt;br /&gt;
# Hot swapping&lt;br /&gt;
# Multiprocessing System&lt;br /&gt;
# Ring oriented Security&lt;br /&gt;
#* It provides number of levels of authorization within the computer System.&lt;br /&gt;
&lt;br /&gt;
== Unix ==&lt;br /&gt;
&lt;br /&gt;
Unix in its original conception is a small, minimal API system designed by two guys from Bell Labs. It was essentially a OS that would be easy to grasp for an programmer but not much beyond that. The UNIX OS ran on one computer, and terminals ran from that one computer. Thus it is not a distributed operating system as it is centralized and implements time sharing.&lt;br /&gt;
&lt;br /&gt;
== Sun NFS ==&lt;br /&gt;
&lt;br /&gt;
The Sun NFS OS implemented networking using RPC connections. These connections are not secure. Sun wanted to encrypt these RPC connections but encryption would result in government regulations that Sun wanted to avoid in order to sell NFS over seas (See below).&lt;br /&gt;
&lt;br /&gt;
    Sun wanted to encrypt their NFS system but decided not to. In the US encryption is regulated like munitions. Thus when Sun wanted to sell the NFS &lt;br /&gt;
    system abroad they would have to contend with government regulations. To avoid these regulations, Sun decided to sell the unencrypted NFS system abroad.&lt;br /&gt;
&lt;br /&gt;
== Locus ==&lt;br /&gt;
&lt;br /&gt;
# Not scalable&lt;br /&gt;
#* Every computer stores a copy of every file&lt;br /&gt;
#* Also used CAS to manage files&lt;br /&gt;
# Not efficient with abstractions&lt;br /&gt;
#* Trying to distribute files and processes&lt;br /&gt;
#Allowed for process migration&lt;br /&gt;
&lt;br /&gt;
== Sprite ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Team: &#039;&#039;&#039; Jamie, Hassan, Khaled&lt;br /&gt;
&lt;br /&gt;
Sprite had the following Design Features:&lt;br /&gt;
# Network Transparency&lt;br /&gt;
# Process Migration, file transfer between computers&lt;br /&gt;
#* User could initiate a process migration to an idle machine, and if the machine was no longer idle; due to it being used be another user, the system would take care of the process migration to another machine&lt;br /&gt;
# Handling Cache Consistency&lt;br /&gt;
#* Sequential file sharing ==&amp;gt; By using a version number for each file&lt;br /&gt;
#* Concurrent write sharing ==&amp;gt; Disable cache to clients, enable write-blocking and other methods&lt;br /&gt;
# Implemented a caching system that sped up performance&lt;br /&gt;
# Implemented a log structured file system&lt;br /&gt;
#* Log structured file systems are optimized for writes; data is written to cache instead of memory, over reads. This is a way of minimizing the performance issues of doing writes&lt;br /&gt;
#* Example: SSD (Solid-state disks)&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039; main features &#039;&#039;&#039; to take away from the Sprite system is that it implemented a log structured file system, and implemented caching to increase performanace.&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_3&amp;diff=19752</id>
		<title>DistOS 2015W Session 3</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_3&amp;diff=19752"/>
		<updated>2015-02-01T21:37:37Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &#039;&#039;&#039;Reading Response Discussion&#039;&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Multics&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Team: Sameer, Shivjot, Ambalica, Veena&lt;br /&gt;
&lt;br /&gt;
It came into being in the 1960s and it completely vanished in 2000s. It was started by Bell, General Electric and MIT but Bell backed out of the project in 1969.&lt;br /&gt;
Multics is a time sharing OS which provides Multitasking and Multiprogramming. &lt;br /&gt;
&lt;br /&gt;
It provides following features:&lt;br /&gt;
1. Utility Computing&lt;br /&gt;
2. Access Control Lists&lt;br /&gt;
3. Single level storage&lt;br /&gt;
4. Dynamic linking&lt;br /&gt;
  *Sharded libraries or files can be loaded and linked to Random Access Memory at run time. &lt;br /&gt;
5. Hot swapping&lt;br /&gt;
6. Multiprocessing System&lt;br /&gt;
7. Ring oriented Security&lt;br /&gt;
   * It provides number of levels of authorization within the computer System.&lt;br /&gt;
It is not a Distributed OS but it a Centralized system which was written in the assembly language.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sprite&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Panel Group: Jamie, Hassan, Khaled&lt;br /&gt;
&lt;br /&gt;
Sprite had the following Design Features:&lt;br /&gt;
1. Network Transparency.&lt;br /&gt;
2. Process Migration.&lt;br /&gt;
3. Handling Cache Consistency&lt;br /&gt;
    a. Sequential file sharing===&amp;gt; By using a version number for each file.&lt;br /&gt;
    b. Concurrent write sharing==&amp;gt; Disable cache to clients.&lt;br /&gt;
4. The main design theme is to make aggressive use of RAM for caching files.&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_2&amp;diff=19643</id>
		<title>DistOS 2015W Session 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_2&amp;diff=19643"/>
		<updated>2015-01-13T02:01:03Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Discussion: Easy on one computer, hard on multiple computers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Reading Response Discussion =&lt;br /&gt;
&lt;br /&gt;
== Mother of All Demos: ==&lt;br /&gt;
&lt;br /&gt;
Team: Jason, Kirill, Sravan, Agustin, Hassan Ambalica, Apoorv, Khaled&lt;br /&gt;
&lt;br /&gt;
* 1968, Doug Inglebard&lt;br /&gt;
* One computer with multiple terminals controlling&lt;br /&gt;
* Video conferencing&lt;br /&gt;
* Computer mouse&lt;br /&gt;
* Word processing, rudimentary copy and paste&lt;br /&gt;
* Dynamic file linking&lt;br /&gt;
* Revision control/version control/source control&lt;br /&gt;
* Collaborative real-time editor&lt;br /&gt;
** User privilege control in that user can provide read-only access, read-write privilege to file&lt;br /&gt;
* Cord keyboard&lt;br /&gt;
** Marco keyboard that allows messages quickly, while using mouse at same time&lt;br /&gt;
* Not really a distributed operating system, but great start because multiple users at different terminals could share same resources&lt;br /&gt;
&lt;br /&gt;
== Early Internet ==&lt;br /&gt;
&lt;br /&gt;
== Alto ==&lt;br /&gt;
&lt;br /&gt;
Team: Tory, Veena, Sameer, Mert, Deep, Nameet, Moe&lt;br /&gt;
&lt;br /&gt;
* 1973&lt;br /&gt;
* High speed (3 Mbps @ 1km difference)&lt;br /&gt;
* Connects up to 256 machines&lt;br /&gt;
* Protocol similar to cross between UDP/TCP, before TCP invented&lt;br /&gt;
* Allowed sharing printers&lt;br /&gt;
* Also allowed for distributing files across computers (redundancy/reliability)&lt;br /&gt;
* Sort of early cloud&lt;br /&gt;
* Allowed for remote debugging, store error logs&lt;br /&gt;
* Allowed machines to use processing power of others&lt;br /&gt;
* much of the time it would be doing nothing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Professor lead discussion 1 = &lt;br /&gt;
&lt;br /&gt;
A true distributed operating system does not actually exist, its more of a dream. &lt;br /&gt;
&lt;br /&gt;
You&#039;ll find in the history of trying to achieve this dream of a distributed operating system there has always been a road block as a result of a technical issue. People would come up with a solution to this technical issue but then they would find that some other technical issue would crop up. For example &#039;The Mother of All Demos&#039; tried to build a distributed operating system but they had no networking. They had to point a television camera at the computer monitor to be able to demo their concept. The early internet came along and dealt with the issue of no networking. However the early internet itself had other technical issues.&lt;br /&gt;
&lt;br /&gt;
A common buzz word during the early days of development was &#039;&#039;&#039;Time Sharing&#039;&#039;&#039;. Time sharing is about the sharing of resources between users. Today the concept of time sharing is similar to sharing a processor between multiple processes.&lt;br /&gt;
&lt;br /&gt;
= Discussion: Easy on one computer, hard on multiple computers =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
|+ &#039;&#039;&#039;Instant Messaging&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Why is it easy?&lt;br /&gt;
! Why is it hard?&lt;br /&gt;
|-&lt;br /&gt;
| Can&#039;t be out sync&lt;br /&gt;
| Synchronization issues&lt;br /&gt;
* Server-client modal&lt;br /&gt;
** If two or more servers they get requests same time, they have to figure out how to synchronize the data&lt;br /&gt;
* Peer-to-Peer&lt;br /&gt;
** Each peer has to figure out how to sync each message&lt;br /&gt;
|-&lt;br /&gt;
| Only one data store/source&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
|+ &#039;&#039;&#039;Mortal Kombat/Twitch Gaming&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Why is it easy?&lt;br /&gt;
! Why is it hard?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
|+ &#039;&#039;&#039;Photo Album&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Why is it easy?&lt;br /&gt;
! Why is it hard?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Commonalities ===&lt;br /&gt;
* Synchronization&lt;br /&gt;
* Bandwidth&lt;br /&gt;
* Reliability/Fault Tolerance&lt;br /&gt;
* Interoperability&lt;br /&gt;
* Discovery&lt;br /&gt;
* Routing&lt;br /&gt;
** In modern system this issue has been mostly abstracted away&lt;br /&gt;
** Classic example would be Wireless Ad-hoc networking&lt;br /&gt;
&lt;br /&gt;
The above list is not hard on a single system because all the cores have equal access to all the resources. Also as a result of excellent engineering modern single systems can very effective deal with any errors that may result.&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_2&amp;diff=19642</id>
		<title>DistOS 2015W Session 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_2&amp;diff=19642"/>
		<updated>2015-01-13T01:54:40Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Reading Response Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Reading Response Discussion =&lt;br /&gt;
&lt;br /&gt;
== Mother of All Demos: ==&lt;br /&gt;
&lt;br /&gt;
Team: Jason, Kirill, Sravan, Agustin, Hassan Ambalica, Apoorv, Khaled&lt;br /&gt;
&lt;br /&gt;
* 1968, Doug Inglebard&lt;br /&gt;
* One computer with multiple terminals controlling&lt;br /&gt;
* Video conferencing&lt;br /&gt;
* Computer mouse&lt;br /&gt;
* Word processing, rudimentary copy and paste&lt;br /&gt;
* Dynamic file linking&lt;br /&gt;
* Revision control/version control/source control&lt;br /&gt;
* Collaborative real-time editor&lt;br /&gt;
** User privilege control in that user can provide read-only access, read-write privilege to file&lt;br /&gt;
* Cord keyboard&lt;br /&gt;
** Marco keyboard that allows messages quickly, while using mouse at same time&lt;br /&gt;
* Not really a distributed operating system, but great start because multiple users at different terminals could share same resources&lt;br /&gt;
&lt;br /&gt;
== Early Internet ==&lt;br /&gt;
&lt;br /&gt;
== Alto ==&lt;br /&gt;
&lt;br /&gt;
Team: Tory, Veena, Sameer, Mert, Deep, Nameet, Moe&lt;br /&gt;
&lt;br /&gt;
* 1973&lt;br /&gt;
* High speed (3 Mbps @ 1km difference)&lt;br /&gt;
* Connects up to 256 machines&lt;br /&gt;
* Protocol similar to cross between UDP/TCP, before TCP invented&lt;br /&gt;
* Allowed sharing printers&lt;br /&gt;
* Also allowed for distributing files across computers (redundancy/reliability)&lt;br /&gt;
* Sort of early cloud&lt;br /&gt;
* Allowed for remote debugging, store error logs&lt;br /&gt;
* Allowed machines to use processing power of others&lt;br /&gt;
* much of the time it would be doing nothing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Professor lead discussion 1 = &lt;br /&gt;
&lt;br /&gt;
A true distributed operating system does not actually exist, its more of a dream. &lt;br /&gt;
&lt;br /&gt;
You&#039;ll find in the history of trying to achieve this dream of a distributed operating system there has always been a road block as a result of a technical issue. People would come up with a solution to this technical issue but then they would find that some other technical issue would crop up. For example &#039;The Mother of All Demos&#039; tried to build a distributed operating system but they had no networking. They had to point a television camera at the computer monitor to be able to demo their concept. The early internet came along and dealt with the issue of no networking. However the early internet itself had other technical issues.&lt;br /&gt;
&lt;br /&gt;
A common buzz word during the early days of development was &#039;&#039;&#039;Time Sharing&#039;&#039;&#039;. Time sharing is about the sharing of resources between users. Today the concept of time sharing is similar to sharing a processor between multiple processes.&lt;br /&gt;
&lt;br /&gt;
= Discussion: Easy on one computer, hard on multiple computers =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
|+ &#039;&#039;&#039;Instant Messaging&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Why is it easy?&lt;br /&gt;
! Why is it hard?&lt;br /&gt;
|-&lt;br /&gt;
| Can&#039;t be out sync&lt;br /&gt;
| Synchronization issues&lt;br /&gt;
* Server-client modal&lt;br /&gt;
** If two or more servers they get requests same time, they have to figure out how to synchronize the data&lt;br /&gt;
* Peer-to-Peer&lt;br /&gt;
** Each peer has to figure out how to sync each message&lt;br /&gt;
|-&lt;br /&gt;
| Only one data store/source&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_2&amp;diff=19641</id>
		<title>DistOS 2015W Session 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_2&amp;diff=19641"/>
		<updated>2015-01-13T01:30:38Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Reading Response Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Reading Response Discussion =&lt;br /&gt;
&lt;br /&gt;
== Mother of All Demos: ==&lt;br /&gt;
&lt;br /&gt;
Team: Jason, Kirill, Sravan, Agustin, Hassan Ambalica, Apoorv, Khaled&lt;br /&gt;
&lt;br /&gt;
* 1968, Doug Inglebard&lt;br /&gt;
* One computer with multiple terminals controlling&lt;br /&gt;
* Video conferencing&lt;br /&gt;
* Computer mouse&lt;br /&gt;
* Word processing, rudimentary copy and paste&lt;br /&gt;
* Dynamic file linking&lt;br /&gt;
* Revision control/version control/source control&lt;br /&gt;
* Collaborative real-time editor&lt;br /&gt;
** User privilege control in that user can provide read-only access, read-write privilege to file&lt;br /&gt;
* Cord keyboard&lt;br /&gt;
** Marco keyboard that allows messages quickly, while using mouse at same time&lt;br /&gt;
* Not really a distributed operating system, but great start because multiple users at different terminals could share same resources&lt;br /&gt;
&lt;br /&gt;
== Early Internet ==&lt;br /&gt;
&lt;br /&gt;
== Alto ==&lt;br /&gt;
&lt;br /&gt;
Team: Tory, Veena, Sameer, Mert, Deep, Nameet, Moe&lt;br /&gt;
&lt;br /&gt;
* 1973&lt;br /&gt;
* High speed (3 Mbps @ 1km difference)&lt;br /&gt;
* Connects up to 256 machines&lt;br /&gt;
* Protocol similar to cross between UDP/TCP, before TCP invented&lt;br /&gt;
* Allowed sharing printers&lt;br /&gt;
* Also allowed for distributing files across computers (redundancy/reliability)&lt;br /&gt;
* Sort of early cloud&lt;br /&gt;
* Allowed for remote debugging, store error logs&lt;br /&gt;
* Allowed machines to use processing power of others&lt;br /&gt;
* much of the time it would be doing nothing&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_2&amp;diff=19640</id>
		<title>DistOS 2015W Session 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_2&amp;diff=19640"/>
		<updated>2015-01-13T01:17:52Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: Created page with &amp;quot;== Reading Response Discussion ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reading Response Discussion ==&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_1&amp;diff=19639</id>
		<title>DistOS 2015W Session 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_1&amp;diff=19639"/>
		<updated>2015-01-13T01:15:06Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Distributed OS is kind of OS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Notes for the first session that happened on Jan. 5th, 2015.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Course Outline =&lt;br /&gt;
&lt;br /&gt;
Undergrad Grading Scheme&lt;br /&gt;
* 15% Class Participation &lt;br /&gt;
* 15% Reading Responses&lt;br /&gt;
* 10% lecture Notes/Wiki Contributions &lt;br /&gt;
* 25% Midterm &lt;br /&gt;
* 35% Final Exam &lt;br /&gt;
&lt;br /&gt;
Grads Grading Scheme&lt;br /&gt;
* 15% Class Participation &lt;br /&gt;
* 15% Reading Responses&lt;br /&gt;
* 10% Lectures Notes/Wiki contributions&lt;br /&gt;
* 10% Project Proposal &lt;br /&gt;
* 15% Project Presentation &lt;br /&gt;
* 35% Final Project &lt;br /&gt;
&lt;br /&gt;
=== Project ===&lt;br /&gt;
* A literature review of distributing operations&lt;br /&gt;
* Research proposal on a problem related to distributed systems &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Discussion =&lt;br /&gt;
&lt;br /&gt;
== Q: What do you think of when you hear &#039;Distributed System&#039;? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Group 1 ===&lt;br /&gt;
* Sharing Resources&lt;br /&gt;
* Spreading Work Loads&lt;br /&gt;
* Scheduling&lt;br /&gt;
* Process migration&lt;br /&gt;
* Different nodes have different purpose&lt;br /&gt;
* Google&lt;br /&gt;
* Parallel running processes&lt;br /&gt;
* Nodes&lt;br /&gt;
* Resource Allocation across multiple nodes&lt;br /&gt;
* Scheduling multiple nodes&lt;br /&gt;
* Resources availability among nodes&lt;br /&gt;
* Problem: across multiple machine&lt;br /&gt;
&lt;br /&gt;
=== Group 2 ===&lt;br /&gt;
* Request comes from (usually) one computer and processing is usually handled by more than one computer&lt;br /&gt;
* Tasks are divided into small parts which can be processed individually before coming back together&lt;br /&gt;
* Usually deals with large scale data sets&lt;br /&gt;
* Globalization&lt;br /&gt;
* Fault tolerance&lt;br /&gt;
* Usually emphasize distributed agents to not work on certain schedule&lt;br /&gt;
* Examples: Map Reduce, cloud, cloud software (Google Drive)&lt;br /&gt;
&lt;br /&gt;
=== Group 3 ===&lt;br /&gt;
* Separated, networked machines&lt;br /&gt;
* Coordinated by similar or identical software &lt;br /&gt;
* Error recovery/redundancy &lt;br /&gt;
* No controlled storage &lt;br /&gt;
* Coordinated communication facilitating operation on coordinated task &lt;br /&gt;
* Leader/hierarchy for task delegation&lt;br /&gt;
&lt;br /&gt;
=== Group 4 ===&lt;br /&gt;
* Distributed, multiple systems&lt;br /&gt;
* OS: The root level system that operates a computer system &lt;br /&gt;
* Dist. OS more complexity &lt;br /&gt;
&lt;br /&gt;
=== Prof Discussion Notes ===&lt;br /&gt;
Key words: network, parallel, fault tolerant, redundancy, complexity&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
== Distributed OS is kind of OS ==&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;But what is an OS in the first place?&#039;&#039;&#039;&lt;br /&gt;
* Connection software and hardware&lt;br /&gt;
* Resource allocation&lt;br /&gt;
* Abstraction layers&lt;br /&gt;
* Makes it easy to run higher level programs on different computers&lt;br /&gt;
* Sharing: resources are split up and each process is isolated, this improves security and programming (no need to worry about sharing)&lt;br /&gt;
* Virtual memory, process scheduling&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is a distributed system?&#039;&#039;&#039;&lt;br /&gt;
* Feels like it is only a single node, but runs on many&lt;br /&gt;
* Do the things users take for granted on regular computers&lt;br /&gt;
* Doesn&#039;t actually work as a single (general use) computer - with 1000 computers one would expect it to be like a single computer with 1000 times the resources, but it&#039;s not&lt;br /&gt;
* In a way, opposite of an operating system: instead of splitting up a single computer into many, it takes many and tries to merge into one&lt;br /&gt;
* Resources can be divided as you want &lt;br /&gt;
* Centralized control solves some issues, but has issues of its own&lt;br /&gt;
* Since it cannot truly act as a single computer, we fake it as much as possible - and it works in some scenarios&lt;br /&gt;
* The more specialized the task, the better it will scale&lt;br /&gt;
* Interact it, process update, callback, &lt;br /&gt;
* Gmail so responsible   - it perfected , downloads in your browser &lt;br /&gt;
* Cache  - they predict what the processor going to do&lt;br /&gt;
&lt;br /&gt;
[[File:Dos.png|frame|center|Distributed Operating System represented as a Venn diagram. OS denotes an operating system, and DS denotes a distributed system. The black center represents a distributed operating system; a system with properties of an operating system and a distributed system.]]&lt;br /&gt;
&lt;br /&gt;
== Operating System Examples ==&lt;br /&gt;
&#039;&#039;&#039;Mobile devices - Phones&#039;&#039;&#039;&lt;br /&gt;
* iOS&lt;br /&gt;
* Android&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Embedded OS&#039;&#039;&#039; &lt;br /&gt;
* Linux&lt;br /&gt;
* QNX&lt;br /&gt;
* xBSD firewalls &lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Desktop&#039;&#039;&#039;&lt;br /&gt;
* Windows &lt;br /&gt;
* OSX&lt;br /&gt;
* Chrome OS&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
* Windows&lt;br /&gt;
* Linux&lt;br /&gt;
* BSD&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Main Frames&#039;&#039;&#039;&lt;br /&gt;
* OS/400&lt;br /&gt;
	&lt;br /&gt;
Is the cloud an OS? Important question.&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Cloud&#039;&#039;&#039;&lt;br /&gt;
* MPI&lt;br /&gt;
* AWS&lt;br /&gt;
* Google App Engine &lt;br /&gt;
	&lt;br /&gt;
No, they are at best proto-OSs because the abstractions they provide are very leaky. They only provide limited APIs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pick a system and show how it is and is not an OS ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Group 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;BOINC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| Very parallel&lt;br /&gt;
| Can handle only very specific (trivially parallelizable) types of problems&lt;br /&gt;
|-&lt;br /&gt;
| Availability&lt;br /&gt;
| Abstraction layer is poor&lt;br /&gt;
|-&lt;br /&gt;
| Scheduling&lt;br /&gt;
|-&lt;br /&gt;
| Networked&lt;br /&gt;
|-&lt;br /&gt;
| Nodes may come and leave as they like (it is active when the computer is idle)&lt;br /&gt;
|-&lt;br /&gt;
| Same problem at the same time&lt;br /&gt;
|-&lt;br /&gt;
| Redundant/Fault tolerant&lt;br /&gt;
|-&lt;br /&gt;
| Allocation can be handle by system&lt;br /&gt;
|-&lt;br /&gt;
| Large problem managed by one system&lt;br /&gt;
|-&lt;br /&gt;
| Anyone can submit projects&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Group 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Facebook&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| OK abstraction (for human communication/control)&lt;br /&gt;
| Doesn&#039;t really take a single resources and split it up into smaller ones &lt;br /&gt;
|-&lt;br /&gt;
| The programming API is stable&lt;br /&gt;
| The human API (user interface) is not stable&lt;br /&gt;
|-&lt;br /&gt;
| Able to separate resources such as wall posts, photos, etc&lt;br /&gt;
| Limited control&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
=== Group 3 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Google Docs (Drive)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| Has a file system&lt;br /&gt;
| Somehow still not a true OS&lt;br /&gt;
|-&lt;br /&gt;
| Provides hardware abstraction (users don&#039;t care how the requests are carried out)&lt;br /&gt;
|-&lt;br /&gt;
| Has an API&lt;br /&gt;
|}&lt;br /&gt;
	&lt;br /&gt;
=== Group 4 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;LinkedIn&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| Supports multiple location/users&lt;br /&gt;
| Specific functionality (not abstract)&lt;br /&gt;
|-&lt;br /&gt;
| Multiple servers around the world&lt;br /&gt;
|-&lt;br /&gt;
| Resource/Security management&lt;br /&gt;
|-&lt;br /&gt;
| Networked&lt;br /&gt;
|-&lt;br /&gt;
| Cross-platform (Desktop/Mobile)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Dos.png&amp;diff=19638</id>
		<title>File:Dos.png</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Dos.png&amp;diff=19638"/>
		<updated>2015-01-13T01:10:26Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: Distributed Operating System represented as a Venn diagram. OS denotes an operating system, and DS denotes a distributed system. The black center represents a distributed operating system; a system with properties of an operating system and a distribut...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Distributed Operating System represented as a Venn diagram. OS denotes an operating system, and DS denotes a distributed system. The black center represents a distributed operating system; a system with properties of an operating system and a distributed system.&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_1&amp;diff=19637</id>
		<title>DistOS 2015W Session 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_1&amp;diff=19637"/>
		<updated>2015-01-13T00:45:42Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Group 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Notes for the first session that happened on Jan. 5th, 2015.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Course Outline =&lt;br /&gt;
&lt;br /&gt;
Undergrad Grading Scheme&lt;br /&gt;
* 15% Class Participation &lt;br /&gt;
* 15% Reading Responses&lt;br /&gt;
* 10% lecture Notes/Wiki Contributions &lt;br /&gt;
* 25% Midterm &lt;br /&gt;
* 35% Final Exam &lt;br /&gt;
&lt;br /&gt;
Grads Grading Scheme&lt;br /&gt;
* 15% Class Participation &lt;br /&gt;
* 15% Reading Responses&lt;br /&gt;
* 10% Lectures Notes/Wiki contributions&lt;br /&gt;
* 10% Project Proposal &lt;br /&gt;
* 15% Project Presentation &lt;br /&gt;
* 35% Final Project &lt;br /&gt;
&lt;br /&gt;
=== Project ===&lt;br /&gt;
* A literature review of distributing operations&lt;br /&gt;
* Research proposal on a problem related to distributed systems &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Discussion =&lt;br /&gt;
&lt;br /&gt;
== Q: What do you think of when you hear &#039;Distributed System&#039;? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Group 1 ===&lt;br /&gt;
* Sharing Resources&lt;br /&gt;
* Spreading Work Loads&lt;br /&gt;
* Scheduling&lt;br /&gt;
* Process migration&lt;br /&gt;
* Different nodes have different purpose&lt;br /&gt;
* Google&lt;br /&gt;
* Parallel running processes&lt;br /&gt;
* Nodes&lt;br /&gt;
* Resource Allocation across multiple nodes&lt;br /&gt;
* Scheduling multiple nodes&lt;br /&gt;
* Resources availability among nodes&lt;br /&gt;
* Problem: across multiple machine&lt;br /&gt;
&lt;br /&gt;
=== Group 2 ===&lt;br /&gt;
* Request comes from (usually) one computer and processing is usually handled by more than one computer&lt;br /&gt;
* Tasks are divided into small parts which can be processed individually before coming back together&lt;br /&gt;
* Usually deals with large scale data sets&lt;br /&gt;
* Globalization&lt;br /&gt;
* Fault tolerance&lt;br /&gt;
* Usually emphasize distributed agents to not work on certain schedule&lt;br /&gt;
* Examples: Map Reduce, cloud, cloud software (Google Drive)&lt;br /&gt;
&lt;br /&gt;
=== Group 3 ===&lt;br /&gt;
* Separated, networked machines&lt;br /&gt;
* Coordinated by similar or identical software &lt;br /&gt;
* Error recovery/redundancy &lt;br /&gt;
* No controlled storage &lt;br /&gt;
* Coordinated communication facilitating operation on coordinated task &lt;br /&gt;
* Leader/hierarchy for task delegation&lt;br /&gt;
&lt;br /&gt;
=== Group 4 ===&lt;br /&gt;
* Distributed, multiple systems&lt;br /&gt;
* OS: The root level system that operates a computer system &lt;br /&gt;
* Dist. OS more complexity &lt;br /&gt;
&lt;br /&gt;
=== Prof Discussion Notes ===&lt;br /&gt;
Key words: network, parallel, fault tolerant, redundancy, complexity&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
== Distributed OS is kind of OS ==&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;But what is an OS in the first place?&#039;&#039;&#039;&lt;br /&gt;
* Connection software and hardware&lt;br /&gt;
* Resource allocation&lt;br /&gt;
* Abstraction layers&lt;br /&gt;
* Makes it easy to run higher level programs on different computers&lt;br /&gt;
* Sharing: resources are split up and each process is isolated, this improves security and programming (no need to worry about sharing)&lt;br /&gt;
* Virtual memory, process scheduling&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is a distributed system?&#039;&#039;&#039;&lt;br /&gt;
* Feels like it is only a single node, but runs on many&lt;br /&gt;
* Do the things users take for granted on regular computers&lt;br /&gt;
* Doesn&#039;t actually work as a single (general use) computer - with 1000 computers one would expect it to be like a single computer with 1000 times the resources, but it&#039;s not&lt;br /&gt;
* In a way, opposite of an operating system: instead of splitting up a single computer into many, it takes many and tries to merge into one&lt;br /&gt;
* Resources can be divided as you want &lt;br /&gt;
* Centralized control solves some issues, but has issues of its own&lt;br /&gt;
* Since it cannot truly act as a single computer, we fake it as much as possible - and it works in some scenarios&lt;br /&gt;
* The more specialized the task, the better it will scale&lt;br /&gt;
* Interact it, process update, callback, &lt;br /&gt;
* Gmail so responsible   - it perfected , downloads in your browser &lt;br /&gt;
* Cache  - they predict what the processor going to do &lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
== Operating System Examples ==&lt;br /&gt;
&#039;&#039;&#039;Mobile devices - Phones&#039;&#039;&#039;&lt;br /&gt;
* iOS&lt;br /&gt;
* Android&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Embedded OS&#039;&#039;&#039; &lt;br /&gt;
* Linux&lt;br /&gt;
* QNX&lt;br /&gt;
* xBSD firewalls &lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Desktop&#039;&#039;&#039;&lt;br /&gt;
* Windows &lt;br /&gt;
* OSX&lt;br /&gt;
* Chrome OS&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
* Windows&lt;br /&gt;
* Linux&lt;br /&gt;
* BSD&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Main Frames&#039;&#039;&#039;&lt;br /&gt;
* OS/400&lt;br /&gt;
	&lt;br /&gt;
Is the cloud an OS? Important question.&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Cloud&#039;&#039;&#039;&lt;br /&gt;
* MPI&lt;br /&gt;
* AWS&lt;br /&gt;
* Google App Engine &lt;br /&gt;
	&lt;br /&gt;
No, they are at best proto-OSs because the abstractions they provide are very leaky. They only provide limited APIs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pick a system and show how it is and is not an OS ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Group 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;BOINC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| Very parallel&lt;br /&gt;
| Can handle only very specific (trivially parallelizable) types of problems&lt;br /&gt;
|-&lt;br /&gt;
| Availability&lt;br /&gt;
| Abstraction layer is poor&lt;br /&gt;
|-&lt;br /&gt;
| Scheduling&lt;br /&gt;
|-&lt;br /&gt;
| Networked&lt;br /&gt;
|-&lt;br /&gt;
| Nodes may come and leave as they like (it is active when the computer is idle)&lt;br /&gt;
|-&lt;br /&gt;
| Same problem at the same time&lt;br /&gt;
|-&lt;br /&gt;
| Redundant/Fault tolerant&lt;br /&gt;
|-&lt;br /&gt;
| Allocation can be handle by system&lt;br /&gt;
|-&lt;br /&gt;
| Large problem managed by one system&lt;br /&gt;
|-&lt;br /&gt;
| Anyone can submit projects&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Group 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Facebook&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| OK abstraction (for human communication/control)&lt;br /&gt;
| Doesn&#039;t really take a single resources and split it up into smaller ones &lt;br /&gt;
|-&lt;br /&gt;
| The programming API is stable&lt;br /&gt;
| The human API (user interface) is not stable&lt;br /&gt;
|-&lt;br /&gt;
| Able to separate resources such as wall posts, photos, etc&lt;br /&gt;
| Limited control&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
=== Group 3 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Google Docs (Drive)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| Has a file system&lt;br /&gt;
| Somehow still not a true OS&lt;br /&gt;
|-&lt;br /&gt;
| Provides hardware abstraction (users don&#039;t care how the requests are carried out)&lt;br /&gt;
|-&lt;br /&gt;
| Has an API&lt;br /&gt;
|}&lt;br /&gt;
	&lt;br /&gt;
=== Group 4 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;LinkedIn&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| Supports multiple location/users&lt;br /&gt;
| Specific functionality (not abstract)&lt;br /&gt;
|-&lt;br /&gt;
| Multiple servers around the world&lt;br /&gt;
|-&lt;br /&gt;
| Resource/Security management&lt;br /&gt;
|-&lt;br /&gt;
| Networked&lt;br /&gt;
|-&lt;br /&gt;
| Cross-platform (Desktop/Mobile)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_1&amp;diff=19636</id>
		<title>DistOS 2015W Session 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_1&amp;diff=19636"/>
		<updated>2015-01-13T00:45:28Z</updated>

		<summary type="html">&lt;p&gt;Hassansaid: /* Group 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Notes for the first session that happened on Jan. 5th, 2015.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Course Outline =&lt;br /&gt;
&lt;br /&gt;
Undergrad Grading Scheme&lt;br /&gt;
* 15% Class Participation &lt;br /&gt;
* 15% Reading Responses&lt;br /&gt;
* 10% lecture Notes/Wiki Contributions &lt;br /&gt;
* 25% Midterm &lt;br /&gt;
* 35% Final Exam &lt;br /&gt;
&lt;br /&gt;
Grads Grading Scheme&lt;br /&gt;
* 15% Class Participation &lt;br /&gt;
* 15% Reading Responses&lt;br /&gt;
* 10% Lectures Notes/Wiki contributions&lt;br /&gt;
* 10% Project Proposal &lt;br /&gt;
* 15% Project Presentation &lt;br /&gt;
* 35% Final Project &lt;br /&gt;
&lt;br /&gt;
=== Project ===&lt;br /&gt;
* A literature review of distributing operations&lt;br /&gt;
* Research proposal on a problem related to distributed systems &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Discussion =&lt;br /&gt;
&lt;br /&gt;
== Q: What do you think of when you hear &#039;Distributed System&#039;? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Group 1 ===&lt;br /&gt;
* Sharing Resources&lt;br /&gt;
* Spreading Work Loads&lt;br /&gt;
* Scheduling&lt;br /&gt;
* Process migration&lt;br /&gt;
* Different nodes have different purpose&lt;br /&gt;
* Google&lt;br /&gt;
* Parallel running processes&lt;br /&gt;
* Nodes&lt;br /&gt;
* Resource Allocation across multiple nodes&lt;br /&gt;
* Scheduling multiple nodes&lt;br /&gt;
* Resources availability among nodes&lt;br /&gt;
* Problem: across multiple machine&lt;br /&gt;
&lt;br /&gt;
=== Group 2 ===&lt;br /&gt;
* Request comes from (usually) one computer and processing is usually handled by more than one computer&lt;br /&gt;
* Tasks are divided into small parts which can be processed individually before coming back together&lt;br /&gt;
* Usually deals with large scale data sets&lt;br /&gt;
* Globalization&lt;br /&gt;
* Fault tolerance&lt;br /&gt;
* Usually emphasize distributed agents to not work on certain schedule&lt;br /&gt;
&lt;br /&gt;
=== Group 3 ===&lt;br /&gt;
* Separated, networked machines&lt;br /&gt;
* Coordinated by similar or identical software &lt;br /&gt;
* Error recovery/redundancy &lt;br /&gt;
* No controlled storage &lt;br /&gt;
* Coordinated communication facilitating operation on coordinated task &lt;br /&gt;
* Leader/hierarchy for task delegation&lt;br /&gt;
&lt;br /&gt;
=== Group 4 ===&lt;br /&gt;
* Distributed, multiple systems&lt;br /&gt;
* OS: The root level system that operates a computer system &lt;br /&gt;
* Dist. OS more complexity &lt;br /&gt;
&lt;br /&gt;
=== Prof Discussion Notes ===&lt;br /&gt;
Key words: network, parallel, fault tolerant, redundancy, complexity&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
== Distributed OS is kind of OS ==&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;But what is an OS in the first place?&#039;&#039;&#039;&lt;br /&gt;
* Connection software and hardware&lt;br /&gt;
* Resource allocation&lt;br /&gt;
* Abstraction layers&lt;br /&gt;
* Makes it easy to run higher level programs on different computers&lt;br /&gt;
* Sharing: resources are split up and each process is isolated, this improves security and programming (no need to worry about sharing)&lt;br /&gt;
* Virtual memory, process scheduling&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is a distributed system?&#039;&#039;&#039;&lt;br /&gt;
* Feels like it is only a single node, but runs on many&lt;br /&gt;
* Do the things users take for granted on regular computers&lt;br /&gt;
* Doesn&#039;t actually work as a single (general use) computer - with 1000 computers one would expect it to be like a single computer with 1000 times the resources, but it&#039;s not&lt;br /&gt;
* In a way, opposite of an operating system: instead of splitting up a single computer into many, it takes many and tries to merge into one&lt;br /&gt;
* Resources can be divided as you want &lt;br /&gt;
* Centralized control solves some issues, but has issues of its own&lt;br /&gt;
* Since it cannot truly act as a single computer, we fake it as much as possible - and it works in some scenarios&lt;br /&gt;
* The more specialized the task, the better it will scale&lt;br /&gt;
* Interact it, process update, callback, &lt;br /&gt;
* Gmail so responsible   - it perfected , downloads in your browser &lt;br /&gt;
* Cache  - they predict what the processor going to do &lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
== Operating System Examples ==&lt;br /&gt;
&#039;&#039;&#039;Mobile devices - Phones&#039;&#039;&#039;&lt;br /&gt;
* iOS&lt;br /&gt;
* Android&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Embedded OS&#039;&#039;&#039; &lt;br /&gt;
* Linux&lt;br /&gt;
* QNX&lt;br /&gt;
* xBSD firewalls &lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Desktop&#039;&#039;&#039;&lt;br /&gt;
* Windows &lt;br /&gt;
* OSX&lt;br /&gt;
* Chrome OS&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
* Windows&lt;br /&gt;
* Linux&lt;br /&gt;
* BSD&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Main Frames&#039;&#039;&#039;&lt;br /&gt;
* OS/400&lt;br /&gt;
	&lt;br /&gt;
Is the cloud an OS? Important question.&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Cloud&#039;&#039;&#039;&lt;br /&gt;
* MPI&lt;br /&gt;
* AWS&lt;br /&gt;
* Google App Engine &lt;br /&gt;
	&lt;br /&gt;
No, they are at best proto-OSs because the abstractions they provide are very leaky. They only provide limited APIs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pick a system and show how it is and is not an OS ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Group 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;BOINC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| Very parallel&lt;br /&gt;
| Can handle only very specific (trivially parallelizable) types of problems&lt;br /&gt;
|-&lt;br /&gt;
| Availability&lt;br /&gt;
| Abstraction layer is poor&lt;br /&gt;
|-&lt;br /&gt;
| Scheduling&lt;br /&gt;
|-&lt;br /&gt;
| Networked&lt;br /&gt;
|-&lt;br /&gt;
| Nodes may come and leave as they like (it is active when the computer is idle)&lt;br /&gt;
|-&lt;br /&gt;
| Same problem at the same time&lt;br /&gt;
|-&lt;br /&gt;
| Redundant/Fault tolerant&lt;br /&gt;
|-&lt;br /&gt;
| Allocation can be handle by system&lt;br /&gt;
|-&lt;br /&gt;
| Large problem managed by one system&lt;br /&gt;
|-&lt;br /&gt;
| Anyone can submit projects&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Group 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Facebook&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| OK abstraction (for human communication/control)&lt;br /&gt;
| Doesn&#039;t really take a single resources and split it up into smaller ones &lt;br /&gt;
|-&lt;br /&gt;
| The programming API is stable&lt;br /&gt;
| The human API (user interface) is not stable&lt;br /&gt;
|-&lt;br /&gt;
| Able to separate resources such as wall posts, photos, etc&lt;br /&gt;
| Limited control&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
=== Group 3 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Google Docs (Drive)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| Has a file system&lt;br /&gt;
| Somehow still not a true OS&lt;br /&gt;
|-&lt;br /&gt;
| Provides hardware abstraction (users don&#039;t care how the requests are carried out)&lt;br /&gt;
|-&lt;br /&gt;
| Has an API&lt;br /&gt;
|}&lt;br /&gt;
	&lt;br /&gt;
=== Group 4 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;LinkedIn&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Similarities to a traditional OS&lt;br /&gt;
! Differences from a traditional OS&lt;br /&gt;
|-&lt;br /&gt;
| Supports multiple location/users&lt;br /&gt;
| Specific functionality (not abstract)&lt;br /&gt;
|-&lt;br /&gt;
| Multiple servers around the world&lt;br /&gt;
|-&lt;br /&gt;
| Resource/Security management&lt;br /&gt;
|-&lt;br /&gt;
| Networked&lt;br /&gt;
|-&lt;br /&gt;
| Cross-platform (Desktop/Mobile)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hassansaid</name></author>
	</entry>
</feed>