๊ด€๋ฆฌ ๋ฉ”๋‰ด

Unfazedโ—๏ธ๐ŸŽฏ

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜, ์Šค์ผ€์ค„๋ง, ํ”„๋กœ์„ธ์Šค vs ์Šค๋ ˆ๋“œ ๋ณธ๋ฌธ

Operating System (์šด์˜์ฒด์ œ)

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜, ์Šค์ผ€์ค„๋ง, ํ”„๋กœ์„ธ์Šค vs ์Šค๋ ˆ๋“œ

9taetae9 2025. 2. 6. 10:51
728x90

1. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์ด ํ•„์š”ํ•œ ์ด์œ 

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์ด ํ•„์š”ํ•œ ์ฃผ์š” ์ด์œ ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ์‘๋‹ต์„ฑ(Responsiveness)๊ณผ ์„ฑ๋Šฅ(Performance)์ด๋‹ค.

1.1. ์‘๋‹ต์„ฑ(Responsiveness)

์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ธก๋ฉด์—์„œ ์‘๋‹ต์„ฑ์€ ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ด๋‹ค.

  • ์‚ฌ๋ก€ 1: ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ์—์„œ ๋Œ€๋Ÿ‰ ๊ตฌ๋งค ์š”์ฒญ์ด DB ์ž‘์—…์„ ์ง€์—ฐ์‹œํ‚ฌ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์ฐจ๋‹จ๋จ → ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์œผ๋กœ ๊ฐ ์š”์ฒญ์„ ๋ณ„๋„ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋™์‹œ ์‘๋‹ต ๊ฐ€๋Šฅ
  • ์‚ฌ๋ก€ 2: ๋™์˜์ƒ ์žฌ์ƒ ์•ฑ
    • ๋ฉ”์ธ ์Šค๋ ˆ๋“œ: UI ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
    • ์›Œ์ปค ์Šค๋ ˆ๋“œ: ๋ฏธ๋””์–ด ๋””์ฝ”๋”ฉ ๋ฐ ์ถœ๋ ฅ → ์‚ฌ์šฉ์ž ์ธํ„ฐ๋ž™์…˜ ์ง€์—ฐ ์—†๋Š” ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒฝํ—˜ ์ œ๊ณต

์ด๋Ÿฌํ•œ ๋™์‹œ์„ฑ(Concurrency)์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ฌ์ง€์–ด ๋‹จ์ผ ์ฝ”์–ด์—์„œ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

1.2. ์„ฑ๋Šฅ(Performance)

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๋ฐฉ์‹์— ๋น„ํ•ด ๋ณต์žกํ•œ ์ž‘์—…์„ ํ›จ์”ฌ ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • ๋™์‹œ์„ฑ(Concurrency): ๋‹จ์ผ ์ฝ”์–ด์—์„œ๋„ ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ž‘์—…์ด ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ์‹คํ–‰
  • ๋ณ‘๋ ฌ์„ฑ(Parallelism): ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ™˜๊ฒฝ์—์„œ ์‹ค์ œ๋กœ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์™„์ „ํžˆ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์„ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ 

  • ๋ณต์žกํ•œ ์ž‘์—…์„ ํ›จ์”ฌ ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ์™„๋ฃŒ
  • ๋™์ผํ•œ ์‹œ๊ฐ„ ๋‚ด์— ๋” ๋งŽ์€ ์ž‘์—… ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
  • ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค ์šด์˜ ์‹œ ํ•„์š”ํ•œ ์„œ๋ฒ„ ์ˆ˜ ๊ฐ์†Œ๋กœ ์ธํ•œ ๋น„์šฉ ์ ˆ๊ฐ

2. ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ

์ปดํ“จํ„ฐ๋ฅผ ์ผœ๋ฉด ์šด์˜์ฒด์ œ(OS)๊ฐ€ ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œ๋œ๋‹ค. ์šด์˜์ฒด์ œ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ํ•˜๋“œ์›จ์–ด์™€ CPU๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ์ง€ ์•Š๊ณ ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋””์Šคํฌ์— ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๋‹ค๊ฐ€, ์‹คํ–‰๋  ๋•Œ ์šด์˜์ฒด์ œ์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ํ”„๋กœ์„ธ์Šค๋ผ ํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ํฌํ•จํ•˜๋Š” ์ฃผ์š” ์š”์†Œ

  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(ํ”„๋กœ์„ธ์Šค ID ๋“ฑ)
  • ์—ด๋ฆฐ ํŒŒ์ผ๋“ค
  • ์‹คํ–‰๋  ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํž™(heap)
  • ์ตœ์†Œ ํ•˜๋‚˜์˜ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ

๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ํฌํ•จํ•˜๋Š” ์ฃผ์š” ์š”์†Œ

  • ์Šคํƒ(์ง€์—ญ ๋ณ€์ˆ˜ ์ €์žฅ ๋ฐ ํ•จ์ˆ˜ ์‹คํ–‰)
  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(๋‹ค์Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด)

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์‹ ๋งŒ์˜ ์Šคํƒ๊ณผ ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๋ฅผ ๊ฐ€์ง€์ง€๋งŒ,

