Coding Planet

λ©€ν‹°νƒœμŠ€ν‚Ήκ³Ό λ©€ν‹°μ“°λ ˆλ”©μ˜ 차이 - ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œ λ³Έλ¬Έ

πŸ’» Java Study/Java 이둠 정리

λ©€ν‹°νƒœμŠ€ν‚Ήκ³Ό λ©€ν‹°μ“°λ ˆλ”©μ˜ 차이 - ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œ

jhj.sharon 2024. 2. 1. 14:59
λ°˜μ‘ν˜•

 

| ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œ

  ν”„λ‘œμ„ΈμŠ€(process)λž€ κ°„λ‹¨νžˆ λ§ν•΄μ„œ 싀행쀑인 ν”„λ‘œκ·Έλž¨μ΄λ‹€. ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λ©΄ OSλ‘œλΆ€ν„° 싀행에 ν•„μš”ν•œ μžμ›(λ©”λͺ¨λ¦¬)λ₯Ό ν• λ‹Ήλ°›μ•„ ν”„λ‘œμ„ΈμŠ€κ°€ λœλ‹€.

  ν”„λ‘œμ„ΈμŠ€λŠ” ν”„λ‘œκ·Έλž¨μ„ μˆ˜ν–‰ν•˜λŠ” 데 ν•„μš”ν•œ 데이터와 λ©”λͺ¨λ¦¬ λ“±μ˜ μžμ› 그리고 μ“°λ ˆλ“œλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€. 이 λ•Œ ν”„λ‘œμ„ΈμŠ€μ˜ μžμ›μ„ μ΄μš©ν•΄μ„œ μ‹€μ œλ‘œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것이 μ“°λ ˆλ“œμ΄λ‹€. 

  κ·Έλž˜μ„œ λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ—μ„œλŠ” μ΅œμ†Œν•œ ν•˜λ‚˜ μ΄μƒμ˜ μ“°λ ˆλ“œκ°€ μ‘΄μž¬ν•˜λ©°, λ‘˜ μ΄μƒμ˜ μ“°λ ˆλ“œλ₯Ό 가진 ν”„λ‘œμ„ΈμŠ€λ₯Ό λ©€ν‹°μŠ€λ ˆλ“œ ν”„λ‘œμ„ΈμŠ€λΌκ³  ν•œλ‹€. ν”„λ‘œμ„ΈμŠ€κ°€ ν•˜λ‚˜μ˜ 곡μž₯이라면 μ“°λ ˆλ“œλŠ” 곡μž₯ λ‚΄λΆ€μ˜ λ…Έλ™μžμ΄λ‹€.

 

ν”„λ‘œκ·Έλž¨κ³Ό μ‹€μ œ μž‘μ—…μ€‘μΈ ν”„λ‘œμ„ΈμŠ€

 

| λ©€ν‹°νƒœμŠ€ν‚Ήκ³Ό λ©€ν‹°μ“°λ ˆλ”©

 ν˜„μž¬ μš°λ¦¬κ°€ μ‚¬μš©ν•˜κ³  μžˆλŠ” μœˆλ„μš°λ‚˜ μœ λ‹‰μŠ€λ₯Ό ν¬ν•¨ν•œ λŒ€λΆ€λΆ„μ˜ OSλŠ” λ©€ν‹°νƒœμŠ€ν‚Ή(multitasking, λ‹€μ€‘μž‘μ—…)을 μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€κ°€ λ™μ‹œμ— 싀행될 수 μžˆλ‹€. 

 μ΄μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ λ©€ν‹°μ“°λ ˆλ”©μ€ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ—¬λŸ¬ μ“°λ ˆλ“œκ°€ λ™μ‹œμ— μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것이닀. CPU의 μ½”μ–΄(core)κ°€ ν•œ λ²ˆμ— 단 ν•˜λ‚˜μ˜ μž‘μ—…λ§Œ μˆ˜ν–‰ν•  수 μžˆμœΌλ―€λ‘œ μ‹€μ œλ‘œ λ™μ‹œμ— μ²˜λ¦¬λ˜λŠ” μž‘μ—…μ˜ κ°œμˆ˜λŠ” μ½”μ–΄μ˜ κ°œμˆ˜μ™€ μΌμΉ˜ν•œλ‹€. κ·ΈλŸ¬λ‚˜ λŒ€μ²΄λ‘œ μ²˜λ¦¬ν•΄μ•Όν•˜λŠ” μ“°λ ˆλ“œμ˜ μˆ˜λŠ” μ½”μ–΄μ˜ κ°œμˆ˜λ³΄λ‹€ 많기 λ•Œλ¬Έμ— 각 μ½”μ–΄κ°€ μ•„μ£Ό 짧은 μ‹œκ°„λ™μ•ˆ μ—¬λŸ¬ μž‘μ—…μ„ λ²ˆκ°ˆμ•„ κ°€λ©° μˆ˜ν–‰ν•¨μœΌλ‘œμ¨ μ—¬λŸ¬ μž‘μ—…λ“€μ΄ λͺ¨λ‘ λ™μ‹œμ— μˆ˜ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ 보이게 ν•œλ‹€(μ‹œλΆ„ν• ).

 

**μ½”μ–΄ : ν”„λ‘œκ·Έλž¨μ˜ λͺ…령을 읽고 μˆ˜ν–‰ν•˜λŠ” 독립적인 처리μž₯치

 

| λ©€ν‹°μ“°λ ˆλ”©μ˜ μž₯단점

