<?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=Operating_Systems_2015F_Lecture_23</id>
	<title>Operating Systems 2015F Lecture 23 - 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=Operating_Systems_2015F_Lecture_23"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_Systems_2015F_Lecture_23&amp;action=history"/>
	<updated>2026-05-01T05:32:37Z</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=Operating_Systems_2015F_Lecture_23&amp;diff=20418&amp;oldid=prev</id>
		<title>Soma: Created page with &quot;==Video==  The video for the lecture given on December 2, 2015 [http://homeostasis.scs.carleton.ca/~soma/os-2015f/lectures/comp3000-2015f-lec23-02Dec2015.mp4 is now available]...&quot;</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_Systems_2015F_Lecture_23&amp;diff=20418&amp;oldid=prev"/>
		<updated>2015-12-03T04:48:25Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Video==  The video for the lecture given on December 2, 2015 [http://homeostasis.scs.carleton.ca/~soma/os-2015f/lectures/comp3000-2015f-lec23-02Dec2015.mp4 is now available]...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Video==&lt;br /&gt;
&lt;br /&gt;
The video for the lecture given on December 2, 2015 [http://homeostasis.scs.carleton.ca/~soma/os-2015f/lectures/comp3000-2015f-lec23-02Dec2015.mp4 is now available].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lecture 23&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
* Project due Monday at midnight (last day of classes)&lt;br /&gt;
* Last interviews will be on Wednesday, Dec. 9th&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Therac-25&lt;br /&gt;
* other operating systems&lt;br /&gt;
* randomness&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therac series of machines irradiate individuals...&lt;br /&gt;
to treat cancer (normally)&lt;br /&gt;
&lt;br /&gt;
Used hardware and software to control radiation dosage&lt;br /&gt;
(location and intensity)&lt;br /&gt;
&lt;br /&gt;
How do you make sure you don&amp;#039;t fry a patient?&lt;br /&gt;
&lt;br /&gt;
There&amp;#039;s the specific dose (for a particular patient)&lt;br /&gt;
and there&amp;#039;s a maximum dose (for anyone)&lt;br /&gt;
&lt;br /&gt;
In earlier models, specific dose was determined by software,&lt;br /&gt;
while the maximum dose was limited by hardware interlocks&lt;br /&gt;
&lt;br /&gt;
With the Therac-25, they removed the hardware as a cost saving measure&lt;br /&gt;
&lt;br /&gt;
If the software was perfect this wouldn&amp;#039;t have been a problem...&lt;br /&gt;
&lt;br /&gt;
There were concurrency issues in the software (race conditions)&lt;br /&gt;
&lt;br /&gt;
We can&amp;#039;t guarantee we won&amp;#039;t make these mistakes again.&lt;br /&gt;
&lt;br /&gt;
But I can suggest...&lt;br /&gt;
* When possible, eliminate concurrency&lt;br /&gt;
  - single threaded processes are wonderful&lt;br /&gt;
  - threads are generally used to handle blocking I/O;&lt;br /&gt;
    instead, just use non-blocking I/O&lt;br /&gt;
  - really large scale computations will have to span computers&lt;br /&gt;
    - why not use the same techniques to run across cores?&lt;br /&gt;
  - use functional programming where possible&lt;br /&gt;
&lt;br /&gt;
Synchronized methods in Java impose mutual exclusion on their contents&lt;br /&gt;
 - okay but better to not have to deal with threads&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other operating systems&lt;br /&gt;
-----------------------&lt;br /&gt;
Why not throw away what we have and start over?&lt;br /&gt;
&lt;br /&gt;
Because there is too much software written that depends on the old OS&lt;br /&gt;
&lt;br /&gt;
To make a new OS, you either&lt;br /&gt;
1. start anew and build an adaptation layer for old software&lt;br /&gt;
2. start anew and write everything from scratch&lt;br /&gt;
&lt;br /&gt;
#1 is bad because the old OS is going to be better than your new OS&lt;br /&gt;
  at running old software&lt;br /&gt;
#2 is bad because where do you get the resources to start over?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We might get a really new OS in two places:&lt;br /&gt;
* Quantum computing&lt;br /&gt;
* Biological computing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So what OSs do we have?&lt;br /&gt;
* UNIX-based&lt;br /&gt;
* Windows NT-based&lt;br /&gt;
&lt;br /&gt;
UNIX started at Bell Labs, moved to Berkeley, and spread from there&lt;br /&gt;
&lt;br /&gt;
UNIX always ran on &amp;quot;bigger&amp;quot; machines&lt;br /&gt;
hobbyist/home PCs couldn&amp;#039;t run UNIX&lt;br /&gt;
&lt;br /&gt;
Home PCs didn&amp;#039;t have memory management units (MMUs), so no&lt;br /&gt;
 * page tables&lt;br /&gt;
 * TLBs&lt;br /&gt;
 * no virtual addresses, only physical addresses&lt;br /&gt;
&lt;br /&gt;
So early home computer operating systems didn&amp;#039;t support processes&lt;br /&gt;
 - OS just was libraries for accessing hardware&lt;br /&gt;
&lt;br /&gt;
* Apple ][&amp;#039;s, Atari 400/800, Commodore Vic20 &amp;amp; 64 all had no real OS&lt;br /&gt;
&lt;br /&gt;
* early PCs were supposed to run CP/M, but the owner of it didn&amp;#039;t play&lt;br /&gt;
  ball with IBM&lt;br /&gt;
&lt;br /&gt;
* So Bill Gates bought/created MS-DOS, licensed it to IBM&lt;br /&gt;
* MacOS also didn&amp;#039;t support an MMU&lt;br /&gt;
&lt;br /&gt;
MS-DOS and MacOS were really, really bad at connecting to the Internet&lt;br /&gt;
 - couldn&amp;#039;t handle the concurrency of network traffic&lt;br /&gt;
&lt;br /&gt;
So they needed a replacement&lt;br /&gt;
&lt;br /&gt;
Apple tried hard to develop a replacement and failed (Taligent),&lt;br /&gt;
  * bought NeXTStep, that became MacOS X&lt;br /&gt;
  * NeXTStep was a  UNIX plus a Postscript-based GUI&lt;br /&gt;
    (developed by NeXT a company founded by Steve Jobs)&lt;br /&gt;
&lt;br /&gt;
Microsoft needed a new OS too, got Windows NT from DEC&amp;#039;s VMS group&lt;br /&gt;
&lt;br /&gt;
UNIX had diversified but then started supporting the POSIX standards&lt;br /&gt;
&lt;br /&gt;
Nowadays, instead of POSIX we have the Linux kernel&lt;br /&gt;
&lt;br /&gt;
Two main lines of UNIX descendents today&lt;br /&gt;
 * xBSDs (FreeBSD, OpenBSD, NetBSD)&lt;br /&gt;
 * Linux&lt;br /&gt;
&lt;br /&gt;
Linux is just a kernel.  The BSDs are a whole UNIX-like OS developed together&lt;br /&gt;
&lt;br /&gt;
Linux userland is developed as many projects and unified in Linux distributions&lt;br /&gt;
&lt;br /&gt;
It comes down to licensing and lawyers&lt;br /&gt;
&lt;br /&gt;
In the early 1990&amp;#039;s, AT&amp;amp;T&amp;#039;s lawyers came after BSD.&lt;br /&gt;
So BSD was held back just as the Web was taking off&lt;br /&gt;
&lt;br /&gt;
Free Software Foundation&lt;br /&gt;
 - came about because of proprietary UNIX flavors&lt;br /&gt;
&lt;br /&gt;
BSD license allowed for proprietary forks&lt;br /&gt;
 - just give a copyright notice in documentation&lt;br /&gt;
&lt;br /&gt;
FSF wanted a UNIX-like system that would be &amp;quot;free&amp;quot;&lt;br /&gt;
 - free as in freedom, all would be able to use and change it&lt;br /&gt;
 - GNU GPL, General Public License&lt;br /&gt;
   - you can do whatever you want, so long as you also give away&lt;br /&gt;
     the source code with any binaries and you don&amp;#039;t restrict&lt;br /&gt;
     the freedom of others&lt;br /&gt;
&lt;br /&gt;
GNU system was successfull except for one component,&lt;br /&gt;
the kernel&lt;br /&gt;
&lt;br /&gt;
QNX&lt;br /&gt;
 - example of an embedded, proprietary operating system&lt;br /&gt;
 - used to be very popular, now being replaced by...Linux&lt;br /&gt;
 - tend to stick around now mainly because of regulatory issues,&lt;br /&gt;
   or severe resource constraints&lt;br /&gt;
 - QNX is a microkernel-based system with POSIX compatibility&lt;br /&gt;
   - everything is a process&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
</feed>