MATT's

Process와 Thread 본문

CS

Process와 Thread

matt5659 2022. 11. 2. 23:29

<Memory 구조>

  • code 영역
    • 실행 명령을 포함하는 코드들이 저장
  • data 영역
    • static / global 변수들이 저장
  • heap 영역
    • 동적 메모리 영역
    • Object 클래스를 상속받는 변수 들이 저장
  • stack 영역
    • 지역 변수, 매개 변수, 반환 값 등 일시적인 데이터 들이 저장되는 영역

<컨텍스트 스위칭>

  • 여러 프로세스가 실행을 위해 cpu에 번갈아가며 적재되는 동작
    • 프로세스가 계속 컨텍스트 스위칭을 하는게 부담스럽기 때문에 스레드가 생김

<스레드>

  • 경량화된 프로세스
  • 프로세스를 쪼개어 놓은 것
  • 한 프로세스 내에서 구분 지어진 실행 단위
  • 같은 부모 프로세스를 갖는 스레드 끼리는 자원 (code, data, heap, stack)을 공유함
    • 컨텍스트 스위칭 시에 공용으로 사용될 자원은 그대로 두고 변경되기 때문에 훨씬 효율적 (ex. 회의실 이용 후에 tv랑 화이트보드는 두고 나가는 것과 동일)

<Multi-process>

  • 각 프로세스는 독립적
  • IPC를 사용하여 프로세스 간의 통신을 해야함
  • 자원 소모적, 개별 메모리 차지
  • context-switching 비용이 큼
  • 프로세스 간의 동기화 작업이 필요하지 않음 (독립적으로 동작해야하기 때문)

<Multi-thread>

  • thread 끼리 연결되어 있음
  • 공유된 자원으로 통신 비용 절감 (메모리를 좀 더 효율적으로 이요 ㅇ가능)
  • context-switching 비용이 적음
  • 공유 자원 관리가 필요함

<Multi-core>

  • core : cpu 안에 프로세스를 올릴 수 있는 장치
  • 동시성
    • core 한 개가 여러 개의 프로세스를 빠른 속도로 전환하며 처리하여 마치 동시에 처리되는 것처럼 보이게 하는 것
  • 병렬 처리
    • core 여러 개가 속도 증가를 위해 한 개의 프로세스를 나누어 처리하는 것

'CS' 카테고리의 다른 글

JVM과 Garbage Collector  (0) 2022.11.02