Process vs Thread
7/27 발표
목차
- 프로세스란?
- 프로세스 구조
- 쓰레드란?
- 쓰레드 구조
- 쓰레드의 장단점
- Process vs Thread
프로세스란?
- 실행중인 프로그램은 프로세스라고 한다.
- 프로세스: 메모리에 올려져서 실행중인 프로그램
- 코드 이미지(바이너리 코드 or 바이너리 파일): 실행 파일
- 잠시 생각해볼게 있습니다! (응용프로그램 = 프로세스)?
- 응용프로그램 ≠ 프로세스
- 응용 프로그램은 여러개의 프로세스로 이루어질 수 있음
- 하나의 응용 프로그램은 여러개의 프로세스가 상호작용하면서 실행될 수도 있습니다.
- 여러 프로그램을 만들어서, 서로 통신하면서 프로그램을 작성할 수도 있음(IPC 기법)
프로세스 구조
- 프로세스는 일반적으로 어떻게 구성되어 있을까?
- text(CODE): 코드
- data: 변수/초기화된 데이터
- stack: 임시 데이터(함수 호출, 로컬 변수등)
- heap: 코드에서 동적으로 만들어지는 데이터
쓰레드(Thread)란?
- Light weight Process라고도 함
- 프로세스
- 프로세스 간에는 각 프로세스의 데이터 접근이 불가
- 쓰레드
- 하나의 프로세스에 여러개의 쓰레드 생성 가능
- 쓰레드들은 동시 실행 가능
- 프로세스 안에 있으므로, 프로세스의 모든 데이터에 접근 가능
쓰레드 구조
그래서 어떻게 동작하는 걸까?
멀티쓰레드(Multi Thread)
소프트웨어 병행 작업처리를 위해 Multi Thread를 사용함
쓰레드(Thread)의 장점
- 사용자에 대한 응답성 향상
- 두번째는 자원 공유 효율
- 작업이 분리되어 코드가 간결 사실은 작성하기 나름
쓰레드(Thread)의 단점
- 쓰레드가 프로세스 안에서 움직이기 때문에 하나의 쓰레드만 문제가 생겨도 전체 프로세스가 영향을 받습니다.
- 쓰레드가 과도하게 많이 생성되면 복잡도가 올라가기때문에 성능저하를 일으킨다.
Process Vs Thread
- 프로세스는 독립적, 쓰레드는 프로세스의 서브셋(subset)
- 프로세스는 각각 독립적인 자원을 가짐, 쓰레드는 프로세스 자원 공유
- 프로세스는 자신만의 주소영역을 가지고 쓰레드는 주소영역공유
- 프로세스는 IPC라는 기법으로 통신해야함 쓰레드는 필요없음