SlideShare a Scribd company logo
Actors in Erlang
이 현 동
http://pigbrain.github.io/
Erlang ?
Ericsson Language Erlang
Erlang
functional
language
dynamic type
Erlang
fault-toleranthighly-available distribute
Erlang VM
Erlang
hot swapping of
code
Erlang Syntax
변수
☞ 변수는 값을 오직 한 번만 받을 수 있다
☞ 대부분의 언어에서 =은 할당문을 나타내지만 얼랭에서 =는 패턴 매칭 연산을 의미한다
☞ =은 변수가 언바운드 상태일 경우에만 할당 연산자처럼 동작한다
Erlang Syntax
튜플
☞ 튜플은 여러 값들을 그룹으로 만들고 싶을 때 사용한다
☞ 튜플은 선언할 때 자동으로 생성되고 더 이상 사용되지 않을 때 GC에 의하여 제거된다
Erlang Syntax
패턴 매칭
☞ 대부분의 언어에서 =은 할당문을 나타내지만 얼랭에서 =는 패턴 매칭 연산을 의미한다
☞ =은 변수가 언바운드 상태일 경우에만 할당 연산자처럼 동작한다
Erlang Syntax
Fun (Anonymous Function)
☞ Fun은 익명 함수이다
☞ Fun은 함수의 인수가 될 수 있다 (함수형 언어에서 함수는 1계층)
Actor Model
Queue (Mail Box)
User 1 User 2
Message
Actor Actor
Actor Model
Queue (Mail Box)
User 1 User 2
Message
Actor Actor
Actor Model
☞ 액터들은 서로 분리되어 있다
☞ 메시지들은 비동기로 전달된다
☞ 메시지들은 액터에게 직접 전달되는 것이 아니라 메일박스에 전달된다
☞ 액터는 메시지를 전송하기 위해 블로킹되지 않는다
☞ 액터는 수신된 메시지를 순차적으로 처리한다
Mail Box
Actor Model
Example
Actor Model
Example
☞ 프로세스를 하나 생성한다
☞ Pid에는 프로세스 아이디가 들어간다
☞ test 모듈의 rpc함수를 호출한다 (메시지를 보낸다)
☞ Pid ! Value 는 프로세스(Pid)에게 Value 메시지를 보낸다는 것을 의미한다
Actor Model
Example
☞ Stack Over Flow ? No. Tail Recursion Optimization
Actor Model
Actor Actor Actor
☞ 하나의 액터는 하나의 프로세스를 차지한다
Actor Model
1개 액터 = 1개 프로세스
2개 액터 = 2개 프로세스
.
.
1000개 액터 = 1000개 프로세스
.
.
10000000개 액터 = 10000000개 프로세스
Erlang Process
Process
PCB
Process Control Block
Message Queue
Stack
Heap
Erlang Process
Erlang VM
Process
Scheduler Scheduler
OS + Kernel Threads
CPU 1 CPU 2
Process
Run
Queues
Run
Queues
Steal
Erlang Process
☞ 얼랭의 Process는 OS의 프로세스가 아니다
☞ 얼랭 시스템 내부의 메모리에 할당된 자체적인 프로세스이다
☞ CPU 마다 Run Queue가 있고 Thread를 할당 받아서 동작한다
☞ 스케줄러는 강제로 프로세스의 작업을 중단시킬 수 있는 선점형 방식으로 동작한다
☞ 한쪽 Scheduler가 일을 다 했는데, 다른 Scheduler가 바쁘게 일하고 있다면 작업을 훔쳐온다
☞ 일반적인 프로세스가 다른 Scheduler로 할당되는 것이 Context Switch인데 얼랭 VM은
현재 process struct를 가리키는 pointer만 변경하는 간단한 작업이다
Actor Actor
☞ 하나의 액터는 하나의 프로세스이다 (독립적인 개체)
☞ 한 프로세스가 다른 프로세스에 의존할 경우, 자신이 의존하는 다른 프로세스의 상태를 모니터링
할 필요가 있다
Supervisor
Supervisor
Actor
☞ 한 프로세스가 다른 프로세스에 의존할 경우, 자신이 의존하는 다른 프로세스의 상태를 모니터링
할 필요가 있다
Link / Supervisor
☞ http://pigbrain.github.io/erlang/2015/08/04/ProcessErrorHandle_on_Erlang
☞ http://pigbrain.github.io/erlang/2016/01/08/supervisor_on_Erlang
Before we finish..
Before we finish..
E N D

