πŸ“–
WeekEndStudy
  • WeekEndStudy
  • WebWorker와 ServiceWorker
  • IndexedDB
  • WebSocket
  • Nodejs Mysql κ³Ό Serialize
  • Template Callback Pattern
  • JPA
  • Spring HATEOAS
  • CPU, GPU, Memory and Multi process
  • Docker
  • 도메인 주도 μ„€κ³„λ‘œ μ‹œμž‘ν•˜λŠ” λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ 개발
  • Reconcilation
  • Kotlin
  • Kotlin Study 2
  • GraphQL
Powered by GitBook
On this page
  • ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œλ‘œ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰
  • λΈŒλΌμš°μ € μ•„ν‚€ν…μ²˜
  • 닀쀑 ν”„λ‘œμ„ΈμŠ€ μ•„ν‚€ν…μ²˜κ°€ Chrome에 μ£ΌλŠ” 이점
  • λ ˆμž„λ³„λ‘œ μ‹€ν–‰λ˜λŠ” λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€ - μ‚¬μ΄νŠΈ 격리

Was this helpful?

CPU, GPU, Memory and Multi process

PreviousSpring HATEOASNextDocker

Last updated 3 years ago

Was this helpful?

CPU

첫 번째둜 λ³Ό λΆ€ν’ˆμ€ CPU(central processing unit, μ€‘μ•™μ²˜λ¦¬μž₯치)이닀. CPUλŠ” μ»΄ν“¨ν„°μ˜ λ‘λ‡ŒλΌ ν•  수 μžˆλ‹€. λ‹€μŒ κ·Έλ¦Όμ—μ„œ μ‚¬λ¬΄μ›μœΌλ‘œ λ¬˜μ‚¬λœ CPU μ½”μ–΄λŠ” μ—¬λŸ¬ μ’…λ₯˜μ˜ μž‘μ—…μ„ ν•˜λ‚˜μ”© μˆœμ„œλŒ€λ‘œ μ²˜λ¦¬ν•  수 μžˆλ‹€. CPU μ½”μ–΄λŠ” μˆ˜ν•™μ΄λ‚˜ μ˜ˆμˆ μ€ λ¬Όλ‘  고객 전화에 μ‘λŒ€ν•˜λŠ” 방법도 μ•Œκ³  μžˆλ‹€. μ˜ˆμ „μ—λŠ” λŒ€λΆ€λΆ„μ˜ CPUκ°€ 단일 μΉ©μ΄μ—ˆλ‹€. CPU μ½”μ–΄ ν•˜λ‚˜λŠ” λ™μΌν•œ 칩에 μžˆλŠ” 또 λ‹€λ₯Έ CPUλ‚˜ λ§ˆμ°¬κ°€μ§€μ΄λ‹€. μ΅œμ‹  ν•˜λ“œμ›¨μ–΄λŠ” 보톡 ν•˜λ‚˜ μ΄μƒμ˜ μ½”μ–΄λ₯Ό μ‚¬μš©ν•΄ μŠ€λ§ˆνŠΈν°μ΄λ‚˜ λ…ΈνŠΈλΆμ˜ μ‹€ν–‰ μ„±λŠ₯을 높인닀.

GPU

