95¾Ç¦~«×¤U¾Ç´Á½Òµ{ºõ­n

¡i­×½Ò¦P¾Ç½ÐÀH®É¤Wºô¬d¾\¥»ºô­¶¡AÀHµÛ¾Ç´Á¶i¦æ¡A½Òµ{¬ÛÃö¸ê°T·|ÀH®É¤½¥¬¦b¦¹ºô­¶¡j

 

¤@¡B¡i¶}½Ò¨t©Ò¡j¡G¸ê°T¤uµ{¾Ç¨t( ùþ¾Ç¤h¯Z¡¼¶i­×¾Ç¤h¯Z¡¼ºÓ¤h¯Z¡¼ºÓ¤h¦b¾±M¯Z )

¤G¡B¡i¶}½Ò¦~¯Å¡j¡G¤T¦~¯Å

¤T¡B¡i­×§O¡j¡G¥²­×

¥|¡B¡i¬ì¥Ø¦WºÙ¡j¡]¤¤¤å¡^¡G§@·~¨t²Î

¡@¡@¡@¡@¡@¡@¡@¡]­^¤å¡^¡GOperating Systems

¤­¡B¡i¥ý­×¬ì¥Ø¡j¡G

¤»¡B¡i¾Ç¤À¼Æ¡j¡G  ¤W¾Ç´Á  0  ¾Ç¤À¡A¤U¾Ç´Á  3  ¾Ç¤À

¤C¡B¡i±Â½Ò®É¼Æ¡j¡G¡]¥¿½Ò¡^ 3  ¤p®É          ¡]¹ê²ß¡^0 ¤p®É

¤K¡B¡i±Ð¾Ç¥Ø¼Ð¡j¡G

§@·~¨t²Î(Operating System)¬O¥ô¦ó¤@­Ó¹q¸£¨t²Î©Ò¤£¥i©Î¯Êªº³¡¥÷¡C¤@­Ó¹q¸£¨t²Î¥i¤À¦¨µwÅé(Hardware)¡B§@·~¨t²Î(Operating System)¡BÀ³¥Îµ{¦¡(Application Program)¡B¨Ï¥ÎªÌ(Users)µ¥¥|­Ó³¡¥÷¡A¦Ó§@·~¨t²Î©Ò§êºtªº¥¿¬OµwÅé»P¨Ï¥ÎªÌ(¤ÎÀ³¥Îµ{¦¡)¤GªÌ¤§¶¡¤¤¤¶ªº¨¤¦â¡A¨ä¥D­n¥Øªº¦b©ó´£¨Ñ¨Ï¥ÎªÌ¤@­Ó«K§Q(Convenient)¥B¦³®Ä²v(Efficient)¦a°õ¦æµ{¦¡ªºÀô¹Ò¡C­Y±N¹q¸£¤ñ³ë¦¨¤HªºÂßÅé¡A¨º§@·~¨t²Î´N¹³¤HªºÆF»î¡A¥D®_µÛªº¹q¸£ªº¦æ¬°¡C

¦Ü2005¦~¬°¤î¡A¥Î©ó¤@¯ë¨Ï¥ÎªÌ¹q¸£ªº§@·~¨t²Î¥D­n¨â­Ó®a±Ú¡GUnix®a±Ú©M·L³nWindows®a±Ú¡CUnix®a±Ú¥]¬A¦h­Ó²Õ´ªº§@·~¨t²Î¡A¨ä¤¤¦³´X­Ó¥D­nªº¤lÃþ¥]¬ASystem V¡BBSD©MLinux¡C³o¸Ìªº'Unix'¬O¤@­Ó°Ó¼Ð¡A¶}µo²Õ´¤¹³\¨Ï¥Î§@·~¨t²Î¦b¤@­Ó©w¸q«e´£¤U¦Û¥Ñ¦a¶}µo¡C¦Ó·L³n¤½¥qªºWindows§@·~¨t²Î®a±Ú°_·½©ó¦­´ÁªºIBM PCÀô¹Ò¤¤ªºMS-DOS¡A²{¦bª©¥»¬O°ò©ó·sªºWindows NT®Ö¤ß¡A²Ä¤@¦¸¬O¦bOS/2¤¤¨î©w¡C©MUnix¤£¦P¡AWindows¥u¯à¹B¦æ¦b32¦ì©M64¦ìªºx86 CPU¡]¦pIntel©ÎªÌAMDªº´¹¤¸¡^¤W¡A¾¨ºÞ¦­´Á¦³ª©¥»¹B¦æ©óDEC Alpha¡AMIPS ©M PowerPCÅé¨tµ²ºc¡C¤µ¤ÑWindows¬O¤@­Ó¬y¦æªº§@·~¨t²Î¡A¦b¥þ²y®à­±¥«³õ¤¤¦û¦³90%¥ª¥kªº¥÷ÃB¡A¦P®É¦b¤¤§CºÝ¦øªA¾¹¥«³õ¤]¦³¼sªxªºÀ³¥Î¡A¦pWeb¦øªA¾¹©M¸ê®Æ®w¦øªA¾¹¡C

