운영체제(OS)/keyword

(Project1-Threads) 프로세스와 스레드(Process, Thread)

스탠딩 2023. 12. 15. 14:27

출처 : https://www.rtos.be/2013/08/programs-processes-and-threads-part-2/

 

프로세스 (Process)

프로세스는 실행 중인 프로그램으로, 운영체제로부터 시스템 자원을 할당받아 독립적으로 실행된다. 각 프로세스는 각자의 주소 공간, 파일, 메모리, CPU 시간 등을 가지며 서로 영향을 미치지 않는다.

프로세스의 특징:

  • 독립성: 각 프로세스는 독립된 메모리 공간에서 실행되며, 하나의 프로세스가 다른 프로세스에게 영향을 주지 않는다.
  • 안전성: 프로세스는 운영체제에 의해 보호되어야 하며, 다른 프로세스의 데이터에 직접 접근할 수 없다.
  • 자원 할당: 각 프로세스는 CPU, 메모리 등의 자원을 운영체제로부터 할당받는다.

스레드 (Thread)

스레드는 프로세스 내에서 실행되는 경량 프로세스로, 동일한 프로세스 내의 스레드들은 프로세스의 자원을 공유한다.

스레드는 프로세스의 코드, 데이터, 파일 등을 공유하면서 실행된다.

스레드의 특징:

  • 경량성: 스레드는 프로세스 내의 작은 실행 단위로, 프로세스에 비해 생성 및 종료하는데 소요되는 자원이 적다.
  • 공유 자원: 동일한 프로세스 내의 스레드들은 프로세스의 자원을 공유하므로, 통신과 자원 공유가 쉽다.
  • 빠른 통신: 스레드 간의 통신이 프로세스 간의 통신보다 훨씬 빠르게 이루어진다.

프로세스와 스레드의 차이:

  1. 독립성:
    • 프로세스는 독립된 실행 환경을 가지며, 다른 프로세스에게 영향을 미치지 않는다.
    • 스레드는 동일한 프로세스 내에서 실행되므로, 스레드 간에는 프로세스의 자원을 공유한다.
  2. 자원 소모:
    • 프로세스는 독립된 메모리 공간을 갖기 때문에 메모리 소모가 크다.
    • 스레드는 프로세스의 자원을 공유하므로 메모리 소모가 상대적으로 적다.
  3. 통신 및 동기화:
    • 프로세스 간의 통신은 IPC (Inter-Process Communication)를 통해 이루어져야 한다.
    • 스레드 간의 통신은 공유 메모리 등을 통해 직접 통신이 가능하며, 동기화가 비교적 간단하다.