프로그램, 프로세스, 스레드란?

리리티·2022년 11월 15일
0

프로그램(Program)

  • 어떤 작업을 하기 위해 해야할 일들을 순서대로 나열한 것
  • 컴퓨터에서 어떤 작업을 위해 실행할 수 있는 '정적인 상태'의 파일

EX) exe파일

프로세스(Process)

  • 프로그램이 실행되어 돌아가고 있는 상태(동적인 상태)
  • 운영체제가 메모리 등의 필요한 자원을 할당해준 실행중인 프로그램
  • 프로그램을 실행하면 운영체제로부터 실행에 필요한 자원을 할당받아 '프로세스'가 되는 것

EX)
1. cpu시간
2. 운영되기 위해 필요한 주소 공간
3. 독립된 메모리 영역(Code, Data, Stack, Heap)

프로세스 구조

  • Code, Data, Stack, Heap의 구조로 되어있는 독립된 메모리 영역을 할당
  • 각 프로세스는 별도의 주소 공간에서 실행
  • 서로 독자적인 메모리 공간을 갖기 때문에 서로 메모리 공간을 공유할 수 없다.
  • 다른 프로세스의 자원에 접근하려면 프로세스간의 통신(IPC)을 사용해야한다.
  • 최소 하나 이상의 스레드를 포함

쓰레드(Thread)

프로세스가 할당 받은 자원을 이용하는 실행 단위이자, 프로세스의 특정한 수행 경로이자 프로세스 내에서 실행되는 여러 흐름의 단위

  • 독자적인 스택(Stack) 메모리를 갖는다.
  • 프로세스 내에서 각각 스택만 할당받고 Code, Data, Heap 영역은 공유
  • 프로세스 내의 주소공간이나 자원들을 같은 프로세스 내의 스레드끼리 공유하며 실행
  • 별도의 레지스터와 스택을 갖고 있지만, 힙 메모리는 서로 읽고 쓸 수 있다.
  • 한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드(sibling thread)도 그 변경 결과를 즉시 볼 수 있다.
  • 메모리를 공유하기 때문에 동기화, 데드락 등의 문제가 발생 할 수 있다.

프로세스와 스레드

프로세스는 스레드를 담고있는 컨테이너, 스레드의 정보를 담고 있는 것

차이점프로세스스레드
정의실행중인 프로그램프로세스의 실행단위
생성종료시간많이필요
상호작용IPC 사용공유 메모리 사용
자원 소모많음적음
독립성각각 독립적스택만 독립적이고 나머진 공유
profile
remind

0개의 댓글