Operating Systems 2015F Lecture 23

From Soma-notes

Video

The video for the lecture given on December 2, 2015 is now available.

Notes

Lecture 23
----------

* Project due Monday at midnight (last day of classes)
* Last interviews will be on Wednesday, Dec. 9th


* Therac-25
* other operating systems
* randomness


Therac series of machines irradiate individuals...
to treat cancer (normally)

Used hardware and software to control radiation dosage
(location and intensity)

How do you make sure you don't fry a patient?

There's the specific dose (for a particular patient)
and there's a maximum dose (for anyone)

In earlier models, specific dose was determined by software,
while the maximum dose was limited by hardware interlocks

With the Therac-25, they removed the hardware as a cost saving measure

If the software was perfect this wouldn't have been a problem...

There were concurrency issues in the software (race conditions)

We can't guarantee we won't make these mistakes again.

But I can suggest...
* When possible, eliminate concurrency
  - single threaded processes are wonderful
  - threads are generally used to handle blocking I/O;
    instead, just use non-blocking I/O
  - really large scale computations will have to span computers
    - why not use the same techniques to run across cores?
  - use functional programming where possible

Synchronized methods in Java impose mutual exclusion on their contents
 - okay but better to not have to deal with threads


Other operating systems
-----------------------
Why not throw away what we have and start over?

Because there is too much software written that depends on the old OS

To make a new OS, you either
1. start anew and build an adaptation layer for old software
2. start anew and write everything from scratch

#1 is bad because the old OS is going to be better than your new OS
  at running old software
#2 is bad because where do you get the resources to start over?


We might get a really new OS in two places:
* Quantum computing
* Biological computing


So what OSs do we have?
* UNIX-based
* Windows NT-based

UNIX started at Bell Labs, moved to Berkeley, and spread from there

UNIX always ran on "bigger" machines
hobbyist/home PCs couldn't run UNIX

Home PCs didn't have memory management units (MMUs), so no
 * page tables
 * TLBs
 * no virtual addresses, only physical addresses

So early home computer operating systems didn't support processes
 - OS just was libraries for accessing hardware

* Apple ]['s, Atari 400/800, Commodore Vic20 & 64 all had no real OS

* early PCs were supposed to run CP/M, but the owner of it didn't play
  ball with IBM

* So Bill Gates bought/created MS-DOS, licensed it to IBM
* MacOS also didn't support an MMU

MS-DOS and MacOS were really, really bad at connecting to the Internet
 - couldn't handle the concurrency of network traffic

So they needed a replacement

Apple tried hard to develop a replacement and failed (Taligent),
  * bought NeXTStep, that became MacOS X
  * NeXTStep was a  UNIX plus a Postscript-based GUI
    (developed by NeXT a company founded by Steve Jobs)

Microsoft needed a new OS too, got Windows NT from DEC's VMS group

UNIX had diversified but then started supporting the POSIX standards

Nowadays, instead of POSIX we have the Linux kernel

Two main lines of UNIX descendents today
 * xBSDs (FreeBSD, OpenBSD, NetBSD)
 * Linux

Linux is just a kernel.  The BSDs are a whole UNIX-like OS developed together

Linux userland is developed as many projects and unified in Linux distributions

It comes down to licensing and lawyers

In the early 1990's, AT&T's lawyers came after BSD.
So BSD was held back just as the Web was taking off

Free Software Foundation
 - came about because of proprietary UNIX flavors

BSD license allowed for proprietary forks
 - just give a copyright notice in documentation

FSF wanted a UNIX-like system that would be "free"
 - free as in freedom, all would be able to use and change it
 - GNU GPL, General Public License
   - you can do whatever you want, so long as you also give away
     the source code with any binaries and you don't restrict
     the freedom of others

GNU system was successfull except for one component,
the kernel

QNX
 - example of an embedded, proprietary operating system
 - used to be very popular, now being replaced by...Linux
 - tend to stick around now mainly because of regulatory issues,
   or severe resource constraints
 - QNX is a microkernel-based system with POSIX compatibility
   - everything is a process