용어 정리
- 실행 단위
: 프로세스 + 스레드 => 한 cpu에서 실행하는 하나의 단위
- 프로세스
: 하나의 스레드가 있는 단일 프로세스
- 동시성
: 짧은 전환으로 여러 일을 동시에 처리하는 것처럼 보임(동시에 여러 일을 처리X)
프로그램과 프로세스
- 프로그램: 피자 레시피
- 프로세스: 피자
- 메모리
- Code, Data(변수), Heap(객체), Stack(참조값, 지역변수)
- 위와 같은 재료들이 메모리로 올라감
- 실제 사용 때에는?
- 스레드: 경량화된 프로세스
- 모조리 다빼고 다시 넣을 필요 없이 스레드로 간편
- 공용으로 사용할 건 빼고 필요한 것들만 넣고 빼기
멀티 프로세스 vs 멀티 스레드
- 멀티 프로세스
: 부모가 자식 프로세스를 복제해서 처리
- 동기화 작업을 신경쓰지 않아도 됨
- 멀티 스레드보다는 비효율적
- 멀티 스레드
: 프로세스 내의 스레드 하나가 하나의 작업을 담당
=> 한 프로그램 내의 다양한 작업을 처리
- 멀티 프로세스보다는 효율적
- 동기화 작업을 신경써야함
- 문제점: 프로세스에서 문제가 발생하면 다수의 스레드에 영향
- 멀티 코어
:cpu 내의 물리적으로 코어를 나누어서 작업을 처리
- (하나의 코어 속에서)동시성: 하나의 cpu에서 작업단위를 쪼개서 동시에 일어나는 것처럼 보이는 것
- 병렬처리: 여러 코어를 사용해서 하나 이상의 프로세스를 한번에 처리하게 만드는 것