Skip to content

Latest commit

ย 

History

History
367 lines (229 loc) ยท 14.2 KB

File metadata and controls

367 lines (229 loc) ยท 14.2 KB

์šด์˜์ฒด์ œ



ํ•œ์ปด์˜คํ”ผ์Šค 'ํ•œ๊ธ€'์„ ํด๋ฆญ ํ›„ ๋นˆ ํ™”๋ฉด์–ด ์ปค์„œ๊ฐ€ ๊นœ๋นก์ด๊ณ  ์žˆ๋‹ค. ์ด๋•Œ hello world๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ์–ด๋–ค์ผ์ด ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?

์˜ˆ๋น„ ๋‹ต์•ˆ ๋ณด๊ธฐ (๐Ÿ‘ˆ Click)
  • ํ‚ค๋ณด๋“œ์—์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด ๋“ค์–ด์˜ค๋ฉด ํ‚ค๋ณด๋“œ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ CPU์—๊ฒŒ ํ‚ค๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ ค์ค€๋‹ค.
  • CPU๋Š” ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ด๋˜ ์ž‘์—…์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ธํ„ฐ๋ŸฝํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด OS๋‚ด์— ์ •์˜๋œ ํ‚ค๋ณด๋“œ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์„ ์ฐพ์•„๊ฐ„๋‹ค.
  • ํ‚ค๋ณด๋“œ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์€ ํ‚ค๋ณด๋“œ๋กœ ๋ถ€ํ„ฐ ์ž…๋ ฅ๋ฐ›์€ ๋‚ด์šฉ์„ ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ๋ถ€๋ถ„์— ์ €์žฅํ•ด ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์ด ๋“ค์–ด์™”์Œ์„ ์•Œ๋ฆฌ๋ฉฐ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์™„๋ฃŒํ•œ๋‹ค.
  • ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ง์ „ ์ƒํƒœ๋ฅผ ๋ณต๊ตฌ์‹œ์ผœ ์ค‘๋‹จ๋˜์—ˆ๋˜ ์ž‘์—…์„ ์žฌ๊ฐœํ•œ๋‹ค.



Process์™€ Thread ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์„ธ์š”.

์˜ˆ๋น„ ๋‹ต์•ˆ ๋ณด๊ธฐ (๐Ÿ‘ˆ Click)
  • ๋จผ์ € ํ•œ๊ฐ€์ง€ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด๋ณด๋ฉด ํ•œ Server์—์„œ ๊ฐ™์€ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งค๋ฒˆ fork ํ•ด์„œ ๋งŒ๋“ ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ด๋Ÿฐ ์ƒํ™ฉ์ด ์กด์žฌํ•œ๋‹ค๋ฉด ๋งค๋ฒˆ ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋น„ํšจ์œจ์ ์ธ ๋ชจ์Šต์„ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. fork๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด PCB, ์ฃผ์†Œ๋ณต์‚ฌ ๋“ฑ๋“ฑ ํ•ด์ค„ ์ผ์ด ๋งŽ๋‹ค. ๊ทธ๋ž˜์„œ ๋“ฑ์žฅํ•œ๊ฒŒ ์“ฐ๋ ˆ๋“œ์ธ๋ฐ ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋…๋ฆฝ์ ์ธ ์ผ์„ ์ˆ˜ํ–‰ํ•ด์ค€๋‹ค.
  • ์“ฐ๋ ˆ๋“œ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์™€ ์Šคํƒ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋‘ ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋  ๊ฒฝ์šฐ ํ•œ๊ฐ€์ง€ ์“ฐ๋ ˆ๋“œ๊ฐ€ I/O๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ๋Š” ๋‹ค๋ฅธ์ผ์„ ํ•˜๋Š” ์‹์œผ๋กœ ์ผ์„ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์š”์ฆ˜๊ฐ™์ด multi-processor ํ™˜๊ฒฝ์„ ๊ฐ–์ถ˜ ์ƒํƒœ์—์„œ๋Š” ์“ฐ๋ ˆ๋“œ๋กœ ๊ฐ CPU์— ์ผ์„ ํ• ๋‹นํ•ด์„œ ์ˆ˜ํ–‰ํ•ด ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.



