Skip to content

Latest commit

 

History

History
68 lines (44 loc) · 4.54 KB

File metadata and controls

68 lines (44 loc) · 4.54 KB

Process vs Thread

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

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

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

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

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

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

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

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

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

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

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