프로세스
- 운영체제로부터 자원을 할당받는 작업의 단위
- 실행중인 프로그램
- 프로세스 내부에는 최소 하나의 스레드를 가지고 있다.
- 프로세스끼리는 메모리 공유가 불가능하다. => 프로세스끼리는 메모리 공유가 안되기 때문에 HTTP, TCP 를 사용하면 된다.
스레드
- 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
- 프로세스 내에 여러개 생길 수 있다.
- 스레드끼리는 메모리 공유가 가능하다.
프로세스 | 스레드 |
각각 독립된 메모리 영역을 할당해주기 때문에 프로세스간 자원을 공유하지 않는다. | 스레드 간 메모리를 공유한다. |
멀티 프로세스
하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 것
멀티 프로세스를 사용하는 이유?
- 서버 한대의 설능에는 한계가 있다. scale-out이 필수이다.
- 서버 아키텍처를 구성할 때 프로세스 하나가 작은 기능을 가지는게 유리하다. "One Process One Thread"
멀티 스레드
프로그램을 여러개의 스레드로 구성하고 각 스레드가 작업을 처리하는 것
멀티 프로세스와 멀티 스레드는 동시에 여러 작업을 수행하는 것이다.
멀티 스레드는 작은 메모리 공간을 차지하며, context switching이 빠른 장점을 가진다. 성능상 스레드가 유리하다.
하지만 같은 메모리 공간을 여러 스레드가 사용하기 때문에 동기화 문제가 있으며, 하나의 스레드 장애 시 전체 스레드에 영향을 줄 수 있다.
멀티 프로세스는 메모리 공간을 많이 차지하며 cpu도 많이 차지한다는 장점이 있다.
스레드 세이프
여러 스레드를 동시에 사용해도 안전한 것
Context Switching
CPU에서 여러 프로세스를 돌아가면서 작업 처리하는 과정
햄버거 만들기에 비유한 멀티 프로세스 예시
2대의 로봇(2코어)이 일하는 푸드 트럭에 햄버거, 새우버거, 치즈버거, 치킨버거 (각각의 프로세스) 주문이 한번에 들어 왔을 때
여러 프로세스를 동시에 처리하는 방법이 있다.
- 방법1. 병렬 처리 : 동시에 여러개를 실행한다.
- 1번로봇은 햄버거, 2번로봇은 새우버거를 만들고 치즈버거와 치킨버서는 대기하다가 완료하면 치즈버거 치킨버거도 만든다.
- 방법2. 병행 처리 : 하나의 코어가 여러 프로세스를 돌아가면서 조금씩 처리한다.
- 4개의 접시에 1번로봇이 빵을 모두 깔고, 2번로봇은 야채를 올리고, 다시 1번로봇은 재료를 올리고 ... 마치 동시에 실행하는 것 처럼 보이게한다.
- 햄버거, 새우버거, 치즈버거로 진행 순서를 바꾸는 것은 컨텍스트 스위칭이라고 한다. 매우 빠르게 일어나면 동시에 일어나는 것 처럼 느끼게한다.
이렇게 여러개의 프로세스를 함께 진행하는것은 멀티 프로세싱이라고 한다.
728x90
반응형
'개발공부' 카테고리의 다른 글
성능 테스트 관련 용어 정리 (0) | 2023.05.29 |
---|---|
테스트 주도 개발 TDD (Test Driven Development) (0) | 2023.03.04 |
프로그래머스 과제테스트 연습 사이트 (0) | 2023.02.05 |
[공유] 나의 알고리즘 공부 기록 github with 파이썬 (0) | 2023.01.30 |
[운영체제] CISC, RISC 란? 차이점 (0) | 2023.01.30 |
댓글