Process์™€ Program ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์„ธ์š”.

์˜ˆ๋น„ ๋‹ต์•ˆ ๋ณด๊ธฐ (๐Ÿ‘ˆ Click)
  • ์‹คํ–‰ ์ƒํƒœ์— ์žˆ๋Š” ๊ฒƒ์„ ํ”„๋กœ์„ธ์Šค
  • ํ•˜๋“œ๋””์Šคํฌ ์•ˆ์— ์žˆ๋Š” ๊ฒƒ์„ ํ”„๋กœ๊ทธ๋žจ



์ธํ„ฐ๋ŸฝํŠธ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”

์˜ˆ๋น„ ๋‹ต์•ˆ ๋ณด๊ธฐ (๐Ÿ‘ˆ Click)

Trap ์€ S/W์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ช…์นญ์œผ๋กœ ์•Œ๊ณ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋กœ System Call, Segmentation fault ๊ฐ™์€๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์ปจํŠธ๋กค ์”จ๋ฅผ ๋ˆ„๋ฅผ๋•Œ ์ฒ˜๋Ÿผ H/W์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ช…์นญ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ธํ„ฐ๋ŸฝํŠธ๋Š” ์žฅ์น˜ ๋‚ด์—์„œ ์˜ˆ์™ธ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. interrupt vector์— ๊ทธ๋Ÿฌํ•œ ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ๊ฐ€ ์˜ค๊ฒŒ ๋  ๋•Œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋™์ž‘์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋ฅผ ์ ์–ด๋†” ๊ด€๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฌด์กฐ๊ฑด ์šฐ์„ ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ

  • ๊ฐ์ข… ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋“ค์ด CPU์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ๋ฐ›์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ.
  • ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์„ ํ†ตํ•ด CPU์—๊ฒŒ ์ „๋‹ฌ

์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ

  • ํ”„๋กœ๊ทธ๋žจ์ด ์ž˜๋ชป๋œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ ์ด์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์˜ˆ์™ธ ์ƒํ™ฉ ์ฒ˜๋ฆฌ
  • ์ž์‹ ์ด ์ž‘์„ฑํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ๋ฅผ ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์„œ๋น„์Šค๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์‹œ์Šคํ…œ์ฝœ(์ด๋ฅผ ํŠธ๋žฉ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.)



DMA ์กด์žฌ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”

์˜ˆ๋น„ ๋‹ต์•ˆ ๋ณด๊ธฐ (๐Ÿ‘ˆ Click)
  • ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์—ฐ์‚ฐ์ด CPU์— ์˜ํ•ด์„œ๋งŒ ์ด๋ฃจ์–ด์งˆ ๊ฒฝ์šฐ ์ฃผ๋ณ€ ์žฅ์น˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์›ํ•  ๋•Œ๋งˆ๋‹ค ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ†ตํ•ด CPU ์—…๋ฌด๊ฐ€ ๋ฐฉํ•ด๋ฅผ ๋ฐ›๊ฒŒ ๋˜์–ด CPU์˜ ์‚ฌ์šฉ์˜ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • DMA๋Š” ์ผ์ข…์˜ ์ปจํŠธ๋กค๋Ÿฌ๋กœ์„œ CPU๊ฐ€ ์ฃผ๋ณ€ ์žฅ์น˜๋“ค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์š”์ฒญ์— ์˜ํ•ด ์ž์ฃผ ์ธํ„ฐ๋ŸฝํŠธ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • DMA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ์ปฌ ๋ฒ„ํผ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ฝ์–ด์˜ค๋Š” ์ž‘์—…์„ CPU๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, DMA๊ฐ€ ๋Œ€ํ–‰ํ•˜๋ฏ€๋กœ์„œ CPU๋Š” ์›๋ž˜ ํ•˜๋˜ ์ž‘์—…์„ ๋ฉˆ์ถ”๊ณ  ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง€๋Š” ๊ฒƒ์ด๋‹ค.