GPU(graphics processing unit, κ·Έλž˜ν”½μ²˜λ¦¬μž₯치)λŠ” μ»΄ν“¨ν„°μ˜ 또 λ‹€λ₯Έ λΆ€ν’ˆμ΄λ‹€. CPU와 달리 GPUλŠ” κ°„λ‹¨ν•œ μž‘μ—…μ—λ§Œ νŠΉν™”λ˜μ–΄ μžˆμ§€λ§Œ μ—¬λŸ¬ GPU μ½”μ–΄κ°€ λ™μ‹œμ— μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€. κ·Έλž˜ν”½μ²˜λ¦¬μž₯μΉ˜λΌλŠ” μ΄λ¦„μ—μ„œ μ•Œ 수 μžˆλ“―μ΄ GPUλŠ” κ·Έλž˜ν”½ μž‘μ—…μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ κ°œλ°œλ˜μ—ˆλ‹€. κ·Έλž˜μ„œ κ·Έλž˜ν”½ κ΄€λ ¨ μ„€λͺ…μ—μ„œ "GPUλ₯Ό μ‚¬μš©ν•œλ‹€"λ‚˜ "GPU의 지원을 λ°›λŠ”λ‹€"와 같은 말이 λΉ λ₯Έ λ Œλ”λ§κ³Ό λ§€λ„λŸ¬μš΄ μƒν˜Έμž‘μš©μ— κ΄€λ ¨λœ ν‘œν˜„μ΄λ‹€. 졜근 λͺ‡ λ…„ λ™μ•ˆ GPU 가속을 톡해 GPUκ°€ λ‹¨λ…μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆλŠ” 계산이 점점 더 λ§Žμ•„μ‘Œλ‹€.

ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œλ‘œ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰

λΈŒλΌμš°μ € μ•„ν‚€ν…μ²˜λ₯Ό μ‚΄νŽ΄λ³΄κΈ° 전에 νŒŒμ•…ν•΄μ•Ό ν•  또 λ‹€λ₯Έ κ°œλ…μ€ ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œμ΄λ‹€. ν”„λ‘œμ„ΈμŠ€λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹€ν–‰ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ΄λΌ ν•  수 μžˆλ‹€. μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ 내뢀에 있으며 ν”„λ‘œμ„ΈμŠ€λ‘œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ 일뢀λ₯Ό μ‹€ν–‰ν•œλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹œμž‘ν•˜λ©΄ ν”„λ‘œμ„ΈμŠ€κ°€ ν•˜λ‚˜ λ§Œλ“€μ–΄μ§„λ‹€. ν”„λ‘œμ„ΈμŠ€κ°€ μž‘μ—…μ„ ν•˜κΈ° μœ„ν•΄ μŠ€λ ˆλ“œλ₯Ό 생성할 μˆ˜λ„ μžˆμ§€λ§Œ 선택 사항이닀. μš΄μ˜μ²΄μ œλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μž‘μ—…ν•  λ©”λͺ¨λ¦¬λ₯Ό "ν•œ 쑰각" μ£ΌλŠ”λ°, 이 μ „μš© λ©”λͺ¨λ¦¬ 곡간에 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λͺ¨λ“  μƒνƒœκ°€ μ €μž₯λœλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ‹«μœΌλ©΄ ν”„λ‘œμ„ΈμŠ€κ°€ 사라지고 μš΄μ˜μ²΄μ œκ°€ λ©”λͺ¨λ¦¬λ₯Ό λΉ„μš΄λ‹€.

ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μš΄μ˜μ²΄μ œμ— λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜λΌκ³  μš”μ²­ν•  수 μžˆλ‹€. 그러면 λ©”λͺ¨λ¦¬μ˜ λ‹€λ₯Έ 뢀뢄이 μƒˆ ν”„λ‘œμ„ΈμŠ€μ— ν• λ‹Ήλœλ‹€. 두 ν”„λ‘œμ„ΈμŠ€κ°€ μ„œλ‘œ 정보λ₯Ό κ³΅μœ ν•΄μ•Ό ν•  λ•ŒλŠ” IPC(inter process communication, ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신)λ₯Ό μ‚¬μš©ν•œλ‹€. λ§Žμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ μž‘λ™ν•˜λ„λ‘ μ„€κ³„λ˜μ–΄ μžˆλ‹€. κ·Έλž˜μ„œ μž‘μ—… ν”„λ‘œμ„ΈμŠ€κ°€ μ‘λ‹΅ν•˜μ§€ μ•Šμ„ λ•Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ‹€λ₯Έ 뢀뢄을 μ‹€ν–‰ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ€‘μ§€ν•˜μ§€ μ•Šκ³ λ„ μ‘λ‹΅ν•˜μ§€ μ•ŠλŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‹€μ‹œ μ‹œμž‘ν•  수 μžˆλ‹€.

