[CS] Process와 Thread

그냥·2022년 5월 30일
0

cs

목록 보기
1/6

프로세스와 쓰레드의 정의와 차이
멀티 프로세스와 멀티 쓰레드

1. 프로세스와 쓰레드의 정의와 차이

Program

  • 정의:
    - 프로그램은 하드 디스크 등에 저장되어 있는 실행코드를 뜻한다.

Process

<출처: https://im-yeobi.io/posts/os/001-process-thread/>


  • 정의:
    - 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
    - 프로세스는 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업 단위를 지칭한다.

  • 특징:
    - 최소 1개 이상의 스레드를 가지고 있다.
    • Code, Data, Stack, Heap 메모리 자원을 할당 받는다.
    • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 한다.

Thread

<출처: https://im-yeobi.io/posts/os/001-process-thread/>

  • 정의
    - 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위
    - 프로세스가 할당받은 자원을 이용하는 실행의 단위

  • 특징
    - 스레드는 프로세스 내에서 Stack만 따로 할당 받으며, 나머지 Code, Data, Heap은 프로세스 내 스레드들끼리 공유한다.



2. 멀티 프로세스와 멀티 쓰레드

멀티 프로세스

  • 정의: 하나의 프로그램을 여러 프로세스로 구성하여 작업을 처리하는 것
  • 특징
장점: 
	- 여러 개의 프로세스 중 하나에 문제가 발생할 때 문제가 발생한 프로세스 외에 다른 프로세스에는 문제가 발생하지 않음.
    
단점: 
	- 프로세스는 독립된 메모리 영역을 할당받기 때문에 프로세스 간 공유하는 메모리가 없음. 
    - 그렇기 때문에 Context Switching(빠른 속도로 Task를 바꿔 가며 실행하는 것)가 발생할 경우 캐쉬에 있는 모든 데이터를 리셋하고 다시 캐쉬 정보를 불러와야 함.

멀티 쓰레드

  • 정의: 하나의 프로그램을 여러 개의 쓰레드로 구성하여 작업을 처리하는 것
  • 특징
장점: 
	- 자원 효율성 증대: 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원의 효율성 증대
	- 시스템 처리 속도 빠름: 프로세스에 비해 쓰레드 간의 데이터를 주고받는 것이 간단하여 시스템 처리가 빠름
    
단점
    - 단일 프로세스을 사용하는 경우 좋은 효과를 기대하기 어려움
    - 자원 공유 시 발생하는 문제가 있음
    - 하나의 쓰레드에서 문제가 발생하면 전체 프로세스가 영향을 받음.

0개의 댓글