π‘ λ³Έ λ¬Έμλ '[CS] λμμ±μ λ³λ ¬μ± & νλ‘μΈμ€μ μ€λ λ'μ λν΄ μ 리ν΄λμ κΈμ λλ€.
Multi Threadingμ 곡λΆνλ€ νλ² μ 리νκ³ λμ΄κ°κ³ μ νλ‘μΈμ€μ μ€λ λμ λν΄ μ 리νμμΌλ μ°Έκ³ νμκΈ° λ°λλλ€.
1. λμμ±κ³Ό λ³λ ¬μ±
λμμ±κ³Ό λ³λ ¬μ±μ νμ μ μΈ μ»΄ν¨ν° μμμΌλ‘ μ΅λνμ μ±λ₯μ λμ΄λ΄κΈ° μν΄ μμ£Ό μ€μν μμμ λλ€. λ©ν° μ½μ΄ CPUμ λ±μ₯κ³Ό κ²½μ μ μ΄λμΌλ‘ μΈνμ¬ λ©ν° μ½μ΄ CPUμ κ΄μ¬λκ° λμμ‘κ³ , μμ λ€μ λ³λ ¬ννκ³ μ½μ΄λ€μκ² ν¨μ¨μ μΈ μμ μ λΆλ°°νλ λ³λ ¬νλ μ€μ κ³Όμ κ° λμμ΅λλ€.
I/O Bound, CPU Bound
λμμ±κ³Ό λ³λ ¬μ±μ μμ보기 μ μ μμ μ νΉμ§μ λ°λ₯Έ λΆλ₯λ₯Ό μμμΌ ν©λλ€.
- I/O Bound : μ μΆλ ₯μ μν₯μ λ§μ΄ λ°λ μμ . μ μΆλ ₯μ΄ μλ£λκΈ°κΉμ§ λκΈ°νλ μκ°μ μν΄ μμ μκ°μ΄ κ²°μ λλ μμ .
- CPU Bound : CPUμ μ²λ¦¬ μκ°μ λ°λΌ μμ μκ°μ΄ κ²°μ λλ μμ . μ/볡νΈνλ 볡μ‘ν μ°μ°μ²λ¦¬κ° μμ΄λ€.
λ³λ ¬μ± (Parallelism)
λ³λ ¬μ±μ λμμ μ¬λ¬κ°μ§ μμ μ μννλ κ²μ μλ―Έν©λλ€. CPUμ μ½μ΄μμ λͺ λ Ήμ΄λ€μ μ€ννλ©° μμ λ€μ μνν©λλ€. λ°λΌμ λμμ μ¬λ¬ μμ λ€μ μννκΈ° μν΄μλ μ½μ΄κ° μ¬λ¬ κ°μΈ λ©ν° μ½μ΄ CPUκ° νμμ μ λλ€. κ°κ°μ μ½μ΄λ€μ ν λΉλ°μ μμ λ€μ λμμ μννμ¬ νλμ CPUμμ μ¬λ¬ κ°μ μμ λ€μ μνν μ μκ² λ©λλ€.
λ³λ ¬μ μΌλ‘ μ²λ¦¬ν μ μλ κ°μ²΄λ μμ μΌλ‘ μ νλμ§ μμ΅λλ€. λ³λ ¬ννλλ κ°μ²΄κ° μμ μ΄λ©΄ μμ λ³λ ¬μ±, λ°μ΄ν°λ₯Ό λ³λ ¬ννλ κ²μ λ°μ΄ν° λ³λ ¬μ±μ΄λΌκ³ ν©λλ€.
μμ
λ³λ ¬μ±μ κ°κ°μ μ½μ΄μμ μλ‘ λ€λ₯Έ μμ
A,Bκ° κ°κ°μ λ°μ΄ν°λ₯Ό μ²λ¦¬ν©λλ€. λ°λ©΄ λ°μ΄ν° λ³λ ¬μ±μ κ°μ μμ
Aκ° μλ‘ λ€λ₯Έ μ½μ΄μμ μ€νλλ©° λ°μ΄ν°λ€μ λ³λ ¬μ μΌλ‘ μ²λ¦¬ν©λλ€. μ΄μ²λΌ 무μμ λ³λ ¬νν μ§μ λ°λΌ μμ
μ μ€ν μμλ μμ μκ°λ λ¬λΌκ² λ©λλ€.
λμμ± (Concurrency)
λμμ±μ μλ‘ λ 립μ μΈ μμ μ μμ λ¨μλ‘ λλμ΄ λ²κ°μκ°λ©° μννλ κ²μ λ§ν©λλ€. μμμ λ§νλ―μ΄ νλμ μ½μ΄λ νλμ μ°μ°λ°μ μννμ§ λͺ»ν©λλ€. λ°λΌμ 컀λ€λ μμ μ μμ°¨μ μΌλ‘ μννκ² λλ©΄ λ€μ λͺ¨λ μμ λ€μ΄ λκΈ°νλ λ¬Έμ κ° λ°μνκ² λ©λλ€. λ°λΌμ λͺ¨λ μμ λ€μ μμ λ¨μλ‘ λλμ΄ λ²κ°μκ°λ©° μννλ©° νλμ μμ μ΄ λλμ§ μμλ λ€λ₯Έ μμ λ€μ΄ μνλ μ μλλ‘ ν κ²μ λλ€.
μ¬λ¬κ°μ μ½μ΄κ° νμν λ³λ ¬μ±κ³Όλ λ¬λ¦¬ λμμ±μ νλμ μ½μ΄μμ μ¬λ¬ μμ
μ λ²κ°μκ°λ©° μννκΈ° λλ¬Έμ μ±κΈ μ½μ΄ CPUμμλ μ¬μ©μ΄ κ°λ₯ν©λλ€.
λ³λ ¬μ±μ κ²½μ° μμ μ λμμ μννλ κ²μ΄κ³ λμμ±μ μ¬λ¬ μμ μ λ²κ°μκ°λ©° μννλ κ²μ λλ€. λ³λ΄μ±μ κ²½μ° λ 립μ μΌλ‘ μμ μ μνν μ μλ CPU μ½μ΄μ μμ‘΄νκΈ° λλ¬Έμ νλμ¨μ΄μ μΈ μμ‘΄λκ° λμ΅λλ€. λ°λ©΄ λμμ±μ νλμ μ½μ΄μμλ ꡬνν μ μκΈ° λλ¬Έμ μννΈμ¨μ΄μ μΌλ‘ μμ μ μ΄λ»κ² λλκ³ μ΄λ»κ² λΆλ°°ν΄μΌν μ§μ λν κ³ λ―Όμ΄ νμν©λλ€.
2. Processμ Thread
λμμ±κ³Ό λ³λ ¬μ±μμ λ³λ ¬μ±μ κ²½μ° νλμ¨μ΄ μμ‘΄λκ° λκ³ , λμμ±μ κ²½μ° μννΈμ¨μ΄ μμ‘΄λκ° λλ€κ³ μ€λͺ νμ΅λλ€. λμμ±μμ μμ μ μ΄λ»κ² λλμ§, μ΄λ»κ² λΆλ°°ν μ§μ κ΄ν΄ κ³ λ―Όνλ μ€ νμν κ²μ΄ μ€λ λ μ λλ€.
Process
νλ‘μΈμ€λ νλ‘κ·Έλ¨μ΄ μ€νλκΈ° μν΄ μ΄μ체μ λ‘λΆν° CPU, Memory, I/O, λμ€ν¬μ κ°μ μ»΄ν¨ν° μμμ ν λΉλ°μ κ²μ μλ―Έν©λλ€. νλ‘μΈμ€λ λ 립μ μΈ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉλ°κΈ° λλ¬Έμ νλ‘μΈμ€λΌλ¦¬ μ 보λ₯Ό μ£Όκ³ λ°κΈ° μν΄μλ IPC(Inter-Process Communication)λΌλ ν΅μ μ±λμ΄ νμν©λλ€. λνμ μΈ μλ‘λ socket, character device, shared memoryκ° μμ΅λλ€.
Thread
μ€λ λλ νλ‘μΈμ€μ μμμ νλ‘μΈμ€κ° ν λΉλ°μ μμμ μ΄μ©νμ¬ μ°μ°μ μ€ννλ μ΅μ λ¨μμ λλ€. νλμ νλ‘μΈμ€λ μ΅μ νλμ μ€λ λκ° μ‘΄μ¬νλ©°, νμμ λ°λΌμ νλ‘μΈμ€ μμ μ¬λ¬κ°μ μ€λ λλ₯Ό λ§λ€μ΄μ μ°μ°μ μ²λ¦¬νκΈ°λ ν©λλ€. μ€λ λλ νλ‘μΈμ€ λ΄μ μ€νμ νλ¦, νλ‘μΈμ€ λ΄μ μ£Όμ곡κ°, λ©λͺ¨λ¦¬ μμλ€μ νλ‘μΈμ€ λ΄μ λ€λ₯Έ μ€λ λλ€κ³Ό 곡μ νκΈ° λλ¬Έμ νλ‘μΈμ€ λ΄μ λ€λ₯Έ μ€λ λμ ν΅μ νκΈ° μν λ³λμ ν΅μ μ±λμ΄ νμ μμ΅λλ€. νμ§λ§ μμμ 무결μ±κ³Ό λκΈ°νλ₯Ό 보μ₯νκΈ° μν λ³λμ μ²λ¦¬λ νμν©λλ€.
Multiprocessing & Multithreading
1) Multiprocessing
λ©ν°νλ‘μΈμ±μ 2κ° μ΄μμ CPUλ₯Ό μ¬μ©νμ¬ λ³λ ¬μ±μ ꡬνν κ²μ λλ€. λ¨μν 2κ° μ΄μμ CPUλ₯Ό κ°μ§λ κ²μ΄ μλ, CPUκ° μλ‘ λ©λͺ¨λ¦¬λ I/O μ₯μΉμ κ°μ μ»΄ν¨ν° μμμ 곡μ νλ ꡬ쑰, 맀컀λμ¦μ΄μ΄μΌ ν©λλ€. λ©ν°νλ‘μΈμ±μ ꡬννλ λ°©μμ λ©λͺ¨λ¦¬ 곡μ λ°©μ, λ°μ΄ν° 곡μ λ°©μμ λ°λΌ μ¬λ¬κ°μ§λ‘ λλμ΄μ§λλ€.
SMP(Symmetric Multiprocessing)
SMPλ CPUλ€μ΄ λλ±ν κΆλ¦¬λ₯Ό κ°μ§κ³ κ°μ 물리μ λ©λͺ¨λ¦¬μ μ κ·Όν μ μμ΄ CPUλ€μ΄ λμΉμ μ΄λ£¨λ ꡬ쑰μ λλ€.
ASMP(Asymmetric Multiprocessing)
ASMPλ SMPμ λ¬λ¦¬ CPUλ§λ€ λ€λ₯Έ κΆλ¦¬λ₯Ό κ°μ§ μ μμΌλ©°, λ€λ₯Έ 물리μ μΈ κ³΅κ°μ κ°μ§ μ μκ³ νΉμ νλ‘μΈμ€λ νΉμ CPUμμλ§ λμν μ μλλ‘ μ€κ³ν μ μμ΅λλ€. ASMPμ CPUλ€λ SMPμ²λΌ 곡μ λ©λͺ¨λ¦¬ ꡬ쑰λ₯Ό κ°μ§κ³ μμ§λ§, νλ‘μΈμ€λ§λ€ μν μ μ νμ¬ ν CPUμμλ OSλ₯Ό μ λ΄νλ λ± CPUλ₯Ό λΉλμΉμ μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
2) Multithreading
λ©ν°μ€λ λ©μ νλμ μ½μ΄κ° λμμ μ¬λ¬κ°μ νλ‘μΈμ€λ μ€λ λλ₯Ό μ²λ¦¬νλλ‘ λμμ±μ ꡬνν κ²μ λλ€. λ©ν°μ€λ λ©μ΄ ꡬνλκΈ° μν΄μλ μ΄μ체μ κ° λ©ν°μ€λ λ©μ μ§μν΄μΌνκ³ νλμ¨μ΄λ λ©ν°μ€λ λ©μ΄ κ°λ₯νλλ‘ μ€κ³λμ΄μΌ ν©λλ€. λ©ν°μ€λ λ©μ νμ λ μμμΌλ‘ μ¬λ¬κ°μ§ μμ μ λμμ μ²λ¦¬νλ κ°λ μ λλ€. μ¬λ¬κ°μ§ νλ‘μΈμ€λ μ€λ λλ₯Ό μ‘°κΈμ© μ€μΌμ₯΄λ§νμ¬ μ½μ΄μμ μ²λ¦¬νλ©° CPUμ μ±λ₯μ λμ΄μ¬λ¦¬λλ° μμκ° μμ΅λλ€.
μ°Έκ³
- [Blog] [CS]λμμ±κ³Ό λ³λ ¬μ±: https://velog.io/@jaewan/CS%EB%8F%99%EC%8B%9C%EC%84%B1%EA%B3%BC-%EB%B3%91%EB%A0%AC%EC%84%B1
- [Blog] [CS]νλ‘μΈμ€μ μ€λ λ: https://velog.io/@jaewan/CS%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C
'Study: ComputerScience(CS) > CS: Basic' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[CS] Logging Levelμ λνμ¬ (feat. Logging Framework (spdlog)) (0) | 2022.08.03 |
---|---|
[Web] μΉ λΈλΌμ°μ μ URLμ μ λ ₯νλ©΄ μ΄λ€ μΌμ΄ μκΈ°λμ? (feat. Amazon) (0) | 2022.07.19 |
[CS] μΊμ(Cache)λ? (0) | 2022.07.06 |
[CS] λ§νΉ(Linking)μ λν΄ λ³΄λ€ μ¬λμλ λ΄μ© (0) | 2022.07.05 |
[CS] μ»΄νμΌ(Compile)μ λν΄ λ³΄λ€ μ¬λμλ λ΄μ© (0) | 2022.07.05 |