프로세스와 스레드의 차이점, iOS에서의 프로세스와 스레드 관리 개념

 

프로세스(Process):

  • 프로세스는 운영 체제에서 실행되는 프로그램의 인스턴스입니다. 각 프로세스는 독립적인 메모리 공간을 가지며, 다른 프로세스와 격리되어 있습니다.
  • 각 프로세스는 최소한 하나의 스레드를 가지며, 프로세스는 스레드의 집합으로 이루어집니다.
  • 프로세스 간 통신(IPC, Inter-Process Communication)을 통해 데이터를 공유할 수 있지만, 일반적으로 비용이 많이 드는 작업입니다.

프로세스 관리 :

  • iOS는 각 앱을 별도의 프로세스로 실행하여 각 앱이 격리되도록 합니다. 이를 통해 앱 간의 간섭을 최소화하고 보안을 강화할 수 있습니다.
  • iOS는 멀티프로세스 환경에서 안정적으로 동작할 수 있도록 프로세스 생성, 종료 및 관리를 담당하는 운영 체제의 역할이 중요합니다.

스레드(Thread) :

  • 스레드는 프로세스 내에서 실행되는 실행 흐름의 단위입니다. 각 프로세스는 하나 이상의 스레드를 가질 수 있습니다.
  • 같은 프로세스 내의 스레드들은 프로세스의 메모리 공간을 공유하므로, 데이터를 공유하기가 더 쉽고 빠릅니다.
  • 스레드는 프로세스 내에서 생성되고 관리되며, 스레드 간 통신은 메모리 공유를 통해 이루어집니다.

스레드 관리 :

  • 각 iOS 앱은 주로 메인 스레드에서 실행됩니다. 이 메인 스레드는 사용자 인터페이스 이벤트 처리 및 UI 업데이트를 담당합니다. iOS는 Grand Central Dispatch (GCD) 와 같은 기술을 사용하여 다중 스레드를 효율적으로 관리하고 다중 코어 프로세서에서 병렬 작업을 수행할 수 있습니다.
  • GCD를 사용하면 앱에서 비동기적으로 작업을 수행하고, 백그라운드 스레드에서 작업을 수행하여 UI의 응답성을 유지할 수 있습니다.
  • iOS 또한 Operation Queue를 사용하여 작업을 관리하고 백그라운드에서 비동기적으로 실행할 수 있도록 지원합니다.