프로그래밍/운영체제

운영체제 · 프로세스, 스레드

반응형

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


 프로세스 : 운영체제로부터 자원을 할당받는 작업의 단위

 스레드 : 프로세스가 할당받은 자원을 이용하는 실행의 단위






프로세스 (Process)


[그림 1] 독립적인 프로세스

정의 : 실행 중인 프로그램에 대한 인스턴스

✓ 프로세스는 운영체제로부터 각각 독립된 자원(code, data, stack, heap, PC register 등)을 할당받는다.

✓ 각 프로세스는 최소 1개 이상의 쓰레드를 가지고 있다.

✓ 다른 프로세스의 자원에 접근하려면, 프로세스 간 통신(IPC)을 이용해야 한다.


✓ 프로세스와 프로그램의 차이

  • 프로그램 : Passive entity, 명령어 리스트를 지닌 실행 파일 클래스
  • 프로세스 : Active entity, 메모리에 적재되어 프로그램 카운터와 자원을 가진 인스턴스


[그림 2] 메모리 상의 프로세스





스레드 (Thread)


[그림 3] 프로세스 내의 스레드

정의 : 한 프로세스 내에서 동작되는 여러 실행의 흐름

✓ 프로세스의 특성을 가지고 있기 때문에, 경량 프로세스(LWP, Lightweight Process)라고도 한다.

✓ 프로세스 내의 코드, 데이터, 힙 등의 자원을 공유하면서 병렬성을 높일 수 있다.

✓ 스택과 레지스터는 각 스레드가 별도로 할당받으며, 이는 독립적인 실행 흐름을 가능하게 한다.

✓ 기본적으로 하나의 프로세스가 생성되면 하나의 스레드가 같이 생성되며, 이를 메인 스레드라고 부른다.

✓ 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이를 멀티 스레드라고 부른다.


스레드의 장단점

  • 장점 : 자원 공유를 통해 시스템 자원 소모를 줄일 수 있음, Context Switch에 대한 오버헤드가 감소.
  • 단점 : 동기화 문제가 발생할 수 있음, 프로그램 디버깅이 어려울 수 있음.



반응형