์šด์˜์ฒด์ œ๋Š” ๋‹ค์ค‘ ์œ ์ €๊ฐ€ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์˜ ์ž์›์„ ์‚ฌ์šฉํ•  ๋•Œ ์ž์›์˜ '๋ณดํ˜ธ'๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋– ํ•œ ๋ณดํ˜ธ๋ฅผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜๊ณ  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์„ค๋ช…ํ•˜์„ธ์š”

์˜ˆ๋น„ ๋‹ต์•ˆ ๋ณด๊ธฐ (๐Ÿ‘ˆ Click)

ํฌ๊ฒŒ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[1] ์ž…์ถœ๋ ฅ์žฅ์น˜ ๋ณดํ˜ธ

  • A๊ฐ€ ํ”„๋ฆฐํ„ฐ์— ์ธ์‡„๋ฅผ ์š”์ฒญํ•˜์—ฌ ํ”„๋ฆฐํ„ฐ๊ฐ€ A์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์ผ ๋•Œ B๊ฐ€ ํ”„๋ฆฐํ„ฐ ์š”์ฒญ์„ ํ•˜๋ฉด A์˜ ์ž‘์—… ์ดํ›„์— B์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์™€ ๊ด€๊ณ„๋œํŠน๊ถŒ ๋ช…๋ น(in, out) ๋ช…๋ น์€ ์—ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์šด์˜์ฒด์ œ๊ฐ€ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

[2] ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ

  • A๊ฐ€ ์‹คํ–‰ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” B๊ฐ€ ์‹คํ–‰ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰์Šต๋‹ˆ๋‹ค.
  • CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์— MMU(Memory Management Unit)๋‘์–ด์„œ base, limit ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์„ ์ฝ์–ด์„œ ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ๋ถ€๋ถ„์„ ๋„˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

[3] CPU ๋ณดํ˜ธ

  • while ( n = 1) ๊ณผ ๊ฐ™์ด ์‹ค์ˆ˜ ํ˜น์€ ๊ณ ์˜๋กœ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์‹œ๊ฐ„์„ ๋…์ ํ•˜๋Š” ์ผ์„ ๋ฐฉ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ์ • ์ฃผ๊ธฐ๋กœ CPU์—๊ฒŒ ํƒ€์ด๋จธ๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ฑธ๋„๋ก ํšŒ๋กœ๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ฑธ๋ฉด CPU๋Š” ์ง€๊ธˆ ํ•˜๋Š” ์ผ์„ ๋ฉˆ์ถ”๊ณ  ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ์—๋Š” CPU ์‹œ๊ฐ„์ด ๋‹ค๋ฅธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๊ณจ๊ณ ๋ฃจ ๊ฐ€๋Š”์ง€, ํ•œ ๋†ˆ์—๊ฒŒ ์ง‘์ค‘๋˜๋Š”์ง€ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.



synchronized์— ๋Œ€ํ•ด ์•„๋Š” ๋ฐ”๋ฅผ ์ „๋ถ€ ์ด์•ผ๊ธฐํ•˜์„ธ์š”.

์˜ˆ๋น„ ๋‹ต์•ˆ ๋ณด๊ธฐ (๐Ÿ‘ˆ Click)

Topic

  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ์ƒํ™ฉ์˜ ์ œ์–ด๋ฅผ ์œ„ํ•ด synchronized๋ฅผ ์ ๊ทน ํ™œ์šฉ.
  • ์–ด๋–ค ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ƒํ™ฉ์ด์—ˆ๋Š”์ง€, ์™œ synchronized๋ฅผ ์ผ๋Š”์ง€, synchronized๊ฐ€ mutex๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•˜๋Š”์ง€
  • ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€, ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์—†์—ˆ๋Š”์ง€, ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๊ณผ synchronized๋ฅผ ๋น„๊ตํ–ˆ์„ ๋•Œ์˜ ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ธ์ง€,
  • ํŠน์ • ์ƒํ™ฉ์„ ์ œ์‹œํ•œ ๋’ค ์ด ๊ฒฝ์šฐ๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ์ ์šฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ธ์ง€