ํ”„๋กœ์„ธ์Šค์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์š”์†Œ๋“ค์€ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•œ๋‹ค.(๋ชจ๋“  ์Šค๋ ˆ๋“œ๋Š” ๋™์ผํ•œ Code/Heap ์˜์—ญ ๊ณต์œ )

๊ตฌ๋ถ„ ํ”„๋กœ์„ธ์Šค ์Šค๋ ˆ๋“œ
๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๋…๋ฆฝ์  Code/Heap ๊ณต์œ 
์ƒ์„ฑ ๋น„์šฉ ๋†’์Œ (๋ฉ”๋ชจ๋ฆฌ ๋ณต์ œ ํ•„์š”) ๋‚ฎ์Œ
ํ†ต์‹  IPC(ํŒŒ์ดํ”„, ์†Œ์ผ“ ๋“ฑ) ํ•„์š” ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์ง์ ‘ ์ ‘๊ทผ
์•ˆ์ •์„ฑ ๊ฐ•ํ•จ (ํ•œ ํ”„๋กœ์„ธ์Šค ์˜ค๋ฅ˜๊ฐ€ ํƒ€ ํ”„๋กœ์„ธ์Šค ์˜ํ–ฅ X) ์•ฝํ•จ (์Šค๋ ˆ๋“œ ํ•˜๋‚˜์˜ ์˜ค๋ฅ˜๊ฐ€ ์ „์ฒด ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ๊ฐ€๋Šฅ)

3. ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜์™€ ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋ง

3.1. ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜๋ž€?

์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ์ˆ˜๋Š” CPU ์ฝ”์–ด์˜ ์ˆ˜๋ณด๋‹ค ๋งŽ๋‹ค. ๋”ฐ๋ผ์„œ ์šด์˜์ฒด์ œ๋Š” ํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋‹ค๊ฐ€ ์ค‘์ง€ํ•˜๊ณ  ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ „ํ™˜ ๊ณผ์ •์„ ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜๋ผ๊ณ  ํ•œ๋‹ค.

 

์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜ ๋ฐœ์ƒ ์กฐ๊ฑด

  1. ํƒ€์ž„์Šฌ๋ผ์ด์Šค(Time Slice) ๋งŒ๋ฃŒ
  2. I/O ๋Œ€๊ธฐ ๋“ฑ ์ž๋ฐœ์  ์–‘๋ณด
  3. ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์ž‘์—… ๋ฐœ์ƒ

์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜์˜ ์ฃผ์š” ํŠน์ง•

ํ‰๊ท  ๋ฌธ๋งฅ ๊ตํ™˜ ์‹œ๊ฐ„: 1~10μs (์‹œ์Šคํ…œ ์‚ฌ์–‘์— ๋”ฐ๋ผ ์ฐจ์ด) → ์ดˆ๋‹น 10,000ํšŒ ๊ตํ™˜ ์‹œ 10ms(์ „์ฒด CPU ์‹œ๊ฐ„์˜ 1%) ์†Œ๋ชจ → ๊ณผ๋„ํ•œ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ์€ ์Šค๋ ˆ์‹ฑ(Thrashing) ์œ ๋ฐœ

  • ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…
  • ๋™์ผ ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ์Šค๋ ˆ๋“œ ๊ฐ„ ์ „ํ™˜์ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์Šค๋ ˆ๋“œ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋น„์šฉ์ด ์ ๊ฒŒ ๋“ฌ

3.2. ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋ง

์šด์˜์ฒด์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์Šค์ผ€์ค„๋งํ•œ๋‹ค.

์ฃผ์š” ์Šค์ผ€์ค„๋ง ์ „๋žต

  • Fair Share Scheduler: CPU ์‹œ๊ฐ„์„ ํ”„๋กœ์„ธ์Šค๋ณ„๋กœ ๊ท ๋“ฑ ๋ถ„๋ฐฐ
  • Completely Fair Scheduler(CFS): Linux ๊ธฐ๋ณธ ์Šค์ผ€์ค„๋Ÿฌ, ๊ฐ€์ค‘์น˜ ๊ธฐ๋ฐ˜ ๋ถ„๋ฐฐ
  • Real-Time Scheduler: ๋งˆ๊ฐ์‹œ๊ฐ„(Deadline) ์ค€์ˆ˜ ๋ณด์žฅ

์šฐ์„ ์ˆœ์œ„ ๊ฒฐ์ • ์š”์†Œ

  • ์ •์  ์šฐ์„ ์ˆœ์œ„: ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ช…์‹œ์  ์„ค์ • (์˜ˆ: RTOS)
  • ๋™์  ๋ณด์ •๊ฐ’:
    • I/O ์ง‘์•ฝ์  ์ž‘์—… → ์šฐ์„ ์ˆœ์œ„ ์ƒ์Šน
    • CPU ์ง‘์•ฝ์  ์ž‘์—… → ์šฐ์„ ์ˆœ์œ„ ํ•˜๋ฝ

