�� ���� (3� ��)

  1. ��: ���(Goroutine)� Go ��� ��� �� ����, M:N ���� ��� �� �� ��� ��� �� ���� OS ��� �� ����� �����.
  2. ��: �� �� �� � ���� ��� ���� �� ��� ������ �����, ��� �� ��� ��� ���� ���� ��� ����.
  3. ��: ���� ����� ���� ����� ��� ���� ����, ��� CSP(Communicating Sequential Processes) ��� ���� � ��� ������.

. �� � ��� (Context & Necessity)

  • ��: ���� Go ���� ���� �� �� ���, �� �� go ���� ��� �� ��� � ��. � KB� �� ���� ���� ��� �� ���� �� � ����, M:N ����� ��� ���� � �� OS ��� �� ����� ����.

  • ���: ���� OS ���� �� � ���� ��� ��� �� �� � ��� ����� �����. ���� ��� ��� dramatically ���, ��� �� �� ��� ���� ��� � �� ��, �� ��� ���� ��� ��������� �����.

  • � ��: ���� ������ ��� ���� usher� ��. � �� ���(OS ���)� �� usher(���)� ����, ��� �� usher� ��� ����� ����� �� ��� ���� ���.

  • �� �� � �� ��:

    1. Go ��� ��� ��: 2009� Go �� �� ��� �� ���� �� ���� �� ���� ��� �����.
    2. M:N ����� ��: ���� 1:1 ������, �� 1.1�� M:N �� ���(work-stealing) ����� ���� ��� �� �����.
    3. ��� ���: ��� �� ���� ��, ��� ���� �� �� ����� ����� ���� ��.

��� ��� ����� �� ��� ����, ��� ������ � � ��.

   
                     ��� �� � ���� ��                    
   
                                                                     
     [1] ��� ��                                                 
        go func() {                                                  
            // �� ��                                             
        }()                                                          
                                                                     
     [2] ������ ��                                           
        - � ��� �� �� (� 2KB �� ��)                     
        - �� �� �� ��                                        
                                                                     
     [3] M:N ���� ��                                           
        - P(Processor)� �� �� � ��                           
        - ���� ����� P� �� �� ��� �� ��         
        - ��� � � ��� M ����� ��� ��               
   

[����� ��] � ������ ���� ���� ���� �� ��� ����. ���� �� �� �� ��� footprint� ����, M:N ����� ��� ���� �� �� OS ��� �� ����� ����. �� ��� ��� ��� M ���� ���� P(Processor)� ����� ��� ��.


. ���� � �� �� (Deep Dive)

�� ��

������� ���� ����
��� ���� �� ����, ���� ��, ��� �� ��� ��runtime.g ������ �� �
M:N �������� OS ���� ��P(Processor), M(OS ���), G(���) ���� ���(work-stealing) �������� �� ��� ���
�� (Channel)�� ��� ��� �����/��� ��, � �� ��make(chan ��, �� ��)����� �� �� ��
��� ������� �� ���� ��� �� ��� � � ��sysmon �� ������� �� �� ��
�� ����� ��� ���� � ���� ��/����� ��(segtstack)���� ��

M:N ����� �� �� ��

Go ���� M:N ����� P(Processor), M(OS ���), G(���) � �� ��� �� ����.

   
                        M:N ���� ��                             
   
                                                                      
     G(���): ��� � �� ��                                   
     P(����): GOMAXPRODS� �� (�� CPU �� �)                
     M(��): OS ���, ��� � �� ��                          
                                                                      
     [���� ��]                                                  
        1. P� ��� �� �� ��� G� ��                       
        2. G� ���(�� �� �)�� P� ���� M� ��� ��  
        3. ��� �� � G� �� � �� �� P� �� ��         
        4. P� �� ���� �� P� �� ��� �� ���         
        5. sysmon� ����� �� �� � �� �� ��            
   

