Operating Systems: Three Easy Pieces
55 of 456 pages built
Prefatory material
Prefatory Material0/3
- Prefaceskipped: empty heading: no text under "## Preface" in the source; the text is under To Everyone
- To Everyonenot built yet
- To Educatorsskipped: for instructors: course and citation info, not content to learn
- To Studentsnot built yet
- Acknowledgmentsskipped: acknowledgments
- Final Wordsnot built yet
- Referencesskipped: not teaching content
Introduction
Chapter 1: A Dialogue on the Book1/1
Chapter 2: Introduction to Operating Systems8/8
- Introductionnotes
- 2.1 Virtualizing The CPUinteractive
- 2.2 Virtualizing Memoryinteractive
- 2.3 Concurrencyinteractive
- 2.4 Persistencenotes
- 2.5 Design Goalsnotes
- 2.6 Some Historynotes
- 2.7 Summarynotes
- Referencesskipped: not teaching content
- Homeworkskipped: not teaching content
I Virtualization
Chapter 3: A Dialogue on Virtualization1/1
- Chapter 3: A Dialogue on Virtualizationinteractive
Chapter 4: The Abstraction: The Process7/7
- Introductionnotes
- 4.1 The Abstraction: A Processnotes
- 4.2 Process APInotes
- 4.3 Process Creation: A Little More Detailinteractive
- 4.4 Process Statesinteractive
- 4.5 Data Structuresinteractive
- 4.6 Summarynotes
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 5: Interlude: Process API8/8
- Introductionnotes
- 5.1 The fork() System Callinteractive
- 5.2 The wait() System Callinteractive
- 5.3 Finally, The exec() System Callinteractive
- 5.4 Why? Motivating The APIinteractive
- 5.5 Process Control And Usersinteractive
- 5.6 Useful Toolsnotes
- 5.7 Summarynotes
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 6: Mechanism: Limited Direct Execution6/6
- Introductionnotes
- 6.1 Basic Technique: Limited Direct Executioninteractive
- 6.2 Problem #1: Restricted Operationsinteractive
- 6.3 Problem #2: Switching Between Processesinteractive
- 6.4 Worried About Concurrency?notes
- 6.5 Summarynotes
- Referencesskipped: not teaching content
- Homework (Measurement)skipped: not teaching content
Chapter 7: Scheduling: Introduction11/11
- Introductionnotes
- 7.1 Workload Assumptionsnotes
- 7.2 Scheduling Metricsnotes
- 7.3 First In, First Out (FIFO)interactive
- 7.4 Shortest Job First (SJF)interactive
- 7.5 Shortest Time-to-Completion First (STCF)interactive
- 7.6 A New Metric: Response Timeinteractive
- 7.7 Round Robininteractive
- 7.8 Incorporating I/Ointeractive
- 7.9 No More Oraclenotes
- 7.10 Summarynotes
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 8: Scheduling: The Multi-Level Feedback Queue7/7
- Introductionnotes
- 8.1 MLFQ: Basic Rulesinteractive
- 8.2 Attempt #1: How To Change Priorityinteractive
- 8.3 Attempt #2: The Priority Boostinteractive
- 8.4 Attempt #3: Better Accountinginteractive
- 8.5 Tuning MLFQ And Other Issuesinteractive
- 8.6 MLFQ: Summarynotes
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 9: Scheduling: Proportional Share0/9
- Introductionnot built yet
- 9.1 Basic Concept: Tickets Represent Your Sharenot built yet
- 9.2 Ticket Mechanismsnot built yet
- 9.3 Implementationnot built yet
- 9.4 An Examplenot built yet
- 9.5 How To Assign Tickets?not built yet
- 9.6 Stride Schedulingnot built yet
- 9.7 The Linux Completely Fair Scheduler (CFS)not built yet
- 9.8 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 10: Multiprocessor Scheduling (Advanced)0/8
- Introductionnot built yet
- 10.1 Background: Multiprocessor Architecturenot built yet
- 10.2 Don’t Forget Synchronizationnot built yet
- 10.3 One Final Issue: Cache Affinitynot built yet
- 10.4 Single-Queue Schedulingnot built yet
- 10.5 Multi-Queue Schedulingnot built yet
- 10.6 Linux Multiprocessor Schedulersnot built yet
- 10.7 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 11: Summary Dialogue on CPU Virtualization1/1
Chapter 12: A Dialogue on Memory Virtualization1/1
Chapter 13: The Abstraction: Address Spaces0/6
- Introductionnot built yet
- 13.1 Early Systemsnot built yet
- 13.2 Multiprogramming and Time Sharingnot built yet
- 13.3 The Address Spacenot built yet
- 13.4 Goalsnot built yet
- 13.5 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 14: Interlude: Memory API0/8
- Introductionnot built yet
- 14.1 Types of Memorynot built yet
- 14.2 The malloc() Callnot built yet
- 14.3 The free() Callnot built yet
- 14.4 Common Errorsnot built yet
- 14.5 Underlying OS Supportnot built yet
- 14.6 Other Callsnot built yet
- 14.7 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 15: Mechanism: Address Translation0/7
- Introductionnot built yet
- 15.1 Assumptionsnot built yet
- 15.2 An Examplenot built yet
- 15.3 Dynamic (Hardware-based) Relocationnot built yet
- 15.4 Hardware Support: A Summarynot built yet
- 15.5 Operating System Issuesnot built yet
- 15.6 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 16: Segmentation0/8
- Introductionnot built yet
- 16.1 Segmentation: Generalized Base/Boundsnot built yet
- 16.2 Which Segment Are We Referring To?not built yet
- 16.3 What About The Stack?not built yet
- 16.4 Support for Sharingnot built yet
- 16.5 Fine-grained vs. Coarse-grained Segmentationnot built yet
- 16.6 OS Supportnot built yet
- 16.7 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 17: Free-Space Management0/6
- Introductionnot built yet
- 17.1 Assumptionsnot built yet
- 17.2 Low-level Mechanismsnot built yet
- 17.3 Basic Strategiesnot built yet
- 17.4 Other Approachesnot built yet
- 17.5 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 18: Paging: Introduction2/7
- Introductionnotes
- 18.1 A Simple Example And Overviewnotes
- 18.2 Where Are Page Tables Stored?not built yet
- 18.3 What’s Actually In The Page Table?not built yet
- 18.4 Paging: Also Too Slownot built yet
- 18.5 A Memory Tracenot built yet
- 18.6 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 19: Paging: Faster Translations (TLBs)0/9
- Introductionnot built yet
- 19.1 TLB Basic Algorithmnot built yet
- 19.2 Example: Accessing An Arraynot built yet
- 19.3 Who Handles The TLB Miss?not built yet
- 19.4 TLB Contents: What’s In There?not built yet
- 19.5 TLB Issue: Context Switchesnot built yet
- 19.6 Issue: Replacement Policynot built yet
- 19.7 A Real TLB Entrynot built yet
- 19.8 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Measurement)skipped: not teaching content
Chapter 20: Paging: Smaller Tables0/7
- Introductionnot built yet
- 20.1 Simple Solution: Bigger Pagesnot built yet
- 20.2 Hybrid Approach: Paging and Segmentsnot built yet
- 20.3 Multi-level Page Tablesnot built yet
- 20.4 Inverted Page Tablesnot built yet
- 20.5 Swapping the Page Tables to Disknot built yet
- 20.6 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 21: Beyond Physical Memory: Mechanisms1/8
- Introductionnotes
- 21.1 Swap Spacenot built yet
- 21.2 The Present Bitnot built yet
- 21.3 The Page Faultnot built yet
- 21.4 What If Memory Is Full?not built yet
- 21.5 Page Fault Control Flownot built yet
- 21.6 When Replacements Really Occurnot built yet
- 21.7 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Measurement)skipped: not teaching content
Chapter 22: Beyond Physical Memory: Policies0/13
- Introductionnot built yet
- 22.1 Cache Managementnot built yet
- 22.2 The Optimal Replacement Policynot built yet
- 22.3 A Simple Policy: FIFOnot built yet
- 22.4 Another Simple Policy: Randomnot built yet
- 22.5 Using History: LRUnot built yet
- 22.6 Workload Examplesnot built yet
- 22.7 Implementing Historical Algorithmsnot built yet
- 22.8 Approximating LRUnot built yet
- 22.9 Considering Dirty Pagesnot built yet
- 22.10 Other VM Policiesnot built yet
- 22.11 Thrashingnot built yet
- 22.12 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 23: Complete Virtual Memory Systems0/4
- Introductionnot built yet
- 23.1 VAX/VMS Virtual Memorynot built yet
- 23.2 The Linux Virtual Memory Systemnot built yet
- 23.3 Summarynot built yet
- Referencesskipped: not teaching content
Chapter 24: Summary Dialogue on Memory Virtualization1/1
II Concurrency
Chapter 25: A Dialogue on Concurrency0/1
- Chapter 25: A Dialogue on Concurrencynot built yet
Chapter 26: Concurrency: An Introduction0/8
- Introductionnot built yet
- 26.1 Why Use Threads?not built yet
- 26.2 An Example: Thread Creationnot built yet
- 26.3 Why It Gets Worse: Shared Datanot built yet
- 26.4 The Heart Of The Problem: Uncontrolled Schedulingnot built yet
- 26.5 The Wish For Atomicitynot built yet
- 26.6 One More Problem: Waiting For Anothernot built yet
- 26.7 Summary: Why in OS Class?not built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 27: Interlude: Thread API0/7
- Introductionnot built yet
- 27.1 Thread Creationnot built yet
- 27.2 Thread Completionnot built yet
- 27.3 Locksnot built yet
- 27.4 Condition Variablesnot built yet
- 27.5 Compiling and Runningnot built yet
- 27.6 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 28: Locks0/18
- Introductionnot built yet
- 28.1 Locks: The Basic Ideanot built yet
- 28.2 Pthread Locksnot built yet
- 28.3 Building A Locknot built yet
- 28.4 Evaluating Locksnot built yet
- 28.5 Controlling Interruptsnot built yet
- 28.6 A Failed Attempt: Just Using Loads/Storesnot built yet
- 28.7 Building Working Spin Locks with Test-And-Setnot built yet
- 28.8 Evaluating Spin Locksnot built yet
- 28.9 Compare-And-Swapnot built yet
- 28.10 Load-Linked and Store-Conditionalnot built yet
- 28.11 Fetch-And-Addnot built yet
- 28.12 Too Much Spinning: What Now?not built yet
- 28.13 A Simple Approach: Just Yield, Babynot built yet
- 28.14 Using Queues: Sleeping Instead Of Spinningnot built yet
- 28.15 Different OS, Different Supportnot built yet
- 28.16 Two-Phase Locksnot built yet
- 28.17 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 29: Lock-based Concurrent Data Structures0/6
- Introductionnot built yet
- 29.1 Concurrent Countersnot built yet
- 29.2 Concurrent Linked Listsnot built yet
- 29.3 Concurrent Queuesnot built yet
- 29.4 Concurrent Hash Tablenot built yet
- 29.5 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 30: Condition Variables0/5
- Introductionnot built yet
- 30.1 Definition and Routinesnot built yet
- 30.2 The Producer/Consumer (Bounded Buffer) Problemnot built yet
- 30.3 Covering Conditionsnot built yet
- 30.4 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 31: Semaphores0/9
- Introductionnot built yet
- 31.1 Semaphores: A Definitionnot built yet
- 31.2 Binary Semaphores (Locks)not built yet
- 31.4 The Producer/Consumer (Bounded Buffer) Problemnot built yet
- 31.5 Reader-Writer Locksnot built yet
- 31.6 The Dining Philosophersnot built yet
- 31.7 Thread Throttlingnot built yet
- 31.8 How To Implement Semaphoresnot built yet
- 31.9 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 32: Common Concurrency Problems0/5
- Introductionnot built yet
- 32.1 What Types Of Bugs Exist?not built yet
- 32.2 Non-Deadlock Bugsnot built yet
- 32.3 Deadlock Bugsnot built yet
- 32.4 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 33: Event-based Concurrency (Advanced)0/10
- Introductionnot built yet
- 33.1 The Basic Idea: An Event Loopnot built yet
- 33.2 An Important API: select() (or poll())not built yet
- 33.3 Using select()not built yet
- 33.4 Why Simpler? No Locks Needednot built yet
- 33.5 A Problem: Blocking System Callsnot built yet
- 33.6 A Solution: Asynchronous I/Onot built yet
- 33.7 Another Problem: State Managementnot built yet
- 33.8 What Is Still Difficult With Eventsnot built yet
- 33.9 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 34: Summary Dialogue on Concurrency0/1
- Chapter 34: Summary Dialogue on Concurrencynot built yet
III Persistence
Chapter 35: A Dialogue on Persistence0/1
- Chapter 35: A Dialogue on Persistencenot built yet
Chapter 36: I/O Devices0/11
- Introductionnot built yet
- 36.1 System Architecturenot built yet
- 36.2 A Canonical Devicenot built yet
- 36.3 The Canonical Protocolnot built yet
- 36.4 Lowering CPU Overhead With Interruptsnot built yet
- 36.5 More Efficient Data Movement With DMAnot built yet
- 36.6 Methods Of Device Interactionnot built yet
- 36.7 Fitting Into The OS: The Device Drivernot built yet
- 36.8 Case Study: A Simple IDE Disk Drivernot built yet
- 36.9 Historical Notesnot built yet
- 36.10 Summarynot built yet
- Referencesskipped: not teaching content
Chapter 37: Hard Disk Drives0/7
- Introductionnot built yet
- 37.1 The Interfacenot built yet
- 37.2 Basic Geometrynot built yet
- 37.3 A Simple Disk Drivenot built yet
- 37.4 I/O Time: Doing The Mathnot built yet
- 37.5 Disk Schedulingnot built yet
- 37.6 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 38: Redundant Arrays of Inexpensive Disks (RAIDs)0/11
- Introductionnot built yet
- 38.1 Interface And RAID Internalsnot built yet
- 38.2 Fault Modelnot built yet
- 38.3 How To Evaluate A RAIDnot built yet
- 38.4 RAID Level 0: Stripingnot built yet
- 38.5 RAID Level 1: Mirroringnot built yet
- 38.6 RAID Level 4: Saving Space With Paritynot built yet
- 38.7 RAID Level 5: Rotating Paritynot built yet
- 38.8 RAID Comparison: A Summarynot built yet
- 38.9 Other Interesting RAID Issuesnot built yet
- 38.10 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 39: Interlude: Files and Directories0/19
- Introductionnot built yet
- 39.1 Files And Directoriesnot built yet
- 39.2 The File System Interfacenot built yet
- 39.3 Creating Filesnot built yet
- 39.4 Reading And Writing Filesnot built yet
- 39.5 Reading And Writing, But Not Sequentiallynot built yet
- 39.6 Shared File Table Entries: fork() And dup()not built yet
- 39.7 Writing Immediately With fsync()not built yet
- 39.8 Renaming Filesnot built yet
- 39.9 Getting Information About Filesnot built yet
- 39.10 Removing Filesnot built yet
- 39.11 Making Directoriesnot built yet
- 39.12 Reading Directoriesnot built yet
- 39.13 Deleting Directoriesnot built yet
- 39.14 Hard Linksnot built yet
- 39.15 Symbolic Linksnot built yet
- 39.16 Permission Bits And Access Control Listsnot built yet
- 39.17 Making And Mounting A File Systemnot built yet
- 39.18 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 40: File System Implementation0/9
- Introductionnot built yet
- 40.1 The Way To Thinknot built yet
- 40.2 Overall Organizationnot built yet
- 40.3 File Organization: The Inodenot built yet
- 40.4 Directory Organizationnot built yet
- 40.5 Free Space Managementnot built yet
- 40.6 Access Paths: Reading and Writingnot built yet
- 40.7 Caching and Bufferingnot built yet
- 40.8 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 41: Locality and The Fast File System0/9
- Introductionnot built yet
- 41.1 The Problem: Poor Performancenot built yet
- 41.2 FFS: Disk Awareness Is The Solutionnot built yet
- 41.3 Organizing Structure: The Cylinder Groupnot built yet
- 41.4 Policies: How To Allocate Files and Directoriesnot built yet
- 41.5 Measuring File Localitynot built yet
- 41.6 The Large-File Exceptionnot built yet
- 41.7 A Few Other Things About FFSnot built yet
- 41.8 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 42: Crash Consistency: FSCK and Journaling0/6
- Introductionnot built yet
- 42.1 A Detailed Examplenot built yet
- 42.2 Solution #1: The File System Checkernot built yet
- 42.3 Solution #2: Journaling (or Write-Ahead Logging)not built yet
- 42.4 Solution #3: Other Approachesnot built yet
- 42.5 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 43: Log-structured File Systems0/14
- Introductionnot built yet
- 43.1 Writing To Disk Sequentiallynot built yet
- 43.2 Writing Sequentially And Effectivelynot built yet
- 43.3 How Much To Buffer?not built yet
- 43.4 Problem: Finding Inodesnot built yet
- 43.5 Solution Through Indirection: The Inode Mapnot built yet
- 43.6 Completing The Solution: The Checkpoint Regionnot built yet
- 43.7 Reading A File From Disk: A Recapnot built yet
- 43.8 What About Directories?not built yet
- 43.9 A New Problem: Garbage Collectionnot built yet
- 43.10 Determining Block Livenessnot built yet
- 43.12 Crash Recovery And The Lognot built yet
- 43.13 Summarynot built yet
- 43.11 A Policy Question: Which Blocks To Clean, And When?not built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 44: Flash-based SSDs0/13
- Introductionnot built yet
- 44.1 Storing a Single Bitnot built yet
- 44.2 From Bits to Banks/Planesnot built yet
- 44.3 Basic Flash Operationsnot built yet
- 44.4 Flash Performance And Reliabilitynot built yet
- 44.5 From Raw Flash to Flash-Based SSDsnot built yet
- 44.6 FTL Organization: A Bad Approachnot built yet
- 44.7 A Log-Structured FTLnot built yet
- 44.8 Garbage Collectionnot built yet
- 44.9 Mapping Table Sizenot built yet
- 44.10 Wear Levelingnot built yet
- 44.11 SSD Performance And Costnot built yet
- 44.12 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 45: Data Integrity and Protection0/10
- Introductionnot built yet
- 45.1 Disk Failure Modesnot built yet
- 45.2 Handling Latent Sector Errorsnot built yet
- 45.3 Detecting Corruption: The Checksumnot built yet
- 45.4 Using Checksumsnot built yet
- 45.5 A New Problem: Misdirected Writesnot built yet
- 45.6 One Last Problem: Lost Writesnot built yet
- 45.7 Scrubbingnot built yet
- 45.8 Overheads Of Checksummingnot built yet
- 45.9 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 46: Summary Dialogue on Persistence0/1
- Chapter 46: Summary Dialogue on Persistencenot built yet
Distribution
Chapter 47: A Dialogue on Distribution0/1
- Chapter 47: A Dialogue on Distributionnot built yet
Chapter 48: Distributed Systems0/6
- Introductionnot built yet
- 48.1 Communication Basicsnot built yet
- 48.2 Unreliable Communication Layersnot built yet
- 48.3 Reliable Communication Layersnot built yet
- 48.4 Communication Abstractionsnot built yet
- 48.6 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Code)skipped: not teaching content
Chapter 49: Sun’s Network File System (NFS)0/13
- Introductionnot built yet
- 49.1 A Basic Distributed File Systemnot built yet
- 49.2 On To NFSnot built yet
- 49.3 Focus: Simple And Fast Server Crash Recoverynot built yet
- 49.4 Key To Fast Crash Recovery: Statelessnessnot built yet
- 49.5 The NFSv2 Protocolnot built yet
- 49.6 From Protocol To Distributed File Systemnot built yet
- 49.7 Handling Server Failure With Idempotent Operationsnot built yet
- 49.8 Improving Performance: Client-side Cachingnot built yet
- 49.9 The Cache Consistency Problemnot built yet
- 49.10 Assessing NFS Cache Consistencynot built yet
- 49.11 Implications On Server-Side Write Bufferingnot built yet
- 49.12 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Measurement)skipped: not teaching content
Chapter 50: The Andrew File System (AFS)0/10
- Introductionnot built yet
- 50.1 AFS Version 1not built yet
- 50.2 Problems with Version 1not built yet
- 50.3 Improving the Protocolnot built yet
- 50.4 AFS Version 2not built yet
- 50.5 Cache Consistencynot built yet
- 50.6 Crash Recoverynot built yet
- 50.7 Scale And Performance Of AFSv2not built yet
- 50.8 AFS: Other Improvementsnot built yet
- 50.9 Summarynot built yet
- Referencesskipped: not teaching content
- Homework (Simulation)skipped: not teaching content
Chapter 51: Summary Dialogue on Distribution0/1
- Chapter 51: Summary Dialogue on Distributionnot built yet
Security chapters present in this PDF but absent from its printed contents
Chapter 52: A Dialogue on Security0/1
- Chapter 52: A Dialogue on Securitynot built yet
Chapter 53: Introduction to Operating System Security0/6
- 53.1 Introductionnot built yet
- 53.2 What Are We Protecting?not built yet
- 53.3 Security Goals and Policiesnot built yet
- 53.4 Designing Secure Systemsnot built yet
- 53.5 The Basics of OS Securitynot built yet
- 53.6 Summarynot built yet
- Referencesskipped: not teaching content
Chapter 54: Authentication0/8
- 54.1 Introductionnot built yet
- 54.2 Attaching Identities To Processesnot built yet
- 54.3 How To Authenticate Users?not built yet
- 54.4 Authentication By What You Knownot built yet
- 54.5 Authentication by What You Havenot built yet
- 54.6 Authentication by What You Arenot built yet
- 54.7 Authenticating Non-Humansnot built yet
- 54.8 Summarynot built yet
- Referencesskipped: not teaching content
Chapter 55: Access Control0/7
- 55.1 Introductionnot built yet
- 55.2 Important Aspects Of The Access Control Problemnot built yet
- 55.3 Using ACLs For Access Controlnot built yet
- 55.4 Using Capabilities For Access Controlnot built yet
- 55.5 Mandatory And Discretionary Access Controlnot built yet
- 55.6 Practicalities Of Access Control Mechanismsnot built yet
- 55.7 Summarynot built yet
- Referencesskipped: not teaching content
Chapter 56: Protecting Information With Cryptography0/9
- 56.1 Introductionnot built yet
- 56.2 Cryptographynot built yet
- 56.3 Public Key Cryptographynot built yet
- 56.4 Cryptographic Hashesnot built yet
- 56.5 Cracking Cryptographynot built yet
- 56.6 Cryptography And Operating Systemsnot built yet
- 56.7 At-Rest Data Encryptionnot built yet
- 56.8 Cryptographic Capabilitiesnot built yet
- 56.9 Summarynot built yet
- Referencesskipped: not teaching content
Chapter 57: Distributed System Security0/8
- 57.1 Introductionnot built yet
- 57.2 The Role of Authenticationnot built yet
- 57.3 Public Key Authentication For Distributed Systemsnot built yet
- 57.4 Password Authentication For Distributed Systemsnot built yet
- 57.5 SSL/TLSnot built yet
- 57.6 Other Authentication Approachesnot built yet
- 57.7 Some Higher Level Toolsnot built yet
- 57.8 Summarynot built yet
- Referencesskipped: not teaching content
Appendices
Appendix A: A Dialogue on Virtual Machine Monitors0/1
- Appendix A: A Dialogue on Virtual Machine Monitorsnot built yet
Appendix B: Virtual Machine Monitors0/6
- B.1 Introductionnot built yet
- B.2 Motivation: Why VMMs?not built yet
- B.3 Virtualizing the CPUnot built yet
- B.4 Virtualizing Memorynot built yet
- B.5 The Information Gapnot built yet
- B.6 Summarynot built yet
Appendix C: A Dialogue on Monitors0/1
- Appendix C: A Dialogue on Monitorsnot built yet
Appendix D: Monitors (Deprecated)0/10
- Introductionnot built yet
- D.1 Why Bother with Monitors?not built yet
- D.2 Do We Get More Than Automatic Locking?not built yet
- D.3 Where Theory Meets Practicenot built yet
- D.4 Oh Oh, A Racenot built yet
- D.5 Peeking Under The Hood A Bitnot built yet
- D.6 Other Uses Of Monitorsnot built yet
- D.7 Using Monitors To Implement Semaphoresnot built yet
- D.8 Monitors in the Real Worldnot built yet
- D.9 Summarynot built yet
Appendix E: A Dialogue on Labs0/1
- Appendix E: A Dialogue on Labsnot built yet
Appendix F: Laboratory: Tutorial0/10
- Introductionnot built yet
- F.1 A Simple C Programnot built yet
- F.2 Compilation and Executionnot built yet
- F.3 Useful Flagsnot built yet
- F.4 Linking with Librariesnot built yet
- F.5 Separate Compilationnot built yet
- F.6 Makefilesnot built yet
- F.7 Debuggingnot built yet
- F.8 Documentationnot built yet
- F.9 Suggested Readingsnot built yet
Appendix G: Laboratory: Systems Projects0/9
- Introductionnot built yet
- G.1 Intro Projectnot built yet
- G.2 U NIX Shellnot built yet
- G.3 Memory-allocation Librarynot built yet
- G.4 Intro to Concurrencynot built yet
- G.5 Concurrent Web Servernot built yet
- G.6 File System Checkernot built yet
- G.7 File System Defragmenternot built yet
- G.8 Concurrent File Servernot built yet
Appendix H: Laboratory: xv6 Projects0/12
- Introductionnot built yet
- H.1 Intro Projectnot built yet
- H.2 Processes and Schedulingnot built yet
- H.3 Intro to Virtual Memorynot built yet
- H.4 Copy-on-write Mappingsnot built yet
- H.5 Memory mappingsnot built yet
- H.6 Kernel Threadsnot built yet
- H.7 Advanced Kernel Threadsnot built yet
- H.8 Extent-based File Systemnot built yet
- H.9 Fast File Systemnot built yet
- H.10 Journaling File Systemnot built yet
- H.11 File System Checkernot built yet