λΈŒλΌμš°μ € μ•„ν‚€ν…μ²˜

μ—¬κΈ°μ—μ„œ μ£Όλͺ©ν•΄μ•Ό ν•  μ€‘μš”ν•œ 점은 μ΄λŸ¬ν•œ μ„œλ‘œ λ‹€λ₯Έ μ•„ν‚€ν…μ²˜κ°€ κ΅¬ν˜„ μ„ΈλΆ€ μ‚¬ν•­μ΄λΌλŠ” 점이닀. λΈŒλΌμš°μ €λ₯Ό λ§Œλ“œλŠ” 방법에 λŒ€ν•œ ν‘œμ€€μ€ μ—†λ‹€. λΈŒλΌμš°μ €λ§ˆλ‹€ μ ‘κ·Ό 방식이 μ™„μ „νžˆ λ‹€λ₯Ό 수 μžˆλ‹€.

제일 μœ„μ— μžˆλŠ” λΈŒλΌμš°μ € ν”„λ‘œμ„ΈμŠ€λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 각 뢀뢄을 λ§‘κ³  μžˆλŠ” λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‘°μ •ν•œλ‹€. λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ κ°œκ°€ λ§Œλ“€μ–΄μ Έ 각 νƒ­λ§ˆλ‹€ ν• λ‹Ήλœλ‹€. μ΅œκ·ΌκΉŒμ§€ Chrome은 νƒ­λ§ˆλ‹€ ν”„λ‘œμ„ΈμŠ€λ₯Ό ν• λ‹Ήν–ˆλ‹€.

ν”„λ‘œμ„ΈμŠ€

ν”„λ‘œμ„ΈμŠ€κ°€ μ œμ–΄ν•˜λŠ” λΆ€λΆ„

λΈŒλΌμš°μ € ν”„λ‘œμ„ΈμŠ€

μ£Όμ†Œ ν‘œμ‹œμ€„, 뢁마크 λ§‰λŒ€, λ’€λ‘œ κ°€κΈ° λ²„νŠΌ, μ•žμœΌλ‘œ κ°€κΈ° λ²„νŠΌ λ“± μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ "chrome" 뢀뢄을 μ œμ–΄ν•œλ‹€. λ„€νŠΈμ›Œν¬ μš”μ²­μ΄λ‚˜ 파일 μ ‘κ·Όκ³Ό 같이 λˆˆμ— λ³΄μ΄μ§€λŠ” μ•Šμ§€λ§Œ κΆŒν•œμ΄ ν•„μš”ν•œ 뢀뢄도 μ²˜λ¦¬ν•œλ‹€.

λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€

νƒ­ μ•ˆμ—μ„œ μ›Ή μ‚¬μ΄νŠΈκ°€ ν‘œμ‹œλ˜λŠ” λΆ€λΆ„μ˜ λͺ¨λ“  것을 μ œμ–΄ν•œλ‹€.

ν”ŒλŸ¬κ·ΈμΈ ν”„λ‘œμ„ΈμŠ€

μ›Ή μ‚¬μ΄νŠΈμ—μ„œ μ‚¬μš©ν•˜λŠ” ν”ŒλŸ¬κ·ΈμΈ(예: Flash)을 μ œμ–΄ν•œλ‹€.

GPU ν”„λ‘œμ„ΈμŠ€

GPU μž‘μ—…μ„ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ™€ κ²©λ¦¬ν•΄μ„œ μ²˜λ¦¬ν•œλ‹€. GPUλŠ” μ—¬λŸ¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μš”μ²­μ„ μ²˜λ¦¬ν•˜κ³  같은 화면에 μš”μ²­λ°›μ€ λ‚΄μš©μ„ 그리기 λ•Œλ¬Έμ— GPU ν”„λ‘œμ„ΈμŠ€λŠ” 별도 ν”„λ‘œμ„ΈμŠ€λ‘œ λΆ„λ¦¬λ˜μ–΄ μžˆλ‹€.

닀쀑 ν”„λ‘œμ„ΈμŠ€ μ•„ν‚€ν…μ²˜κ°€ Chrome에 μ£ΌλŠ” 이점

