summaryrefslogtreecommitdiffstats
path: root/doc/pintos.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/pintos.html')
-rw-r--r--doc/pintos.html342
1 files changed, 342 insertions, 0 deletions
diff --git a/doc/pintos.html b/doc/pintos.html
new file mode 100644
index 0000000..8060c46
--- /dev/null
+++ b/doc/pintos.html
@@ -0,0 +1,342 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html40/loose.dtd">
3<HTML>
4<!-- Created on March, 6 2012 by texi2html 1.66 -->
5<!--
6Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
7 Karl Berry <karl@freefriends.org>
8 Olaf Bachmann <obachman@mathematik.uni-kl.de>
9 and many others.
10Maintained by: Many creative people <dev@texi2html.cvshome.org>
11Send bugs and suggestions to <users@texi2html.cvshome.org>
12
13-->
14<HEAD>
15<TITLE>Pintos Projects: Table of Contents</TITLE>
16
17<META NAME="description" CONTENT="Pintos Projects: Table of Contents">
18<META NAME="keywords" CONTENT="Pintos Projects: Table of Contents">
19<META NAME="resource-type" CONTENT="document">
20<META NAME="distribution" CONTENT="global">
21<META NAME="Generator" CONTENT="texi2html 1.66">
22<LINK REL="stylesheet" HREF="pintos.css">
23</HEAD>
24
25<BODY >
26
27<A NAME="SEC_Contents"></A>
28<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
29<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pintos.html#SEC_Top">Top</A>]</TD>
30<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pintos.html#SEC_Contents">Contents</A>]</TD>
31<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
32<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pintos_abt.html#SEC_About"> ? </A>]</TD>
33</TR></TABLE>
34<H1>Table of Contents</H1>
35<BLOCKQUOTE>
36<A NAME="TOC1" HREF="pintos_1.html#SEC1">1. Introduction</A>
37<BR>
38<BLOCKQUOTE>
39<A NAME="TOC2" HREF="pintos_1.html#SEC2">1.1 Getting Started</A>
40<BR>
41<BLOCKQUOTE>
42<A NAME="TOC3" HREF="pintos_1.html#SEC3">1.1.1 Source Tree Overview</A>
43<BR>
44<A NAME="TOC4" HREF="pintos_1.html#SEC4">1.1.2 Building Pintos</A>
45<BR>
46<A NAME="TOC5" HREF="pintos_1.html#SEC5">1.1.3 Running Pintos</A>
47<BR>
48<A NAME="TOC6" HREF="pintos_1.html#SEC6">1.1.4 Debugging versus Testing</A>
49<BR>
50</BLOCKQUOTE>
51<A NAME="TOC7" HREF="pintos_1.html#SEC7">1.2 Grading</A>
52<BR>
53<BLOCKQUOTE>
54<A NAME="TOC8" HREF="pintos_1.html#SEC8">1.2.1 Testing</A>
55<BR>
56<A NAME="TOC9" HREF="pintos_1.html#SEC9">1.2.2 Design</A>
57<BR>
58<BLOCKQUOTE>
59<A NAME="TOC10" HREF="pintos_1.html#SEC10">1.2.2.1 Design Document</A>
60<BR>
61<A NAME="TOC11" HREF="pintos_1.html#SEC11">1.2.2.2 Source Code</A>
62<BR>
63</BLOCKQUOTE>
64</BLOCKQUOTE>
65<A NAME="TOC12" HREF="pintos_1.html#SEC12">1.3 Legal and Ethical Issues</A>
66<BR>
67<A NAME="TOC13" HREF="pintos_1.html#SEC13">1.4 Acknowledgements</A>
68<BR>
69<A NAME="TOC14" HREF="pintos_1.html#SEC14">1.5 Trivia</A>
70<BR>
71</BLOCKQUOTE>
72<A NAME="TOC15" HREF="pintos_2.html#SEC15">2. Project 0: Introducing Pintos</A>
73<BR>
74<BLOCKQUOTE>
75<A NAME="TOC16" HREF="pintos_2.html#SEC16">2.1 Understanding Threads</A>
76<BR>
77<BLOCKQUOTE>
78<A NAME="TOC17" HREF="pintos_2.html#SEC17">2.1.1 Source Files</A>
79<BR>
80<BLOCKQUOTE>
81<A NAME="TOC18" HREF="pintos_2.html#SEC18">2.1.1.1 <Q><TT>devices</TT></Q> code</A>
82<BR>
83<A NAME="TOC19" HREF="pintos_2.html#SEC19">2.1.1.2 <Q><TT>lib</TT></Q> files</A>
84<BR>
85</BLOCKQUOTE>
86<A NAME="TOC20" HREF="pintos_2.html#SEC20">2.1.2 Synchronization</A>
87<BR>
88<A NAME="TOC21" HREF="pintos_2.html#SEC21">2.1.3 Development Suggestions</A>
89<BR>
90</BLOCKQUOTE>
91<A NAME="TOC22" HREF="pintos_2.html#SEC22">2.2 Understanding User Programs</A>
92<BR>
93<BLOCKQUOTE>
94<A NAME="TOC23" HREF="pintos_2.html#SEC23">2.2.1 Source Files</A>
95<BR>
96<A NAME="TOC24" HREF="pintos_2.html#SEC24">2.2.2 Using the File System</A>
97<BR>
98<A NAME="TOC25" HREF="pintos_2.html#SEC25">2.2.3 How User Programs Work</A>
99<BR>
100<A NAME="TOC26" HREF="pintos_2.html#SEC26">2.2.4 Virtual Memory Layout</A>
101<BR>
102<BLOCKQUOTE>
103<A NAME="TOC27" HREF="pintos_2.html#SEC27">2.2.4.1 Typical Memory Layout</A>
104<BR>
105</BLOCKQUOTE>
106<A NAME="TOC28" HREF="pintos_2.html#SEC28">2.2.5 Accessing User Memory</A>
107<BR>
108</BLOCKQUOTE>
109<A NAME="TOC29" HREF="pintos_2.html#SEC29">2.3 Requirements</A>
110<BR>
111<BLOCKQUOTE>
112<A NAME="TOC30" HREF="pintos_2.html#SEC30">2.3.1 Design Document</A>
113<BR>
114<A NAME="TOC31" HREF="pintos_2.html#SEC31">2.3.2 Alarm Clock</A>
115<BR>
116<A NAME="TOC32" HREF="pintos_2.html#SEC32">2.3.3 Argument Passing</A>
117<BR>
118</BLOCKQUOTE>
119<A NAME="TOC33" HREF="pintos_2.html#SEC33">2.4 FAQ</A>
120<BR>
121<BLOCKQUOTE>
122<A NAME="TOC34" HREF="pintos_2.html#SEC34">2.4.1 Threads FAQ</A>
123<BR>
124<A NAME="TOC35" HREF="pintos_2.html#SEC35">2.4.2 Alarm Clock FAQ</A>
125<BR>
126<A NAME="TOC36" HREF="pintos_2.html#SEC36">2.4.3 Userprog FAQ</A>
127<BR>
128<A NAME="TOC37" HREF="pintos_2.html#SEC37">2.4.4 Argument Passing FAQ</A>
129<BR>
130</BLOCKQUOTE>
131<A NAME="TOC38" HREF="pintos_2.html#SEC38">2.5 80<VAR>x</VAR>86 Calling Convention</A>
132<BR>
133<BLOCKQUOTE>
134<A NAME="TOC39" HREF="pintos_2.html#SEC39">2.5.1 Program Startup Details</A>
135<BR>
136<A NAME="TOC40" HREF="pintos_2.html#SEC40">2.5.2 System Call Details</A>
137<BR>
138</BLOCKQUOTE>
139</BLOCKQUOTE>
140<A NAME="TOC41" HREF="pintos_3.html#SEC41">3. Project 1: Threads</A>
141<BR>
142<BLOCKQUOTE>
143<A NAME="TOC42" HREF="pintos_3.html#SEC42">3.1 Background</A>
144<BR>
145<A NAME="TOC43" HREF="pintos_3.html#SEC43">3.2 Requirements</A>
146<BR>
147<BLOCKQUOTE>
148<A NAME="TOC44" HREF="pintos_3.html#SEC44">3.2.1 Design Document</A>
149<BR>
150<A NAME="TOC45" HREF="pintos_3.html#SEC45">3.2.2 Priority Scheduling</A>
151<BR>
152</BLOCKQUOTE>
153<A NAME="TOC46" HREF="pintos_3.html#SEC46">3.3 FAQ</A>
154<BR>
155</BLOCKQUOTE>
156<A NAME="TOC47" HREF="pintos_4.html#SEC47">4. Project 2: Virtual Memory</A>
157<BR>
158<A NAME="TOC48" HREF="pintos_5.html#SEC48">A. Reference Guide</A>
159<BR>
160<BLOCKQUOTE>
161<A NAME="TOC49" HREF="pintos_5.html#SEC49">A.1 Loading</A>
162<BR>
163<BLOCKQUOTE>
164<A NAME="TOC50" HREF="pintos_5.html#SEC50">A.1.1 The Loader</A>
165<BR>
166<A NAME="TOC51" HREF="pintos_5.html#SEC51">A.1.2 Low-Level Kernel Initialization</A>
167<BR>
168<A NAME="TOC52" HREF="pintos_5.html#SEC52">A.1.3 High-Level Kernel Initialization</A>
169<BR>
170<A NAME="TOC53" HREF="pintos_5.html#SEC53">A.1.4 Physical Memory Map</A>
171<BR>
172</BLOCKQUOTE>
173<A NAME="TOC54" HREF="pintos_5.html#SEC54">A.2 Threads</A>
174<BR>
175<BLOCKQUOTE>
176<A NAME="TOC55" HREF="pintos_5.html#SEC55">A.2.1 <CODE>struct thread</CODE></A>
177<BR>
178<A NAME="TOC56" HREF="pintos_5.html#SEC56">A.2.2 Thread Functions</A>
179<BR>
180<A NAME="TOC57" HREF="pintos_5.html#SEC57">A.2.3 Thread Switching</A>
181<BR>
182</BLOCKQUOTE>
183<A NAME="TOC58" HREF="pintos_5.html#SEC58">A.3 Synchronization</A>
184<BR>
185<BLOCKQUOTE>
186<A NAME="TOC59" HREF="pintos_5.html#SEC59">A.3.1 Disabling Interrupts</A>
187<BR>
188<A NAME="TOC60" HREF="pintos_5.html#SEC60">A.3.2 Semaphores</A>
189<BR>
190<A NAME="TOC61" HREF="pintos_5.html#SEC61">A.3.3 Locks</A>
191<BR>
192<A NAME="TOC62" HREF="pintos_5.html#SEC62">A.3.4 Monitors</A>
193<BR>
194<BLOCKQUOTE>
195<A NAME="TOC63" HREF="pintos_5.html#SEC63">A.3.4.1 Monitor Example</A>
196<BR>
197</BLOCKQUOTE>
198<A NAME="TOC64" HREF="pintos_5.html#SEC64">A.3.5 Optimization Barriers</A>
199<BR>
200</BLOCKQUOTE>
201<A NAME="TOC65" HREF="pintos_5.html#SEC65">A.4 Interrupt Handling</A>
202<BR>
203<BLOCKQUOTE>
204<A NAME="TOC66" HREF="pintos_5.html#SEC66">A.4.1 Interrupt Infrastructure</A>
205<BR>
206<A NAME="TOC67" HREF="pintos_5.html#SEC67">A.4.2 Internal Interrupt Handling</A>
207<BR>
208<A NAME="TOC68" HREF="pintos_5.html#SEC68">A.4.3 External Interrupt Handling</A>
209<BR>
210</BLOCKQUOTE>
211<A NAME="TOC69" HREF="pintos_5.html#SEC69">A.5 Memory Allocation</A>
212<BR>
213<BLOCKQUOTE>
214<A NAME="TOC70" HREF="pintos_5.html#SEC70">A.5.1 Page Allocator</A>
215<BR>
216<A NAME="TOC71" HREF="pintos_5.html#SEC71">A.5.2 Block Allocator</A>
217<BR>
218</BLOCKQUOTE>
219<A NAME="TOC72" HREF="pintos_5.html#SEC72">A.6 Virtual Addresses</A>
220<BR>
221<A NAME="TOC73" HREF="pintos_5.html#SEC73">A.7 Page Table</A>
222<BR>
223<BLOCKQUOTE>
224<A NAME="TOC74" HREF="pintos_5.html#SEC74">A.7.1 Creation, Destruction, and Activation</A>
225<BR>
226<A NAME="TOC75" HREF="pintos_5.html#SEC75">A.7.2 Inspection and Updates</A>
227<BR>
228<A NAME="TOC76" HREF="pintos_5.html#SEC76">A.7.3 Accessed and Dirty Bits</A>
229<BR>
230<A NAME="TOC77" HREF="pintos_5.html#SEC77">A.7.4 Page Table Details</A>
231<BR>
232<BLOCKQUOTE>
233<A NAME="TOC78" HREF="pintos_5.html#SEC78">A.7.4.1 Structure</A>
234<BR>
235<A NAME="TOC79" HREF="pintos_5.html#SEC79">A.7.4.2 Page Table Entry Format</A>
236<BR>
237<A NAME="TOC80" HREF="pintos_5.html#SEC80">A.7.4.3 Page Directory Entry Format</A>
238<BR>
239</BLOCKQUOTE>
240</BLOCKQUOTE>
241<A NAME="TOC81" HREF="pintos_5.html#SEC81">A.8 Hash Table</A>
242<BR>
243<BLOCKQUOTE>
244<A NAME="TOC82" HREF="pintos_5.html#SEC82">A.8.1 Data Types</A>
245<BR>
246<A NAME="TOC83" HREF="pintos_5.html#SEC83">A.8.2 Basic Functions</A>
247<BR>
248<A NAME="TOC84" HREF="pintos_5.html#SEC84">A.8.3 Search Functions</A>
249<BR>
250<A NAME="TOC85" HREF="pintos_5.html#SEC85">A.8.4 Iteration Functions</A>
251<BR>
252<A NAME="TOC86" HREF="pintos_5.html#SEC86">A.8.5 Hash Table Example</A>
253<BR>
254<A NAME="TOC87" HREF="pintos_5.html#SEC87">A.8.6 Auxiliary Data</A>
255<BR>
256<A NAME="TOC88" HREF="pintos_5.html#SEC88">A.8.7 Synchronization</A>
257<BR>
258</BLOCKQUOTE>
259</BLOCKQUOTE>
260<A NAME="TOC89" HREF="pintos_6.html#SEC89">B. Coding Standards</A>
261<BR>
262<BLOCKQUOTE>
263<A NAME="TOC90" HREF="pintos_6.html#SEC90">B.1 Style</A>
264<BR>
265<A NAME="TOC91" HREF="pintos_6.html#SEC91">B.2 C99</A>
266<BR>
267<A NAME="TOC92" HREF="pintos_6.html#SEC92">B.3 Unsafe String Functions</A>
268<BR>
269</BLOCKQUOTE>
270<A NAME="TOC93" HREF="pintos_7.html#SEC93">C. Project Documentation</A>
271<BR>
272<BLOCKQUOTE>
273<A NAME="TOC94" HREF="pintos_7.html#SEC94">C.1 Sample Assignment</A>
274<BR>
275<A NAME="TOC95" HREF="pintos_7.html#SEC95">C.2 Sample Design Document</A>
276<BR>
277</BLOCKQUOTE>
278<A NAME="TOC96" HREF="pintos_8.html#SEC96">D. Debugging Tools</A>
279<BR>
280<BLOCKQUOTE>
281<A NAME="TOC97" HREF="pintos_8.html#SEC97">D.1 <CODE>printf()</CODE></A>
282<BR>
283<A NAME="TOC98" HREF="pintos_8.html#SEC98">D.2 <CODE>ASSERT</CODE></A>
284<BR>
285<A NAME="TOC99" HREF="pintos_8.html#SEC99">D.3 Function and Parameter Attributes</A>
286<BR>
287<A NAME="TOC100" HREF="pintos_8.html#SEC100">D.4 Backtraces</A>
288<BR>
289<BLOCKQUOTE>
290<A NAME="TOC101" HREF="pintos_8.html#SEC101">D.4.1 Example</A>
291<BR>
292</BLOCKQUOTE>
293<A NAME="TOC102" HREF="pintos_8.html#SEC102">D.5 GDB</A>
294<BR>
295<BLOCKQUOTE>
296<A NAME="TOC103" HREF="pintos_8.html#SEC103">D.5.1 Using GDB</A>
297<BR>
298<A NAME="TOC104" HREF="pintos_8.html#SEC104">D.5.2 Example GDB Session</A>
299<BR>
300<A NAME="TOC105" HREF="pintos_8.html#SEC105">D.5.3 FAQ</A>
301<BR>
302</BLOCKQUOTE>
303<A NAME="TOC106" HREF="pintos_8.html#SEC106">D.6 Triple Faults</A>
304<BR>
305<A NAME="TOC107" HREF="pintos_8.html#SEC107">D.7 Modifying Bochs</A>
306<BR>
307<A NAME="TOC108" HREF="pintos_8.html#SEC108">D.8 Tips</A>
308<BR>
309</BLOCKQUOTE>
310<A NAME="TOC109" HREF="pintos_9.html#SEC109">E. Development Tools</A>
311<BR>
312<BLOCKQUOTE>
313<A NAME="TOC110" HREF="pintos_9.html#SEC110">E.1 Tags</A>
314<BR>
315<A NAME="TOC111" HREF="pintos_9.html#SEC111">E.2 cscope</A>
316<BR>
317<A NAME="TOC112" HREF="pintos_9.html#SEC112">E.3 git</A>
318<BR>
319</BLOCKQUOTE>
320<A NAME="TOC113" HREF="pintos_10.html#SEC113">Bibliography</A>
321<BR>
322<BLOCKQUOTE>
323<A NAME="TOC114" HREF="pintos_10.html#SEC114">E.4 Hardware References</A>
324<BR>
325<A NAME="TOC115" HREF="pintos_10.html#SEC115">E.5 Software References</A>
326<BR>
327<A NAME="TOC116" HREF="pintos_10.html#SEC116">E.6 Operating System Design References</A>
328<BR>
329</BLOCKQUOTE>
330<A NAME="TOC117" HREF="pintos_11.html#SEC117">License</A>
331<BR>
332</BLOCKQUOTE>
333<HR SIZE=1>
334<BR>
335<FONT SIZE="-1">
336This document was generated
337by on <I>March, 6 2012</I>
338using <A HREF="http://texi2html.cvshome.org"><I>texi2html</I></A>
339</FONT>
340
341</BODY>
342</HTML>