Use LEFT and RIGHT arrow keys to navigate between flashcards;
Use UP and DOWN arrow keys to flip the card;
H to show hint;
A reads text to speech;
67 Cards in this Set
- Front
- Back
Distributed Computing Advantages |
- Resource sharing - Computational Speed up - Reliability: Recovery from a failed host - Communcation: between users - Cost of effectiveness |
|
Distributed Computing Sources of Unreliability |
- Routing choices - Competing Applications - Failed Connections - Congestion |
|
Physical Layer of Network Interconnection
|
A hardware device to encode/decode a bit stream from the medium. Hardware manufacturers will need to agree upon standards. |
|
Data link Layer of Network Interconnection |
- Organize data into fixed- or variable-length frames - Correct errors introduced by physical layer - A header to help with error correction - No routing decisions (LAN) |
|
Network Layer of Network Interconnection |
-Organize data into variable-length packets - Additional header info to make routing data for sending data across multiple connections - Example: IP |
|
Transport Layer of Network Interconnection |
- Provide useful semantics on top of network layer - Create illusion of messages or connections for clients - break messages into packets and re-assemble for on arrival - Examples: TCP and UDP |
|
Internet Protocol (IP) |
- best-effort packet delivery service between hosts - Each host represented by a 32-bit IP address - No error detection - No congestion control |
|
User Datagram Protocol (UDP) |
- best effort message delivery service between applications- - No need to establish connection first - Error detection within message - port numbers to dispatch messages to the right process |
|
Transmission Control Protocl (TCP) |
- Connection must be established first - In-order byte stream delivery - packet boundaries hidden -message boundaries not respected - Congestion control by sender if network is overwhelmed |
|
Internet Heirarchy (top to bottom) |
- Application layer - transport layer - network layer - data link layer -physical layer |
|
The Sockets API |
- A collection of system calls to create and use TCP connections (and other protocols) |
|
Sockets in Java |
java.net-ServerSocket java.net.Socket java.net.DatagramSocket Server: - ss = new ServerSocket(PORT); - Socket sock = ss.accept(); Client: - Socket sock = new Socket(HOST, PORT); |
|
Remote Procedure Call(RPC) |
- A framework to simplify application distribution by breaking an application at procedure call boundaries |
|
RPC Semantics |
- Exactly once Semantics - Every call is carried out exactly one - At-least-once semantics - Client keeps retransmitting until it receives desired response - At-most-once semantics - Every call is carried out at most once |
|
Network Operating System |
User/ Programmer must be aware of the most boundaries - Collection of libraries/tools to access remote resources |
|
Distributed Operating system |
- User/programmer doesn't need to constantly think about host boundaries - Remote and local resources look and behave the same |
|
Host-based processing |
- Server does almost all the work |
|
Server-based processing |
- Server does all application processing - Client just does user interface |
|
Client-based processing |
- Client does all application processing - Server just does validation and execution of requests |
|
Cooperative processing |
- Split application logic and computational load between client and server |
|
Protection: Object |
A thing you may want to use |
|
Protection: Operation |
Something you can do with an object |
|
Protection: Access right |
A rule that says it's OK to do a particular operation on a particular object |
|
Protection: Protection Domain |
Our name for the thing that has access rights |
|
Principle of Least Privilege |
Programs should have permissions to do only what they needed to do |
|
Access Matrix: Owner Rights |
Who can add/remove access rights for an object |
|
Access Matrix: Switch Rights |
To change domains |
|
Access Matrix: Control Rights |
To decide who can switch to a given domain |
|
Access List |
Store permissions within the object |
|
Capability List |
Store permissions with the domain |
|
Lock and Key Representation |
List of keys for each domain List of locks for each object Perform an operation if there's a match |
|
Types of Security Violations |
- Breach of Confidentiality - Breach of Integrity - Breach of Availability - Theft of Service -Denial Of Service |
|
Types of Attacks |
- Back-door
-Trojan Horse - Stack/Buffer overflow - Logic Bomb -Timing Attack -Virus |
|
Symmetric Encryption |
- One key to encrypt and ecrypt (DES, RC5, AES) |
|
Asymmetric Encryption |
Two keys, one to encrypt and one to decrypt
|
|
Cryptographic Hash |
Maps a message to small hash value - Given a hash value, it's hard to find any message that hashes to it - Example: MD5, SHA-1 |
|
Seek Time |
Time to move head to desired cylinder - About 10-15 ms |
|
Rotational Latency |
-Time for the desired sector to rotate under the head - About 4.15 ms for 7200rpm |
|
Transfer Rate |
Speed for reading/writing disk - 30 MB/s - 100 MB/s |
|
SCAN Disk scheduling |
Move disk arm back and forth, service requests as you go |
|
C-SCAN disk Scheduling |
Similar to SCAN, but runs all the way back to the other edge without servicing requests |
|
LOOK and C-LOOK |
Stop at the last (innermost or outermost) request. In the case of C-LOOK go back to the cylinder of the first request. |
|
Data Striping |
How we interleave data across disks Fine grained: - bit-interleaved Coarse grained: -block-interleaved |
|
Host Attached Storage |
- Via a device controller, and a physical connection to that controller
- Typically using specialized hardware to communicate (SATA) with device |
|
Network Attached Storage |
- Pack up messages destined for the disk - Wrap them in another protocol and send to another host - unpack them there, and execute them - Uses general-purpose networking - Uses standard remote file system protocls (NFS) |
|
Storage Area Network (SAN) |
- Uses special-purpose interconnections (fibre channel) - Encapsulates disk protocol (SCSI over fibre channel) |
|
CPU vs. GPU |
CPU good for running few threads, each doing it's own thing. GPU good for running thousands of threads, each doing the same thing. |
|
CUDA Blocks |
A block of threads |
|
CUDA grid |
A collection of blocks, where each thread can figure out what it's supposed to do |
|
CUDA Kernel |
A name for a block of code to be run in parallel (__global__void myFunction). Call by specifying: myFunction<<blocksPerGrid, threadPerBlock>>() |
|
Thrashing |
The system isn't getting much work done because it's spending all its time servicing page faults |
|
Translation Look-aside Buffer |
A special cache for each CPU core Maps page number straight to frame number |
|
The Memory-Management Unit |
A hardware device that handles mapping logical to physical address |
|
Page Table Base Register |
Tells hardware where the current page table is located |
|
Necessary Conditions for Deadlock |
- Mutual Exclusion - Hold and Wait - No Preemption - Circular Wait |
|
Deadlock Prevention |
Build a system where deadlock can't occur - Prevent ONE necessary condition |
|
Deadlock Detection |
Let deadlocks happen, notice when they occur, and respond somehow |
|
Deadlock Avoidance |
For each request, decide whether the process should wait. Use Banker's Algorithm |
|
How to read and Write Binary data to File |
fread(&a, sizeof(int), l, infile); fwrite(&a, sizeof(int), l, outfile); |
|
How to control for Byte Order |
int a; a = htonl(a); or if receiving, convert to host's order: a = ntohl(a); |
|
Requirements for Critical-Section Solution |
- Mutual Exclusion - Progress - Bounded Waiting |
|
Semaphore PsuedoCode |
- sem s = 1 - acquire(s) - release(s) |
|
POSIX Semaphore Library |
sem_init(sem_t* sem, int value); sem_Destroy(sem_t* sem); sem_wait(sem_t* sem); sem_post(sem_t* sem); |
|
Java Semaphore Library |
- new Semaphore(5); - s.acquire() s.release() s.acquireUninterruptibly() |
|
Monitor psuedo code |
condition c; c.wait() c.signal() |
|
POSIX API for Monitors |
pthread_mutex_t lock; pthread_mutex_init(&lock, NULL); pthread_mutex_lock(&lock); pthread_mutex_unlock(&lock); pthread_cond_t cond; pthread_cond_Wait(&cond, &lock); pthread_cond_signal(&cond); pthread_cond_broadcast(&cond); |
|
Java Monitors |
Just use synchronized methods and blocks - any object is a condition variable. - use wait() and notify() or notifyAll() |