์Šค์ผ€์ค„๋ง์„ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ 

  • ๋Œ€ํ™”ํ˜• ๋ฐ ์‹ค์‹œ๊ฐ„ ์Šค๋ ˆ๋“œ์— ์šฐ์„ ๊ถŒ ๋ถ€์—ฌ
  • ์ด์ „ ์—ํฌํฌ์—์„œ ์ถฉ๋ถ„ํ•œ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋ฐ›์ง€ ๋ชปํ•œ ์—ฐ์‚ฐ ์Šค๋ ˆ๋“œ์—๋„ ๊ธฐํšŒ ์ œ๊ณต
  • ์Šค๋ ˆ๋“œ ๊ธฐ์•„ ํ˜„์ƒ ๋ฐฉ์ง€

4. ํ”„๋กœ์„ธ์Šค vs ์Šค๋ ˆ๋“œ: ์–ธ์ œ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ ‘๊ทผ๋ฐฉ์‹์ด ์ข‹์€ ๊ฒฝ์šฐ

  • ์—ฌ๋Ÿฌ ์ž‘์—…์ด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•  ๋•Œ
  • ๋น ๋ฅธ ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ์ด ํ•„์š”ํ•  ๋•Œ
  • ํƒœ์Šคํฌ ๊ฐ„ ์ „ํ™˜์ด ์ž์ฃผ ์ผ์–ด๋‚˜์•ผ ํ•  ๋•Œ
  • ์˜ˆ์‹œ: ์›น ์„œ๋ฒ„(๋™์‹œ ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌ), ๊ฒŒ์ž„ ์—”์ง„(๋ฌผ๋ฆฌ/๋ Œ๋”๋ง ๋ณ‘๋ ฌํ™”)

๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ๊ฒฝ์šฐ

  • ๋ณด์•ˆ๊ณผ ์•ˆ์ •์„ฑ์ด ์ตœ์šฐ์„ ์ผ ๋•Œ
  • ๊ฒฐํ•จ ๊ฒฉ๋ฆฌ(Fault Isolation) ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ์ž‘์—…๋“ค์ด ์„œ๋กœ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ผ ๋•Œ
  • ์˜ˆ์‹œ: ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €(ํƒญ๋ณ„ ํ”„๋กœ์„ธ์Šค ๊ฒฉ๋ฆฌ)

5. ์ฃผ์˜ ์ 

  • ์Šค๋ ˆ๋“œ ํ’€(Thread Pool) ํ™œ์šฉ
    • ๊ณผ๋„ํ•œ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ๋ฐฉ์ง€
    • ์ผ๋ฐ˜์ ์œผ๋กœ (์ฝ”์–ด ์ˆ˜ * 2) ๊ถŒ์žฅ
  • Lock Contention ํšŒํ”ผ
    • Read-Write Lock, Atomic Operation ํ™œ์šฉ
  • False Sharing ๋ฌธ์ œ
    • ์„œ๋กœ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ธ์ ‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์œ„์น˜ํ•œ ๋ณ€์ˆ˜๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ˆ˜์ •ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ์ €ํ•˜ ํ˜„์ƒ
    • ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š์ง€๋งŒ, ํ•˜๋“œ์›จ์–ด์˜ ์บ์‹œ ๋ผ์ธ ์ตœ์ ํ™”๋กœ ์ธํ•ด ๋ถˆํ•„์š”ํ•œ ์บ์‹œ ๋ฌดํšจํ™”๊ฐ€ ๋ฐ˜๋ณต
    • ํ•ด๊ฒฐ ๋ฐฉ์•ˆ : ํ•„๋“œํŒจ๋”ฉ ์ถ”๊ฐ€, @Contended ์• ๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ, ์Šค๋ ˆ๋“œ ๋ณ„ ๋…๋ฆฝ ๊ฐ์ฒด ์‚ฌ์šฉํ•˜์—ฌ ์บ์‹œ ๊ฒฝ์Ÿ ์ œ๊ฑฐ, ๋ณ„๋„์˜ ํด๋ž˜์Šค๋กœ ๋ถ„ํ• 

 

 

์ฐธ๊ณ  ์ž๋ฃŒ :

Udemy - Java ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ, ๋ณ‘ํ–‰์„ฑ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™” - ์ „๋ฌธ๊ฐ€ ๋˜๊ธฐ 

https://www.geeksforgeeks.org/cpu-scheduling-in-operating-systems/

 

CPU Scheduling in Operating Systems - GeeksforGeeks

CPU scheduling is a critical operating system function that determines which process uses the CPU at any given time to optimize resource utilization and minimize waiting times through various algorithms like FCFS, SJF, and Round Robin.

www.geeksforgeeks.org

 

https://developer.chrome.com/docs/extensions/reference/api/processes?hl=ko#type-ProcessType

 

chrome.processes  |  API  |  Chrome for Developers

์ด ํŽ˜์ด์ง€๋Š” Cloud Translation API๋ฅผ ํ†ตํ•ด ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. chrome.processes ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š”. ์„ค๋ช… chrome.processes API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ

developer.chrome.com

728x90