프로세스 개념

  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스

  • 운영체제로 부터 시스템 자원을 할당받는 작업단위

  • 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 갖고 있음

  • 한 프로세스에서 다른 프로세스의 변수 OR 자료구조 접근 불가
    (다른 프로세스의 자원에 접근 하려면 프로세스간의 통신 IPC사용)

  • 참고 IPC (Inter Process Communication) ?

    • 파이프, 소켓 통신

프로세스 구성

Cdoe : 실행 명령을 포함하는 코드들

Data : Static 변수 혹은 Global 변수

Heap : 동적 메모리 영역

Stack : 지역변수, 매개변수, 반환 값 등 .. 일시적인 데이터

스레드 개념

  • 프로세스 내에서 실행되는 여러흐름 단위

  • 프로세스가 할당받은 자원을 이용하는 실행단위

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

멀티프로세스

  • 하나의 응용프로그램을 여러개의 프로세스로 구성, 각 프로세스가 하나의 작업을 처리 하도록 함

  • 장점

    • 여러개의 자식 프로세스 중 하나에 문제가발생하면 그 자식프로세스가 죽는것 이상으로 다른 영향 확산 없음
  • 단점

    • Context Switching 에서의 오버해드
      Context Switching 과정에서 캐쉬메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 오버헤드 발생
  • 참고 Context Switching란?

    • CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 데 이 과정을 Context Switching라 한다.
      구체적으로, 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이 전에 보관했던 프로세스의 상태를 복구하는 작업을 말한다.

멀티스레드

  • 하나의 응용프로그램을 여러 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리 하도록 하는 것

  • 장점

    • 시스템 자원 소모 감소
      • 프로세스 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리 할 수 있음
  • 스레드사이의 작업량이 작아 Contet Switching이 빠르다
  • 간단한 통신 방법으로 프로그램 응답시간 단축
    • 스레드는 프로세스 내의 Stack 영역을 제외하는 모든 메모리를 공유 함으로
  • 단점
    • 디버깅 까다로움
  • 하나의 스레드 문제 발생시 전체 프로세스 영향받음
  • 멀티 스레드의 경우 자원공유 문제 발생 (동기화 문제)

멀티 프로세스대신 멀티 스레드 사용 이유?

  • 여러개의 프로그램을 실행하는 것보다 하나의 프로그램 안에서 여러가지 작업을 해결 함으로

Muti-Core

  • Concurrency (동시성)

    • 하나의 코어에서 하나이상의 프로세스가 번갈아가면서 진행되지만 동시에 진행되는 것처럼 보이는것
  • Parallelism (병렬처리)

    • 둘이상의 코어에서 동시에 하나이상의 프로세스가 한꺼번에 진행되는것

+ Recent posts