• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

안녕하세요!! 쓰레드와 프로세스의 차이

21.10.23 15:01 작성 조회수 297

2

안녕하세요. 좋은 강의 감사합니다!!

제가 프로세스와 쓰레드, 멀티프로세스, 멀티쓰레드를 정확히 구분짓지 못하는거 같아 이렇게 질문으로 남깁니다.

1. 제가 이해한 대로는 프로세스가 하나의 프로그램이고, 그 프로그램을 여러개 실행하면 멀티프로세스, 그리고 하나의 프로그램 안에 실행 역할을 해주는 쓰레드가 여러개가 있다면 멀티쓰레드라고 이해했습니다. 혹시 이게 맞을까요??

2. 임계영역이라는게 서로 다른 쓰레드 또는 프로세스가 자원 공유하는걸 접근하는건데 분명 프로세스는 아예 다른 프로그램으로 각자 다른 메모리를 가지고 있는데 공유되는 자원이 있다는게 잘 이해가 안갑니다.. 

그리고 컨테스 스위층은 서로 다른 프로세스에서 다른 프로세스를 실행할때 일어나는건가요?? 아니면 쓰레드에서 다른 쓰레드로 넘어갈때 일어나는건가요??.. 

분명 컨테스트 스위층가 프로세스에서 프로세스로 이동하는것보다 공유하는 메모리가 있기 때문에 쓰레드에서 쓰레드로 이동하는게 더 빠르다고 들었습니다. 이 말도 머리에서 잘 그려지지 않네요... 

이렇게 독립적으로만 개념을 이해하고 있고 이를  큰 그림으로 이어서 이해를 할려고하면 앞뒤가 안맞아서 이렇게 질문남깁니다.!!

답변 1

답변을 작성해보세요.

3

1. 제가 이해한 대로는 프로세스가 하나의 프로그램이고, 그 프로그램을 여러개 실행하면 멀티프로세스, 그리고 하나의 프로그램 안에 실행 역할을 해주는 쓰레드가 여러개가 있다면 멀티쓰레드라고 이해했습니다. 혹시 이게 맞을까요??

네 맞습니다. 프로세스=프로그램이고, 그 프로그램의 '영혼' 같은 존재가 쓰레드입니다.

2. 임계영역이라는게 서로 다른 쓰레드 또는 프로세스가 자원 공유하는걸 접근하는건데 분명 프로세스는 아예 다른 프로그램으로 각자 다른 메모리를 가지고 있는데 공유되는 자원이 있다는게 잘 이해가 안갑니다.. 

각자 다른 프로세스는 아예 각자 다른 메모리를 갖고 있지만,
1개의 프로세스에서 멀티쓰레드 환경으로 돌아가면
스택은 쓰레드끼리 독립적이지만 데이터, 힙 영역은 공용으로 사용합니다.

그리고 컨테스 스위층은 서로 다른 프로세스에서 다른 프로세스를 실행할때 일어나는건가요?? 아니면 쓰레드에서 다른 쓰레드로 넘어갈때 일어나는건가요??.. 

기본적으로 쓰레드 -> 다른 쓰레드로 넘어갈 때 일어납니다. (하이퍼쓰레드 등 아니라 가정)
그러나 프로세스 -> 다른 프로세스로 넘어가도 결국 쓰레드가 바뀌는거니,
Context Switching이 일어나는건 동일합니다.