Skip to content

Latest commit

 

History

History

Process vs Thread

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Process vs Thread

1. 프로세스와 스레드의 주요 차이점은 무엇인가요?
  • 프로세스는 각각 독립된 주소 공간을 가지고 있으며, 자원을 공유하기 위해서는 명시적인 IPC(Inter-Process Communication) 메커니즘을 사용해야 합니다.

  • 스레드는 같은 프로세스 내에서 실행되므로, 프로세스 내의 자원을 공유할 수 있습니다. 예를 들어, 스레드는 프로세스의 메모리 공간이나 파일 핸들 등을 직접 접근할 수 있습니다.

  • 프로세스 간의 전환은 비용이 많이 들지만, 스레드 간의 전환은 상대적으로 적은 비용이 듭니다. 스레드는 프로세스 내의 자원을 공유하기 때문에, 프로세스 간의 전환보다 빠른 실행이 가능합니다.

  • 각각의 프로세스는 독립된 실행 흐름을 가지고 있으며, 하나의 프로세스가 종료되더라도 다른 프로세스에는 영향을 미치지 않습니다. 반면에 스레드는 프로세스 내에서 실행되므로, 하나의 스레드가 예외를 발생시키면 전체 프로세스가 종료될 수 있습니다.

2. 멀티프로세스 대신 멀티 스레드를 사용하는 이유는 무엇인가요?
  • 멀티스레드는 같은 프로세스 내에서 실행되기 때문에, 스레드 간에 데이터를 공유하기가 더 쉽습니다. 이는 프로세스 간 통신(IPC)보다 더 효율적이고 간단한 방법입니다. 데이터를 복사하거나 전달하는 데 드는 오버헤드가 줄어들어 전체적인 성능 향상을 이끌어낼 수 있습니다.
3. 컨텍스트 스위칭이란 무엇인가요? 어떤 상황에서 발생하며 어떤 비용이 발생하나요?

운영체제가 여러 프로세스나 스레드를 동시에 실행하기 위해 작업을 전환하는 과정을 말합니다. 프로세스나 스레드간 스위칭이 발생할 수 있습니다. 컨텍스트 스위칭은 CPU 레지스터의 값, 프로세스 또는 스레드의 상태, 가상 메모리 매핑 등 다양한 정보를 저장하고 복원해야 합니다. 이에 따라 스위칭하는 데 시간이 소요되며, 이는 추가적인 오버헤드로 작용하여 실행 시간이 지연될 수 있습니다.

4. 쓰레드마다 스택을 독립적으로 할당하는 이유는 무엇인가요?
  • 메모리 관리: 스택은 지역 변수와 메서드 호출에 필요한 데이터를 저장하는 데 사용됩니다. 각 스레드가 독립적인 스택을 가지면, 스택의 크기를 스레드별로 조정할 수 있습니다. 이를 통해 메모리를 효율적으로 관리하고, 각 스레드에 필요한 최적의 스택 크기를 할당할 수 있습니다.

  • 독립적인 호출 스택: 각 스레드는 자신만의 호출 스택을 가지고 있습니다. 호출 스택은 메서드 호출과 반환, 지역 변수 등을 관리하는 데 사용됩니다. 독립적인 스택을 할당함으로써, 각 스레드는 자신만의 호출 스택을 가지게 되어 스레드 간에 메서드 호출과 지역 변수 관리가 서로 충돌하지 않습니다.

  • 스레드 안전성 보장: 독립적인 스택을 할당함으로써 스레드 안전성을 보장할 수 있습니다. 여러 스레드가 동시에 같은 스택을 사용한다면, 서로의 데이터를 덮어쓰거나 접근 충돌이 발생할 수 있습니다. 각 스레드마다 독립적인 스택을 사용함으로써 스레드 간의 데이터 충돌을 방지할 수 있습니다.

5. 프로세스와 스레드의 정의를 알려주세요.
  • 프로세스 : 운영체제로부터 자원을 할당받아 실행 중인 프로그램의 인스턴스입니다.
  • 스레드 : 스레드는 프로세스 내에서 실행되는 작업의 단위입니다.
6. 프로세스와 스레드의 컨텍스트 스위칭 차이를 알려주세요.

프로세스 간 컨텍스트 스위칭은 프로세스의 주소 공간, 파일 핸들, 시스템 자원 등의 정보를 전환해야 하므로 큰 오버헤드가 발생합니다. 반면에 스레드 간 컨텍스트 스위칭은 같은 프로세스 내에서 실행되므로, 스택과 레지스터 값 등의 상대적으로 작은 범위의 정보만 전환하면 되기 때문에 오버헤드가 작습니다.