ํ•จ์ˆ˜ํ˜ธ์ถœ๊ณผ ์‹œ์Šคํ…œ ์ฝœ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.

์˜ˆ๋น„ ๋‹ต์•ˆ ๋ณด๊ธฐ (๐Ÿ‘ˆ Click)
  • ํ•จ์ˆ˜ํ˜ธ์ถœ : ์ž์‹ ์ด ์ž‘์„ฑํ•œ ํ•จ์ˆ˜ ํ˜น์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ €์žฅ๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ
  • ์‹œ์Šคํ…œ ์ฝœ : ์šด์˜์ฒด์ œ์— ์ •์˜๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ



์ธํ„ฐ๋ŸฝํŠธ์™€ ์‹œ์Šคํ…œ ์ฝœ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.

์ฝ๊ธฐ์ž๋ฃŒ ๋ณด๊ธฐ (๐Ÿ‘ˆ Click)



์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.

์˜ˆ๋น„๋‹ต์•ˆ ๋ณด๊ธฐ (๐Ÿ‘ˆ Click)

์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ฃผ์ œ๋Š” ๋ฉด์ ‘์—์„œ ์ •๋ง ์ค‘์š”ํ•œ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. L์‚ฌ์˜ ๊ฒฝ์šฐ ์–ผ๋งˆ๋‚˜ ์จ๋ดค๋Š”์ง€ ๊ผฌ๋ฆฌ ์งˆ๋ฌธ์œผ๋กœ ๋“ฑ์žฅํ•œ ์ „๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์•ฝ ๊ธ€๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. C์ˆ˜์ค€์ด ์•„๋‹ˆ๋”๋ผ๋„ Java, Python ์–ธ์–ด ๋ ˆ๋ฒจ์—์„œ ๋Œ๋ ค๋ณด๋ฉด์„œ ์‚ดํŽด๋ณผ๋ฒ•ํ•œ ์ค‘์š”ํ•œ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•˜๊ฒŒ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด Covenant. ํŒŒ์ด์ฌ ์ฝ”๋“œ๋กœ ๋ณด๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”!

  • ์Šค๋ ˆ๋“œ

    • ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์‹คํ–‰ ํ๋ฆ„ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.
    • ์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ, CPU ๋“ฑ์˜ ์ž์›์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • Stack๋งŒ ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋ฉฐ Code, Data, Heap์€ ์“ฐ๋ ˆ๋“œ๊ฐ„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
    • ์Šค๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ ๋””๋ฒ„๊น…์ด ์–ด๋ ต๊ธฐ์— ๋™๊ธฐํ™” ๋ฌธ์ œ๋Š” ์ฃผ์˜ํ•ด์„œ ๊ตฌํ˜„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ

    • ํ•œ ๊ฐœ์˜ ๋‹จ์ผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(์‘์šฉํ”„๋กœ๊ทธ๋žจ)์€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌ์„ฑ ํ›„ ์ž‘์—… ์ฒ˜๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
    • ํ•œ๊ธ€์—์„œ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ”„๋ฆฐํŠธ๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์„œ ์ˆ˜์ •์€ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ณ ๋น„์šฉ์ž…๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์‹œ์Šคํ…œ ์ž์› ์†Œ๋ชจ ๊ฐ์†Œ ๋ฐ ์ฒ˜๋ฆฌ๋Ÿ‰ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์Šค๋ ˆ๋“œ๋Š” ์ด๋ฏธ ๊ณต์œ ํ•˜๊ณ  ์žˆ๊ธฐ์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ์ƒ๊ธธ ํ†ต์‹  ๋ถ€๋‹ด์ด ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋””๋ฒ„๊น…์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ž์› ๊ณต์œ  ๋ฌธ์ œ(์ผ๋ช… ๊ต์ฐฉ์ƒํƒœ)๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.



