Difference between revisions of "COMP 3000 2011 Week 1 Notes"

From Soma-notes
Jump to navigation Jump to search
(Created page with "==Basics== ---Complexity---: computers are complicated, big, fast etc. ---UNIX---: made to share a computer between multiple people Need to share: # Disc files: block interfac…")
 
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Basics==
==Basics==


---Complexity---: computers are complicated, big, fast etc.
'''Complexity''': computers are complicated, big, fast etc.


---UNIX---: made to share a computer between multiple people
'''UNIX''': made to share a computer between multiple people


Need to share:
Need to share:
# Disc files: block interface abstraction
# Disks: filesystem abstraction
# Memory: divide it up (virtual memory)
# Memory: divide it up (virtual memory)
# CPU: take turns and cut of those that are being hogs
# CPU: take turns (multiplex) and cut out those that are being hogs
# Network: divide communication into packets (identify with IP for computer and port for the program)
# 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)
'''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===
'''Linux''' is a kind of UNIX-compatible operating system kernel.


---Kernels---: on Android, dvr, home router, servers, the cloud (amazon, facebook, google...)
The Linux kernel is everywhere: on Android, DVRs, home routers, servers, the cloud (amazon, facebook, google...)
 
==Program Interaction==
 
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).

Latest revision as of 22:57, 5 November 2011

Basics

Complexity: computers are complicated, big, fast etc.

UNIX: made to share a computer between multiple people

Need to share:

  1. Disks: filesystem abstraction
  2. Memory: divide it up (virtual memory)
  3. CPU: take turns (multiplex) and cut out those that are being hogs
  4. 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...)

Program Interaction

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).