[����� ��] � ������ M:N ����� �� �� ��� ��� ����. P� ���� ���� �� �����, M� �� OS ���� ����. ���� ��� operation� ���� P� ���� �� ���� ��� � ���, ���� ��� M ���� ����. �� ���(work-stealing)� ��� P� �� P� �� ��� ��� ���� �� ���� ����.


. �� �� � ��� ��

�� 1: ��� vs OS ��� vs ��� �

�� ����� (Go)OS ��� (pthread)��� � (Executor)
�� ���� �� (s ��)�� (100s ��)�� (�� ����� ��)
��� footprint� 2KB ������� 1~8MB���� 1~8MB
���� ����� (��� ��)�� (�� �� ��)��
��� ����� M ��� ����� �� ���� � ��� ���
������ (100� � ��)��� (�� � ��)� ��� ��
� ������ ���� ��, ���������� �����, legacy ������� ��, ������ ��

���� �� � ���� ��� ��� �� ��� massively concurrent� ������� ����, ��� �� ��� ��� ���� �����.

�� �� ��

  • ���� (OS, Operating System): ���� OS ��� �� ��� ��� �� ������, ��� � � ���� ���� �� M ����� ��� ����. �� ����� �� ����(LWP)� ��� ����.
  • ��� �� (Computer Architecture): ���� ���� ���� ��� ���� ������ ��� ���, �� ���� ��� �� ��� ��� ����. �� �� �� ���� ��� ��� ����.

���� OS ���� ��� ���� ����, � ���� ��� � � ��.

   
                  ��� vs OS ��� �� ��                        
   
                                                                       
     ��                  ���                 OS ���          
   
    �� ��              ~0.1ms                 ~1ms               
    �� ��� ��       ~2KB                   ~8MB               
    ���� ��� ��   ~0.05ms                ~1ms               
    ��� � ��         �� M ��� ��      �� ��� ���
    ��� (�� ��)     100�+                 1� ��           
   

[����� ��] � ������ ���� OS ���� �� ��, ��� ���, ���� ��� �� �� ���� ����. ���� �� ��� � ���� �� � �� �� ��� � ���, �� ��� ��� ��� ����� �� ����� ����� ��� ��.


. �� �� � ���� ��

�� ����

  1. ���� -- ��� � ����� �� �� ��: �� �� �� ��� ���� � ����� � ��� �� ����� ������, ��� ��� �� ���� ��� � ��. �� ��� �� �� ��� �����, �� � ��� ���� ��� ��� ��� � ��.

  2. ���� -- ����� ��� ����� ��� ���: ��� �� �������� � ��� �� ����� ����, ��� �� �� � ���� ������ ���� ���� ��� ��� � ��. �� Unix ������ ��� ���� �� ���� ���� �� ����.

  3. ���� -- ����� �� ����� �� �: ���� ����� ��� ���� ������ �� �� ��� ����, ��� �� ��� ��� �� ��� ������ ��� ��� �� ���� � � ��.

�� ��� ��� "���� ���� ��"� ���, ��� ��, ��� ��, �� �� �� ����� ���� ��. �� ���� ���� ���� ���� ��� � ���� � ��� ��� ���.

   
                    ��� �� ���� ���                       
   
                                                                      
      [��� ���?]                                                
                                                                     
                                                                     
         �� �� ���� ����?                                 
              �  [GOMAXPRODS� �� �� �� ��]          
                                                                    
                                   [�� �� � ��]            
                                                                     
              ���  [I/O �� ��� �� �� ��]        
                                                                      
         ��� ��� ���? (����, �� I/O �)                
              �  [���� M:N ��� ��� ��]           
                                                                    
                                   [��� �� �� �� ��]   
                                                                     
              ���  [�� ����� ��� � ��]        
                                                                      
         �� ��� stringent��? (���, ��� �)               
              �  [��� � ���� ��� �� � ��]    
                                                                    
                                   [�� �� �� �� ��]     
                                                                     
              ���  [���� ��� �� ��]             
                                                                      
      �� ��: �� vs I/O vs �� �� � ��� ��              
   

