An OS can be seen as (1) a resource manager or (2) an extended machine. Hardware: Processor (user vs privileged mode), memory, IO devices (network, disk, and video), IO bus. OS: Swapping. Thrashing. TLB. Virtual memory (illusion of physical memory, convenient mapping). Page size. Memory protection. Kernel structure: Device drivers. Userspace versus kernel mode. Concurrency: Locks, semaphores, deadlock, livelock. Race conditions. Server: Events vs threads. Stateful vs stateless. Security: Authentication, access control. Confidentiality vs privacy. Cryptographic primitives: MACs, signatures (number theory vs one-time), hashes, encryption (public and private). Disks: Sector, track, cylinder, head, platter. Sequential vs random access. Properties of disks! Seeks vs sequential read, failures, etc. Definition of a transaction TCP/IP basics. Sockets programming. - Internet model (lowest common denominator, Internet goals -- interconnection, survivability) --> few assumptions about underlying network: unreliable, datagram, etc. (but deliver 99% of packets, minimum packet size, addressing.); - the network is an evil hostile place. it will lose, mangle, delay, reorder your packets. - What UDP gets you (app demux; "ports", optional checksum) - What functions TCP fulfills (reliable, in-order bytestream) - Very rough model of TCP loss response: cut throughput in half... Definitions of delay in networks: propagation delay processing delay queueing delay Bandwidth x roundtrip time = ideal amount of data in pipeline (avoid stalls) High delay x bandwidth product => problems Remote procedure calls. - External data representation (XDR/ntohl/htonl) - sunrpc