반응형
1. 프로세스
: 프로세스는 CPU로부터 시스템 자원을 각각 할당받아 독립적으로 실행중인 프로그램
CPU로부터 각각 독립된 Code, Data, Stack, Heap 영역을 할당받는다. 각각의 프로세스는 독립적인 메모리 영역을 가지고 있기 때문에 다른 프로세스의 자원에 접근하기 위해서는 IPC (Inter Process Communication)를 사용해야 한다. (메일슬롯, 파이프, 파일, 소켓 등을 이용하여 통신)
2. 쓰레드
: 쓰레드는 프로세스 내부의 작업 단위
프로세스 내부에 있는 일부 자원을 스레드끼리는 공유 한다.
대표적인 힙 영역을 서로 공유하면서 사용함으로써 sibling 스레드가 변경한 자원을 특정 통신없이 바로 확인할 수 있다. 그러나 스택 영역은 서로 공유하지 않는다. 스택 영역을 공유하지 않는다는 것은 각각의 스레드에서 메소드를 독립적으로 실행할 수 있다는 것이다. 최소한의 자원을 공유함으로써 각각의 작업의 동시성을 제공을 하는 것이 스레드이다.
=>결론
프로세스 : Code, Data, Stack, Heap을 각각 할당 받지만 메모리의 공유는 못한다.
쓰레드 : Stack영역만 각각 할당 받고 나머지 메모리는 공유한다.
+ 쓰레드는 Stack만 개별 할당받기 때문에 Context Switching 비용으로는 Process가 당연히 더 많이 든다.
그러므로, MultiProcess보다는 Multithread 방식이 성능적으로는 비용이 덜들어간다.
간단하게만 정리하였지만 차후 추가적으로 공부해야겠다.
반응형
'Knowledge' 카테고리의 다른 글
[Knowledge] Tomcat 배포시 스케쥴러 중복 실행 해결방안 (0) | 2021.01.06 |
---|---|
[Node.js] Node.js란? -1 (0) | 2021.01.06 |
[Knowledge] AOP(Aspect Oriented Programming) 관점지향프로그램 란? (0) | 2020.12.30 |
[Knowledge] iBatis & myBatis 사용 개념-2 (0) | 2020.12.30 |
[Knowledge] iBatis & myBatis 사용 개념-1 (0) | 2020.12.30 |