Skip to content

Instantly share code, notes, and snippets.

@rcastellotti
Forked from theagoliveira/OSTEP.sh
Last active April 24, 2023 22:25
Show Gist options
  • Save rcastellotti/89bec0c70ae7732c6c7166312294f1e7 to your computer and use it in GitHub Desktop.
Save rcastellotti/89bec0c70ae7732c6c7166312294f1e7 to your computer and use it in GitHub Desktop.
Download every OSTEP (Operating Systems: Three Easy Pieces) chapter
#!/bin/bash
url="http://pages.cs.wisc.edu/~remzi/OSTEP/"
mkdir ostep
cd ostep
wget -O "00a Preface.pdf" "${url}preface.pdf"
wget -O "00b TOC.pdf" "${url}toc.pdf"
wget -O "01 Dialogue.pdf" "${url}dialogue-threeeasy.pdf"
wget -O "02 Introduction.pdf" "${url}intro.pdf"
wget -O "03 Dialogue.pdf" "${url}dialogue-virtualization.pdf"
wget -O "04 Processes.pdf" "${url}cpu-intro.pdf"
wget -O "05 Process API.pdf" "${url}cpu-api.pdf"
wget -O "06 Direct Execution.pdf" "${url}cpu-mechanisms.pdf"
wget -O "07 CPU Scheduling.pdf" "${url}cpu-sched.pdf"
wget -O "08 Multi-level Feedback.pdf" "${url}cpu-sched-mlfq.pdf"
wget -O "09 Lottery Scheduling.pdf" "${url}cpu-sched-lottery.pdf"
wget -O "10 Multi-CPU Scheduling.pdf" "${url}cpu-sched-multi.pdf"
wget -O "11 Summary.pdf" "${url}cpu-dialogue.pdf"
wget -O "12 Dialogue.pdf" "${url}dialogue-vm.pdf"
wget -O "13 Address Spaces.pdf" "${url}vm-intro.pdf"
wget -O "14 Memory API.pdf" "${url}vm-api.pdf"
wget -O "15 Address Translation.pdf" "${url}vm-mechanism.pdf"
wget -O "16 Segmentation.pdf" "${url}vm-segmentation.pdf"
wget -O "17 Free Space Management.pdf" "${url}vm-freespace.pdf"
wget -O "18 Introduction to Paging.pdf" "${url}vm-paging.pdf"
wget -O "19 Translation Lookaside Buffers.pdf" "${url}vm-tlbs.pdf"
wget -O "20 Advanced Page Tables.pdf" "${url}vm-smalltables.pdf"
wget -O "21 Swapping_ Mechanisms.pdf" "${url}vm-beyondphys.pdf"
wget -O "22 Swapping_ Policies.pdf" "${url}vm-beyondphys-policy.pdf"
wget -O "23 Complete VM Systems.pdf" "${url}vm-complete.pdf"
wget -O "24 Summary.pdf" "${url}vm-dialogue.pdf"
wget -O "25 Dialogue.pdf" "${url}dialogue-concurrency.pdf"
wget -O "26 Concurrency and Threads.pdf" "${url}threads-intro.pdf"
wget -O "27 Thread API.pdf" "${url}threads-api.pdf"
wget -O "28 Locks.pdf" "${url}threads-locks.pdf"
wget -O "29 Locked Data Structures.pdf" "${url}threads-locks-usage.pdf"
wget -O "30 Condition Variables.pdf" "${url}threads-cv.pdf"
wget -O "31 Semaphores.pdf" "${url}threads-sema.pdf"
wget -O "32 Concurrency Bugs.pdf" "${url}threads-bugs.pdf"
wget -O "33 Event-based Concurrency.pdf" "${url}threads-events.pdf"
wget -O "34 Summary.pdf" "${url}threads-dialogue.pdf"
wget -O "35 Dialogue.pdf" "${url}dialogue-persistence.pdf"
wget -O "36 I-O Devices.pdf" "${url}file-devices.pdf"
wget -O "37 Hard Disk Drives.pdf" "${url}file-disks.pdf"
wget -O "38 Redundant Disk Arrays (RAID).pdf" "${url}file-raid.pdf"
wget -O "39 Files and Directories.pdf" "${url}file-intro.pdf"
wget -O "40 File System Implementation.pdf" "${url}file-implementation.pdf"
wget -O "41 Fast File System (FFS).pdf" "${url}file-ffs.pdf"
wget -O "42 FSCK and Journaling.pdf" "${url}file-journaling.pdf"
wget -O "43 Log-structured File System (LFS).pdf" "${url}file-lfs.pdf"
wget -O "44 Flash-based SSDs.pdf" "${url}file-ssd.pdf"
wget -O "45 Data Integrity and Protection.pdf" "${url}file-integrity.pdf"
wget -O "46 Summary.pdf" "${url}file-dialogue.pdf"
wget -O "47 Dialogue.pdf" "${url}dialogue-distribution.pdf"
wget -O "48 Distributed Systems.pdf" "${url}dist-intro.pdf"
wget -O "49 Network File System (NFS).pdf" "${url}dist-nfs.pdf"
wget -O "50 Andrew File System (AFS).pdf" "${url}dist-afs.pdf"
wget -O "51 Summary.pdf" "${url}dist-dialogue.pdf"
wget -O "A1 Dialogue.pdf" "${url}dialogue-vmm.pdf"
wget -O "A2 Virtual Machines.pdf" "${url}vmm-intro.pdf"
wget -O "A3 Dialogue.pdf" "${url}dialogue-monitors.pdf"
wget -O "A4 Monitors.pdf" "${url}threads-monitors.pdf"
wget -O "A5 Dialogue.pdf" "${url}dialogue-labs.pdf"
wget -O "A6 Lab Tutorial.pdf" "${url}lab-tutorial.pdf"
wget -O "A7 Systems Labs.pdf" "${url}lab-projects-systems.pdf"
wget -O "A8 xv6 Labs.pdf" "${url}lab-projects-xv6.pdf"
# check if command exists and fail otherwise
command -v pdfunite >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
echo "Pdfunite required to merge pdfs!"
exit 1
fi
pdfunite *.pdf ostep.pdf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment