본문 바로가기
CS 지식/운영체제

[운영 체제] 프로세스 vs 스레드

by CSEGR 2024. 8. 19.
728x90
프로세스와 스레드의 개념과 차이를 이해하기
Process vs Thread 

✔️ 프로세스(Process) 

►프로그램(program) 이란?

: 어떤 작업을 위한 실행 코드 (프로세스가 되기 전 프로그램은 디스크(disk)에 있음)

 

►프로세스(process) 는 실행중인 프로그램(program) 을 의미하며, Job 또는 Task라고 한다. 

즉, 메모리 상에서 실행되는 작업 단위를 지칭한다. 

 

 

  • 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.
  • 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가짐.

►프로세스의 구조

프로그램이 실행되어 프로세스가 만들어지면, 다음 4가지의 메모리 영역으로 구성되어 할당 받게 된다. 

ㅍ출처 : https://st-lab.tistory.com/198

  1. Code(text) 영역
    : 실행할 프로그램의 코드가 저장되는 영역으로, CPU는 해당 코드 영역에 저장된 명령어를 가져가서 처리함. 
  2. Data 영역 
    : 전역 변수와 지역 변수가 저장되는 영역으로, 프로그램이 시작되는 동시에 할당되고 프로그램이 종료되면 소멸
  3. Heap 영역
    : 메모리를 동적으로 할당할 때 사용하는 메모리 영역으로, 사용자가 직접 관리하는 영역
  4. Stack 영역
    함수의 호출에 따른 지역변수와 매개변수가 저장되는 영역으로, 함수가 호출되면 할당되고 함수의 호출이 종료되면 소멸

 

✔️ 스레드(Thread) 

►스레드(thread)는 프로세스 내에서 실행되는 여러 흐름의 단위이다.

 

https://velog.io/@tlatjdgh3778/

  • 스레드는 프로세스 내에서 각각 stack만 따로 할당 받고 Code, Data, Heap 영역은 공유한다.

Multi Processing(멀티 프로세스) 과 Multi Threading(멀티 스레드) 

Multi ThreadingMulti Processing은 컴퓨팅 작업을 병렬화 하는 두 가지 접근 방식

출처 : https://somaz.tistory.com/265

✔️Multi Process

  • 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리
  • 장점 : 여러 개의 자식 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않음. 
  • 단점 : context switching 에서의 오버헤드

➕) Context Switching 이란?

: 여러 프로세스를 처리해야 하는 상황에서 현재 진행중인 프로세스의 상태를 PCB에 저장하고, 다음에 진행할 Task의 상태를 레지스터에 적재하는 과정

: context switchign 을 통해 CPU 사용률을 높이고 여러개의 프로세스를 처리할 수 있다. 

 

✔️Multi Threading

  • 하나의 응용 프로그램을 여러 개의 스레드로 구성하고 각 스레드가 하나의 작업을 처리
  • 웹 서버는 대표적인 멀티 스레드 응용 프로그램이다.
  • 장점 : 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소
  • 단점 : 하나의 스레드가 데이터 공간을 망가뜨리면, 모든 스레드에 영향이 감(공유 메모리를 갖기 때문)

✔️ 멀티 프로세스 vs 멀티 스레드 

멀티 프로세스는 하나의 프로세스에 문제가 생기더라도 다른 프로세스에는 영향을 끼치지 않는다는 장점이 있지만, 멀티 스레드 보다 많은 메모리 공간과 CPU 시간을 차지한다. 

멀티스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 context switching이 빠르다는 장점이 있지만, 하나의 스레드에 문제가 생기면 전체 스레드에 영향이 가고 동기화 문제가 있다는 단점이 있다. 

 

 

# 참고 문헌 

https://velog.io/@tlatjdgh3778/CS-%EC%A0%95%EB%A6%AC-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C1

 

CS 정리 운영체제(1)

운영체제(Operation System)란 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다.프로세스(proce

velog.io

https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4

728x90