1) μž₯점

  • CPU의 μ‚¬μš©λ₯ μ„ ν–₯μƒμ‹œν‚¨λ‹€.
  • μžμ›μ„ 보닀 효율적으둜 μ‚¬μš©ν•  수 μžˆλ‹€.
  • μ‚¬μš©μžμ— λŒ€ν•œ 응닡성이 ν–₯μƒλœλ‹€.
  • μž‘μ—…μ΄ λΆ„λ¦¬λ˜μ–΄ μ½”λ“œκ°€ 간결해진닀.

  λ©”μ‹ μ €λ‘œ μ±„νŒ…ν•˜λ©΄μ„œ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ λ°›κ±°λ‚˜ μŒμ„±λŒ€ν™”λ₯Ό λ‚˜λˆŒ 수 μžˆλŠ” 것이 κ°€λŠ₯ν•œ μ΄μœ κ°€ λ°”λ‘œ λ©€ν‹°μ“°λ ˆλ“œλ‘œ μž‘μ„±λ˜μ–΄ 있기 λ•Œλ¬Έμ΄λ‹€. μ—¬λŸ¬ μ‚¬μš©μžμ—κ²Œ μ„œλΉ„μŠ€λ₯Ό ν•΄μ£ΌλŠ” μ„œλ²„ ν”„λ‘œκ·Έλž¨μ˜ 경우 λ©€ν‹°μ“°λ ˆλ“œλ‘œ μž‘μ„±ν•˜λŠ” 것은 ν•„μˆ˜μ μ΄μ–΄μ„œ ν•˜λ‚˜μ˜ μ„œλ²„ ν”„λ‘œμ„ΈμŠ€κ°€ μ—¬λŸ¬κ°œμ˜ μ“°λ ˆλ“œλ₯Ό μƒμ„±ν•΄μ„œ μ“°λ ˆλ“œμ™€ μ‚¬μš©μžμ˜ μš”μ²­μ΄ μΌλŒ€μΌλ‘œ μ²˜λ¦¬λ˜λ„λ‘ ν”„λ‘œκ·Έλž˜λ°ν•΄μ•Όν•œλ‹€.

  만일 μ‹±κΈ€μ“°λ ˆλ“œλ‘œ μ„œλ²„ ν”Œλ‘œκ·Έλž¨μ„ μž‘μ„±ν•œλ‹€λ©΄ μ‚¬μš©μžμ˜ μš”μ²­ λ§ˆλ‹€ μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•΄μ•Όν•˜λŠ”λ° ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•˜λŠ” 것은 μ“°λ ˆλ“œλ₯Ό μƒμ„±ν•˜λŠ” 것에 λΉ„ν•΄ 더 λ§Žμ€ μ‹œκ΄€κ³Ό λ©”λͺ¨λ¦¬ 곡간이 ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— λ§Žμ€ 수의 μ‚¬μš©μž μš”μ²­μ„ μ„œλΉ„μŠ€ν•˜κΈ° μ–΄λ ΅λ‹€.

(μ“°λ ˆλ“œλ₯Ό κ°€λ²Όμš΄ ν”„λ‘œμ„ΈμŠ€λΌκ³  λΆ€λ₯΄κΈ°λ„ ν•œλ‹€.)

 

 

2) 단점

λ©€ν‹°μ“°λ ˆλ“œ ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ μ“°λ ˆκ°€ 같은 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μžμ›μ„ κ³΅μœ ν•˜λ©΄μ„œ μž‘μ—…μ„ ν•˜κΈ° λ•Œλ¬Έμ— λ°œμƒν•  수 μžˆλŠ” 동기화와 κ΅μ°©μƒνƒœμ™€ 같은 λ¬Έμ œλ“€μ„ κ³ λ €ν•΄μ•Όν•œλ‹€.

  • 동기화( Synchronization ) : λ©€ν‹°μ“°λ ˆλ“œ ν™˜κ²½μ—μ„œ μ—¬λŸ¬ μ“°λ ˆλ“œκ°€ κ³΅μœ μžμ›(λ³€μˆ˜, 자료ꡬ쑰 λ“±)에 λ™μ‹œμ— μ ‘κ·Όν•˜λ©΄ 데이터 일관성과 무결성을 보μž₯ν•˜κΈ° μ–΄λ ΅λ‹€.  
  • κ΅μ°©μƒνƒœ( Deadlock ) : 두 μ“°λ ˆλ“œκ°€ μžμ›μ„ μ μœ ν•œ μƒνƒœμ—μ„œ μ„œλ‘œ μƒλŒ€νŽΈμ΄ μ μœ ν•œ μžμ›μ„ μ‚¬μš©ν•˜λ €κ³  κΈ°λ‹€λ¦¬λŠλΌ 진행이 λ©ˆμΆ°μžˆλŠ” μƒνƒœλ₯Ό μ˜λ―Έν•œλ‹€. 이둜 인해 λͺ¨λ“  μ“°λ ˆλ“œκ°€ λ¬΄ν•œ λŒ€κΈ°ν•˜κ²Œ λ˜μ–΄ μ‹œμŠ€ν…œμ΄ 더 이상 μ§„ν–‰λ˜μ§€ λͺ»ν•˜λŠ” μƒνƒœκ°€ λœλ‹€. 

 

 

 

[좜처 : 남ꢁ성, μžλ°”μ˜ 정석 3rd Edition]

λ°˜μ‘ν˜•
Comments