CS110 Tutorial at Stanford
Hosted here, but it will be taken down when I graduate.
_____ _____ __ __ ___
/ ____| / ____| /_ | /_ | / _ \
| | | (___ | | | | | | | |
| | \___ \ | | | | | | | |
| |____ ____) | | | | | | |_| |
\_____| |_____/ |_| |_| \___/
Course title: Principles of Computer Architecture
Spring 2017, offered by J. Cain
Author: L. Haihong (@Leedehai)
Caveat: no warranty, but feedback on factual errors are welcome!
Introduction
[HTML][Markdown]
Topic 1 Filesystem (1): cp
, "the three tables", find
, intro to system calls
[HTML][Markdown]
Topic 1 Filesystem (2): file systems, layering, more on system calls
[HTML][Markdown]
Topic 2 Multiprocessing (1): fork()
, waitpid()
, reaping
[HTML][Markdown]
Topic 2 Multiprocessing (2): execvp()
, "the trio", shell
[HTML][Markdown]
Topic 2 Multiprocessing (3): pipes, redirection
[HTML][Markdown]
Topic 2 Multiprocessing (4): signals, signal handlers, signal masking
[HTML][Markdown]
Topic 2 Multiprocessing (5): paging, virtual memory, scheduler, context switch
[HTML][Markdown]
Topic 3 Multithreading (1): POSIX C pthread
, race conditions
[HTML][Markdown]
Topic 3 Multithreading (2): C thread
, mutex
[HTML][Markdown]
Topic 3 Multithreading (3): dining philosophers problem, deadlocks, permission slips, condition_variable_any
, lock_guard
[HTML][Markdown]
Topic 3 Multithreading (4): semaphore
, reader-writer problem, myth-buster
[HTML][Markdown]
Topic 3 Multithreading (5): concurrency patterns, ice-scream-parlor
[HTML][Markdown]
Topic 4 Networking (1): sever, client, sockets, server-side multithreading
[HTML][Markdown]
Topic 4 Networking (2): HTTP, networking system calls and data structures
[HTML][Markdown]
Topic 4 Networking (3): networking API, MapReduce
[HTML][Markdown]
Topic 4 Networking (4): non-blocking I/O
[HTML][Markdown]
Topic 4 Networking (5): event-driven programming
[HTML][Markdown]
Appendix A - Principles of Systems Design: abstraction, modularity and layering, naming and name resolution, caching, virtualization, concurrency, client-sever request-response
[HTML][Markdown]
Lab 1: File Systems and System Calls
Lab 2: Multiprocessing and Unix Tools
Lab 3: Parallel Programming
Lab 4: assign3 Redux and Threads
Lab 5: Read-Write Locks, Event Barriers
Lab 6: Threads vs Processes
Lab 7: ThreadPools and Networking
KOB = "knock on the blackboard" = "this is important" (for the purpose of course reviewing, not necessarily for learning)
LICENSE: Creative Commons Attribution Share Alike 4.0 (CC-BY-SA-4.0), not applicable to lab solutions.