wonya.dev@gmail.com
워냐의 개발일기
wonya.dev@gmail.com
전체 방문자
오늘
어제
  • 개발일기장 (16)
    • OS (1)
    • HTTP (2)
    • Java (0)
    • Spring (0)
    • DB (0)
    • Vue.js (5)
    • React (2)
    • Elasticsearch (5)
    • 일상다반사 (0)
    • Intellij 설정 (1)

인기 글

최근 글

티스토리

태그

  • 엘라스틱 insert
  • 노드JS
  • 엘라스틱 맵핑
  • elasticsearch
  • elasticsearch mapping
  • 엘라스틱서치
  • nodejs
  • node.js
  • Vue.js
  • 엘라스틱서치 맵핑
  • 노드제이에스
  • Elastic
  • elasticsearch insert
  • 엘라스틱 수동맵핑
  • elastic mapping
  • 엘라스틱 index
  • 뷰js
  • 엘라스틱 테이블
  • 뷰제이에스
  • vuejs
hELLO · Designed By 정상우.
wonya.dev@gmail.com

워냐의 개발일기

[OS] 프로세스와 스레드 차이
OS

[OS] 프로세스와 스레드 차이

2022. 1. 12. 22:36

목표

  • 프로세스와 스레드 개념을 설명할 수 있다.
  • 프로세스와 스레드의 차이를 설명할 수 있다.
  • 멀티 프로세스보다 멀티 스레드를 사용하여야 하는 이유

 

프로그램(Program)이란?

  • 소프트웨어 or 어플리케이션을 의미
  • Ex) 웹브라우저, IntelliJ, Web Application 등

프로세스(Process) 란?

  • 프로그램을 실행하여 메모리상에 올라간 것을 의미한다. 
  • 한개의 프로세는 다른 프로세스 직접 접근이 불가능하다.

스레드(Thread) 란?

  • 프로세스가 일을 하기 위한 일개미 역할이다.
  • stack 영역만 개인으로 쓰고, code, data, heap 영역은 공유한다.

 

멀티 프로세스

  • 하나의 프로그램을 여러 프로세스로 실행하여 작업을 처리하게 하는것이다.
  • 장점
    • 한개의 프로세스가 문제가 난다고 하여 다른 프로세스에 영향이 없다.
  • 단점
    • 프로세스간 공유(메모리)에 불편함이 있다.
    • Context switching 과정에서 캐쉬 메모리 초기화 후 다시 시스템콜을 하기 때문에 오버헤드가 심하다.

멀티 스레드

  • 하나의 프로그램을 멀티 쓰레드를 구성하여 각 쓰레드별로 작업을 처리하게 하는것이다.
  • 장점
    • 스레드간 stack 영역을 제외한 모든 메모리를 공유하기 때문에 처리 비용이 줄어든다.
    • 캐쉬 초기화가 없어 context switching 이 상대적으로 빠르다.
    • 프로세스 생성시 소모되는 자원 소모를 줄일 수 있다.
  • 단점
    • 하나의 스레드에서 문제 발생시 전체 시스템 장애로 번질 수 있다.
    • 공유 자원의 동기화 처리시에 개발자의 주의가 필요하다.

멀티 프로세스 보다 멀티 쓰레드를 권장하는 이유

  • 자원의 효율성
    • 멀티 프로세스에서 멀티 스레드로 프로그램을 변경시 context switching 으로 인한 시스템 콜이 줄어들기 때문에 자원 사용에 효율적이다.
  • 처리 비용&속도 단축
    • context switching 시 stack 영역만 처리하기 때문에 비용이 줄어든다.
    • 스레드간에는 메모리를 공유하기 때문에 프로세스간 통신(IPC) 이 없기 때문에 비용 및 시간이 훨씬 단축된다.

 

추가 : JVM에서의 프로세스와 메모리

  • Application 하나당(프로세스) JVM 하나를 할당받는다라고 생각하면 된다.
  • 정확히는 JVM 하나 = Runtime Data Area 하나
    • Java application 실행시 Class Loader 에 의해 class 파일들이 Method Area에 올려지고 함수 호출시 Execution Engine 이 바이트코드를 가져와 각 OS 의 Native code 로 컴파일하여 실행한다.
    wonya.dev@gmail.com
    wonya.dev@gmail.com
    나는 개발자다.

    티스토리툴바