¤£ºÞ¬O­þ¤@­Ó®a±Úªº§@·~¨t²Î¡A¥L­Ìªº°ò¥»®Ö¤ß³£¬O¤@¼Ë¦b¶i¦æ¸ê·½ºÞ²zªº¤u§@¡A¹ï¹q¸£¨t²Î¦Ó¨¥¡A©Ò¿×ªº¸ê·½¥]¬ACPUªº¨Ï¥Î®É¶¡¡B¥D°O¾ÐÅé¡B¹q¸£µwºÐªÅ¶¡¡B©PÃ䪺¿é¥X¤J¸Ë¸mµ¥µ¥¡C¥»½Òµ{±N¤¶²Ð³o¨Ç°ò¥»ªº§@·~¨t²Î®Ö¤ß·§©À¡A¦P®É±N¥HLinux§@·~¨t²Î 2.6.11ª©¥»¬°¨Ò¨Ó»¡©ú§@·~¨t²Îªº³]­p­ì²z¡AÅý¾Ç¥Í¥i¥H²z½×»P¹ê§@¨Ã¶iªº¤è¦¡¨Ó²`¤J¾Ç²ß§@·~¨t²Î¡C

 

¤E¡B¡i¤º®eºõ­n¡j¡G(½ÐÂI¿ï¦U³¹¼ÐÃD¥H¤U¸ü½Òµ{§ë¼v¤ù)

Chapter 1: Introduction

1.1. Linux Versus Other Unix-Like Kernels

1.2. Hardware Dependency

1.3. Linux Versions

1.4. Basic Operating System Concepts

1.5. An Overview of the Unix Filesystem

1.6. An Overview of Unix Kernels

Chapter 2. Memory Addressing

2.1 Memory Addresses

2.2 Segmentation in Hardware

2.3 Segmentation in Linux

2.4 Paging in Hardware

2.5 Paging in Linux

Chapter 3. Processes

3.1. Processes, Lightweight Processes, and Threads

3.2. Process Descriptor

3.3. Process Switch

3.4. Creating Processes

3.5. Destroying Processes

Chapter 4. Interrupts and Exceptions

4.1. The Role of Interrupt Signals

4.2. Interrupts and Exceptions

4.3. Nested Execution of Exception and Interrupt Handlers

4.4. Initializing the Interrupt Descriptor Table

4.5. Exception Handling

4.6. Interrupt Handling

4.7. Softirqs and Tasklets

4.8. Work Queues

4.9. Returning from Interrupts and Exceptions

Chapter 5. Kernel Synchronization(Last update: 2007/5/15)

5.1. How the Kernel Services Requests

5.2. Synchronization Primitives

5.3. Synchronizing Accesses to Kernel Data Structures

5.4. Examples of Race Condition Prevention

Chapter 6. Timing Measurements

6.1. Clock and Timer Circuits

6.2. The Linux Timekeeping Architecture

6.3. Updating the Time and Date

6.4. Updating System Statistics

6.5. Software Timers and Delay Functions

6.6. System Calls Related to Timing Measurements

Chapter 7. Process Scheduling (Last update: 2007/6/4)

[¥»³¹©Ò´£¨ì¤§¥D­n­ì©l½Xstruct task, context_switch, finish_task_switch, runqueue, schedule, try_to_wake_up] (Last update: 2007/5/28)

7.1. Scheduling Policy

7.2. The Scheduling Algorithm

7.3. Data Structures Used by the Scheduler

7.4. Functions Used by the Scheduler

7.5. Runqueue Balancing in Multiprocessor Systems

7.6. System Calls Related to Scheduling 

Chapter 8. Memory Management(Last update: 2007/6/11)

[¥»³¹©Ò´£¨ì¤§¥D­n­ì©l½Xstruct pg_data_t, struct zone, struct page, kmem_cache_t] (Last update: 2007/6/11)

8.1. Page Frame Management

8.2. Memory Area Management

8.3. Noncontiguous Memory Area Management

Chapter 9. Process Address Space

9.1. The Process's Address Space

9.2. The Memory Descriptor

9.3. Memory Regions

9.4. Page Fault Exception Handler

9.5. Creating and Deleting a Process Address Space

9.6. Managing the Heap

Appendix A. System Startup

A.1. Prehistoric Age: the BIOS

A.2. Ancient Age: the Boot Loader

A.3. Middle Ages: the setup( ) Function

A.4. Renaissance: the startup_32( ) Functions

A.5. Modern Age: the start_kernel( ) Function

 

¤Q¡B¡i½Ò¥»¡j¡G

(Daniel P. Bovet and Marco CesatiµÛ) ³¯«Ø¾± Ķ¡A½±¤j°¶ ½s¡A¡¨Linux®Ö¤ß¸Ô¸Ñ¡¨¡A¬ü°Ó¼ÚµÜ§¤½¥q¡C

 

¤Q¤@¡B¡i½Òµ{¥²³Æ¤u¨ã®Ñ¡j¡G

l      Linuxµ{¦¡³]­p±Ð¾Ç¤â¥U(²Ä¤Tª©) (ùÖ峯¸ê°TªÑ¥÷¦³­­¤½¥q)

l      C++ªì¾Ç«ü¤Þ Linuxµ{¦¡³]­p(ª÷¥Ý¸ê°TªÑ¥÷¦³­­¤½¥q)

l      Linux C/C++ºô¸ôµ{¦¡³]­p(ª÷¥Ý¸ê°TªÑ¥÷¦³­­¤½¥q)

l      Fedora Core 6 Linux¥Õ¥Ö®Ñ(ª÷¥Ý¸ê°TªÑ¥÷¦³­­¤½¥q)

 

¤Q¤G¡B¡i°Ñ¦Ò¤åÄm¡j¡G

þ    Silberschatz, P. Galvin, and G. Gagne, "Operating System Concepts," John Wiley & Sons, Inc., ²Ä¤Cª©

þ    linux programming unleashed

þ    Linux ¨t²Îµ{¦¡¹ê¨Ò³]­p (Linux Programming by Example: The Fundamentals)

 

¤Q¤G¡B¡iLinux¬ÛÃöºô¯¸¡j¡G

l      Textbook website: Understanding.the.Linux.Kernel.3rd.Edition

http://linux-security.cn/ebooks/ulk3-html/

l      Linux Kernel Archives

http://www.kernel.org/

l      Source code cross reference

http://lxr.linux.no/source/

 

¤Q¤T¡B¡iµû¤À¤è¦¡¡j¡G

l    ¥­®É§@·~(20%)¡G¨C³¹±N¿ï¾Ü¼Æ¤äLinux­ì©l½X¨ç¦¡¡A¥Ñ¾Ç¥Íø»s¸Óµ{¦¡ªº¬yµ{¹Ï¤Î»¡©ú¤å¥óú¥æ¡C[¥­®É¦¨ÁZªí] ¡]³Ìªñ§ó·s¤é´Á2007/6/5¡^

l    µ{¦¡§@·~(30%)¡G¦@¥|¤äµ{¦¡§@·~¡Aµ{¦¡ÃD¥Ø¿ï¨ú¦Ü½Òµ{¤u¨ã®Ñªº½d¨Òµ{¦¡¡C

l    ´Á¤¤¦Ò¦¨ÁZ(20%)¡G½Ò¥»¤º®e¦û50%¡A¦Ó¥­®É§@·~¤º®e¦û50%¡C

l    ´Á¥½¦Ò¦¨ÁZ(30%)¡G¦ÒÃD¤º®e¥H§ë¼v¤ù¬°¥D¡B¸É¥æ§@·~¬°»²¡C¡]³Ìªñ§ó·s¤é´Á2007/6/21¡^

 

¤Q¥|¡B¡i§@·~¡j¡G(½ÐÂI¿ï¶W³sµ²¤U¸ü§@·~»¡©ú¤ÎÃD¥Ø)

¤@¡B§@·~ú¥æ³W©w

 

¤G¡Bµ{¦¡§@·~¡]³Ìªñ§ó·s¤é´Á2007/5/22¡^

§@·~½s¸¹

§@·~ÃD¥Ø

ú¥æ¤é´Á

²Ä¤@¦¸§@·~

§ÚªºHello World

2007/04/06

²Ä¤G¦¸§@·~

Spawn children processes

2007/05/04

²Ä¤T¦¸§@·~

±N²Ä¤G¦¸§@·~ªº¨ä¤¤¤@­Óprocess©Îthread¥[¤W³sºô¥\¯à

2007/05/28

²Ä¥|¦¸§@·~

±N²Ä¤G¦¸§@·~ªº¥t¤@­Óprocess©Îthread¥[À³¥Îµ{¦¡¡A§¹¦¨§Aªº²Ä¤@­ÓLinuxºô¸ô¤¬°Êµ{¦¡

2007/06/29

 

¤T¡B¬yµ{¹Ï§@·~¡]³Ìªñ§ó·s¤é´Á2007/06/02¡^

§@·~½s¸¹

ú¥æ¤é´Á

²Ä¤@¦¸§@·~

20070406

²Ä¤G¦¸§@·~

20070413

²Ä¤T¦¸§@·~

20070420

²Ä¥|¦¸§@·~

20070420

²Ä¤­¦¸§@·~

20070522

²Ä¤»¦¸§@·~

20070606

 

¥|¡B´Á¤¤¦Ò¸Õ¡B¸Ñµª¡B¤Îµû¤À¤è¦¡(2007/5/1)

 

¤­¡B´Á¥½¦Ò¸Õ¦ÒÃD¤º®e¥H§ë¼v¤ù¬°¥D¡B¸É¥æ§@·~¬°»²¡C¡]³Ìªñ§ó·s¤é´Á2007/6/21¡^

 

¤»¡B¦¨ÁZ¸É±Ï¤è¦¡(Last update: 2007/5/7)

°ò¥»¤W¡A¸É±Ï¤è¦¡¬O­n¾Ç¥Í®³¥X¾Ç²ß¸Û·N¡A½T¹ê°µ¨ì½Ò«e¹w²ß¡B¤W½Ò»{¯u¡B½Ò«á½Æ²ß¤T­Ó­nÂI¡C¤èªk¦p¤U¡G

1.          (½Ò«e¹w²ß)¨C¶g¤@PM10:00«e±N¹j¤Ñ(¶g¤G)¦­¤Wªº¤W½Ò¶i«×¨Æ¥ý¹w²ß¦n¡A¼g­Ó5­¶¥H¤Wªº¤º®e¤ß±oºK­n(.doc)±Hµ¹§Ú»P§U±Ð(½Ð±H¦Ü§Úªºgoogle «H½cjiungyao@gmail.com¡A½Ð¤Å±H¦Ü§Úªº¾Ç®Õ«H½c¡A§_«h¿ò¥¢¦Û¦æ­t³d)¡A¶i«×½Ð¬d¾\ºô­¶ªº±Ð¾Ç¶i«×ªí¡C

2.          (¤W½Ò»{¯u)¤W½Ò¤£¿ð¨ì¡B¦­°h¡B¤Î§n¾x¡C

3.          (½Ò«á½Æ²ß)¨C¶g¥|PM10:00«e±N¤W½Ò«áÅ¥¨ìªº¤º®e»P¤§«eú¥æªº¹w²ß¤ß±o¤©¥H¾ã¦X¡A¨Ã°µ¦¨10­¶ªº¤º®e¤ß±oºK­n(.doc)¡C

4.          <<ú¥æ¤è¦¡>>«H¥ó¼ÐÃD½Ð¥´:OS_³¹¸`_¤é´Á_¾Ç¸¹¡A¥H¤U¬P´Áú¥æ¬°¨Ò:OS_ch5_0507_79581206¡C

