<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=DistOS_2021F_2021-12-09</id>
	<title>DistOS 2021F 2021-12-09 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=DistOS_2021F_2021-12-09"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_2021-12-09&amp;action=history"/>
	<updated>2026-05-13T04:07:27Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_2021-12-09&amp;diff=23581&amp;oldid=prev</id>
		<title>Soma: Created page with &quot;==Notes==  &lt;pre&gt; Lecture 22 ----------  Final exam review   - themes of the class  - key papers &amp; concepts  - potential questions  Format of final exam  - 3 hours  - essay que...&quot;</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2021F_2021-12-09&amp;diff=23581&amp;oldid=prev"/>
		<updated>2021-12-10T00:15:47Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Notes==  &amp;lt;pre&amp;gt; Lecture 22 ----------  Final exam review   - themes of the class  - key papers &amp;amp; concepts  - potential questions  Format of final exam  - 3 hours  - essay que...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Notes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lecture 22&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
Final exam review&lt;br /&gt;
&lt;br /&gt;
 - themes of the class&lt;br /&gt;
 - key papers &amp;amp; concepts&lt;br /&gt;
 - potential questions&lt;br /&gt;
&lt;br /&gt;
Format of final exam&lt;br /&gt;
 - 3 hours&lt;br /&gt;
 - essay questions, 3 or 4 out of more&lt;br /&gt;
   (haven&amp;#039;t created final yet)&lt;br /&gt;
 - open book, open note, open internet&lt;br /&gt;
 - just, NO COLLABORATION&lt;br /&gt;
 - and please, no plagiarism&lt;br /&gt;
   - all words should be your own&lt;br /&gt;
   - wasn&amp;#039;t an issue on the midterm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Themes of the class&lt;br /&gt;
 - distributed OSs can&amp;#039;t just copy single-system OSs&lt;br /&gt;
   because the abstractions don&amp;#039;t scale&lt;br /&gt;
   - UNIX-like systems work well for individual systems&lt;br /&gt;
   - people know how to program them, so we want&lt;br /&gt;
     to keep them as much as possible&lt;br /&gt;
 - but to scale, we need to approach problems from&lt;br /&gt;
   different angles, make use of different abstractions&lt;br /&gt;
&lt;br /&gt;
Why don&amp;#039;t single system OSs scale?&lt;br /&gt;
Key assumptions are violated&lt;br /&gt;
 - process memory is strongly consistent&lt;br /&gt;
   and access to it is roughly uniform&lt;br /&gt;
    - low latency&lt;br /&gt;
 - files are consistent&lt;br /&gt;
 - system all works or is completely broken&lt;br /&gt;
    - partial failures not a concern&lt;br /&gt;
 - so, communication is consistent and reliable&lt;br /&gt;
&lt;br /&gt;
This all changes when systems are connected by networks&lt;br /&gt;
 - network is *unreliable* and insecure&lt;br /&gt;
   - lose packets or entire connections&lt;br /&gt;
 - individual hosts fail independently yet&lt;br /&gt;
   distributed application should keep running&lt;br /&gt;
     - has to, because otherwise nothing would work&lt;br /&gt;
&lt;br /&gt;
(You know video for all classes are available through&lt;br /&gt;
brightspace right?)&lt;br /&gt;
&lt;br /&gt;
Note that older attempts at distributed OSs dealt with distribution but not with reliability&lt;br /&gt;
 - allowed for whole system to go down when individual ones did&lt;br /&gt;
&lt;br /&gt;
Later there was replication to enable reliability&lt;br /&gt;
&lt;br /&gt;
But only when we had jobs that needed to be bigger than&lt;br /&gt;
one host did we really scale things&lt;br /&gt;
  - the web&lt;br /&gt;
&lt;br /&gt;
(Scientific computing has always needed lots of computing power, but it was a specialized discipline with very different kinds of production requirements.)&lt;br /&gt;
&lt;br /&gt;
So, what are the strategies to make a platform for distributed applications?&lt;br /&gt;
 - keep UNIX, but in the form of containers&lt;br /&gt;
   - ephemeral, often immutable hosts&lt;br /&gt;
 - orchestration to manage containers&lt;br /&gt;
 - distributed data stores (filesystems, key-value,&lt;br /&gt;
   relational databases) built on immutability&lt;br /&gt;
   as much as possible&lt;br /&gt;
     - record append files&lt;br /&gt;
     - immutable tablets&lt;br /&gt;
     - immutable objects/chunks&lt;br /&gt;
 - relax consistency as much as possible&lt;br /&gt;
 - where we need consistency, need special mechanisms&lt;br /&gt;
   - use consensus algorithms (Paxos, etc)&lt;br /&gt;
     as little as possible to avoid bottlenecks&lt;br /&gt;
   - use synchonized time/order of events&lt;br /&gt;
   - make use of domain-specific regularities&lt;br /&gt;
     to optimize&lt;br /&gt;
 - replicate data and metadata for reliability &amp;amp;&lt;br /&gt;
   performance&lt;br /&gt;
   - replication leads to consistency issues,&lt;br /&gt;
     which are solved through a combination of&lt;br /&gt;
     immutability and consensus&lt;br /&gt;
 - if you want performance, assume system is trusted&lt;br /&gt;
   - nodes can fail, but any bad behavior is strictly&lt;br /&gt;
     bounded&lt;br /&gt;
 - if you can&amp;#039;t trust systems centrally because&lt;br /&gt;
   they are controlled by mutually non-trusting parties,&lt;br /&gt;
   you have to address the byzantine general&amp;#039;s problem&lt;br /&gt;
     - and solutions tend to be expensive!&lt;br /&gt;
     - this is where you get cryptocurrencies and&lt;br /&gt;
       proof of work&lt;br /&gt;
 - these systems are best suited for embarassingly&lt;br /&gt;
   parallel tasks, e.g., ones that fit the mapreduce&lt;br /&gt;
   model or are serving independent customers concurrently&lt;br /&gt;
     - great for major online app/service providers,&lt;br /&gt;
       Facebook, Google, Amazon, etc&lt;br /&gt;
 - however, we can do computations that require more coordination - but we have to optimize every specific type separately (i.e., we can optimize for ML but it won&amp;#039;t help with doing large-scale simulations)&lt;br /&gt;
&lt;br /&gt;
Single system OSs got us used to having a single infrastructure for everything&lt;br /&gt;
 - in a distributed world, the infrastructure has to mirror&lt;br /&gt;
   application requirements&lt;br /&gt;
   - except, maybe, when we do lots of engineering&lt;br /&gt;
     (think Ceph and Spanner)&lt;br /&gt;
   - and even there, we have to be careful, will need&lt;br /&gt;
     to do app-specific tweaking&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The best essays will&lt;br /&gt;
 - have a clear argument&lt;br /&gt;
 - logical arguments&lt;br /&gt;
 - many specific examples drawing upon multiple papers&lt;br /&gt;
   from the class&lt;br /&gt;
     - you can bring in other sources, but focus&lt;br /&gt;
       should be on what we covered&lt;br /&gt;
&lt;br /&gt;
Remember you&amp;#039;re demostrating that you know the class material&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
</feed>