Computer System Fundamentals

Johns Hopkins · EN.601.229 · Fall 2022

Modern computer systems from a software perspective: binary data representation, machine arithmetic, assembly language, computer architecture, performance optimization, memory hierarchy and cache organization, virtual memory, Unix systems programming, network programming, and concurrency.

Johns Hopkins · EN.601.229 · Fall 2022

Data Representation

A Tour of CSF

Data Representation

Memory and Addresses

Integer Representations

Integer Arithmetic

Floating Point

Machine-Level Programming

Machine-Level Program Representation

ALU Operations

Assembly Advice

Control Flow

Procedures

Arrays and Structs

Buffer Overflows

Performance and Caches

Program Optimization

Pipelining

Program Optimization II

Memory Hierarchy

Cache Policies

Cache Writes and Performance

Linking and Processes

Linking

Shared Libraries

Process Control

Signals

Virtual Memory

Virtual Memory I

Virtual Memory II

Virtual Memory III

I/O and Networking

Unix I/O

Networks

Socket Application Protocols

Network Applications: HTTP

Concurrency

Concurrency with pthreads

Thread Synchronization

Synchronization Issues

Concurrency Using Processes

I/O Multiplexing