²é¿´: 2020  |  »Ø¸´: 29
¡¾½±Àø¡¿ ±¾Ìû±»ÆÀ¼Û25´Î£¬×÷ÕßfoxsuncoolÔö¼Ó½ð±Ò 19.4 ¸ö

foxsuncool

ľ³æ (СÓÐÃûÆø)


[×ÊÔ´] ÉîÈëÀí½â¼ÆËã»úϵͳ

ÉîÈëÀí½â¼ÆËã»úϵͳ¸½¼þ1ÊÇBryantºÍO'HallaronËùÖøµÄ¡¶Computer Systems A Programmer¡¯s Perspective¡·µÄÒë±¾ÊÇɨÃè°æ£¬ÇåÎú¶È²»¹»
¸½¼þ2£ºÉîÈëÀí½â¼ÆËã»ú²Ù×÷ϵͳÊÇÓ¢Îĵģ¨·ÇɨÃè°æ£©Preface i
1 Introduction 1
1.1 Information isBits inContext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Programs areTranslated byOtherPrograms intoDifferent Forms . . . . . . . . . . . . . . . 3
1.3 ItPays toUnderstandHowCompilation SystemsWork . . . . . . . . . . . . . . . . . . . . 4
1.4 Processors Read and Interpret Instructions Stored in Memory . . . . . . . . . . . . . . . . . 5
1.4.1 HardwareOrganization of aSystem . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.2 Running the helloProgram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 CachesMatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6 StorageDevicesFormaHierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.7 TheOperating SystemManages theHardware . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7.1 Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.7.2 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7.3 Virtual Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7.4 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.8 SystemsCommunicateWithOtherSystemsUsingNetworks . . . . . . . . . . . . . . . . . 16
1.9 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
I Program Structure and Execution 19
2 Representing and Manipulating Information 21
2.1 Information Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.1 HexadecimalNotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.2 Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3
4 CONTENTS
2.1.3 DataSizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.4 Addressing and Byte Ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1.5 Representing Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.1.6 Representing Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.1.7 BooleanAlgebras andRings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.8 Bit-Level Operations in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.1.9 LogicalOperations inC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.1.10 ShiftOperations inC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.2 Integer Representations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2.1 IntegralDataTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2.2 Unsigned andTwo¡¯sComplementEncodings . . . . . . . . . . . . . . . . . . . . . 41
2.2.3 Conversions BetweenSigned andUnsigned . . . . . . . . . . . . . . . . . . . . . . 45
2.2.4 Signed vs.Unsigned inC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.2.5 Expanding the Bit Representation of a Number . . . . . . . . . . . . . . . . . . . . 49
2.2.6 TruncatingNumbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.2.7 Advice onSigned vs.Unsigned . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.3 Integer Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.3.1 Unsigned Addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.3.2 Two¡¯s Complement Addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.3.3 Two¡¯sComplementNegation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.3.4 Unsigned Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.3.5 Two¡¯s Complement Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.3.6 Multiplying by Powers of Two . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.3.7 Dividing byPowersofTwo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.4 Floating Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2.4.1 FractionalBinaryNumbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.4.2 IEEE Floating-Point Representation . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.4.3 ExampleNumbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.4.4 Rounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.4.5 Floating-PointOperations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
2.4.6 Floating Point inC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
2.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
CONTENTS 5
3 Machine-Level Representation of C Programs 89
3.1 AHistorical Perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.2 ProgramEncodings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.2.1 Machine-LevelCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.2.2 CodeExamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.2.3 A Note on Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.3 DataFormats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.4 Accessing Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.4.1 Operand Specifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.4.2 DataMovement Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.4.3 DataMovementExample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
3.5 Arithmetic and Logical Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.5.1 LoadEffectiveAddress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
3.5.2 Unary andBinaryOperations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
3.5.3 ShiftOperations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.5.4 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
3.5.5 Special Arithmetic Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.6 Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
3.6.1 Condition Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
3.6.2 Accessing the Condition Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
3.6.3 Jump Instructions and theirEncodings . . . . . . . . . . . . . . . . . . . . . . . . . 114
3.6.4 TranslatingConditionalBranches . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.6.5 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
3.6.6 SwitchStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
3.7 Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
3.7.1 StackFrameStructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
3.7.2 Transferring Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
3.7.3 RegisterUsageConventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
3.7.4 Procedure Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
3.7.5 Recursive Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
3.8 Array Allocation and Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
3.8.1 BasicPrinciples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
3.8.2 Pointer Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6 CONTENTS
3.8.3 Arrays and Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
3.8.4 NestedArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
3.8.5 FixedSizeArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
3.8.6 DynamicallyAllocatedArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
3.9 HeterogeneousDataStructures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
3.9.1 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
3.9.2 Unions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
3.10 Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
3.11 Putting it Together: Understanding Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . 162
3.12 Life in the Real World: Using the GDB Debugger . . . . . . . . . . . . . . . . . . . . . . . 165
3.13 Out-of-Bounds Memory References and Buffer Overflow . . . . . . . . . . . . . . . . . . . 167
3.14 *Floating-Point Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
3.14.1 Floating-PointRegisters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
3.14.2 Extended-Precision Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
3.14.3 Stack Evaluation of Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
3.14.4 Floating-PointDataMovement andConversionOperations . . . . . . . . . . . . . . 179
3.14.5 Floating-Point Arithmetic Instructions . . . . . . . . . . . . . . . . . . . . . . . . . 181
3.14.6 UsingFloating Point inProcedures . . . . . . . . . . . . . . . . . . . . . . . . . . 183
3.14.7 Testing andComparing Floating-PointValues . . . . . . . . . . . . . . . . . . . . . 184
3.15 *Embedding Assembly Code in C Programs . . . . . . . . . . . . . . . . . . . . . . . . . . 186
3.15.1 Basic Inline Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
3.15.2 Extended Form of asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
3.16 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
4 Processor Architecture 201
5 Optimizing Program Performance 203
5.1 Capabilities and Limitations of Optimizing Compilers . . . . . . . . . . . . . . . . . . . . . 204
5.2 Expressing Program Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
5.3 ProgramExample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
5.4 Eliminating LoopInefficiencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
5.5 Reducing ProcedureCalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
5.6 EliminatingUnneededMemoryReferences . . . . . . . . . . . . . . . . . . . . . . . . . . 218
CONTENTS 7
5.7 Understanding Modern Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
5.7.1 OverallOperation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
5.7.2 FunctionalUnitPerformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
5.7.3 A Closer Look at Processor Operation . . . . . . . . . . . . . . . . . . . . . . . . . 225
5.8 Reducing LoopOverhead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
5.9 Converting to Pointer Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
5.10 Enhancing Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
5.10.1 Loop Splitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
5.10.2 Register Spilling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
5.10.3 Limits toParallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
5.11 Putting it Together: Summary of Results for Optimizing Combining Code . . . . . . . . . . 247
5.11.1 Floating-Point PerformanceAnomaly . . . . . . . . . . . . . . . . . . . . . . . . . 248
5.11.2 Changing Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
5.12 Branch Prediction and Misprediction Penalties . . . . . . . . . . . . . . . . . . . . . . . . . 249
5.13 UnderstandingMemoryPerformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
5.13.1 LoadLatency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
5.13.2 StoreLatency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
5.14 Life intheRealWorld: Performance ImprovementTechniques . . . . . . . . . . . . . . . . 260
5.15 Identifying and Eliminating Performance Bottlenecks . . . . . . . . . . . . . . . . . . . . . 261
5.15.1 ProgramProfiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
5.15.2 Using aProfiler toGuideOptimization . . . . . . . . . . . . . . . . . . . . . . . . 263
5.15.3 Amdahl¡¯sLaw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
5.16 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
6 The Memory Hierarchy 275
6.1 Storage Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
6.1.1 Random-Access Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
6.1.2 DiskStorage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
6.1.3 Storage Technology Trends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
6.2 Locality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
6.2.1 Locality of References to Program Data . . . . . . . . . . . . . . . . . . . . . . . . 295
6.2.2 Locality of Instruction Fetches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
6.2.3 Summary of Locality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
8 CONTENTS
6.3 TheMemoryHierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
6.3.1 Caching in theMemoryHierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
6.3.2 Summary ofMemoryHierarchyConcepts . . . . . . . . . . . . . . . . . . . . . . . 303
6.4 CacheMemories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
6.4.1 GenericCacheMemoryOrganization . . . . . . . . . . . . . . . . . . . . . . . . . 305
6.4.2 Direct-MappedCaches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
6.4.3 SetAssociativeCaches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
6.4.4 FullyAssociativeCaches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
6.4.5 Issues with Writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
6.4.6 Instruction Caches andUnifiedCaches . . . . . . . . . . . . . . . . . . . . . . . . 319
6.4.7 Performance Impact ofCacheParameters . . . . . . . . . . . . . . . . . . . . . . . 320
6.5 Writing Cache-friendly Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
6.6 Putting it Together: The Impact of Caches on Program Performance . . . . . . . . . . . . . 327
6.6.1 The Memory Mountain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
6.6.2 Rearranging Loops to Increase Spatial Locality . . . . . . . . . . . . . . . . . . . . 331
6.6.3 Using Blocking to Increase Temporal Locality . . . . . . . . . . . . . . . . . . . . 335
6.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
II Running Programs on a System 347
7 Linking 349
7.1 CompilerDrivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
7.2 StaticLinking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
7.3 Object Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
7.4 RelocatableObjectFiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
7.5 Symbols andSymbolTables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
7.6 SymbolResolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
7.6.1 How Linkers Resolve Multiply-Defined Global Symbols . . . . . . . . . . . . . . . 358
7.6.2 LinkingwithStaticLibraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
7.6.3 HowLinkersUseStaticLibraries toResolveReferences . . . . . . . . . . . . . . . 364
7.7 Relocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
7.7.1 Relocation Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
7.7.2 Relocating SymbolReferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
CONTENTS 9
7.8 ExecutableObjectFiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
7.9 LoadingExecutableObject Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
7.10 DynamicLinkingwithSharedLibraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
7.11 Loading andLinking SharedLibraries fromApplications . . . . . . . . . . . . . . . . . . . 376
7.12 *Position-Independent Code (PIC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
7.13 Tools forManipulatingObjectFiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
7.14 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
8 Exceptional Control Flow 391
8.1 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
8.1.1 ExceptionHandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
8.1.2 Classes of Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
8.1.3 Exceptions in Intel Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
8.2 Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
8.2.1 LogicalControlFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
8.2.2 PrivateAddress Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
8.2.3 User andKernelModes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
8.2.4 Context Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
8.3 SystemCalls andErrorHandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
8.4 Process Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
8.4.1 Obtaining Process ID¡¯s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
8.4.2 Creating and Terminating Processes . . . . . . . . . . . . . . . . . . . . . . . . . . 404
8.4.3 Reaping Child Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
8.4.4 Putting Processes to Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
8.4.5 Loading and Running Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
8.4.6 Using fork and execve toRunPrograms . . . . . . . . . . . . . . . . . . . . . . 418
8.5 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
8.5.1 SignalTerminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
8.5.2 Sending Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
8.5.3 Receiving Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
8.5.4 SignalHandling Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
8.5.5 Portable SignalHandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
8.6 Nonlocal Jumps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
10 CONTENTS
8.7 Tools for Manipulating Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
8.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
9 Measuring Program Execution Time 449
9.1 TheFlowofTimeonaComputerSystem . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
9.1.1 Process Scheduling and Timer Interrupts . . . . . . . . . . . . . . . . . . . . . . . 451
9.1.2 Time fromanApplication Program¡¯sPerspective . . . . . . . . . . . . . . . . . . . 452
9.2 Measuring Time by Interval Counting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
9.2.1 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
9.2.2 Reading the Process Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
9.2.3 Accuracy of Process Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
9.3 Cycle Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
9.3.1 IA32 Cycle Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
9.4 Measuring Program Execution Time with Cycle Counters . . . . . . . . . . . . . . . . . . . 460
9.4.1 TheEffects ofContextSwitching . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
9.4.2 Caching andOtherEffects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
9.4.3 The K-Best Measurement Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
9.5 Time-of-Day Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
9.6 Putting it Together: An Experimental Protocol . . . . . . . . . . . . . . . . . . . . . . . . . 478
9.7 Looking into the Future . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
9.8 Life in the Real World: An Implementation of the K-Best Measurement Scheme . . . . . . 480
9.9 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
10 Virtual Memory 485
10.1 Physical and Virtual Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
10.2 Address Spaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
10.3 VMas aTool forCaching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
10.3.1 DRAM Cache Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
10.3.2 PageTables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
10.3.3 PageHits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
10.3.4 PageFaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
10.3.5 Allocating Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
10.3.6 Locality to the Rescue Again . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
CONTENTS 11
10.4 VMas aTool forMemoryManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
10.4.1 Simplifying Linking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
10.4.2 Simplifying Sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
10.4.3 Simplifying Memory Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
10.4.4 Simplifying Loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
10.5 VMas aTool forMemoryProtection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
10.6 AddressTranslation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
10.6.1 Integrating Caches andVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
10.6.2 Speeding upAddressTranslationwith aTLB . . . . . . . . . . . . . . . . . . . . . 500
10.6.3 Multi-level Page Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
10.6.4 Putting it Together: End-to-end Address Translation . . . . . . . . . . . . . . . . . 504
10.7 Case Study: The Pentium/Linux Memory System . . . . . . . . . . . . . . . . . . . . . . . 508
10.7.1 PentiumAddressTranslation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
10.7.2 Linux Virtual Memory System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
10.8 MemoryMapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
10.8.1 SharedObjectsRevisited . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
10.8.2 The forkFunctionRevisited . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
10.8.3 The execveFunctionRevisited . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
10.8.4 User-level Memory Mapping with the mmapFunction . . . . . . . . . . . . . . . . 520
10.9 DynamicMemoryAllocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
10.9.1 The malloc and freeFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
10.9.2 WhyDynamicMemoryAllocation? . . . . . . . . . . . . . . . . . . . . . . . . . . 524
10.9.3 AllocatorRequirements andGoals . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
10.9.4 Fragmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
10.9.5 Implementation Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
10.9.6 Implicit FreeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
10.9.7 PlacingAllocatedBlocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
10.9.8 Splitting Free Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
10.9.9 Getting Additional Heap Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
10.9.10 Coalescing Free Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
10.9.11 Coalescing with Boundary Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
10.9.12 Putting it Together: Implementing a Simple Allocator . . . . . . . . . . . . . . . . . 535
10.9.13Explicit FreeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
12 CONTENTS
10.9.14Segregated FreeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
10.10GarbageCollection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
10.10.1GarbageCollectorBasics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
10.10.2Mark&SweepGarbageCollectors . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
10.10.3ConservativeMark&Sweep forCPrograms . . . . . . . . . . . . . . . . . . . . . . 550
10.11CommonMemory-relatedBugs inCPrograms . . . . . . . . . . . . . . . . . . . . . . . . 551
10.11.1Dereferencing BadPointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
10.11.2 Reading Uninitialized Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
10.11.3AllowingStackBufferOverflows . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
10.11.4Assuming thatPointers and theObjects theyPoint toAre theSameSize . . . . . . . 552
10.11.5MakingOff-by-oneErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
10.11.6Referencing aPointer Instead of theObject itPoints to . . . . . . . . . . . . . . . . 553
10.11.7Misunderstanding Pointer Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . 554
10.11.8ReferencingNon-existentVariables . . . . . . . . . . . . . . . . . . . . . . . . . . 554
10.11.9ReferencingData inFreeHeapBlocks . . . . . . . . . . . . . . . . . . . . . . . . . 555
10.11.10Introducing Memory Leaks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
10.12Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
III Interaction and Communication Between Programs 561
11 Concurrent Programming with Threads 563
11.1 BasicThreadConcepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
11.2 ThreadControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
11.2.1 CreatingThreads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
11.2.2 TerminatingThreads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
11.2.3 ReapingTerminatedThreads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
11.2.4 Detaching Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
11.3 SharedVariables inThreaded Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
11.3.1 ThreadsMemoryModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
11.3.2 MappingVariables toMemory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
11.3.3 SharedVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
11.4 Synchronizing Threads with Semaphores . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
11.4.1 SequentialConsistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
CONTENTS 13
11.4.2 ProgressGraphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
11.4.3 Protecting Shared Variables with Semaphores . . . . . . . . . . . . . . . . . . . . . 579
11.4.4 Posix Semaphores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
11.4.5 Signaling With Semaphores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
11.5 Synchronizing Threads with Mutex and Condition Variables . . . . . . . . . . . . . . . . . 583
11.5.1 MutexVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
11.5.2 Condition Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
11.5.3 Barrier Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
11.5.4 Timeout Waiting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
11.6 Thread-safe andReentrant Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
11.6.1 Reentrant Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
11.6.2 Thread-safe Library Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
11.7 OtherSynchronization Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
11.7.1 Races . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
11.7.2 Deadlocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
11.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
12 Network Programming 605
12.1 Client-Server ProgrammingModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
12.2 Networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
12.3 TheGlobal IPInternet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
12.3.1 IP Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
12.3.2 InternetDomainNames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
12.3.3 InternetConnections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
12.4 Unixfile I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
12.4.1 The read and writeFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
12.4.2 Robust File I/O With the readn and writenFunctions. . . . . . . . . . . . . . . 621
12.4.3 Robust Input of Text Lines Using the readlineFunction . . . . . . . . . . . . . . 623
12.4.4 The statFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
12.4.5 The dup2Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
12.4.6 The closeFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
12.4.7 OtherUnix I/OFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
12.4.8 Unix I/Ovs. Standard I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
14 CONTENTS
12.5 TheSockets Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
12.5.1 SocketAddressStructures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
12.5.2 The socketFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
12.5.3 The connectFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
12.5.4 The bindFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
12.5.5 The listenFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
12.5.6 The acceptFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
12.5.7 ExampleEchoClient andServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
12.6 Concurrent Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638
12.6.1 Concurrent Servers Based on Processes . . . . . . . . . . . . . . . . . . . . . . . . 638
12.6.2 Concurrent Servers Based on Threads . . . . . . . . . . . . . . . . . . . . . . . . . 640
12.7 WebServers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
12.7.1 WebBasics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
12.7.2 WebContent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
12.7.3 HTTPTransactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
12.7.4 ServingDynamicContent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
12.8 Putting it Together: The TINYWebServer . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
12.9 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
A Error handling 665
A.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
A.2 Error handling inUnix systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
A.3 Error-handlingwrappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
A.4 The csapp.h header file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
A.5 The csapp.c source file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
B Solutions to Practice Problems 691
B.1 Intro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
B.2 Representing and Manipulating Information . . . . . . . . . . . . . . . . . . . . . . . . . . 691
B.3 Machine Level Representation of C Programs . . . . . . . . . . . . . . . . . . . . . . . . . 700
B.4 Processor Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
B.5 Optimizing ProgramPerformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
B.6 TheMemoryHierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
CONTENTS 15
B.7 Linking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
B.8 ExceptionalControl Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
B.9 Measuring Program Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
B.10 Virtual Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730
B.11 Concurrent ProgrammingwithThreads . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
B.12 NetworkProgramming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736

[ Last edited by foxsuncool on 2012-3-15 at 19:22 ]
»Ø¸´´ËÂ¥

» ±¾Ìû¸½¼þ×ÊÔ´Áбí

  • »¶Ó­¼à¶½ºÍ·´À¡£ºÐ¡Ä¾³æ½öÌṩ½»Á÷ƽ̨£¬²»¶Ô¸ÃÄÚÈݸºÔð¡£
    ±¾ÄÚÈÝÓÉÓû§×ÔÖ÷·¢²¼£¬Èç¹ûÆäÄÚÈÝÉæ¼°µ½ÖªÊ¶²úȨÎÊÌ⣬ÆäÔðÈÎÔÚÓÚÓû§±¾ÈË£¬Èç¶Ô°æȨÓÐÒìÒ飬ÇëÁªÏµÓÊÏ䣺libolin3@tal.com
  • ¸½¼þ 1 : ÉîÈëÀí½â¼ÆËã»ú²Ù×÷ϵͳ.pdf
  • 2012-03-15 01:02:19, 4.7 M
  • ¸½¼þ 2 : ÉîÈëÀí½â¼ÆËã»ú²Ù×÷ϵͳ.pdf
  • 2012-03-15 19:18:04, 4.7 M

» ÊÕ¼±¾ÌûµÄÌÔÌùר¼­ÍƼö

@ÆäËûÊé¼®Óë×ÊÁÏ ºÃµÄ×ÊÔ´

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍƼö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
»ØÌûÖö¥ ( ¹²ÓÐ1¸ö )

gaoyang636

ľ³æ (ÖøÃûдÊÖ)


Äܲ»ÄÜÇëlz´óÖÂÌṩһϸÃÊéµÄÐÅÏ¢£º×÷Õß|ÒëÕߣ¬³ö°æÉ磬³ö°æÄê·Ý£¬×îºÃÓÐĿ¼£¬Ð»Ð»ÁË
3Â¥2012-03-15 08:39:26
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

ÆÕÀ­Ìáè

Òø³æ (СÓÐÃûÆø)


¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶,ÓÅÐãÍƼö

Ó¢ÎÄ°æÊǵÚÒ»°æ£¬Ð»Ð»
20Â¥2015-04-08 16:35:13
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

jorfun

гæ (³õÈëÎÄ̳)


¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶,ÓÅÐãÍƼö

Ó¢ÎÄ°æ¿ÉÒÔÑ¡ÖÐÎÄ×Ö£¬×¢Êͺܷ½±ã¡£
22Â¥2015-05-31 19:16:14
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

kyzjx

гæ (³õÈëÎÄ̳)


¡ï¡ï¡ï ÈýÐǼ¶,Ö§³Ö¹ÄÀø

²»´íµÄ×ÊÔ´
23Â¥2015-08-03 15:19:01
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

ChaosSin.God

Ìú¸Ëľ³æ (ÕýʽдÊÖ)


¡ï¡ï¡ï ÈýÐǼ¶,Ö§³Ö¹ÄÀø

¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡ÊǵÚÒ»°æµÄÊÖ¸å...
30Â¥2017-08-17 22:27:40
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
¼òµ¥»Ø¸´
jinhx872Â¥
2012-03-15 07:17   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
roads0084Â¥
2012-03-15 08:46   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
sjshvdc5Â¥
2012-03-15 12:31   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
2012-03-19 01:22   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
2012-03-19 01:22   »Ø¸´  
¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
2012-08-12 15:44   »Ø¸´  
ÈýÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
littledr9Â¥
2012-09-10 15:20   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
littledr10Â¥
2012-09-10 15:21   »Ø¸´  
¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
SunnyY.Feng11Â¥
2012-10-13 10:14   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
42170089412Â¥
2013-01-03 11:00   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
42170089413Â¥
2013-01-03 11:00   »Ø¸´  
¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
2014-06-15 21:53   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
fujunhaozi15Â¥
2014-08-22 09:47   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
С¥º®16Â¥
2014-10-25 13:23   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
zhouxj17Â¥
2014-12-28 21:56   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
H98020585918Â¥
2015-03-09 00:43   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
xmc952119Â¥
2015-03-26 12:41   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
g86g8621Â¥
2015-05-29 18:29   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
zhaolz24Â¥
2016-01-24 09:14   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
2016-01-24 14:42   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
xyzlrm126Â¥
2016-02-04 20:14   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
yiyiac727Â¥
2016-03-13 18:45   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
gongjian092028Â¥
2016-12-16 09:36   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
doolittlexi29Â¥
2017-01-17 10:07   »Ø¸´  
ÎåÐǺÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
Ïà¹Ø°æ¿éÌøת ÎÒÒª¶©ÔÄÂ¥Ö÷ foxsuncool µÄÖ÷Ìâ¸üÐÂ
¡î ÎÞÐǼ¶ ¡ï Ò»ÐǼ¶ ¡ï¡ï¡ï ÈýÐǼ¶ ¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶
×î¾ßÈËÆøÈÈÌûÍƼö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[»ù½ðÉêÇë] ÎÒ±êÊé´úÂë±äÁË +18 ѧԱNHuqdk 2024-06-16 29/1450 2024-06-17 00:55 by kkkjack
[˶²©¼ÒÔ°] ˶²©¾ÞÓ¤£¬Ò²Ðí²Å¸Õ¸Õ¿ªÊ¼ +30 SNaiL1995 2024-06-12 77/3850 2024-06-16 23:18 by »¶Ï²1998
[»ù½ðÉêÇë] Nature 11ÈÕ·¢ÎÄ£¬ÖйúÖøÃûѧÕßÃdzÆÔì¼ÙÆȲ»µÃÒÑ +6 babu2015 2024-06-14 6/300 2024-06-16 18:37 by ϲ»¶ºÍÒ»Ñõ»¯¶þÌ
[»ù½ðÉêÇë] ÃæÇàµØ»áÆÀʱ¼ä +6 tanjydd 2024-06-15 6/300 2024-06-16 15:42 by ÎÒÊÇÍõС˧
[½Ìʦ֮¼Ò] ÿ´ÎɧÈÅŮѧÉúµÄ¶¼ÊÇԺϵÁìµ¼£¬¶ø²»ÊÇÆÕͨ½Ìʦ£¬Ð¡±àÃÇҪעÒâ´ë´ÇÕýÈ· +9 zju2000 2024-06-15 11/550 2024-06-16 14:49 by appleapple2
[ÂÛÎÄͶ¸å] ±à¼­ÊÇʲôÒâ˼ 15+3 s090604054 2024-06-15 3/150 2024-06-16 10:29 by bobvan
[ÕÒ¹¤×÷] ³É¶¼²úÆ·ÖÊÁ¿¼ì²âÑо¿Ôº 200+3 ¾¨Óã663 2024-06-11 9/450 2024-06-16 10:08 by SNaiL1995
[»ù½ðÉêÇë] ²©Ê¿ºó´´ÐÂÈ˲ÅÖ§³Ö¼Æ»®¹«Ê¾ +9 aishida144 2024-06-14 15/750 2024-06-16 09:52 by msjy
[ÂÛÎÄͶ¸å] Çó»úеÀàËÄÇøsciÍƼö 5+3 ÃÔãС¿õ 2024-06-14 4/200 2024-06-15 11:25 by bobvan
[ÂÛÎÄͶ¸å] ͶÁËһƪ4ÇøµÄSCI£¬Éó¸åÈËÒ»¸ö¾Ü¸å£¬Ò»¸öСÐÞ£¬±à¼­¸øÁË´óÐÞ¡£ +9 °²ÎÈ22123 2024-06-13 10/500 2024-06-14 23:45 by jurkat.1640
[ÂÛÎÄͶ¸å] Éó¸åÎÊÌ⣺Ϊʲôӫ¹â¼¤·¢²¨³¤ºÍ×ÏÍâÎüÊÕ²¨³¤²îµÄ´ó£¿ 10+4 sdawege 2024-06-14 8/400 2024-06-14 22:39 by ¶«±±¶ÁÊéÈË
[»ù½ðÉêÇë] ÃæÉÏ»ù½ðÓÐÒ»¸ö£¨Á½¸ö£©CÊDz»ÊǾÍûϷÁË.... 5+3 zzzm116 2024-06-13 17/850 2024-06-14 22:26 by lzt8076
[»ù½ðÉêÇë] »¯Ñ§»áÄê»á¸Ä³ÉÒ»Ä꿪һ´ÎÁË£¿ +5 babu2015 2024-06-12 13/650 2024-06-14 10:46 by babu2015
[ÂÛÎÄͶ¸å] ACS NanoͶ¸åºó·ÖÅäµ½¸±±à¼­ÊÖÀï12ÌìÁË£¬ÄÜÈ·¶¨ËÍÉóÁËÂ𣿠+5 äìÈ÷âùϧ 2024-06-12 10/500 2024-06-14 09:56 by äìÈ÷âùϧ
[ÂÛÎÄͶ¸å] ×î½üдÁËһƪ¿ØÖÆÓÅ»¯ÁìÓòµÄÎÄÕ£¬¿ÉÒÔͶÄÄÀï°¡£¿ÓÐûÓÐˮһЩµÄÆÚ¿¯ÍƼö +7 Ïã¹ÏľÏã 2024-06-12 13/650 2024-06-14 07:05 by Ïã¹ÏľÏã
[»ù½ðÉêÇë] ¹¤²ÄE10¿Úº¯ÆÀ½áÊøÁËÂð 10+3 ÎÒ1µÄ·ÉÏè 2024-06-13 5/250 2024-06-14 06:35 by nono2009
[˶²©¼ÒÔ°] »úеÑо¿ÉúÈçºÎÄõ½Äêн40+w +13 °¢°Í°¢°ÍŶŶ 2024-06-11 15/750 2024-06-13 15:40 by 113745685
[¿¼²©] ²©µ¼Ñ¡Ôñ +3 bing85977 2024-06-12 3/150 2024-06-13 15:34 by ÎÒÊÇÇñÒ¢
[ÂÛÎÄͶ¸å] with editorÈÕÆÚ±ä¸ü +3 É÷¶ÀµÄС»¨¾í 2024-06-12 8/400 2024-06-13 11:00 by É÷¶ÀµÄС»¨¾í
[»ù½ðÉêÇë] ²©ºóÌØÖúÕâÖܳö½á¹ûÂð£¿ÍùÄ궼ÊÇɶʱºò°¡£¿ +13 jsqy 2024-06-12 17/850 2024-06-12 19:55 by Lynn212
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û