Multi Programming, Processing, Tasking, Threading

2024. 2. 16. 16:48ยท๐Ÿ“‚ computer-science

1. CPU, Process, Memory

(1) CPU, Process, Memory

 

ํ”„๋กœ์„ธ์Šค(Process) ๋Š” ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•˜๋ฉฐ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ(Memory) ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๋ช…๋ น์–ด์™€ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ์ด ๋•Œ ํ”„๋กœ์„ธ์Šค์˜ ๋ช…๋ น์–ด๋ฅผ CPU(Central Process Unit) ์—์„œ ์‹คํ–‰์‹œํ‚จ๋‹ค.

 

(2) I/O (Input/Output)

 

ํ”„๋กœ์„ธ์Šค ๋Š” CPU ์—ฐ์‚ฐ ์™ธ์—๋„ ๋„คํŠธ์›Œํฌ ๋˜๋Š” ์ž…์ถœ๋ ฅ ์žฅ์น˜๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค. ์ด์™€ ๊ฐ™์€ ํ–‰์œ„๋ฅผ I/O(Input/Output) ๋ผ๊ณ  ํ•œ๋‹ค. I/O ๋Š” ์™ธ๋ถ€์—์„œ ์‘๋‹ต์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” blocking I/O, ์‘๋‹ต์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•˜๋Š” Non-Blocking I/O ๊ฐ€ ์žˆ๋‹ค.

 

 

2. Multi-(Programming, Tasking, Processing, Threading)

(1) Multi-Programming

 

 

์ดˆ๊ธฐ์˜ ์ปดํ“จํ„ฐ์˜ CPU ๋Š” ๋‹จ์ผ ์ฝ”์–ด๋งŒ ์กด์žฌํ–ˆ๋‹ค. ํ•œ ์ฝ”์–ด๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— CPU ์‚ฌ์šฉ๋ฅ ์ด ์ข‹์ง€ ๋ชปํ–ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด blocking I/O ์™€ ๊ฐ™์€ ์‘๋‹ต์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒฝ์šฐ์—๋Š” CPU ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ณ ์ž ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค๋†“๊ณ  ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ I/O ๋ฐœ์ƒํ•˜๋ฉด CPU๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(MultiProgramming) ์ด๋‹ค.

 

(2) Multi-Tasking

๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ์—๋Š” ๋‹จ์ ์ด ์กด์žฌํ–ˆ๋‹ค. ํŠน์ • ํ”„๋กœ์„ธ์Šค(Process01)์ด ๊ณ„์†ํ•ด์„œ I/O ์—†์ด CPU ๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด Process01 ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค(Process02) ๋Š” CPU ๋ฅผ ์ ์œ ํ•  ์ˆ˜ ์—†๋‹ค. ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น(MultiTasking) ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์•„์ฃผ ์งง์€ ์‹œ๊ฐ„(quantum) ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.(์‹œ๋ถ„ํ•  ๋ฐฉ์‹) ์ฆ‰, ํ•˜๋‚˜์˜ CPU ๊ฐ€ ๋‘ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์‹คํ–‰ํ•œ๋‹ค.

 

 ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น(MultiTasking) ์€ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๋‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋А๋ผ๋„๋ก ํ•˜๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๋‹จ์ ๊ณผ ์š”๊ตฌ์‚ฌํ•ญ์ด ์กด์žฌํ–ˆ๋‹ค.

 

  1. ์‹ค์ œ๋กœ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•œ๋‹ค.
    1. ๋“€์–ผ ์ฝ”์–ด๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉด์„œ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์— ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„๋งŒ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์„ฑ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ๋‹ค.
  2. ํ”„๋กœ์„ธ์Šค์˜ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ์€ ํฌ๋‹ค.
    1. ์ด์ „์— ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋„์ž…๋˜๊ธฐ ์ด์ „์—๋Š” ์ž‘์—…๋Ÿ‰์„ ๋Š˜๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ 2๊ฐœ๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ์ดํ„ฐ ๊ณต์œ (e.g. data, code, heap) ์„ ๊ณต์œ ํ•˜์ง€ ์•Š์•„ IPC(Inter Process Communication) ์ด ํ•„์š”ํ•˜๋‹ค. ๊ณต์œ ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์œผ๋ฉด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ˆ˜๋„ ๊ทธ๋งŒํผ ๋งŽ์•„์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์Šคํ…œ์— ๋ถ€๋‹ด์„ ์ค€๋‹ค.

 

(3) Multi-Threading

 

