COMP 3000 2011 Week 1 Notes
Complexity: computers are complicated, big, fast etc.
UNIX: made to share a computer between multiple people
Need to share:
- Disks: filesystem abstraction
- Memory: divide it up (virtual memory)
- CPU: take turns (multiplex) and cut out those that are being hogs
- Network: multiplex by dividing communication into packets (identify with IP for computer and port for the program)
OS: set of code to change computer you have into the computer you want to program, provides a virtual/abstract machine to program hardware (certain abstractions imply certain implementation strategies)
Linux is a kind of UNIX-compatible operating system kernel.
The Linux kernel is everywhere: on Android, DVRs, home routers, servers, the cloud (amazon, facebook, google...)
How do programs not "step" on each other? To do this, a programs ability to refer to other programs needs to be taken away. In other words, separate programs must be unable to read and write to each other.
On every memory access call, to see what physical address the call corresponds to, a table lookup is used.
Virtual Memory: each program has its own copy of memory, it's own "address space", so it can't access other programs address space
Virtualization: treat the OS kernel like a regular program
Paravirtualization: modify the OS kernel so it acts like a regular program (done by taking out its privileges)
Hypervisor: run multiple kernels with a new "super-kernel" that rules over the other kernels
Paravirutalization and using a hypervisor add layers of interaction to the OS (multiple table lookups of address spaces).