2 분 소요

1. 프로세스

  • 어플리케이션을 실행하면 운영체제로부터 필요한 메모리를 할당받아 코드를 실행
  • 하나의 어플은 2개 이상의 프로세스를 가질 수 있음 ex) chrome exe 2개 생김
  • 멀티프로세스는 각자 다른 메모리를 운영체제로 할당받기 때문에 프로세스 간 영향을 미치지 않음

process.png

Code : 코드 자체를 구성하는 영역
Data : 전역 변수, 정적 변수, 배열 등 초기화된 데이터
Stack: 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)
Heap: 동적 할당 시 사용, new(), malloc() 등
  • 하나의 프로그램이 실행될 때, 동시에 여러가지 프로세스가 실행
  • 우리 눈에는 동시에 진행되는 것처럼 보이지만, 실제로 cpu는 프로세스 1을 어느정도하고 저장, 프로세스2를 진행하고 다시 돌아가며 콘텍스트 스위칭(Context switching)이 일어남
  • 반복이 많아지게 되면 CPU의 부담이 늘어나고, 중복된 자원들이 비효율적으로 관리되서 그럴 때 멀티스레드를 사용

2. 멀티프로세스

  • 하나의 컴퓨터에 여러 CPU 장착 -> 하나 이상의 프로세스들을 동시에 처리 (병렬)
  • 두개 이상 프로세서(CPU) 가 협력적으로 하나 이상의 작업(task)을 동시에 처리 (병렬처리)

multi_process.png

  • 장점
    • 안전성이 높음 (독립된 구조)
    • 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않음
    • 여러개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 두고 모든 프로세서(CPU)가 이를 공유하면 비용적으로 저렴
  • 단점
    • 각각 독립된 메모리 영역을 갖고 있어
    • 작업량 많을수록 오버헤드 발생
    • Context switching으로 인한 성능저하
  • Context Switching
    • CPU는 한번에 하나의 프로세스만 실행 가능
    • CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 데 이 과정을 컨텍스트 스위칭

3. 멀티태스킹

  • 두가지 이상의 일을 동시에 처리 ( 멀티스레드는 멀티태스킹을 하기 위함 )
  • 한 프로세스 내에서 멀티태스킹을 할 수 있게 만들어진 어플리케이션 ex) 유투브, 음악재생

4. 멀티스레드

  • 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위
  • 하나의 프로세스 내의 동작되는 여러 실행을 프로세스 하나에 자원을 공유하면서 동시에 실행
  • 한 프로세스 내의 주소 공간이나 자원들을 대부분 공유
  • 기본적으로 하나의 프로세스가 생성되면 하나의 메인스레드가 생성

multi_thread.png

  • 스택만 분리해서 사용하는 이유
    • LIFO라서 스택영역을 공유하면 프로세스가 섞인 채로 순서대로 나오게 되므로 더 복잡해지기 때문에 독립적으로 존재
  • 장점
    • 프로그램의 응답 시간 단축
    • 시스템의 처리율 향상
    • 시스템 자원 소모 감소
    • 프로세스간 통신 방법에 비해 스레드 간 통신 방법이 간단(캐시 메모리를 비울 필요가 없음)
  • 단점
    • 여러 개의 스레드를 이용하는 경우, 충돌 문제가 발생하지 않도록 동기화 문제 해결(병목현상, 데드락 등)
    • 디버깅이 어려움
    • 하나의 스레드에 문제가 생기면 전체 프로세스에 영향을 받음
    • 단일 프로세스 시스템에서는 효과를 기대하기 어려움?
  • 스레드는 한가락의 실, 멀티 스레드는 여러가닥의 실( 코드실행 )
  • 멀티스레드는 하나의 어플리케이션 내부에서의 멀티태스킹
  • 하나의 프로세스 내에서 생성되지 때문에 스레드가 문제가 발생하면 프로세스 자체에 영향을 줄 수 있다. 즉 멀티스레드의 예외처리가 중요!
  • 싱글스레드 어플리케이션에서 메인 스레드가 종료되면 프로세스도 종료
  • 멀티스레드에서 스레드가 한개라도 존재한다면 프로세스는 종료되지 않음, 설령 메인스레드가 먼저 종료되더라도 프로세스는 살아있음

참고

https://yoonemong.tistory.com/144
https://devnick.tistory.com/38


This is personal diary for study documents.
Please comment if I'm wrong or missing something else 😄. 

Top

댓글남기기