CPS 210: Operating Systems
home calendar topics work resources

Programs and the Machine


How are programs built and launched? How does the machine appear to a running program (process)? Reading:

Operating System Case Study: Unix


Reading:

Protection and Security Fundamentals


Reading:


Servers: Networking and the Web


The Unix socket abstraction was introduced in the early 1980s and is the basis for most networking software. This unit is a quick introduction to sockets, clients and servers and SaaS, web request/response, and network naming.

Concurrency and Synchronization


Reading:

Resource Management and Scheduling


Resource management policy is a core OS topic. We only scratch the surface, using CPU scheduling as an example.

Network Security, Threats, and Cryptosystems


Basics of secure communication: digests, symmetric and asymmetric crypto, digital signatures, and secure transport (SSL/TLS/HTTPS). Students should understand basic elements and functions at the API level, e.g., as in the java.net classes InetAddress, Socket, ServerSocket, and URLConnection, and the 'top half' security classes Signature, MessageDigest, SSLSocket, Cipher, Key, and Certificate. We discuss examples of how these primitives are used in basic cryptosystems: PKI certificate hierarchy, nonces, HTTPS, code signing, password digest authentication. We are concerned with concepts and not the details of the class interfaces or implementations.

Optional background reading:

File Systems and Storage



Android


As a counterpoint to Unix, and to illustrate the enduring importance of the Unix abstractions, we take a quick look at modern client-side platforms for application delivery, based on material made available by Google.

Android is an open-source operating system layered on the Linux kernel, and provides an operating system framework for personal devices (e.g., smartphones and tablets). Android uses Linux kernel abstractions in an interesting way, and replaces the programming environment (shell etc.) with a Java-based application framework based on modern abstractions for components, component interactions, and lifecycle management.


Virtual Machines and the Cloud


Infrastructure-as-a-Service (Iaas) and Platform-as-a-Service (PaaS) as examples of OS platforms. The virtual machine (VM) abstraction and structure: hypervisors. Overview of hardware support for virtual machines: a simplified view of protection rings. Virtual appliances as VM programs. IaaS cloud abstractions (EC2). Elastic scaling of cloud-hosted services. Network infrastructure as a service.

Optional background reading:


Other

This academic paper introduces fundamental patterns for combining components, which appear in some form in the systems we study. It is a little abstract and has a software engineering flavor, but it is worth your time.