TY blog

프로세스와 쓰레드 본문

기타

프로세스와 쓰레드

주짓수하는 개발자 2024. 2. 17. 22:59

쓰레드와 프로세스는 컴퓨터 프로그램 실행의 기본단위이며 

결론부터 얘기하면 프로세스는 운영체제로부터 자원을 할당받은 작업의 단위이고

쓰레드는 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위이다.

 

 1. 프로세스(PROCESS) 특징

 

  • 각 프로세스는 운영체제로부터 독립적인 메모리 공간을 할당받아 다른 프로세스와 공유하지 않음(프로세스 간 통신은 ipc 메커니즘으로 서로 통신)
  • 새로운 프로세스를 생성하거나 컨텍스트 스위칭 시 오버헤드가 크며 생성 시 시스템 자원을 더 많이 소모

* 컨텍스트 스위칭 : CPU에 실행할 프로세스를 교체하는 기술(이미 실행 중인 프로세스를 중단하고 다음 프로세스를 실행)이며 동작중인 프로세스가 바뀔 때 프로세스는 현재 자신의 상태를 일단 보존한 후 새롭게 동작 개시하는 프로세스는 이전에 보존해 두었던 자신의 컨텍스트 정보를 다시 복구한다.

 

2. 쓰레드(THREAD) 특징

 

  • 프로세스 내에서 실행되는 경량 실행 단위로(실행흐름), 프로세스의 메모리 공간을 공유(스택을 제외한 코드, 데이터, 힙 영역
  • 쓰레드는 컨텍스트 스위칭이 같은 프로세스 내에서 실행해 빠르고 자원소모와 오버헤드가 적음 
  • IPC를 사용하여 통신하는 프로세스와 다르게 A, B의 두 쓰레드가 자유롭게 접근할 수 있다.

* 프로세스의 메모리 공간을 공유하기 때문에 자원을 동시에 접근할 때 동기화 문제가 발생할 수 있음 

Comments