DistOS 2023W 2023-01-18

From Soma-notes

Notes

Lecture 4
---------

Ideas/thoughts from group discussion on Unix
 - simpler, cheaper than Multics
 - pipes were there at the beginning and still are used
    - oldest form of IPC
 - much less emphasis on security than now (no ASLR!)
 - built to be modular, easy to enhance, change
 - programming-friendly environment
 - software as composition
 - invented inodes, had a filesystem hierarchy (which as pretty new)
 - kernel, shell, utilities, interesting split
   - abstraction in general


Where was networking in Unix?
 - terminals, time sharing, but no networking
 - still being invented!
   (roughly at the same time)
 - and in fact Unix was used to build much of the early Internet

Unix took over not just because it was Unix, but because it became BSD Unix which was the foundation of the early (but not earliest) Internet

If you look at networking on Unix, it is different than everything else
 - whole separate interface


How are the abstractions of Unix related to running on a single computer?
 - a process is fundamentally a creature of a single computer
    - memory is unified
 - pipes allow for IPC, but communication is continuous and perfect
   - except for broken pipes
   - if data gets through, it hasn't been corrupted
 - minimal support for mutual exclusion
   - no standard file locking
   - made implementation simpler, and programmers would know better
 - in general, casual assumptions of consistency and easy communications
   - signals in particular, no accounting for multithreaded operation

Original Unix was very minimalistic, modern Unix not so much
 - lots of stuff bolted on over time

Having to deal with Unix compatibility is a huge issue for later distibuted operating systems

This has been such a burden that modern systems mostly avoid Unix semantics
 - it is there on individual systems but not there in the distributed context

Remember Unix was made for systems we wouldn't even put in a watch today
 - very, very low powered by today's standard
 - thus very important to pick the right abstractions that allowed
   for minimal code
    - minimalism wasn't just an aesthetic, it was a necessity