More Related Content

PDF
함수형 프로그래밍
PDF
Java 8 api :: lambda 이용하기
PPTX
Python
 
PDF
클린 코드 part2
PPTX
[2011 04 30]python-3장
PPTX
Ec++ 3,4 summary
PPTX
C++ 2학기 수행평가
PDF
Effective Python 2st (Decorator & Generator)
함수형 프로그래밍
Java 8 api :: lambda 이용하기
Python
 
클린 코드 part2
[2011 04 30]python-3장
Ec++ 3,4 summary
C++ 2학기 수행평가
Effective Python 2st (Decorator & Generator)

What's hot (8)

PPTX
람다와 스트림
PPTX
Concurrent programming 2
PPTX
자바 8
PDF
5 6 1
PPTX
Windows reversing study_basic_2
 
PDF
Oop design principle
PPTX
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
PDF
How to use the Ruby programing language
람다와 스트림
Concurrent programming 2
자바 8
5 6 1
Windows reversing study_basic_2
 
Oop design principle
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
How to use the Ruby programing language
Ad

Viewers also liked (20)

PPTX
Exception Handler, Controller Advice Of Spring
PDF
10 Billion a Day, 100 Milliseconds Per: Monitoring Real-Time Bidding at AdRoll
PDF
A middleware system between web and database servers
PDF
PPTX
2015_07_25 ТАРАСОВА Є.О. (цеховий терапевт консультативної поліклініки)
PDF
Page 2 mode en provence garella
PDF
El templo victorioso de 3 dias
PPTX
Muslim shariah..
PPTX
Dimensiones
PDF
El Manejo Integrado de Plagas en el Perú III Foro Agrario CultiVida 2015
PDF
Procurement of infrastructure projects
ODP
Developing web apps using Erlang-Web
PDF
Erlang web framework: Chicago boss
PDF
Caching Strategies for an Erlang Based Web Stack
PDF
learn you some erlang - chap 6 to chap7
PPTX
함수형 사고
PDF
Claves para la educación inclusiva.
PDF
learn you some erlang - chap0 to chap2
PPTX
AADHAAR (BIO METRIC IDENTIFICATION NUMBER ) BASED VEHICLE LICENSE PLATE
PPS
Celestine Freinet1
Exception Handler, Controller Advice Of Spring
10 Billion a Day, 100 Milliseconds Per: Monitoring Real-Time Bidding at AdRoll
A middleware system between web and database servers
2015_07_25 ТАРАСОВА Є.О. (цеховий терапевт консультативної поліклініки)
Page 2 mode en provence garella
El templo victorioso de 3 dias
Muslim shariah..
Dimensiones
El Manejo Integrado de Plagas en el Perú III Foro Agrario CultiVida 2015
Procurement of infrastructure projects
Developing web apps using Erlang-Web
Erlang web framework: Chicago boss
Caching Strategies for an Erlang Based Web Stack
learn you some erlang - chap 6 to chap7
함수형 사고
Claves para la educación inclusiva.
learn you some erlang - chap0 to chap2
AADHAAR (BIO METRIC IDENTIFICATION NUMBER ) BASED VEHICLE LICENSE PLATE
Celestine Freinet1
Ad

Similar to Actors in erlang (10)

PPT
Erlang을 이용한 swap 서버
PPTX
System+os study 3
 
PPTX
PDF
Linux 강의자료 ed10
PPTX
Akka actor model
PPTX
동기화, 스케줄링
PDF
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
PPTX
System+os study 7
 
PPTX
tcp ip study
PPTX
운영 체제 Sig
Erlang을 이용한 swap 서버
System+os study 3
 
Linux 강의자료 ed10
Akka actor model
동기화, 스케줄링
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
System+os study 7
 
tcp ip study
운영 체제 Sig

