Developer Jay

[OperatingSystem] 프로세스와 스레드의 차이

06 Nov 2022

Intro

프로세스와 스레드의 차이에 대해 알아보자


1. 프로세스

프로세스

  • 시스템 관점에서 프로세스는 ‘실행 중인 프로그램‘이다.
    프로그램이 실행중 이라는 의미는 디스크에 있던 프로그램을 메모리에 적재하여 운영체제의 제어를 받는 상태를 의미한다.
  • 사용자 관점에서 프로세스는 ‘운영체제로부터 자원을 할당받은 작업의 단위‘이다.
  • 프로세스를 실행하면 운영체제는 해당 프로세스에서 관리할 필요가 있는 자원 정보를 포함하는 프로세스 제어 블록을(PCB) 만들어 주소 공간을 할당한다.
  • 프로세스를 종료하면 운영체제는 프로세스에서 사용하던 모든 자원을 시스템에 돌려주고, 해당 프로세스는 시스템 리스트나 테이블에서 사라져 프로세스 제어 블록을(PCB) 회수 한다.
  • 프로세스 제어 블록(PCB)에는 프로세스 ID, 프로세스 상태, 스케줄링 정보, 작업 정보, 메모리 정보, 스레드 제어 블록(TCB) 리스트 등이 저장된다.


2. 스레드

image

  • 스레드는 ‘프로세스 실행 흐름의 단위‘이며, 프로세스 하나는 스레드 한 개 이상으로 나눌 수 있다.
  • 스레드들은 프로세스의 직접 실행 정보를 제외한 프로세스의 관리 정보를 공유한다. 위 그림과 같이 실행의 흐름을 기록해두는 Register와 Stack 을 독립적으로 가지면서 Code, Data, Heap 영역을 다른 스레드와 공유한다.
  • 프로세스에 포함된 여러 스레드들은 병렬로 수행된다. 다중 스레드를 이용하면 다음과 같은 이점을 얻을 수 있다. -> [수행 시간, 사용자 응답성, 프로그램 구조]
  • 다중 스레드는 프로그램 하나를 여러 실행 단위로 쪼개어 실행한다는 측면에서 다중 처리와 비슷하지만, 동일 프로세스의 스레드는 자원을 공유하므로 자원 생성과 관리의 중복성을 최소화하여 실행 능력을 향상시킬 수 있다.
  • 프로세스가 프로세스 제어 블록에(PCB) 정보를 저장하듯이 스레드도 스레드 제어 블록에(TCB) 정보를 저장한다. 그런데 프로세스는 스레드를 한 개 이상 가질 수 있으므로 결국 PCB는 TCB리스트를 가지고 있다.
  • 스레드 제어 블록(TCB)에는 프로세스 제어 블록과(PCB) 비슷하게 스레드 ID, 스레드 상태, 스케줄링 정보, 실행 정보, 프로세스 제어 블록(PCB) 포인터 등이 저장된다.