[����� ��] � ���� ��� ��� "���� I/O �� ��� �� ��� �����, �� �� ���� �� � ��"� ���. ��� I/O� �� �� ���� ���� M:N ��� �� ���, �� ��� �� ��� GOMAXPRODS� ��� ���� ���� ���� ���� ��� ��. ��� � �� ��� sempre "��� �� I/O ����, �� ����?"�� ���� ��.

�� �����

  • ���: ��� ��� ���?(��� �� ��� �� �� �) ��� ���� ��� �����?(�� ��, mutex �)
  • �� ���: ��� �� ��� �� � �� ��� ���? ��� ��� ��� ���� �� ��� �� ����?

����

  • �� �� (Channel Leak): ��� �� ��� ���� ��� ��� ��� �� �� �. �� ��� � ��� ��� ����.

  • �� ��� ��: �� ��� �� �� ���� ���� �� ��� ���� ����� �.

  • � �� �� ��: �� ��� �� ��� �� ��� jams �� ��� ��� ���� �� ��� ��� ���� �� ���, �� ��� ���� �� ��� �� �� ��.


. ���� � ��

��/�� ����

����� ���� ��� ��
��OS ��� �� ��� ����� � �� ���� �� �� �� 10~100� ��
����� �� � ���� ��� �� ����� ����� �� 90% �� ��, ��� �� 80% �� ��
����� ��� �� �� ����� ���� ���� �� � �� ��� ��

�� ��

  • ��� ����� ��� ���: �� ��� ����� ��, ��� �� ����� ��� �� �� ����� �� ��� ���.
  • ���� �� ��� ���� ���: �� ������� ��� �� ��� ��� ���� ���� ��� ��� �� � ��.
  • �� �� ��: ���� ��� �� ��� �� ���� ���� ��� ��� ��� � ��.

��� ��� �� ��� ����� ����, �� ���� ���� ���� ����, �� ���� �� � �� ���� ���� ���� ��� ��� � ��.

   
                        ��� �� �� ���                                               
   
                                                                                              
     2009�      2010�� ��     2010�� ��     2020��+                                
                                                                                          
                                                                                          
    [�� ���]   [M:N ���� ��]   [��� ����]   [�� �� ��]             
                                                                                          
                                                                                          
                                          ���� �� ��                              
                                                                                          
                                          zero-cost �� ��                             
          ��� vs �� �� �� �� ��                                             
                                                                                              
     �� ��:                                                                               
     "�� �� ���" -> "��� ����" -> "��� � ���" -> "�� �� � ���"   
   

[����� ��] 2009�� ���� �� ��� �, 2010�� ��� M:N ����� ���� ��� �� �����, 2010�� ���� ��� ����� ���� � ��� �� ������� ���� �����. ��� �� ��� ���� ��� ���� ���, ���� ��� ��� � ����� ���� ����� ���� ��� � ���.


� �� �� � (Knowledge Graph)

�� ���� � ��� ��
�� (Channel)��� �� �� ��� ��� �� ������, CSP ��� ���� ��.
M:N ������� ���� � �� OS ��� �� ���� Go ���� ������.
�� ��� (Lightweight Thread)���� ��� ���� ���� �� ���� � ����.
OS �������� ���� ��� �� ���� �����.
�� �� �� (CSP)��� ��� ��� �� ���, ��� ��� �� ��� ����.

� ���� �� 3� �� ��

  1. ���� ��� ��� �� �� �� ���, ��� �� ���� ��� ��.
  2. ��� � ���� �� ��� ��� ����, ��� ��� �� ��� ���� ��� �� � � ��.
  3. ��� �� ���� � �� �� ��� ���� ��� � szybko ���� ��� � �� ���.

(End of file - total lines will be around 300)