Chrome이 λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ—¬λŸ¬ 개 μ‚¬μš©ν•œλ‹€κ³  μ„€λͺ…ν–ˆλ‹€. κ°€μž₯ κ°„λ‹¨ν•œ 예둜 νƒ­λ§ˆλ‹€ λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό ν•˜λ‚˜ μ‚¬μš©ν•˜λŠ” 경우λ₯Ό 생각해 보자. 3개의 탭이 μ—΄λ € 있고 각 탭은 독립적인 λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€μ— μ˜ν•΄ μ‹€ν–‰λœλ‹€. μ΄λ•Œ ν•œ 탭이 μ‘λ‹΅ν•˜μ§€ μ•ŠμœΌλ©΄ κ·Έ νƒ­λ§Œ λ‹«κ³  μ‹€ν–‰ 쀑인 λ‹€λ₯Έ νƒ­μœΌλ‘œ 이동할 수 μžˆλ‹€. λ§Œμ•½ λͺ¨λ“  탭이 ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ‹€ν–‰ μ€‘μ΄μ—ˆλ‹€λ©΄ 탭이 ν•˜λ‚˜λ§Œ μ‘λ‹΅ν•˜μ§€ μ•Šμ•„λ„ λͺ¨λ“  탭이 μ‘λ‹΅ν•˜μ§€ λͺ»ν•˜κ²Œ λœλ‹€.

λΈŒλΌμš°μ €μ˜ μž‘μ—…μ„ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€μ— λ‚˜λˆ μ„œ μ²˜λ¦¬ν•˜λŠ” λ°©λ²•μ˜ 또 λ‹€λ₯Έ μž₯점은 λ³΄μ•ˆκ³Ό 격리(sandbox)이닀. 운영체제λ₯Ό 톡해 ν”„λ‘œμ„ΈμŠ€μ˜ κΆŒν•œμ„ μ œν•œν•  수 μžˆμ–΄ λΈŒλΌμš°μ €λŠ” νŠΉμ • ν”„λ‘œμ„ΈμŠ€κ°€ νŠΉμ • κΈ°λŠ₯을 μ‚¬μš©ν•  수 μ—†κ²Œ μ œν•œν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ Chrome은 λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€μ²˜λŸΌ μž„μ˜μ˜ μ‚¬μš©μž μž…λ ₯을 μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μž„μ˜μ˜ νŒŒμΌμ— μ ‘κ·Όν•˜μ§€ λͺ»ν•˜κ²Œ μ œν•œν•œλ‹€. (μ•‘ν‹°λΈŒ μ—‘μŠ€λŠ” λ˜λ”λΌ...)

ν”„λ‘œμ„ΈμŠ€λŠ” μ „μš© λ©”λͺ¨λ¦¬ 곡간을 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 곡톡뢀뢄(예λ₯Ό λ“€μ–΄ Chrome의 JavaScript 엔진인 V8)을 λ³΅μ‚¬ν•΄μ„œ κ°€μ§€κ³  μžˆλŠ” κ²½μš°κ°€ λ§Žλ‹€. λ™μΌν•œ ν”„λ‘œμ„ΈμŠ€μ˜ μŠ€λ ˆλ“œκ°€ λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ ν•  수 μžˆλŠ” 데 λ°˜ν•΄ μ„œλ‘œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λŠ” λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ ν•  수 μ—†μ–΄ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ΄ 더 λ§Žμ•„μ§ˆ μˆ˜λ°–μ— μ—†λ‹€. Chrome은 λ©”λͺ¨λ¦¬λ₯Ό μ ˆμ•½ν•˜κΈ° μœ„ν•΄μ„œ μ‹€ν–‰ν•  수 μžˆλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ 개수λ₯Ό μ œν•œν•œλ‹€. μ •ν™•ν•œ ν•œλ„λŠ” 기기의 λ©”λͺ¨λ¦¬ μš©λŸ‰κ³Ό CPU μ„±λŠ₯에 따라 λ‹€λ₯΄μ§€λ§Œ ν”„λ‘œμ„ΈμŠ€μ˜ κ°œμˆ˜κ°€ ν•œλ„μ— λ‹€λ‹€λ₯΄λ©΄ λ™μΌν•œ μ‚¬μ΄νŠΈλ₯Ό μ—΄κ³  μžˆλŠ” μ—¬λŸ¬ 탭을 ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ²˜λ¦¬ν•œλ‹€. --> μ΅œλŒ€ 호좜 ν•  수 μžˆλŠ” 양이 μ •ν•΄μ Έ 있음

