Java

[JVM 밑바닥까지 파헤치기] 12-1. 자바 메모리 모델과 스레드: 동시성

noahkim_ 2024. 12. 25. 23:35

저우즈밍 님의 "JVM 밑바닥까지 파헤치기" 책을 정리한 포스팅 입니다

 

1. 컴퓨터가 여러 작업을 동시에 수행하는 이유

  • 연산 성능과 저장 및 통신 성능의 격차가 크기 떄문
  • 프로세서가 요청한 자원의 대기 시간을 활용
  • 서버는 여러 클라이언트 요청을 동시에 처리하므로 동시 처리가 필수적

 

JVM은 동시성 프로그래밍의 어려움을 낮춰줌

  • 하드웨어 자원 분배
  • 동시성 프로그래밍

 

2. 하드웨어의 효율과 일관성

캐시

  • 메모리 I/O는 연산작업에 비해 매우 느림
  • 이를 보완하고자 메모리와 CPU 사이의 계층을 둠
  • 필요한 데이터를 캐시에 복사해 두어 작업을 빠르게 수행
  • 작업이 완료되면 결과 데이터를 캐시에서 메모리로 동기화

 

공유 메모리 멀티프로세스 시스템
  • 프로세서별 캐시는 각각 존재
  • 캐시 일관성 프로토콜
    • 공유 공간인 메인 메모리와 동기화를 수행
    • MSI, MOSI, MESI, Synapse, Firefly

 

비순차 실행 최적화

  • 프로세서가 명령어를 실행하는 순서가 입력 코드에 기술된 명령어 순서와 다를 수 있음
  • 프로세서의 컴퓨팅 능력을 끌어냄