�� ���� (3� ��)
- ��: ���(Goroutine)� Go ��� ��� �� ����, M:N ���� ��� �� �� ��� ��� �� ���� OS ��� �� ����� �����.
- ��: �� �� �� � ���� ��� ���� �� ��� ������ �����, ��� �� ��� ��� ���� ���� ��� ����.
- ��: ���� ����� ���� ����� ��� ���� ����, ��� CSP(Communicating Sequential Processes) ��� ���� � ��� ������.
. �� � ��� (Context & Necessity)
-
��: ���� Go ���� ���� �� �� ���, �� ��
go���� ��� �� ��� � ��. � KB� �� ���� ���� ��� �� ���� �� � ����, M:N ����� ��� ���� � �� OS ��� �� ����� ����. -
���: ���� OS ���� �� � ���� ��� ��� �� �� � ��� ����� �����. ���� ��� ��� dramatically ���, ��� �� �� ��� ���� ��� � �� ��, �� ��� ���� ��� ��������� �����.
-
� ��: ���� ������ ��� ���� usher� ��. � �� ���(OS ���)� �� usher(���)� ����, ��� �� usher� ��� ����� ����� �� ��� ���� ���.
-
�� �� � �� ��:
- Go ��� ��� ��: 2009� Go �� �� ��� �� ���� �� ���� �� ���� ��� �����.
- M:N ����� ��: ���� 1:1 ������, �� 1.1�� M:N �� ���(work-stealing) ����� ���� ��� �� �����.
- ��� ���: ��� �� ���� ��, ��� ���� �� �� ����� ����� ���� ��.
��� ��� ����� �� ��� ����, ��� ������ � � ��.
��� �� � ���� ��
[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 ���� �� ��, ��� ���, ���� ��� �� �� ���� ����. ���� �� ��� � ���� �� � �� �� ��� � ���, �� ��� ��� ��� ����� �� ����� ����� ��� ��.
. �� �� � ���� ��
�� ����
-
���� -- ��� � ����� �� �� ��: �� �� �� ��� ���� � ����� � ��� �� ����� ������, ��� ��� �� ���� ��� � ��. �� ��� �� �� ��� �����, �� � ��� ���� ��� ��� ��� � ��.
-
���� -- ����� ��� ����� ��� ���: ��� �� �������� � ��� �� ����� ����, ��� �� �� � ���� ������ ���� ���� ��� ��� � ��. �� Unix ������ ��� ���� �� ���� ���� �� ����.
-
���� -- ����� �� ����� �� �: ���� ����� ��� ���� ������ �� �� ��� ����, ��� �� ��� ��� �� ��� ������ ��� ��� �� ���� � � ��.
�� ��� ��� "���� ���� ��"� ���, ��� ��, ��� ��, �� �� �� ����� ���� ��. �� ���� ���� ���� ���� ��� � ���� � ��� ��� ���.
��� �� ���� ���
[��� ���?]
�� �� ���� ����?
� [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� �� ��
- ���� ��� ��� �� �� �� ���, ��� �� ���� ��� ��.
- ��� � ���� �� ��� ��� ����, ��� ��� �� ��� ���� ��� �� � � ��.
- ��� �� ���� � �� �� ��� ���� ��� � szybko ���� ��� � �� ���.
(End of file - total lines will be around 300)