λ ˆμž„λ³„λ‘œ μ‹€ν–‰λ˜λŠ” λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€ - μ‚¬μ΄νŠΈ 격리

λŠ” Chromeμ—μ„œ 졜근 λ„μž…λœ κΈ°λŠ₯으둜, iframe의 μ‚¬μ΄νŠΈλ₯Ό λ³„λ„μ˜ λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ‹€ν–‰ν•˜λŠ” 것이닀. νƒ­λ§ˆλ‹€ λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό ν• λ‹Ήν•˜λŠ” λͺ¨λΈμ—μ„œλŠ” iframe의 μ‚¬μ΄νŠΈκ°€ 같은 λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ‘œ λ‹€λ₯Έ μ‚¬μ΄νŠΈ 간에 λ©”λͺ¨λ¦¬κ°€ 곡유될 수 μžˆλ‹€λŠ” λ¬Έμ œκ°€ μžˆμ–΄ μ§€μ†μ μœΌλ‘œ λ…Όμ˜κ°€ μžˆμ—ˆλ‹€. a.com μ‚¬μ΄νŠΈμ˜ μ›Ή νŽ˜μ΄μ§€μ™€ b.com μ‚¬μ΄νŠΈμ˜ μ›Ή νŽ˜μ΄μ§€λ₯Ό λ™μΌν•œ λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ‹€ν–‰ν•˜λŠ” 것이 λ¬Έμ œκ°€ μ—†μ–΄ 보일 수 μžˆλ‹€. ν•˜μ§€λ§Œ 은 μ›Ή λ³΄μ•ˆ λͺ¨λΈμ˜ 핡심이닀. ν•œ μ‚¬μ΄νŠΈλŠ” λ™μ˜ 없이 λ‹€λ₯Έ μ‚¬μ΄νŠΈμ˜ 데이터에 μ ‘κ·Όν•  수 μ—†μ–΄μ•Ό ν•œλ‹€. 이 정책을 μš°νšŒν•˜λŠ” 것이 λ°”λ‘œ λ³΄μ•ˆ 곡격의 μ£Όμš” λͺ©ν‘œμ΄λ‹€. ν”„λ‘œμ„ΈμŠ€λ₯Ό κ²©λ¦¬ν•˜λŠ” 것이 μ‚¬μ΄νŠΈλ₯Ό κ²©λ¦¬ν•˜λŠ” κ°€μž₯ 효과적인 방법이닀. μ‚¬νƒœλ‘œ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‚¬μš©ν•΄ μ‚¬μ΄νŠΈλ₯Ό 격리해야 ν•œλ‹€λŠ” 것이 λ”μš± λΆ„λͺ…ν•΄μ‘Œλ‹€. Chrome 67λΆ€ν„° λ°μŠ€ν¬ν†±μ—μ„œ μ‚¬μ΄νŠΈ 격리λ₯Ό 기본으둜 μ‚¬μš©ν•˜λ„λ‘ μ„€μ •ν•˜λ©΄μ„œ νƒ­μ—μ„œ iframe의 μ‚¬μ΄νŠΈμ— λ³„λ„μ˜ λ Œλ”λŸ¬ ν”„λ‘œμ„ΈμŠ€κ°€ μ μš©λœλ‹€.

μ‚¬μ΄νŠΈ 격리(site isolation)
동일 좜처 μ •μ±…(same origin policy)
Meltdownκ³Ό Spectre
https://d2.naver.com/helloworld/9274593