[CS] 프로그램, 프로세스, 스레드, 멀티 프로세스, 멀티 스레드

조진우·2022년 12월 4일
0

Computer Science

목록 보기
1/7
post-thumbnail

💡 용어정리


  • 실행 단위 : CPU Core에서 실행되는 하나의 단위로 프로세스 혹은 스레드

  • (부연 설명이 없는) 프로세스 : 하나의 스레드만 가지고 있는 단일 스레드 프로세스

  • Context Switching : CPU에서 여러 프로세스가 돌아가면서 작업을 처리하는 과정

💡 프로세스 (Process)


  • 프로세스는 운영체제로부터 자원을 할당받는 '작업의 단위'
  • Code : 컴파일된 소스코드가 저장되는 영역
  • Data : 전역변수, static 변수가 저장되는 영역
  • Heap : 동적으로 생성되는 데이터가 저장되는 영역
  • Stack : 호출된 함수 혹은 지역변수가 저장되는 영역

💡 스레드 (Thread)


  • 스레드는 할당 받은 자원을 이용하는 '실행의 단위'

Code : 컴파일된 소스코드가 저장되는 영역
Data : 전역변수, static 변수가 저장되는 영역
Heap : 동적으로 생성되는 데이터가 저장되는 영역
Stack : 호출된 함수 혹은 지역변수가 저장되는 영역


💡 멀티 프로세스 (Multi Process)


  • 멀티 프로세스와 멀티 스레드는 한개의 어플리케이션에 대한 다른 두 가지 '처리방식'

  • 멀티 프로세스는 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업(task)를 처리하는 것이다.

    • 장점 : 하나의 프로세스가 잘못 되어도 프로그램은 동작함
    • 단점 : Context Switching 비용 발생
  • 각 프로세스는 독립적

  • IPC를 사용한 통신

  • 자원 소모적, 개별 메모리 차지

  • Context Switching 비용이 큼

  • 동기화 작업이 필요하지 않음


💡 멀티 스레드 (Multi Thread)


  • 멀티 프로세스와 멀티 스레드는 한개의 어플리케이션에 대한 다른 두 가지 '처리방식'

  • 멀티 스레드는 프로그램을 여러 개의 스레드로 구성하고 각 스레드가 작업(task)를 처리하는 것

    • 장점 : 시스템 자원 감소, 처리 비용 감소, 스레드간 자원 공유
    • 단점 : 디버깅 어려움, 동기화 이슈 발생, 하나의 스레드 오류로 전체 프로세스에 문제 발생
  • Thread끼리 긴밀하게 연결되어 있음

  • 공유된 자원으로 통신 비용 절감

  • 공유된 자원으로 메모리가 절감

  • Context Switching 비용이 적음

  • 공유 자원 관리를 해야함


💡 멀티 스레드가 좋아보이지만, 멀티 프로세스를 사용하는 이유


멀티 스레드의 경우 긴밀하게 연결되어 있기 때문에 한 스레드에 문제가 발생하면 전체 프로세스에 영향이 간다.
반면 멀티 프로세스는 독립적이기 때문에 영향을 덜 받는다.

멀티 프로세스 사용예시 : 구글 크롬


💡 참고자료


https://brunch.co.kr/@babosamo/100
https://www.youtube.com/watch?v=1grtWKqTn50&list=WL&index=1&t=827s

profile
The Top of Iceblog

0개의 댓글