%PDF-1.4
%忏嫌
1 0 obj
<</Type /Catalog
/Pages 2 0 R
/Outlines 149 0 R>>
endobj
150 0 obj
<</Title (Updates)
/Parent 149 0 R
/Dest [12 0 R /XYZ 470 470 0]
/Next 151 0 R>>
endobj
151 0 obj
<</Title (Introduction)
/Parent 149 0 R
/Dest [14 0 R /XYZ 470 470 0]
/Prev 150 0 R
/Next 152 0 R>>
endobj
175 0 obj
<</Title (Why Care?)
/Parent 152 0 R
/Dest [16 0 R /XYZ 344 344 0]
/Next 176 0 R>>
endobj
176 0 obj
<</Title (Harness the Power!)
/Parent 152 0 R
/Dest [17 0 R /XYZ 470 470 0]
/Prev 175 0 R
/Next 177 0 R>>
endobj
177 0 obj
<</Title (Overview)
/Parent 152 0 R
/Dest [17 0 R /XYZ 305 305 0]
/Prev 176 0 R
/Next 178 0 R>>
endobj
178 0 obj
<</Title (System Calls)
/Parent 152 0 R
/Dest [18 0 R /XYZ 416 416 0]
/Prev 177 0 R
/Next 179 0 R>>
endobj
179 0 obj
<</Title (Nomenclature, wtf\(2\))
/Parent 152 0 R
/Dest [19 0 R /XYZ 402 402 0]
/Prev 178 0 R
/Next 180 0 R>>
endobj
180 0 obj
<</Title (Processes: The Atoms of Unix)
/Parent 152 0 R
/Dest [21 0 R /XYZ 331 331 0]
/Prev 179 0 R>>
endobj
152 0 obj
<</Title (Primer)
/Parent 149 0 R
/Dest [16 0 R /XYZ 470 470 0]
/Prev 151 0 R
/Next 153 0 R
/First 175 0 R
/Last 180 0 R
/Count 6>>
endobj
181 0 obj
<</Title (Cross Referencing)
/Parent 153 0 R
/Dest [23 0 R /XYZ 132 132 0]
/Next 182 0 R>>
endobj
182 0 obj
<</Title (In the Real World)
/Parent 153 0 R
/Dest [24 0 R /XYZ 371 371 0]
/Prev 181 0 R
/Next 183 0 R>>
endobj
183 0 obj
<</Title (System Calls)
/Parent 153 0 R
/Dest [25 0 R /XYZ 470 470 0]
/Prev 182 0 R>>
endobj
153 0 obj
<</Title (Processes Have IDs)
/Parent 149 0 R
/Dest [23 0 R /XYZ 470 470 0]
/Prev 152 0 R
/Next 154 0 R
/First 181 0 R
/Last 183 0 R
/Count 3>>
endobj
184 0 obj
<</Title (Cross Referencing)
/Parent 154 0 R
/Dest [26 0 R /XYZ 103 103 0]
/Next 185 0 R>>
endobj
185 0 obj
<</Title (In the Real World)
/Parent 154 0 R
/Dest [27 0 R /XYZ 371 371 0]
/Prev 184 0 R
/Next 186 0 R>>
endobj
186 0 obj
<</Title (System Calls)
/Parent 154 0 R
/Dest [27 0 R /XYZ 277 277 0]
/Prev 185 0 R>>
endobj
154 0 obj
<</Title (Processes Have Parents)
/Parent 149 0 R
/Dest [26 0 R /XYZ 470 470 0]
/Prev 153 0 R
/Next 155 0 R
/First 184 0 R
/Last 186 0 R
/Count 3>>
endobj
187 0 obj
<</Title (Everything is a File)
/Parent 155 0 R
/Dest [28 0 R /XYZ 308 308 0]
/Next 188 0 R>>
endobj
188 0 obj
<</Title (Descriptors Represent Resources)
/Parent 155 0 R
/Dest [28 0 R /XYZ 128 128 0]
/Prev 187 0 R
/Next 189 0 R>>
endobj
189 0 obj
<</Title (Standard Streams)
/Parent 155 0 R
/Dest [32 0 R /XYZ 470 470 0]
/Prev 188 0 R
/Next 190 0 R>>
endobj
190 0 obj
<</Title (In the Real World)
/Parent 155 0 R
/Dest [33 0 R /XYZ 470 470 0]
/Prev 189 0 R
/Next 191 0 R>>
endobj
191 0 obj
<</Title (System Calls)
/Parent 155 0 R
/Dest [33 0 R /XYZ 319 319 0]
/Prev 190 0 R>>
endobj
155 0 obj
<</Title (Processes Have File Descriptors)
/Parent 149 0 R
/Dest [28 0 R /XYZ 470 470 0]
/Prev 154 0 R
/Next 156 0 R
/First 187 0 R
/Last 191 0 R
/Count 5>>
endobj
192 0 obj
<</Title (Finding the Limits)
/Parent 156 0 R
/Dest [34 0 R /XYZ 237 237 0]
/Next 193 0 R>>
endobj
193 0 obj
<</Title (Soft Limits vs. Hard Limits)
/Parent 156 0 R
/Dest [35 0 R /XYZ 374 374 0]
/Prev 192 0 R
/Next 194 0 R>>
endobj
194 0 obj
<</Title (Bumping the Soft Limit)
/Parent 156 0 R
/Dest [36 0 R /XYZ 470 470 0]
/Prev 193 0 R
/Next 195 0 R>>
endobj
195 0 obj
<</Title (Exceeding the Limit)
/Parent 156 0 R
/Dest [37 0 R /XYZ 470 470 0]
/Prev 194 0 R
/Next 196 0 R>>
endobj
196 0 obj
<</Title (Other Resources)
/Parent 156 0 R
/Dest [37 0 R /XYZ 211 211 0]
/Prev 195 0 R
/Next 197 0 R>>
endobj
197 0 obj
<</Title (In the Real World)
/Parent 156 0 R
/Dest [38 0 R /XYZ 260 260 0]
/Prev 196 0 R
/Next 198 0 R>>
endobj
198 0 obj
<</Title (System Calls)
/Parent 156 0 R
/Dest [39 0 R /XYZ 373 373 0]
/Prev 197 0 R>>
endobj
156 0 obj
<</Title (Processes Have Resource Limits)
/Parent 149 0 R
/Dest [34 0 R /XYZ 470 470 0]
/Prev 155 0 R
/Next 157 0 R
/First 192 0 R
/Last 198 0 R
/Count 7>>
endobj
199 0 obj
<</Title (It's a hash, right?)
/Parent 157 0 R
/Dest [41 0 R /XYZ 357 357 0]
/Next 200 0 R>>
endobj
200 0 obj
<</Title (In the Real World)
/Parent 157 0 R
/Dest [42 0 R /XYZ 470 470 0]
/Prev 199 0 R
/Next 201 0 R>>
endobj
201 0 obj
<</Title (System Calls)
/Parent 157 0 R
/Dest [42 0 R /XYZ 235 235 0]
/Prev 200 0 R>>
endobj
157 0 obj
<</Title (Processes Have an Environment)
/Parent 149 0 R
/Dest [40 0 R /XYZ 470 470 0]
/Prev 156 0 R
/Next 158 0 R
/First 199 0 R
/Last 201 0 R
/Count 3>>
endobj
202 0 obj
<</Title (It's an Array!)
/Parent 158 0 R
/Dest [43 0 R /XYZ 190 190 0]
/Next 203 0 R>>
endobj
203 0 obj
<</Title (In the Real World)
/Parent 158 0 R
/Dest [44 0 R /XYZ 470 470 0]
/Prev 202 0 R>>
endobj
158 0 obj
<</Title (Processes Have Arguments)
/Parent 149 0 R
/Dest [43 0 R /XYZ 470 470 0]
/Prev 157 0 R
/Next 159 0 R
/First 202 0 R
/Last 203 0 R
/Count 2>>
endobj
204 0 obj
<</Title (Naming Processes)
/Parent 159 0 R
/Dest [45 0 R /XYZ 188 188 0]
/Next 205 0 R>>
endobj
205 0 obj
<</Title (In the Real World)
/Parent 159 0 R
/Dest [47 0 R /XYZ 470 470 0]
/Prev 204 0 R>>
endobj
159 0 obj
<</Title (Processes Have Names)
/Parent 149 0 R
/Dest [45 0 R /XYZ 470 470 0]
/Prev 158 0 R
/Next 160 0 R
/First 204 0 R
/Last 205 0 R
/Count 2>>
endobj
207 0 obj
<</Title (exit)
/Parent 206 0 R
/Dest [48 0 R /XYZ 94 94 0]
/Next 208 0 R>>
endobj
208 0 obj
<</Title (exit!)
/Parent 206 0 R
/Dest [49 0 R /XYZ 199 199 0]
/Prev 207 0 R
/Next 209 0 R>>
endobj
209 0 obj
<</Title (abort)
/Parent 206 0 R
/Dest [50 0 R /XYZ 336 336 0]
/Prev 208 0 R
/Next 210 0 R>>
endobj
210 0 obj
<</Title (raise)
/Parent 206 0 R
/Dest [51 0 R /XYZ 401 401 0]
/Prev 209 0 R>>
endobj
206 0 obj
<</Title (How to Exit a Process)
/Parent 160 0 R
/Dest [48 0 R /XYZ 174 174 0]
/First 207 0 R
/Last 210 0 R
/Count 4>>
endobj
160 0 obj
<</Title (Processes Have Exit Codes)
/Parent 149 0 R
/Dest [48 0 R /XYZ 470 470 0]
/Prev 159 0 R
/Next 161 0 R
/First 206 0 R
/Last 206 0 R
/Count 1>>
endobj
211 0 obj
<</Title (Use the fork\(2\), Luke)
/Parent 161 0 R
/Dest [52 0 R /XYZ 387 387 0]
/Next 212 0 R>>
endobj
212 0 obj
<</Title (Multicore Programming?)
/Parent 161 0 R
/Dest [56 0 R /XYZ 470 470 0]
/Prev 211 0 R
/Next 213 0 R>>
endobj
213 0 obj
<</Title (Using a Block)
/Parent 161 0 R
/Dest [56 0 R /XYZ 146 146 0]
/Prev 212 0 R
/Next 214 0 R>>
endobj
214 0 obj
<</Title (In the Real World)
/Parent 161 0 R
/Dest [57 0 R /XYZ 322 322 0]
/Prev 213 0 R
/Next 215 0 R>>
endobj
215 0 obj
<</Title (System Calls)
/Parent 161 0 R
/Dest [57 0 R /XYZ 228 228 0]
/Prev 214 0 R>>
endobj
161 0 obj
<</Title (Processes Can Fork)
/Parent 149 0 R
/Dest [52 0 R /XYZ 470 470 0]
/Prev 160 0 R
/Next 162 0 R
/First 211 0 R
/Last 215 0 R
/Count 5>>
endobj
216 0 obj
<</Title (Out of Control)
/Parent 162 0 R
/Dest [58 0 R /XYZ 387 387 0]
/Next 217 0 R>>
endobj
217 0 obj
<</Title (Abandoned Children)
/Parent 162 0 R
/Dest [59 0 R /XYZ 387 387 0]
/Prev 216 0 R
/Next 218 0 R>>
endobj
218 0 obj
<</Title (Managing Orphans)
/Parent 162 0 R
/Dest [59 0 R /XYZ 237 237 0]
/Prev 217 0 R>>
endobj
162 0 obj
<</Title (Orphaned Processes)
/Parent 149 0 R
/Dest [58 0 R /XYZ 470 470 0]
/Prev 161 0 R
/Next 163 0 R
/First 216 0 R
/Last 218 0 R
/Count 3>>
endobj
219 0 obj
<</Title (Being CoW Friendly)
/Parent 163 0 R
/Dest [61 0 R /XYZ 344 344 0]>>
endobj
163 0 obj
<</Title (Processes Are Friendly)
/Parent 149 0 R
/Dest [61 0 R /XYZ 470 470 0]
/Prev 162 0 R
/Next 164 0 R
/First 219 0 R
/Last 219 0 R
/Count 1>>
endobj
220 0 obj
<</Title (Babysitting)
/Parent 164 0 R
/Dest [65 0 R /XYZ 470 470 0]
/Next 221 0 R>>
endobj
221 0 obj
<</Title (Process.wait and Cousins)
/Parent 164 0 R
/Dest [66 0 R /XYZ 416 416 0]
/Prev 220 0 R
/Next 222 0 R>>
endobj
222 0 obj
<</Title (Communicating with Process.wait2)
/Parent 164 0 R
/Dest [67 0 R /XYZ 470 470 0]
/Prev 221 0 R
/Next 223 0 R>>
endobj
223 0 obj
<</Title (Waiting for Specific Children)
/Parent 164 0 R
/Dest [69 0 R /XYZ 470 470 0]
/Prev 222 0 R
/Next 224 0 R>>
endobj
224 0 obj
<</Title (Race Conditions)
/Parent 164 0 R
/Dest [70 0 R /XYZ 313 313 0]
/Prev 223 0 R
/Next 225 0 R>>
endobj
225 0 obj
<</Title (In the Real World)
/Parent 164 0 R
/Dest [72 0 R /XYZ 470 470 0]
/Prev 224 0 R
/Next 226 0 R>>
endobj
226 0 obj
<</Title (System Calls)
/Parent 164 0 R
/Dest [72 0 R /XYZ 122 122 0]
/Prev 225 0 R>>
endobj
164 0 obj
<</Title (Processes Can Wait)
/Parent 149 0 R
/Dest [64 0 R /XYZ 470 470 0]
/Prev 163 0 R
/Next 165 0 R
/First 220 0 R
/Last 226 0 R
/Count 7>>
endobj
227 0 obj
<</Title (Good Things Come to Those Who wait\(2\))
/Parent 165 0 R
/Dest [73 0 R /XYZ 315 315 0]
/Next 228 0 R>>
endobj
228 0 obj
<</Title (What Do Zombies Look Like?)
/Parent 165 0 R
/Dest [75 0 R /XYZ 470 470 0]
/Prev 227 0 R
/Next 229 0 R>>
endobj
229 0 obj
<</Title (In The Real World)
/Parent 165 0 R
/Dest [75 0 R /XYZ 196 196 0]
/Prev 228 0 R
/Next 230 0 R>>
endobj
230 0 obj
<</Title (System Calls)
/Parent 165 0 R
/Dest [76 0 R /XYZ 402 402 0]
/Prev 229 0 R>>
endobj
165 0 obj
<</Title (Zombie Processes)
/Parent 149 0 R
/Dest [73 0 R /XYZ 470 470 0]
/Prev 164 0 R
/Next 166 0 R
/First 227 0 R
/Last 230 0 R
/Count 4>>
endobj
231 0 obj
<</Title (Trapping SIGCHLD)
/Parent 166 0 R
/Dest [77 0 R /XYZ 273 273 0]
/Next 232 0 R>>
endobj
232 0 obj
<</Title (SIGCHLD and Concurrency)
/Parent 166 0 R
/Dest [79 0 R /XYZ 470 470 0]
/Prev 231 0 R
/Next 233 0 R>>
endobj
233 0 obj
<</Title (Signals Primer)
/Parent 166 0 R
/Dest [82 0 R /XYZ 159 159 0]
/Prev 232 0 R
/Next 234 0 R>>
endobj
234 0 obj
<</Title (Where do Signals Come From?)
/Parent 166 0 R
/Dest [83 0 R /XYZ 431 431 0]
/Prev 233 0 R
/Next 235 0 R>>
endobj
235 0 obj
<</Title (The Big Picture)
/Parent 166 0 R
/Dest [84 0 R /XYZ 229 229 0]
/Prev 234 0 R
/Next 236 0 R>>
endobj
236 0 obj
<</Title (Redefining Signals)
/Parent 166 0 R
/Dest [87 0 R /XYZ 416 416 0]
/Prev 235 0 R
/Next 237 0 R>>
endobj
237 0 obj
<</Title (Ignoring Signals)
/Parent 166 0 R
/Dest [88 0 R /XYZ 413 413 0]
/Prev 236 0 R
/Next 238 0 R>>
endobj
238 0 obj
<</Title (Signal Handlers are Global)
/Parent 166 0 R
/Dest [88 0 R /XYZ 148 148 0]
/Prev 237 0 R
/Next 239 0 R>>
endobj
239 0 obj
<</Title (Being Nice about Redefining Signals)
/Parent 166 0 R
/Dest [89 0 R /XYZ 416 416 0]
/Prev 238 0 R
/Next 240 0 R>>
endobj
240 0 obj
<</Title (When Can't You Receive Signals?)
/Parent 166 0 R
/Dest [91 0 R /XYZ 470 470 0]
/Prev 239 0 R
/Next 241 0 R>>
endobj
241 0 obj
<</Title (In the Real World)
/Parent 166 0 R
/Dest [91 0 R /XYZ 305 305 0]
/Prev 240 0 R
/Next 242 0 R>>
endobj
242 0 obj
<</Title (System Calls)
/Parent 166 0 R
/Dest [92 0 R /XYZ 374 374 0]
/Prev 241 0 R>>
endobj
166 0 obj
<</Title (Processes Can Get Signals)
/Parent 149 0 R
/Dest [77 0 R /XYZ 470 470 0]
/Prev 165 0 R
/Next 167 0 R
/First 231 0 R
/Last 242 0 R
/Count 12>>
endobj
243 0 obj
<</Title (Our First Pipe)
/Parent 167 0 R
/Dest [93 0 R /XYZ 287 287 0]
/Next 244 0 R>>
endobj
244 0 obj
<</Title (Pipes Are One-Way Only)
/Parent 167 0 R
/Dest [95 0 R /XYZ 470 470 0]
/Prev 243 0 R
/Next 245 0 R>>
endobj
245 0 obj
<</Title (Sharing Pipes)
/Parent 167 0 R
/Dest [95 0 R /XYZ 180 180 0]
/Prev 244 0 R
/Next 246 0 R>>
endobj
246 0 obj
<</Title (Streams vs. Messages)
/Parent 167 0 R
/Dest [97 0 R /XYZ 470 470 0]
/Prev 245 0 R
/Next 247 0 R>>
endobj
247 0 obj
<</Title (Remote IPC?)
/Parent 167 0 R
/Dest [99 0 R /XYZ 319 319 0]
/Prev 246 0 R
/Next 248 0 R>>
endobj
248 0 obj
<</Title (In the Real World)
/Parent 167 0 R
/Dest [99 0 R /XYZ 153 153 0]
/Prev 247 0 R
/Next 249 0 R>>
endobj
249 0 obj
<</Title (System Calls)
/Parent 167 0 R
/Dest [100 0 R /XYZ 360 360 0]
/Prev 248 0 R>>
endobj
167 0 obj
<</Title (Processes Can Communicate)
/Parent 149 0 R
/Dest [93 0 R /XYZ 470 470 0]
/Prev 166 0 R
/Next 168 0 R
/First 243 0 R
/Last 249 0 R
/Count 7>>
endobj
250 0 obj
<</Title (The First Process)
/Parent 168 0 R
/Dest [101 0 R /XYZ 229 229 0]
/Next 251 0 R>>
endobj
251 0 obj
<</Title (Creating Your First Daemon Process)
/Parent 168 0 R
/Dest [102 0 R /XYZ 470 470 0]
/Prev 250 0 R
/Next 252 0 R>>
endobj
252 0 obj
<</Title (Diving into Rack)
/Parent 168 0 R
/Dest [103 0 R /XYZ 470 470 0]
/Prev 251 0 R
/Next 253 0 R>>
endobj
253 0 obj
<</Title (Daemonizing a Process, Step by Step)
/Parent 168 0 R
/Dest [104 0 R /XYZ 470 470 0]
/Prev 252 0 R
/Next 254 0 R>>
endobj
254 0 obj
<</Title (Process Groups and Session Groups)
/Parent 168 0 R
/Dest [105 0 R /XYZ 316 316 0]
/Prev 253 0 R
/Next 255 0 R>>
endobj
255 0 obj
<</Title (In the Real World)
/Parent 168 0 R
/Dest [110 0 R /XYZ 470 470 0]
/Prev 254 0 R
/Next 256 0 R>>
endobj
256 0 obj
<</Title (System Calls)
/Parent 168 0 R
/Dest [110 0 R /XYZ 235 235 0]
/Prev 255 0 R>>
endobj
168 0 obj
<</Title (Daemon Processes)
/Parent 149 0 R
/Dest [101 0 R /XYZ 470 470 0]
/Prev 167 0 R
/Next 169 0 R
/First 250 0 R
/Last 256 0 R
/Count 7>>
endobj
257 0 obj
<</Title (fork + exec)
/Parent 169 0 R
/Dest [111 0 R /XYZ 237 237 0]
/Next 258 0 R>>
endobj
258 0 obj
<</Title (File descriptors and exec)
/Parent 169 0 R
/Dest [112 0 R /XYZ 187 187 0]
/Prev 257 0 R
/Next 259 0 R>>
endobj
262 0 obj
<</Title (Kernel#system)
/Parent 259 0 R
/Dest [115 0 R /XYZ 470 470 0]
/Next 263 0 R>>
endobj
263 0 obj
<</Title (Kernel#`)
/Parent 259 0 R
/Dest [115 0 R /XYZ 244 244 0]
/Prev 262 0 R
/Next 264 0 R>>
endobj
264 0 obj
<</Title (Process.spawn)
/Parent 259 0 R
/Dest [116 0 R /XYZ 470 470 0]
/Prev 263 0 R
/Next 265 0 R>>
endobj
265 0 obj
<</Title (IO.popen)
/Parent 259 0 R
/Dest [117 0 R /XYZ 156 156 0]
/Prev 264 0 R
/Next 266 0 R>>
endobj
266 0 obj
<</Title (open3)
/Parent 259 0 R
/Dest [118 0 R /XYZ 212 212 0]
/Prev 265 0 R>>
endobj
259 0 obj
<</Title (Arguments to exec)
/Parent 169 0 R
/Dest [114 0 R /XYZ 331 331 0]
/Prev 258 0 R
/Next 260 0 R
/First 262 0 R
/Last 266 0 R
/Count 5>>
endobj
260 0 obj
<</Title (In the Real World)
/Parent 169 0 R
/Dest [119 0 R /XYZ 224 224 0]
/Prev 259 0 R
/Next 261 0 R>>
endobj
261 0 obj
<</Title (System Calls)
/Parent 169 0 R
/Dest [121 0 R /XYZ 470 470 0]
/Prev 260 0 R>>
endobj
169 0 obj
<</Title (Spawning Terminal Processes)
/Parent 149 0 R
/Dest [111 0 R /XYZ 470 470 0]
/Prev 168 0 R
/Next 170 0 R
/First 257 0 R
/Last 261 0 R
/Count 5>>
endobj
267 0 obj
<</Title (Abstraction)
/Parent 170 0 R
/Dest [122 0 R /XYZ 358 358 0]
/Next 268 0 R>>
endobj
268 0 obj
<</Title (Communication)
/Parent 170 0 R
/Dest [123 0 R /XYZ 416 416 0]
/Prev 267 0 R
/Next 269 0 R>>
endobj
269 0 obj
<</Title (Farewell, But Not Goodbye)
/Parent 170 0 R
/Dest [123 0 R /XYZ 237 237 0]
/Prev 268 0 R>>
endobj
170 0 obj
<</Title (Ending)
/Parent 149 0 R
/Dest [122 0 R /XYZ 470 470 0]
/Prev 169 0 R
/Next 171 0 R
/First 267 0 R
/Last 269 0 R
/Count 3>>
endobj
270 0 obj
<</Title (The Architecture)
/Parent 171 0 R
/Dest [125 0 R /XYZ 293 293 0]
/Next 271 0 R>>
endobj
271 0 obj
<</Title (Forking for Memory Management)
/Parent 171 0 R
/Dest [126 0 R /XYZ 416 416 0]
/Prev 270 0 R
/Next 272 0 R>>
endobj
272 0 obj
<</Title (Why Bother?)
/Parent 171 0 R
/Dest [128 0 R /XYZ 313 313 0]
/Prev 271 0 R
/Next 273 0 R>>
endobj
273 0 obj
<</Title (Doesn't the GC clean up for us?)
/Parent 171 0 R
/Dest [129 0 R /XYZ 303 303 0]
/Prev 272 0 R>>
endobj
171 0 obj
<</Title (Appendix: How Resque Manages Processes)
/Parent 149 0 R
/Dest [125 0 R /XYZ 470 470 0]
/Prev 170 0 R
/Next 172 0 R
/First 270 0 R
/Last 273 0 R
/Count 4>>
endobj
274 0 obj
<</Title (Reaping What?)
/Parent 172 0 R
/Dest [131 0 R /XYZ 123 123 0]
/Next 275 0 R>>
endobj
275 0 obj
<</Title (Conclusion)
/Parent 172 0 R
/Dest [137 0 R /XYZ 174 174 0]
/Prev 274 0 R>>
endobj
172 0 obj
<</Title (Appendix: How Unicorn Reaps Worker Processes)
/Parent 149 0 R
/Dest [131 0 R /XYZ 470 470 0]
/Prev 171 0 R
/Next 173 0 R
/First 274 0 R
/Last 275 0 R
/Count 2>>
endobj
276 0 obj
<</Title (Efficient use of memory)
/Parent 173 0 R
/Dest [139 0 R /XYZ 470 470 0]
/Next 277 0 R>>
endobj
277 0 obj
<</Title (Many Mongrels)
/Parent 173 0 R
/Dest [140 0 R /XYZ 470 470 0]
/Prev 276 0 R
/Next 278 0 R>>
endobj
278 0 obj
<</Title (Many Unicorn)
/Parent 173 0 R
/Dest [140 0 R /XYZ 263 263 0]
/Prev 277 0 R
/Next 279 0 R>>
endobj
279 0 obj
<</Title (Efficient load balancing)
/Parent 173 0 R
/Dest [141 0 R /XYZ 313 313 0]
/Prev 278 0 R
/Next 280 0 R>>
endobj
280 0 obj
<</Title (Efficient sysadminning)
/Parent 173 0 R
/Dest [143 0 R /XYZ 345 345 0]
/Prev 279 0 R
/Next 281 0 R>>
endobj
281 0 obj
<</Title (Basic Example of a Preforking Server)
/Parent 173 0 R
/Dest [143 0 R /XYZ 152 152 0]
/Prev 280 0 R>>
endobj
173 0 obj
<</Title (Appendix: Preforking Servers)
/Parent 149 0 R
/Dest [138 0 R /XYZ 470 470 0]
/Prev 172 0 R
/Next 174 0 R
/First 276 0 R
/Last 281 0 R
/Count 6>>
endobj
282 0 obj
<</Title (Spyglass' Architecture)
/Parent 174 0 R
/Dest [146 0 R /XYZ 183 183 0]
/Next 283 0 R>>
endobj
283 0 obj
<</Title (Booting Spyglass)
/Parent 174 0 R
/Dest [147 0 R /XYZ 470 470 0]
/Prev 282 0 R
/Next 284 0 R>>
endobj
284 0 obj
<</Title (Before a Request Arrives)
/Parent 174 0 R
/Dest [147 0 R /XYZ 348 348 0]
/Prev 283 0 R
/Next 285 0 R>>
endobj
285 0 obj
<</Title (Connection is Made)
/Parent 174 0 R
/Dest [147 0 R /XYZ 225 225 0]
/Prev 284 0 R
/Next 286 0 R>>
endobj
286 0 obj
<</Title (Things Get Quiet)
/Parent 174 0 R
/Dest [148 0 R /XYZ 416 416 0]
/Prev 285 0 R
/Next 287 0 R>>
endobj
287 0 obj
<</Title (Getting Started)
/Parent 174 0 R
/Dest [148 0 R /XYZ 293 293 0]
/Prev 286 0 R>>
endobj
174 0 obj
<</Title (Appendix: Spyglass)
/Parent 149 0 R
/Dest [146 0 R /XYZ 470 470 0]
/Prev 173 0 R
/First 282 0 R
/Last 287 0 R
/Count 6>>
endobj
149 0 obj
<</Type /Outlines
/First 150 0 R
/Last 174 0 R>>
endobj
2 0 obj
<</Type /Pages
/Kids [3 0 R 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R]
/Count 146>>
endobj
295 0 obj
<</Length 296 0 R
/Filter /FlateDecode>>
stream
x
|