Actors in erlang

  • 1. Actors in Erlang 이 현 동 http://pigbrain.github.io/
  • 6. Erlang Syntax 변수 ☞ 변수는 값을 오직 한 번만 받을 수 있다 ☞ 대부분의 언어에서 =은 할당문을 나타내지만 얼랭에서 =는 패턴 매칭 연산을 의미한다 ☞ =은 변수가 언바운드 상태일 경우에만 할당 연산자처럼 동작한다
  • 7. Erlang Syntax 튜플 ☞ 튜플은 여러 값들을 그룹으로 만들고 싶을 때 사용한다 ☞ 튜플은 선언할 때 자동으로 생성되고 더 이상 사용되지 않을 때 GC에 의하여 제거된다
  • 8. Erlang Syntax 패턴 매칭 ☞ 대부분의 언어에서 =은 할당문을 나타내지만 얼랭에서 =는 패턴 매칭 연산을 의미한다 ☞ =은 변수가 언바운드 상태일 경우에만 할당 연산자처럼 동작한다
  • 9. Erlang Syntax Fun (Anonymous Function) ☞ Fun은 익명 함수이다 ☞ Fun은 함수의 인수가 될 수 있다 (함수형 언어에서 함수는 1계층)
  • 10. Actor Model Queue (Mail Box) User 1 User 2 Message Actor Actor
  • 11. Actor Model Queue (Mail Box) User 1 User 2 Message Actor Actor
  • 12. Actor Model ☞ 액터들은 서로 분리되어 있다 ☞ 메시지들은 비동기로 전달된다 ☞ 메시지들은 액터에게 직접 전달되는 것이 아니라 메일박스에 전달된다 ☞ 액터는 메시지를 전송하기 위해 블로킹되지 않는다 ☞ 액터는 수신된 메시지를 순차적으로 처리한다 Mail Box
  • 14. Actor Model Example ☞ 프로세스를 하나 생성한다 ☞ Pid에는 프로세스 아이디가 들어간다 ☞ test 모듈의 rpc함수를 호출한다 (메시지를 보낸다) ☞ Pid ! Value 는 프로세스(Pid)에게 Value 메시지를 보낸다는 것을 의미한다
  • 15. Actor Model Example ☞ Stack Over Flow ? No. Tail Recursion Optimization
  • 16. Actor Model Actor Actor Actor ☞ 하나의 액터는 하나의 프로세스를 차지한다
  • 17. Actor Model 1개 액터 = 1개 프로세스 2개 액터 = 2개 프로세스 . . 1000개 액터 = 1000개 프로세스 . . 10000000개 액터 = 10000000개 프로세스
  • 18. Erlang Process Process PCB Process Control Block Message Queue Stack Heap
  • 19. Erlang Process Erlang VM Process Scheduler Scheduler OS + Kernel Threads CPU 1 CPU 2 Process Run Queues Run Queues Steal
  • 20. Erlang Process ☞ 얼랭의 Process는 OS의 프로세스가 아니다 ☞ 얼랭 시스템 내부의 메모리에 할당된 자체적인 프로세스이다 ☞ CPU 마다 Run Queue가 있고 Thread를 할당 받아서 동작한다 ☞ 스케줄러는 강제로 프로세스의 작업을 중단시킬 수 있는 선점형 방식으로 동작한다 ☞ 한쪽 Scheduler가 일을 다 했는데, 다른 Scheduler가 바쁘게 일하고 있다면 작업을 훔쳐온다 ☞ 일반적인 프로세스가 다른 Scheduler로 할당되는 것이 Context Switch인데 얼랭 VM은 현재 process struct를 가리키는 pointer만 변경하는 간단한 작업이다
  • 21. Actor Actor ☞ 하나의 액터는 하나의 프로세스이다 (독립적인 개체) ☞ 한 프로세스가 다른 프로세스에 의존할 경우, 자신이 의존하는 다른 프로세스의 상태를 모니터링 할 필요가 있다 Supervisor
  • 22. Supervisor Actor ☞ 한 프로세스가 다른 프로세스에 의존할 경우, 자신이 의존하는 다른 프로세스의 상태를 모니터링 할 필요가 있다
  • 23. Link / Supervisor ☞ http://pigbrain.github.io/erlang/2015/08/04/ProcessErrorHandle_on_Erlang ☞ http://pigbrain.github.io/erlang/2016/01/08/supervisor_on_Erlang
  • 26. E N D