Deadlock์˜ ๋ฐœ์ƒ ์กฐ๊ฑด๊ณผ Decklock์„ ๊นจ๊ธฐ ์œ„ํ•ด์„œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋‚˜์š”?

์˜ˆ๋น„๋‹ต์•ˆ ๋ณด๊ธฐ (๐Ÿ‘ˆ Click)

๋ฐ๋“œ๋ฝ์ด๋ž€?

  • ๋‘˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ)๊ฐ€ ๊ณต์œ  ์ž์›์„ ํš๋“ํ•˜์ง€ ๋ชปํ•ด ๋” ์ด์ƒ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๊ณ  ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ ค์•ผํ•˜๋Š” ์ƒํ™ฉ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ์กฐ๊ฑด

๋‹ค์Œ ๋„ค๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•ด์•ผ Deadlock์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ์ƒํ˜ธ๋ฐฐ์ œ(Mutual exclusion)
    • (1) ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  (2) ๊ฐœ์ˆ˜๊ฐ€ ์ œํ•œ์ ์ด๋ผ๋ฉด ์ƒํ˜ธ๋ฐฐ์žฌ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.
    • ์ƒํ˜ธ๋ฐฐ์ œ ์ƒํ™ฉ ์˜ˆ์‹œ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ, ์„ธ๋งˆํฌ์–ด
  • ์ž ๊ธˆ & ๋Œ€๊ธฐ(Lock & Wait)
    • ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ์ ์œ ํ•˜๋ฉด ์ž‘์—…์„ ๋งˆ์น ๋•Œ๊นŒ์ง€ ์ด๋ฏธ ์ ์œ ํ•œ ์ž์›์„ ๋‚ด๋†“์ž๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ์  ๋ถˆ๊ฐ€(No Preemption)
    • ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ์ž์›์„ ๋นผ์•—์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ์ž์›์„ ์ ์œ ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ๋‚ด๋†“์•„์•ผ์ง€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ˆœํ™˜ ๋Œ€๊ธฐ(Circular wait)
    • ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•„์š”ํ•œ ์ž์›์ด ์„œ๋กœ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์— ์žˆ๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.
    • ๊ทธ๋ž˜ํ”„๋กœ ๊ทธ๋ฆด์‹œ ์›ํ˜•์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.
    • ์ฃฝ์Œ์˜ ํฌ์˜น(deadly embrace)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ๋“œ๋ฝ์„ ๊นจ๋Š” ๋ฐฉ๋ฒ•

  • ์ƒํ˜ธ๋ฐฐ์ œ ํ”ผํ•˜๋Š” ๋ฒ•
    • ๋™์‹œ์— ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์€ ์ž์›์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์ž์›์˜ ์ˆ˜๋ฅผ ์Šค๋ ˆ๋“œ ์ˆ˜ ์ด์ƒ์œผ๋กœ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.
    • ์ž์›์„ ์ ์œ ํ•˜๊ธฐ ์ „ ํ•„์š”ํ•œ ์ž์›์ด ๋ชจ๋‘ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์ž ๊ธˆ & ๋Œ€๊ธฐ ํ”ผํ•˜๋Š” ๋ฒ•
    • ๋Œ€๊ธฐ ํ•˜์ง€ ์•Š๋Š” ์ „๋žต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์ž์›์„ ์ ์œ ํ•˜๊ธฐ ์ „์— ํ•„์š”ํ•œ ์ž์›์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ž์›์ด ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์ž์›์„ ๋ชจ๋‘ ๋‚ด๋†“์Šต๋‹ˆ๋‹ค.
    • ๋ฌธ์ œ์ 
      • ๊ธฐ์•„(Starvation): ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณ„์†ํ•ด์„œ ํ•„์š”ํ•œ ์ž์›์„ ์ ์œ ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์ ์œ ํ•˜๊ณ ์ž ํ•˜๋Š” ์ž์›์ด ํ•œ ๋ฒˆ์— ํš๋“ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ ์ด ์ƒํ™ฉ์ด ๋‘๋“œ๋Ÿฌ์ง‘๋‹ˆ๋‹ค.
      • ๋ผ์ด๋ธŒ๋ฝ(Livelock): ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๊ธฐ์— ์ž์›์„ ํš๋“ํ–ˆ๋‹ค๊ฐ€ ๋‚ด๋†“๋Š” ์ƒํ™ฉ์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ์  ๋ถˆ๊ฐ€ ํ”ผํ•˜๋Š” ๋ฒ•
    • ์ž์›์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์˜ ์ž์›์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
    • ์ž์›์ด ํ•„์š”ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ์†Œ์œ ํ•œ ์Šค๋ ˆ๋“œ์—๊ฒŒ ์ž์›์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
    • ์ž์›์„ ์†Œ์œ ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค๋ฉด ์ž์‹ ์ด ์†Œ์œ ํ•œ ์ž์›์„ ๋ชจ๋‘ ํ’€์–ด์ฃผ๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์ˆœํ™˜ ๋Œ€๊ธฐ ํ”ผํ•˜๋Š” ๋ฒ•
    • ๋ฐ๋“œ๋ฝ ๋ฐฉ์ง€ํ•˜๋Š” ํ”ํ•œ ์ „๋ ฅ์ž…๋‹ˆ๋‹ค.
    • ์Šค๋ ˆ๋“œ์—๊ฒŒ ์ˆœ์„œ๋Œ€๋กœ ์ž์›์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ํ˜น์€ ์ž์›๋“ค์— ์ˆœ์„œ๋ฅผ ์ค€ ๋’ค์— ๊ฐ ์Šค๋ ˆ๋“œ๋“ค์ด ์ž์›์„ ์š”์ฒญํ•  ๋•Œ ์šฐ์„ ๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์š”์ฒญํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ ์ž์›๋ณด๋‹ค ์šฐ์„ ๋„๊ฐ€ ํฐ ์ž์›์„ ์ „๋ถ€ ํ•ด์ œํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ž์› ์š”์ฒญ์„ ํ—ˆ๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ๋ฌธ์ œ์ 
      • ์ž์›์˜ ํ• ๋‹น ์ˆœ์„œ์™€ ์‚ฌ์šฉ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ž์›์— ์ˆœ์„œ๋ฅผ ํ• ๋‹นํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.




