티스토리 뷰

new study

PROCESS vs THREAD

kkssry 2019. 6. 30. 00:50

프로세스 vs 스레드

  • 사전적 의미

    • 프로세스 : 컴퓨터에서 연속적으로 실행 되고 있는 컴퓨터 프로그램

    • 컴퓨터 프로그램 : 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 모음

    • 스레드 : 프로세스 내에서 실행되는 흐름의 단위

  • 구조 및 특징

    • 프로세스 구조
      프로세스

      • 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당 받는다.

      • 기본적으로 프로세스당 최소 1개의 스레드(main thread)를 가진다.

      • 각 프로세스는 독립적이며 다른 프로세스의 자원에 접근할 수 없다.

      • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 한다.

    • 스레드 구조
      스레드

      • 스레드는 프로세스내에서 Code, Data, Heap영역을 공유하고 Stack은 고유의 영역으로 가지고 있다.

      • 한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드(sibling thread)도 그변경 결과를 즉시 볼 수 있다.


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

멀티 프로세스

  • 의미
    • 하나의 응용 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것이다.
  • 장점
    • 여러 프로세스 중 하나에 문제가 발생하면 그 프로세스에 영향을 주지 않는다.
  • 단점
    • Context Switching1 과정에서 오버헤드 발생
      • 프로세는 독립된 메모리 영역을 할당 받기 때문에 프로세스간 공유 메모리가 없다. 그래서 Context Switching이 발생하면 캐시에 있는 모든 데이터를 리셋하고 캐시 정보를 다시 불러와야 한다.
    • 프로세스간 복잡한 통신기법(IPC)

멀티 스레드

  • 의미
    • 하나의 응용 프로그램을 여러개의 스레드로 구성하고 각 스레드가 하나의 작업을 처리하도록 하는 것이다.
      • 윈도우, 리눅스등 많은 운영체제 들이 멀티 프로세스를 지원하지만 기본적으로 멀티 스레드를 기본으로 하고 있다.

멀티 스레드

  • 장점
    • 자원의 효율성 증대
      • 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어 자원을 효율적으로 관리 할 수 있다.
    • 시스템 처리량 증가
      • 스레드간 데이터를 주고 받는것이 비교적 간단해지고 시스템 자원 소모가 줄어든다.
      • 스레드 사이 작업량이 작아 Context Switching이 빠르다.
    • 비교적 간단한 통신 방법으로 프로그램 응답 시간 단축
      • 스레드 특징상 통신의 부담이 적다.
  • 단점
    • 하나의 스레드에 문제가 생기면 전체 프로세스에 영향을 준다.
    • 자원 공유의 문제가 발생한다.

1. Context Switching : 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.


[출처자료] https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

'new study' 카테고리의 다른 글

리플렉션  (0) 2020.02.25
템플릿 콜백 패턴  (0) 2020.02.17
COOKIE vs SESSION  (0) 2019.06.24
replace vs replaceAll  (0) 2019.06.21
GET vs POST  (0) 2019.06.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함