프로세스와 스레드

주영·2023년 9월 5일
0

IT Infra

목록 보기
7/16
post-thumbnail

프로세스 · 스레드

≒ 프로그램 시작 시 뜨는 창들

프로그램 시작 시 발생하는 일

  • 프로그램이 서버 내부의 디스크 상에 설치됨
  • 시작 의뢰가 있으면 커널이 프로세스를 작성. 또한, 요청 분량만큼만 메모리 공간 할당
  • OS 상에서 프로세스가 시작되어 사용자 요청을 받을 수 있게 됨
  • 프로그램 실행 파일 자체 (X)
  • OS 상에서 실행되어 어느 정도 독립성을 가지고 동작하는 것
  • 프로세스 · 스레드가 시작되는 것 ≒ 사람이 숨을 쉬기 시작하면서 활동하는 것
  • 프로세스 · 스레드가 활동하려면 메모리 공간이 필요
    → 프로세스 시작 시 커널에 의해 메모리 상에 공간이 확보됨
    프로세스 · 스레드가 자신을 위해서 소유하는 공간(개인 공간)
    다양한 처리를 하면서 데이터를 주고 받기 위해 이 공간을 사용

프로세스 vs 스레드

  • 목적은 같지만, 구조가 다름
  • 하나의 프로세스가 동작하고 있으면, 내부에서는 메모리 공간을 점유하는 스레드 하나가 동작하고 있다.
  • 어떤 것을 이용할지는 애플리케이션 개발자가 결정

프로세스 → 메모리 공간 공유 불가? (X: 메모리 공간 공유 가능)

  • 독자(전용) 메모리 영역 / 공유 메모리 영역 용도별로 나누어 사용
    • 공유 메모리 영역 : 프로세스 간 공유하고픈 데이터 (ex. 캐시로 저장하고 있는 데이터)
    • 독자(전용) 메모리 영역 : 프로세스가 단독으로 이용하는 데이터 (ex. 자신이 계산한 결과)
  • ex) 오라클 DB - '공유 메모리 공간'
    • 각 프로세스별 메모리 공간(PGA)과 프로세스 전체가 공유하는 메모리 공간(SGA)이 나누어져 있음
    • 공유 메모리(SGA) : 디스크 상의 데이터 캐시나 실행 완료된 SQL 캐시, 데이블, 인덱스 등이 저장됨
    • 프로세스별 메모리(PGA) : 해당 프로세스 SQL이 이용하는 소트 영역이나 테이블 결합에 사용하는 메모리 영역이 저장되어 있음. 이 영역은 다른 프로세스가 접근 불가. 이 메모리가 부족하면 공유 메모리를 아무리 크게 잡아도 효과 X

출처 : 야마자키 야스시 외 3, 「그림으로 공부하는 IT 인프라 구조」, 제이펍

0개의 댓글