Virtual Memory์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ๊ณ  ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์žฅ์ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.

๋‹ต์•ˆ ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.




Page Fault๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”

๋‹ต์•ˆ ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.




OS์—์„œ ํ”„๋กœ์„ธ์Šค๋Š” CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์— MMU(Memory Management Unit)๋ฅผ ๋‘์–ด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์ ‘๊ทผํ• ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ GDB์™€ ๊ฐ™์€ ๋””๋ฒ„๊ฑฐ์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์ ‘๊ทผํ•˜์—ฌ ์ ˆ๋Œ€์  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์™€ ๊ฐ’์„ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•œ์ง€ ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.

๋‹ต์•ˆ ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.




์ด์ค‘๋ชจ๋“œ์˜ ํŠน์ง•๊ณผ ์žฅ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”

๋‹ต์•ˆ ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.




์ž„๊ณ„๊ตฌ์—ญ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค

๋‹ต์•ˆ ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.




System Call์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”

๋‹ต์•ˆ ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.




64๋น„ํŠธ์™€ 32๋น„ํŠธ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๋‹ต์•ˆ ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.




๋งˆ์šฐ์Šค๋กœ ํ•œ๊ธ€ ๋ฐ”๋กœ๊ฐ€๊ธฐ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ปดํ“จํ„ฐ์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ชจ๋“  ์ผ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.

Points: Interrupt, Process Scheduling, Disk Scheduling, Swapping, Thread

๋‹ต์•ˆ ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.





์šฉ๊ฐํ•œ ์นœ๊ตฌ๋“ค with ๋‚จ์†ก๋ฆฌ ์‚ผ๋ฒˆ์ง€