์“ฐ๋ ˆ๋“œ(Thread) ๋Š” CPU ์—์„œ ์‹คํ–‰๋˜๋Š” ๋‹จ์œ„(unit of execution) ์„ ๋งํ•œ๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์—๋Š” ์ตœ์†Œ ํ•œ ๊ฐœ ์ด์ƒ์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ  ์“ฐ๋ ˆ๋“œ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(e.g. code, data, heap) ์„ ๊ณต์œ ํ•œ๋‹ค. (stack ์€ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.)

์ด์ „ ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น ๋ฐฉ์‹์˜ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•ด์„œ ๋„์ž…ํ–ˆ๋˜ ๊ฐœ๋…์ด ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋”ฉ(Multi-Threading) ์ด๋‹ค. ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๋ชฉ์ ์ด ์žˆ๋‹ค. ์ฆ‰, ๋‹จ์ผ ์ฝ”์–ด ๊ธฐ์ค€ ํ•œ ํ”„๋กœ์„ธ์Šค์— 2๊ฐœ ์ด์ƒ์˜ ์“ฐ๋ ˆ๋“œ ์ด์ƒ์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™์€ ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค.

  1. ์‹œ์Šคํ…œ ์ž์› ์†Œ๋ชจ ๊ฐ์†Œ
    • ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๋ฐ ์ž์›์„ ํ• ๋‹นํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด ์ค„์–ด๋“ค์–ด ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. Context Switching ์ด ๋น ๋ฅด๋‹ค.
    • ์Šค๋ ˆ๋“œ ๊ฐ„ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ ๋ฐฑ์—…ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
      (๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ์†ํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์ด ๋ฐ”๋€Œ์ง€ ์•Š์•„ ๋น ๋ฅด๋‹ค.)
    • MMU ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์ฐธ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๊ณ  TLB(Translation Look-aside Buffer) ๋ฅผ ๋น„์›Œ์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

(4) Multi-Processing

 

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ(Multi-Processing) ์€ CPU ์˜ ์ฝ”์–ด๊ฐ€ 2๊ฐœ ์ด์ƒ์œผ๋กœ ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋“€์–ผ ์ฝ”์–ด๊ฐ€ ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋‘ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ณ , ๋‘ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

Reference

  • https://www.youtube.com/watch?v=QmtYKZC0lMU
  • https://velog.io/@woody_/%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%8A%A4%EC%9C%84%EC%B9%ADcontext-switching
  • https://www.learncomputerscienceonline.com/central-processing-unit/

'๐Ÿ“‚ computer-science' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์บ์‹œ ์ •๋ฆฌ (Cache Summary)  (0) 2025.03.09
ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table)  (0) 2024.02.19
thread type & model  (0) 2024.02.15
๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ (Virtual Memory)  (0) 2024.01.26
'๐Ÿ“‚ computer-science' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์บ์‹œ ์ •๋ฆฌ (Cache Summary)
  • ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table)
  • thread type & model
  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ (Virtual Memory)
cooper25
cooper25
  • cooper25
    dev cooper
    cooper25
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (84)
      • ๐Ÿ“‚ backend (34)
        • spring (19)
        • architecture (10)
        • test (5)
      • ๐Ÿ“‚ computer-science (5)
      • ๐Ÿ“‚ programming-language (12)
        • java (12)
      • ๐Ÿ“‚ infra (9)
        • mysql (4)
        • redis (2)
        • message-queue (3)
      • ๐Ÿ“‚ cloud (2)
        • aws (2)
      • ๐Ÿ“‚ frontend (1)
        • react (0)
      • ๐Ÿ“‚ education & lecture (16)
        • ์ธํ”„๋ผ ๊ณต๋ฐฉ (11)
        • ํ•ญํ”Œ ๋ฐฑ์—”๋“œ 7๊ธฐ (5)
      • ๐Ÿ“‚ ai (1)
        • claude (1)
      • ๐Ÿ“‚ etc (2)
        • ํšŒ๊ณ  (1)
        • ์ปจํผ๋Ÿฐ์Šค (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    spring AOP
    gof
    react
    ์Šคํ”„๋ง์บ ํ”„ ํ›„๊ธฐ
    AWS
    spring-batch
    ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์„ค๊ณ„
    JPA
    ํ•ญํ•ดํ”Œ๋Ÿฌ์Šค
    ๋™์‹œ์„ฑ
    spring camp 2025
    ํšŒ๊ณ 
    kafka
    Redisson
    spring
    mysql
    ์ธํ”„๋ผ๊ณต๋ฐฉ
    ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„
    UUID
    nGrinder
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.6
cooper25
Multi Programming, Processing, Tasking, Threading
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”