5.          ¦³¦P¾Ç¤S¦A§ë¾÷¨ú¥©¤F¡A©Ò¥Hú¥æ³ø§i½Ð«ö·Óªþ¥ó½d¥»³W©w¡A§_«h¤£¤©­pºâ¡I¡I(½ÐÂI¿ï½d¥»)

6.          ³ø§i¤@«ß¥H¤¤¤å¼¶¼g¡A¥H­^¤å¼¶¼gªÌ¤£¤©Å禬¡C

7.          ½T¹ê°µ¨ì¤W­z¥|ÂIªÌ¡A«h¤©¥H¸É±Ï¨ä¾Ç´Á¦¨ÁZ¦Ü¤Î®æ¤À¼Æ¡A¦Ó¶V½T¹êÂÔ¦u¤W­z¥|ÂIªÌ¡A¥B¤ß±o³ø§i¤º®eµ¾¹êºëÅP(¶W¹L¤Q­¶¥H¤W)¡A«h·|°u¥H²Ö¥[¾Ç´Á¤À¼Æ¡C

8.          ¥H¤U±¡ªp¬°µø¦P©ñ±ó¸É±Ï¡A¾Ç´Á¦¨ÁZ¤£¤©½Õ¾ã¡G

(a)¡B  ¨S½T¹ê¿í¦u³W©wªÌ¡A¥]¬A¤ß±o³ø§i¤º®eÀ³¥I¤F¨Æ¡A¨S¦³»{¯u¼¶¼g¡Aª½±µ½Æ»s½Ò¥»¤º®e¡A¨S¦³µoªí¥ô¦ó­Ó¤H¤ß±oªÌ¡C

(b)¡B ¤ß±o§@·~§Ûŧ¡A»P¨ä¥¦Ãº¥æªÌªº¬Û¦ü«×¹F¨ì50%¡A«h§ÛŧªÌ»P³Q§ÛŧªÌ¤@«ßµø¦P©ñ±ó¡C

(c)¡B  ½Ò°ó³W©w¤§¬yµ{§@·~»Pµ{¦¡§@·~¡AµL¬G¤£Ãº¥æªÌ¡C

9.          ¸É±Ïª¬ªpµn°Oªí (Last update: 2007/6/14)[µù¡G¦¹Àɮ׶ȰO¿ýú¥æ±¡§Î¡A¥H¤Îªì¼fªº¤j·§¤ÀÃþ¡A«D³ø§iµû¤ñµ²ªG¡A³ø§iªº¦¨ÁZµû¤ñ»Ýµ¥¨ì§U±Ð¾ã¦X§¹©Ò¦³¤Hªº³ø§i«á¡A¦A¥[¥Hµû¤ñ¡I¡I]

10.      ¸É±Ï§@·~ªº³Ì«á¾ã²zµ²ªG¡G²Ä¤­³¹¡B²Ä¤C³¹¡B²Ä¤K³¹¡C

 

 

[µù]

1.          ¦³Ãöú¥æ§@·~ªº°ÝÃD¡A½Ðª½±µ»P§U±Ð(§õÂï¦|)Ápµ¸¡A§U±ÐªºE-mail¡Goslinuxkernel@gmail.com

2.          ¬yµ{¹Ï²³æ±Ð¾Ç

3.          §K¶Oªº¬yµ{¹Ï³nÅé--Dia

4.          Dia¿ý¼v±Ð¾Çºô¯¸

5.          §U±Ð©Òø»sªº²Ä¤@­Ó§@·~ªº²Ä¤@¼h¬yµ{¹Ï(µù¡G¦P¾Ç¥²¶·Ä~Äò²`¤Jø»s²Ä¤G¡B¤T¼hªº¬yµ{¹Ï)

 

 

¤Q¤­¡B¡i¥­®É¦¨ÁZµû©w¤è¦¡¡j¡G

l    ½Ò°ó©âÂI¦W¡A¯Ê®u¤@¦¸¦©¾Ç´ÁÁ`¦¨ÁZ¤@¤À¡C

l    §@·~¿ð¥æ¤@¤Ñ¦©¤­¤À¡A³Ì¦h¿ð¥æ¤T¤Ñ¡A²Ä¥|¤Ñ¿ð¥æ¤£¤©¦¬¥ó¡C

l    ¤W½Ò´Á¶¡ª±¤â¾÷©Î¬O±µÅ¥¹q¸ÜªÌ¡A¤@«ß¤©¥H¦¬¡A¾Ç´Áµ²§ô«á¤è¯à¨ì¨t¿ì»â¨ú¡I¡I

 

¤Q¤»¡B¡i¤W½Ò¤è¦¡¡j¡G

l      ¦U¦ì¦P¾Ç¦b¬ã²ß¥»½Ò®É¡A½Ð°O±oÀH®É¨ì¦p¤Uºô¯¸¹ï·ÓLinux­ì©l½X¡A¤è¯à¶¶§Q¬ãŪ¥»½Òµ{¡C

http://lxr.linux.no/source/

l      ¥»½Òµ{ÀH°ó¿ý¼v¡A¦P¾Ç¥i¥H½Ò«áÆ[¬Ý¤W½Ò¿ý¼v¤ù¡A½Ð¶i¤J¦p¤Uºô§}Æ[¬Ý

http://192.192.35.71:8888/idea/

½ÐÂI¿ïidea¨Ï¥Î¤â¥U¡A¥H¥Ó½Ð±b¸¹¶i¤Jºô¯¸Æ[¬Ý¡C

 

 

 

±Ð¾Ç¶i«×­p¹ºªí¡]³Ìªñ§ó·s¤é´Á2007/6/21¡^

µù¡G¥»±Ð¾Ç¶i«×ªí·|ÀHµÛ¹ê»Ú¤W½Ò±¡§Î½Õ¾ã¡A½ÐÀH®É¤Wºô¬d¾\¡I¡I

¶g¼Æ

¤é´Á

¶i«×

¤@

¤G

¤T

¥|

¤­

1(2/3¤ë)

26

27

28

1

2

Chapter 1: Introduction

2(3¤ë)

5

6

7

8

9

Chapter 1: Introduction/Chapter 2. Memory Addressing

3(3¤ë)