DistOS 2018F 2018-10-10
Readings
Plan 9 & Inferno
- Presotto et. al, Plan 9, A Distributed System (1991)
- Pike et al., Plan 9 from Bell Labs (1995)
- Doward et al., The Inferno Operating System (1997)
- Inferno OS website (browse)
Notes
In-class lecture notes:
Where did the people who built these systems go? Are they still at bell labs? They are the people who made UNIX many years ago, then developed plan 9 and inferno then they went to Google and developed GO. Inferno was early 2000s. A direct continuation between Inferno and GO. GO is garbage collected vs. RUST. Automatic reference counting is not garbage collection, it is memory management. GO no pointers, RUST has pointers. GO produces binaries that don’t have any dependencies....similar to objective C, smaller than a Java run-time.
Inferno was like Java
What is Plan9? Why did they need to develop something better than Unix? Force people to share resources? Assumed that everything is run by the same administrator. Access to resources and network transparent. Why did they want to fix UNIX, what went wrong with UNIX? Graphics and networking and everything else were just a hack on-top of UNIX. Berkley developed Network, MIT developed graphics and from Bell Labs perspective, they messed it up. It is gross and messed up. Plan 9 is looking at everything bolted onto UNIX and made a new system that fixed it. Everything is a file, so they started to fix the hacks....classic UNIX started with that and then diverged. Plan 9 did not take off? Backwards compatibility. Violates evolution....never took off. Was Plan 9 a waist? Do modern systems have anything related to Plan 9? Proc ... all Kernel resources can be accessed as files. Ioctls (IO control system calls) were used in older Linux (it was cryptic and dumb, not insusceptible)....made everything a file like Plan 9 (Proc) then they make sysfs (a key value store...easier to use and better organized than Proc). Proc is still used for processes but separated it out into sysfs. Unified protocol for doing things....http (has a name-space called domains) Plan9 was a nice clean design, all really nice but doesn’t solve a problem that people had...shared file systems people had (nfs) and could access remote printers.
Nothing too different from Sun’s solution. Did not solve any new problem. Just a cleaner take on old problems. Does not win when there is established players...some force that pushes you towards it.
Plan9 lets fix UNIX Inferno: - a better JAVA. Time-frame when it came out....Bell Labs, we can do better than JAVA. - Limbo ... kinda C like
JAVA has two fundamental blemishes...it is huge as a language....lots of libraries is ok but JAVA has a lot of syntax (all serves a purpose but, all the explicit typing....modern languages use type inferences such as Swift and RUST)...java is almost impossible to write without an IDE. The advantage of C is that it is a small language, can understand and use most of it on a regular bases...JAVA is not as bad as C++ but it is very verbose....forced object orientation and inheritance onto everything. C is interfaces and protocols vs. Objects while JAVA forces objects. Other languages, object orientation is much more subtle.
When the web was young....we need portable run-time to run code securely across the internet...a JAVA Applet....required a plugin to work. Inferno was going for the same market... but failed b/c JAVA had time share....only secure in enterprise applications and everywhere else is not secure. Even Android might move away from it.
System that you have into the system you want to program....as long as it provides a common set of functionality. Inferno same as UNIX but was supposed to be portable similar to JAVA.
From distributed OS, what problem are they solving? Plan9 Work-group sharing Inferno Applications on a web-browser but not solving how to get lots of computers together to do big jobs are not what they are solving. Distributed OS for scientific purposes....nuclear simulation on 10,000 CPUS (those OS are small, specialized and exchange messages between nodes fast...straightforward design...zero copying for high-speed networking). Time it takes to send messages to nodes is less than the time it takes to copy data from memory. Low-latency networking, how long does it take to send and receive 1 byte of data. Point A to B with as few copies as possible. Kernel copies a buffer, it has lost high-speed networking. Classic high performance computers, and programming layers to exchange messages. Not really our focus....not really the nature of the system we have built...instead have the cloud.
Project questions?
Test on Wednesday the 17th ...next class, review...god way to study, think about questions might ask....short essays. Choose from a small choice of questions.