[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
1.2.2.1 Design Document
1.2.2.2 Source Code
1.3 Legal and Ethical Issues
1.4 Acknowledgements
1.5 Trivia
2. Project 0: Introducing Pintos
2.1 Understanding Threads
2.1.1 Source Files
2.1.1.1 devices code
2.1.1.2 lib files
2.1.2 Synchronization
2.1.3 Development Suggestions
2.2 Understanding User Programs
2.2.1 Source Files
2.2.2 Using the File System
2.2.3 How User Programs Work
2.2.4 Virtual Memory Layout
2.2.4.1 Typical Memory Layout
2.2.5 Accessing User Memory
2.3 Requirements
2.3.1 Design Document
2.3.2 Alarm Clock
2.3.3 Argument Passing
2.4 FAQ
2.4.1 Threads FAQ
2.4.2 Alarm Clock FAQ
2.4.3 Userprog FAQ
2.4.4 Argument Passing FAQ
2.5 80x86 Calling Convention
2.5.1 Program Startup Details
2.5.2 System Call Details
3. Project 1: Threads
3.1 Background
3.2 Requirements
3.2.1 Design Document
3.2.2 Priority Scheduling
3.3 FAQ
4. Project 2: Virtual Memory
A. Reference Guide
A.1 Loading
A.1.1 The Loader
A.1.2 Low-Level Kernel Initialization
A.1.3 High-Level Kernel Initialization
A.1.4 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. Coding Standards
B.1 Style
B.2 C99
B.3 Unsafe String Functions
C. Project Documentation
C.1 Sample Assignment
C.2 Sample Design Document
D. Debugging Tools
D.1 printf()
D.2 ASSERT
D.3 Function and Parameter Attributes
D.4 Backtraces
D.4.1 Example
D.5 GDB
D.5.1 Using GDB
D.5.2 Example GDB Session
D.5.3 FAQ
D.6 Triple Faults
D.7 Modifying Bochs
D.8 Tips
E. Development Tools
E.1 Tags
E.2 cscope
E.3 git
Bibliography
E.4 Hardware References
E.5 Software References
E.6 Operating System Design References
License


This document was generated by on March, 6 2012 using texi2html