[Top] [Contents] [Index] [ ? ]

Table of Contents

1. Introduction
1.1 Getting Started
1.1.1 Source Tree Overview
1.1.2 Building Pintos
1.1.3 Running Pintos
1.1.4 Debugging versus Testing
1.2 Grading
1.2.1 Testing
1.2.2 Design Design Document Source Code
1.3 Legal and Ethical Issues
1.4 Acknowledgements
1.5 Trivia
A. Reference Guide
A.1 Loading
A.1.1 The Loader
A.1.2 Kernel Initialization
A.1.3 Physical Memory Map
A.2 Threads
A.2.1 struct thread
A.2.2 Thread Functions
A.2.3 Thread Switching
A.3 Synchronization
A.3.1 Disabling Interrupts
A.3.2 Semaphores
A.3.3 Locks
A.3.4 Monitors
A.3.4.1 Monitor Example
A.3.5 Optimization Barriers
A.4 Interrupt Handling
A.4.1 Interrupt Infrastructure
A.4.2 Internal Interrupt Handling
A.4.3 External Interrupt Handling
A.5 Memory Allocation
A.5.1 Page Allocator
A.5.2 Block Allocator
A.6 Virtual Addresses
A.7 Page Table
A.7.1 Creation, Destruction, and Activation
A.7.2 Inspection and Updates
A.7.3 Accessed and Dirty Bits
A.7.4 Page Table Details
A.7.4.1 Structure
A.7.4.2 Page Table Entry Format
A.7.4.3 Page Directory Entry Format
A.8 Hash Table
A.8.1 Data Types
A.8.2 Basic Functions
A.8.3 Search Functions
A.8.4 Iteration Functions
A.8.5 Hash Table Example
A.8.6 Auxiliary Data
A.8.7 Synchronization
B. 4.4BSD Scheduler
B.1 Niceness
B.2 Calculating Priority
B.3 Calculating recent_cpu
B.4 Calculating load_avg
B.5 Summary
B.6 Fixed-Point Real Arithmetic
C. Coding Standards
C.1 Style
C.2 C99
C.3 Unsafe String Functions
D. Project Documentation
D.1 Sample Assignment
D.2 Sample Design Document
E. Debugging Tools
E.1 printf()
E.3 Function and Parameter Attributes
E.4 Backtraces
E.4.1 Example
E.5.1 Using GDB
E.5.2 Example GDB Session
E.5.3 Debugging User Programs
E.5.4 FAQ
E.6 Triple Faults
E.7 Modifying Bochs
E.8 Tips
F. Development Tools
F.1 Tags
F.2 cscope
F.5 Cygwin
G. Installing Pintos
G.1 Building Bochs for Pintos
G.2 Cross-referenced Pintos Source Code
G.2 Hardware References
G.3 Software References
G.4 Operating System Design References