삐옹

[개발면접질문#1] 프로세스와 스레드의 차이점 본문

카테고리 없음

[개발면접질문#1] 프로세스와 스레드의 차이점

삐옹 2022. 7. 5. 02:01

1.  프로세스와 스레드의 차이

2. 멀티프로세스와 멀티스레드


프로세스와 스레드의 차이

프로세스

프로세스란 운영 체제 위에서 실행중인 프로그램을 말합니다. 주소 공간, 파일 ,메모리 등을 운영체제로부터 할당받고 이것들을 모두 프로세스라고 합니다. 구체적으로는 프로그램의 코드를 담는 코드 섹션, 전역변수를 담는 데이터 섹션, 동적으로 생긴 데이터들을 담는 힙 섹션, 호출 된 함수, 리턴 값, 지역 변수 등 임시데이터를 담는 스택 섹션 총 4개의 섹션으로 구성됩니다 

 

*PCB(Process Control Block)

프로세스에 대한 중요한 정보를 담고 있는 운영체제의 자료구조이다.

PCB의 존재이유

스레드

스레드는 프로세스의 실행 단위, 작업의 여러 갈래라고 할 수 있습니다.프로세스 내의 주소공간이나 자원을 공유할 수 있습니다. 같은 프로세스에 속한 스레드와 코드, 데이터, 힙(자원들)을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 프로세스의 수행 능력을 향상시키는 것을 멀티스레딩이라고 합니다. 이 경우 각각의 스레드는 독립적인 작업을 수행해야 하기 때문에 각자의 스택을 갖고 있습니다.


멀티스레드와 멀티프로세스

멀티스레드의 장점

- 공유하는 자원이 있기 때문에 메모리 공간과 시스템 자원 소모가 줄어든다

- 멀티스레드에서의 context switch의 경우 캐시메모리를 비울 필요가 없기 때문에 더 빠르다.

멀티스레드의 단점

- 같은 프로세스에  속한 스레드와 코드, 데이터 ,힙을 공유하기 떄문에 사용 중인 변수나 자료구조에 접근하여 다른 값을 읽어오거나 수정할 수 있다.

- 그래서 공유자원 컨트롤을 위한 동기화 작업이 꼭 필요하다. 이떄문에 병목현상이 일어나 성능 저하 가능성이 있다.

멀티스레드 vs 멀티프로세스

- 멀티 스레드가 메모리 공간을 덜 쓰기 떄문에 context switch가 빠르다는 장점이 있지만, 오류로 인해 하나의 스레드가 종료되면 전체 스레득 종료될 수 있습니다. 반면 멀티 프로세스는 하나의  프로세스가 죽덜도 다른 프로세스에 영향을 끼치지 않고 정상 작동합니다. 

- 멀티프로세스는 멀티스레드보다 메모리도 많이 차지하고 CPU시간도 많이 차지한다.

- 결국 동시에 여러작업을 수행한다는 점은 같지만 적용해야하는 대상 시스템에 따라 무엇을 쓸지를 결정해야한다.