Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 2019 KAKAO BLIND RECRUITMENT
- Spring
- 크루스칼
- 브루트포스
- 스택
- 플로이드와샬
- 프로그래머스
- 플로이드 와샬
- 2020 카카오 인턴십
- 최소 신장 트리
- 다익스트라
- 시뮬레이션
- BFS
- 조합
- 비트마스킹
- GIT
- 구현
- 우선순위큐
- 백트래킹
- 2021 KAKAO BLIND RECRUITMENT
- 투 포인터
- SWEA
- 2020 KAKAO BLIND RECRUITMENT
- 2018 KAKAO BLIND RECRUITMENT
- 백준
- 이분탐색
- 파이썬
- 트라이
- 투포인터
- 로봇 청소기
Archives
- Today
- Total
개발조아
프로세스와 쓰레드 본문
728x90
- 프로세스 : 운영체제로 부터 자원을 할당받아 메모리상에서 실행중인 작업
- 프로세스가 메모리에 올라갈때 운영체제로 부터 독립적인 메모리 영역을 할당 받는다.
- 서로 다른 프로세스들의 메모리에 접근은 불가능
이미지 출처 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
- Code : 코드 자체를 구성하는 영역(프로그램 명령)
- Data : 전역변수, 정적변수, 배열 등 초기화가 된 변수들 저장
- Heap : 동적 할당 시 사용
- Stack : 지역변수, 매개변수, 리턴값, 돌아올 주소 등 임시 저장 공간
- 쓰레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
- 프로세스 내에 각각의 Stack만 할당받고 나머지는 프로세스의 메모리를 공유한다.
이미지 출처 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html - 메모리를 공유하기 때문에 동기화 문제가 발생한다.
- 기본적으로 프로세스 하나당 하나의 쓰레드를 할당 받는다.
- 쓰레드에 의해서 작업이 수행되기 때문에 작업을 수행할 최소 한 녀석은 있어야한다.
- 멀티 프로세스와 멀티 쓰레드
- 멀티 프로세스
- 하나의 프로그램을 여러개의 프로세스가 나눠서 처리하는 것
- 장점
- 프로세스 별로 독립적인 메모리 영역을 할당 받기 때문에 하나가 문제가 생기더라도 다른 것에 영향을 미치지 않음
- 단점
- ContextSwitching과정에서 캐시 메모리 초기화등 무거운 작업에 많은 오버헤드가 발생함
- ContextSwitching
- CPU는 여러 프로세스를 돌아가면서 처리한다. 이때 현재 처리중인 프로세스의 상태(Context)를 저장하고 다음 순서의 프로세스의 상태를 복원한다. 이과정을 ContextSwitching 이라고 한다.
- ContextSwitching
- 통신이 까다롭고 어려움
- ContextSwitching과정에서 캐시 메모리 초기화등 무거운 작업에 많은 오버헤드가 발생함
- 멀티 쓰레드
- 하나의 프로세스가 여러개의 쓰레드를 가지고 동시에 작업을 처리하는 것
- 장점
- 쓰레드는 공유하는 메모리가 있기 때문에 ContextSwitching 과정에서 자원을 아낀다.
- 공유하고 있는 메모리 영역이 있기 때문에 통신이 쉽고, 응답 시간이 빠르다.
- 단점
- 하나의 스레드가 죽게 되면 다른 스레도 모두 죽게 된다.
- 동기화 문제가 필연적으로 발생한다.
- 멀티 프로세스
Comments