Operating System
Computer Science of Operating System

Operating System

๐Ÿ‘‰ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ž์›๋“ค์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ๋ฆฌํ•˜๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด


Process โœ”๏ธ

๐Ÿ‘‰ ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ์ž์›(์ฃผ์†Œ ๊ณต๊ฐ„, ํŒŒ์ผ, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ)์„ ํ• ๋‹น๋ฐ›๋Š” ์ž‘์—…์˜ ๋‹จ์œ„
๐Ÿ‘‰ ๊ฐ๊ฐ์˜ ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(Code, Data, Heap, Stack)์„ ํ• ๋‹น๋ฐ›์Œ
๐Ÿ‘‰ ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ• ๋‹น๋ฐ›๊ธฐ์— ์•ˆ์ •์„ฑ์ด ๋†’๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Œ
๐Ÿ‘‰ ์ž‘์—…๋Ÿ‰์ด ๋งŽ์„์ˆ˜๋ก ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ
๐Ÿ‘‹ ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ณ€์ˆ˜๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ์— ์ ‘๊ทผํ•  ์ˆ˜ X
ใ€€ใ€€๐Ÿ‘‹ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„  ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC) ์‚ฌ์šฉ
๐Ÿ‘‹ ํ”„๋กœ์„ธ์Šค๋Š” ์ตœ์†Œ ํ•œ ๊ฐœ์˜ Thread๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ


ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(PCB) โœ”๏ธ

๐Ÿ‘‰ ํŠน์ • ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์šด์˜์ฒด์ œ์˜ ์ž๋ฃŒ๊ตฌ์กฐ
ใ€€ใ€€๐Ÿ‘‰ ์ €์žฅ ์ด์œ  : ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•จ
ใ€€ใ€€๐Ÿ‘‹ ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ๊ณ ์œ ํ•œ PCB๋ฅผ ์ƒ์„ฑ
ใ€€ใ€€๐Ÿ‘‹ ํ”„๋กœ์„ธ์Šค ์‹๋ณ„์ž, ํ”„๋กœ์„ธ์Šค ์ƒํƒœ, CPU ๋ ˆ์ง€์Šคํ„ฐ, CPU ์Šค์ผ€์ฅด๋ง ์ •๋ณด, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ณด ๋“ฑ


ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC)

๐Ÿ‘‰ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ
ใ€€ใ€€๐Ÿ‘‹ Message Passing : ์ปค๋„์ด memory protection์„ ์œ„ํ•ด ๋Œ€๋ฆฌ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๊ฒƒ, ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€์ง€๋งŒ ๋™๊ธฐํ™” ๋ฌธ์ œ ๋ฐœ์ƒ X
ใ€€ใ€€๐Ÿ‘‹ Shared Memory : ๋‘ ํ”„๋กœ์„ธ์Šค๊ฐ„์˜ ๊ณต์œ ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ƒ์„ฑ ํ›„ ์ด์šฉํ•˜๋Š” ๊ฒƒ, ์„ฑ๋Šฅ์ด ์ข‹์ง€๋งŒ ๋™๊ธฐํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ


Thread โœ”๏ธ

๐Ÿ‘‰ ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ์ž‘์—… ํ๋ฆ„์˜ ๋‹จ์œ„
๐Ÿ‘‰ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๋น„์šฉ๋ณด๋‹ค ์Šค๋ ˆ๋“œ ๊ฐ„ ํ†ต์‹  ๋น„์šฉ์ด ์ ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Œ
๐Ÿ‘‰ ์˜ค๋ฅ˜๋กœ ์ธํ•˜์—ฌ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ ์‹œ ์ „์ฒด ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ
๐Ÿ‘‹ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์Šคํƒ๊ณผ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋”ฐ๋กœ ํ• ๋‹น
๐Ÿ‘‹ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ํž™, ์—ด๋ฆฐ ํŒŒ์ผ์ด๋‚˜ ์‹ ํ˜ธ์™€ ๊ฐ™์€ ์šด์˜์ฒด์ œ ์ž์›์„ ๊ณต์œ 
ใ€€ใ€€๐Ÿ‘‹ ์Šคํƒ์€ ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ํ๋ฆ„์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ์กฐ๊ฑด
ใ€€ใ€€โœ‹ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ด๋ฅผ ๊ณต์œ ํ•  ๊ฒฝ์šฐ LIFO ๊ตฌ์กฐ์— ์˜ํ•ด ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ๋งค์šฐ ๋ณต์žก
ใ€€ใ€€๐Ÿ‘‹ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๊ฐ๊ฐ ๋ช…๋ น์–ด์˜ ์–ด๋””๊นŒ์ง€ ์‹คํ–‰ํ–ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด


Thread pool

๐Ÿ‘‰ ์ผ์ •๋Ÿ‰์˜ Thread๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด pool์— ์ €์žฅํ•˜๋Š” ๊ธฐ๋ฒ•
๐Ÿ‘‹ ํ”„๋กœ๊ทธ๋žจ ์š”์ฒญ์‹œ Thread๋ฅผ ํ• ๋‹นํ•ด์ฃผ๊ณ , ์ž„๋ฌด ์™„๋ฃŒ์‹œ ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•˜์—ฌ pool์— ์ €์žฅ
๐Ÿ‘‹ ๋ถˆํ•„์š”ํ•˜๊ฒŒ Thread๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ญ์ œํ•˜๋Š” ์ผ์ด ์‚ฌ๋ผ์ ธ์„œ ์ด์™€ ๊ด€๋ จ๋œ ๋น„์šฉ์„ ์ค„์—ฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€์ด ๋จ
๐Ÿ‘‹ But, ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๊ณ„์† ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น์„ ํ•ด๋†“์œผ๋ฏ€๋กœ Memory leak ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ


์™œ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๋Œ€์‹  ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉ? โœ”๏ธ

๐Ÿ‘‹ ์—ฌ๋Ÿฌ ์ž‘์—…์˜ ํ๋ฆ„์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ณตํ†ต์ 
๐Ÿ‘‹ ํ”„๋กœ๊ทธ๋žจ์„ ์—ฌ๋Ÿฌ ๊ฐœ ํ‚ค๋Š” ๊ฒƒ ๋ณด๋‹ค ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ
๐Ÿ‘‰ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ๋ณด๋‹ค ์Šค๋ ˆ๋“œ ๊ฐ„ ํ†ต์‹  ๋น„์šฉ์ด ์ ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๋Œ€์‹  ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉ
๐Ÿ‘‰ ๋˜ํ•œ, ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹นํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด ์ค„์–ด๋“ค์–ด ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ
โš ๏ธ But, ์ „์—ญ๋ณ€์ˆ˜๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์ถฉ๋Œํ•˜๋Š” ๋™๊ธฐํ™” ๋ฌธ์ œ์™€ ์˜ค๋ฅ˜๋กœ ์ธํ•˜์—ฌ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ ์‹œ ์ „์ฒด ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ฃผ์˜


Context โœ”๏ธ

๐Ÿ‘‰ CPU๊ฐ€ ๋‹ค๋ฃจ๋Š” ํ•ด๋‹น Task(Process or Thread)์— ๋Œ€ํ•œ ์ •๋ณด
๐Ÿ‘‹ ๋Œ€๋ถ€๋ถ„์˜ ์ •๋ณด๋Š” Register์— ์ €์žฅ๋˜๋ฉฐ PCB๋กœ ๊ด€๋ฆฌ


Context Switching โœ”๏ธ

๐Ÿ‘‰ ํ•˜๋‚˜์˜ Task๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ Task๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด, ์ด์ „์˜ Task์˜ Context๋ฅผ ์ €์žฅํ•˜๊ณ  ์ƒˆ๋กœ์šด Task์˜ Context๋ฅผ ์ ์žฌํ•˜๋Š” ์ž‘์—…
๐Ÿ‘‹ Process์™€ Thread๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” Context Switching์€ ์กฐ๊ธˆ ๋‹ค๋ฆ„
ใ€€ใ€€๐Ÿ‘‹ Process๋Š” OS์— ์˜ํ•ด ์Šค์ผ€์ฅด๋ง ๋˜๋Š” PCB๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ
ใ€€ใ€€๐Ÿ‘‹ Thread๋Š” Process๋‚ด์˜ TCB(Thread Control Block)๋ผ๋Š” ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ


Context Switching OverHead

๐Ÿ‘‰ CPU์— ๊ณ„์† ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  Context Switching์„ ํ•˜๋Š” ๊ฒƒ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜๋ฏธ
โœ‹ CPU๊ฐ€ ๋†€์ง€ ์•Š๋„๋ก ๋งŒ๋“ค๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ๋น ๋ฅด๊ฒŒ ์ผ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ๋ชฉ์ 


Thread-safe โœ”๏ธ

๐Ÿ‘‰ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํ•˜๋‚˜์˜ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•ด๋„ ๋ฌธ์ œ ์—†์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ
๐Ÿ‘‰ how?
ใ€€ใ€€๐Ÿ‘‰ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ์ž„๊ณ„ ์˜์—ญ์„ ๋™๊ธฐํ™” ๊ธฐ๋ฒ•์œผ๋กœ ์ œ์–ดํ•ด์•ผ ํ•จ
ใ€€ใ€€๐Ÿ‘‹ ๋ฎคํ…์Šค, ์„ธ๋งˆํฌ์–ด, ๋ชจ๋‹ˆํ„ฐ
๐Ÿ‘‹ ์ž„๊ณ„ ๊ตฌ์—ญ : ๋‘˜ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ์ฝ”๋“œ์˜ ์ผ๋ถ€ ์˜์—ญ์„ ์˜๋ฏธ
๐Ÿ‘‹ Race Condition(๊ฒฝ์Ÿ ์ƒํƒœ) : ๋‘ ๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๋“ค์ด ๊ณต์œ ๋œ ์ž์›์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์—†์ด ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ƒํ™ฉ


๋ฎคํ…์Šค ๐Ÿ†š ์„ธ๋งˆํฌ์–ด โœ”๏ธ

๐Ÿ‘‹ ๋™๊ธฐํ™” ๊ธฐ๋ฒ• : ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํ•˜๋‚˜์˜ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•
๐Ÿ‘‰ ๋ฎคํ…์Šค
ใ€€ใ€€๐Ÿ‘‰ ์˜ค์ง ํ•œ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค or ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•
ใ€€ใ€€๐Ÿ‘‰ ๋™๊ธฐํ™” ๋Œ€์ƒ์ด ์˜ค์ง ํ•˜๋‚˜์ผ ๋•Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ฒ•
ใ€€ใ€€๐Ÿ‘‰ ๋ฝ์„ ํš๋“ํ•œ ํ”„๋กœ์„ธ์Šค or ์Šค๋ ˆ๋“œ๋งŒ ๊ทธ ๋ฝ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Œ
๐Ÿ‘‰ ์„ธ๋งˆํฌ์–ด
ใ€€ใ€€๐Ÿ‘‰ ์„ธ๋งˆํฌ์–ด ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ’ ๋งŒํผ ํ”„๋กœ์„ธ์Šค or ์Šค๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•
ใ€€ใ€€ใ€€ใ€€๐Ÿ‘‹ wait() : ํ”„๋กœ์„ธ์Šค or ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ (๋ณ€์ˆ˜-1)
ใ€€ใ€€ใ€€ใ€€๐Ÿ‘‹ signal() : ํ”„๋กœ์„ธ์Šค or ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ๋ฐ˜๋‚ฉํ•  ๊ฒฝ์šฐ (๋ณ€์ˆ˜+1)
ใ€€ใ€€ใ€€ใ€€โœ‹ ์ดˆ๊ธฐ ๋ณ€์ˆ˜ ๊ฐ’ : ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž์›์˜ ๊ฐœ์ˆ˜
ใ€€ใ€€๐Ÿ‘‰ ๋™๊ธฐํ™” ๋Œ€์ƒ์ด ํ•˜๋‚˜ ์ด์ƒ์ผ ๋•Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ฒ•
ใ€€ใ€€๐Ÿ‘‰ ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ด ์•„๋‹Œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค or ์Šค๋ ˆ๋“œ๊ฐ€ ์„ธ๋งˆํฌ์–ด๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Œ


DeadLock(๊ต์ฐฉ ์ƒํƒœ) โœ”๏ธ

๐Ÿ‘‰ ๋‘˜ ์ด์ƒ์˜ Task๋“ค์ด ์ž์›์„ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ Task๊ฐ€ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ์š”๊ตฌํ•˜๋ฉฐ ๋ฌดํ•œํžˆ ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ์— ๋น ์ง„ ํ˜„์ƒ
๐Ÿ‘‰ ๊ต์ฐฉ์ƒํƒœ 4๊ฐ€์ง€ ์กฐ๊ฑด
ใ€€ใ€€๐Ÿ‘‰ ์ƒํ˜ธ ๋ฐฐ์ œ : ํ•œ ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋‹จ ํ•˜๋‚˜์˜ Task๋กœ ์ œํ•œ
ใ€€ใ€€๐Ÿ‘‰ ์ ์œ  ๋Œ€๊ธฐ : ์ž์›์„ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” Task๊ฐ€ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์–‘๋ณดํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์š”๊ตฌ ๊ฐ€๋Šฅ
ใ€€ใ€€๐Ÿ‘‰ ์„ ์ทจ ๋ถˆ๊ฐ€๋Šฅ : ํ•œ Task๊ฐ€ ๋‹ค๋ฅธ Task์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ•์ œ๋กœ ์ทจ์†Œํ•  ์ˆ˜ ์—†์Œ
ใ€€ใ€€๐Ÿ‘‰ ์ˆœํ™˜ ๋Œ€๊ธฐ : ๊ฐ Task๊ฐ€ ์ˆœํ™˜์ ์œผ๋กœ ๋‹ค์Œ Task๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์ž์›์„ ๊ฐ–๊ณ  ์žˆ์Œ
๐Ÿ‘‰ ๊ต์ฐฉ์ƒํƒœ ์˜ˆ๋ฐฉ
ใ€€ใ€€๐Ÿ‘‰ 4๊ฐœ์˜ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๋จ
ใ€€ใ€€๐Ÿ‘‰ 1๋ฒˆ ์กฐ๊ฑด์€ ์ œ๊ฑฐํ•˜๊ธฐ ํž˜๋“ค๋ฉฐ ๋ณดํ†ต 4๋ฒˆ ์กฐ๊ฑด์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ดˆ์ ์„ ๋งž์ถค
ใ€€ใ€€๐Ÿ‘‰ ์ž์›์— ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹น, ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์ž์›์„ ์š”๊ตฌํ•˜๋„๋ก ํ•จ
๐Ÿ‘‰ ๊ต์ฐฉ์ƒํƒœ ํšŒํ”ผ
ใ€€ใ€€๐Ÿ‘‰ ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ
ใ€€ใ€€ใ€€ใ€€๐Ÿ‘‰ ์šด์˜์ฒด์ œ๊ฐ€ ์•ˆ์ „ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์š”๊ตฌ๋งŒ์„ ์ˆ˜๋ฝํ•˜๊ณ  ๋ถˆ์•ˆ์ „ ์ƒํƒœ๋ฅผ ์ดˆ๋ž˜ํ•  ์š”๊ตฌ๋Š” ๋‚˜์ค‘์— ์•ˆ์ „ ์ƒํƒœ๋ฅผ ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์† ๊ฑฐ์ ˆํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
ใ€€ใ€€๐Ÿ‘‰ ์•ˆ์ „ ์ƒํƒœ : ์‹œ์Šคํ…œ์— ๊ต์ฐฉ์ƒํƒœ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š์œผ๋ฉด์„œ ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ์š”๊ตฌ๋Ÿ‰ ๋งŒํผ ์ž์›์„ ํ• ๋‹นํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ, ์ฆ‰, ์•ˆ์ „ ์ˆœ์„œ์—ด์ด ์กด์žฌํ•˜๋Š” ์ƒํƒœ
ใ€€ใ€€๐Ÿ‘‰ ๋ถˆ์•ˆ์ „ ์ƒํƒœ : ์•ˆ์ „ ์ˆœ์„œ์—ด์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ


์Šค์ผ€์ฅด๋Ÿฌ

๐Ÿ‘‰ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ž์›์„ ํ• ๋‹นํ•  ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์šด์˜์ฒด์ œ์˜ ์ปค๋„ ๋ชจ๋“ˆ


์Šค์ผ€์ฅด๋ง ์ •์˜์™€ ๋ชฉ์ 

๐Ÿ‘‰ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ž์›์„ ํ• ๋‹นํ•  ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์ž‘์—…
๐Ÿ‘‰ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•จ


์Šค์ผ€์ฅด๋ง ๋‹จ๊ณ„

๐Ÿ‘‰ ์žฅ๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ์— ์˜ํ•ด ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ํ์— ์‚ฝ์ž…๋  ์ง€๋ฅผ ๊ฒฐ์ •
๐Ÿ‘‰ ๋‹จ๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ๋Š” ์Šค์ผ€์ฅด๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ CPU๋ฅผ ํ• ๋‹นํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒ
๐Ÿ‘‰ ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค๋Š” running ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ์ž‘์—…์ด ๋๋‚˜๋ฉด terminated ์ƒํƒœ๊ฐ€ ๋จ
๐Ÿ‘‰ ์ค‘๊ธฐ ์Šค์ผ€์ฅด๋Ÿฌ๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋™์‹œ์— ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ์กฐ์ ˆ
๐Ÿ‘‹ ์ค€๋น„ ํ : ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์žˆ์œผ๋ฉด์„œ CPU์— ์˜ํ•ด ์‹คํ–‰๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ


์„ ์ ํ˜• ์Šค์ผ€์ฅด๋ง(Preemptive Scheduling)

๐Ÿ‘‰ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ์–ด๋„ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ค๋ฉด CPU๋ฅผ ๋นผ์•—์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹
๐Ÿ‘‹ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Œ
๐Ÿ‘‹ ์žฆ์€ Context Switching์œผ๋กœ Overhead๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์Œ
๐Ÿ‘‹ RR, SRT, MLQ


๋น„์„ ์ ํ˜• ์Šค์ผ€์ฅด๋ง(Non-Preemptive Scheduling)

๐Ÿ‘‰ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๋นผ์•—์ง€ ๋ชปํ•˜๋Š” ๋ฐฉ์‹
๐Ÿ‘‹ ์ค‘๊ฐ„์— ๊ฐ€๋กœ์ฑ„์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‘๋‹ต ์‹œ๊ฐ„ ์˜ˆ์ธก์ด ์šฉ์ดํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Œ
๐Ÿ‘‹ ์ค‘์š”ํ•œ ์ž‘์—…์ด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ
๐Ÿ‘‹ FIFO, SJF, HRN


FIFO, FCFS(First Come First Served) ์Šค์ผ€์ฅด๋ง

๐Ÿ‘‰ ๋จผ์ € ์˜จ ํ”„๋กœ์„ธ์Šค ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹
ใ€€ใ€€๐Ÿ‘‹ ์ค‘์š”ํ•œ ์ž‘์—…์ด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ์Œ


SJF(Shortest Job First) ์Šค์ผ€์ฅด๋ง

๐Ÿ‘‰ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋„์ฐฉํ–ˆ์–ด๋„ CPU ์š”๊ตฌ๋Ÿ‰์ด ๊ฐ€์žฅ ์ ์€ ๊ฒƒ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹
ใ€€ใ€€๐Ÿ‘‹ ์ด๋Š” ์ตœ์ ์ด๋ฉฐ, ํšจ์œจ์„ฑ์„ ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•˜์ง€๋งŒ ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ์ฐจ๋ณ„๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
ใ€€ใ€€โœ‹ ์ฆ‰, CPU ์š”๊ตฌ๋Ÿ‰์ด ํฐ ํ”„๋กœ์„ธ์Šค๋Š” ๊ฑฐ์˜ ์˜์›ํžˆ CPU ํ• ๋‹น์„ ๋ฐ›์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ


Round Robin ์Šค์ผ€์ฅด๋ง

๐Ÿ‘‰ ํ• ๋‹น๋œ ์‹œ๊ฐ„ ์•ˆ์— ์ž‘์—…์ด ๋๋‚˜์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” ์ค€๋น„ ํ์— ๋“ค์–ด๊ฐ€๋Š” FIFO ๋ฐฉ์‹
๐Ÿ‘‹ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ™์€ ํฌ๊ธฐ์˜ CPU ์‹œ๊ฐ„์„ ํ• ๋‹น๋ฐ›๊ฒŒ ๋จ
๐Ÿ‘‹ ์Šค์ผ€์ฅด๋ง ๋ฐฉ์‹ ์ค‘ ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ ์„ ์ ํ˜• ์Šค์ผ€์ฅด๋ง
โœ‹ ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ : CPU ์Šค์ผ€์ฅด๋ง๊ณผ ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ด์šฉํ•ด์„œ ๊ฐ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ปดํ“จํ„ฐ ์ž์›์„ ์‹œ๊ฐ„์ ์œผ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋Œ€ํ™”์‹ ์‹œ์Šคํ…œ


๊ธฐ์•„ ์ƒํƒœ(starvation)

๐Ÿ‘‰ ๋ณ‘ํ–‰ ํ”„๋กœ์„ธ์Šค์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์ž์›์„ ๋Š์ž„์—†์ด ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ


Swapping โœ”๏ธ

๐Ÿ‘‰ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ฒ•
๐Ÿ‘‰ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ถˆ๋Ÿฌ๋“ค์ด๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋ถ€์กฑํ•˜๋‹ค๋ฉด ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋‚ด๋ณด๋‚ด๊ณ  (swap out), ์›ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ถˆ๋Ÿฌ๋“ค์ด๋Š” (swap in) ๋ฐฉ์‹
๐Ÿ‘‹ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ โ†”๏ธ ๋ณด์กฐ ๋ฉ”๋ชจ๋ฆฌ


๋‹จํŽธํ™” โœ”๏ธ

๐Ÿ‘‰ 2๊ฐ€์ง€์˜ ์ข…๋ฅ˜
ใ€€ใ€€๐Ÿ‘‰ ์™ธ๋ถ€ ๋‹จํŽธํ™” : ๋ฉ”๋ชจ๋ฆฌ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๊ณต๊ฐ„์ด ์กด์žฌํ•˜์ง€๋งŒ ๊ณต๊ฐ„์ด ์ชผ๊ฐœ์ ธ ์žˆ์–ด ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ X
ใ€€ใ€€ใ€€ใ€€๐Ÿ‘‰ ํ•ด๊ฒฐ ๊ธฐ๋ฒ• : ํŽ˜์ด์ง• ๊ธฐ๋ฒ•
ใ€€ใ€€๐Ÿ‘‰ ๋‚ด๋ถ€ ๋‹จํŽธํ™” : ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”ํ•œ ์–‘๋ณด๋‹ค ๋” ํฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ํ• ๋‹น๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚ญ๋น„๋˜๋Š” ๊ฒƒ
ใ€€ใ€€ใ€€ใ€€๐Ÿ‘‰ ํ•ด๊ฒฐ ๊ธฐ๋ฒ• : ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ๊ธฐ๋ฒ•


ํŽ˜์ด์ง• ๊ธฐ๋ฒ• โœ”๏ธ

๐Ÿ‘‰ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ผ์ •ํ•œ ํฌ๊ธฐ์ธ ํŽ˜์ด์ง€๋กœ ์ž˜๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋ฒ•
๐Ÿ‘‰ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์—ฐ์†์ ์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ์ œ์•ฝ์„ ์—†์•  ์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ
๐Ÿ‘‰ But, ๋ณดํ†ต ํŽ˜์ด์ง€ ๋‹จ์œ„์— ์•Œ๋งž๊ฒŒ ๊ฝ‰ ์ฑ„์›Œ ์“ฐ๋Š”๊ฒŒ ์•„๋‹ˆ๋ฏ€๋กœ ๋‚ด๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ์กด์žฌํ•จ
โœ‹ ๋˜ํ•œ, ๊ทธ๋งŒํผ Mapping ๊ณผ์ • ๋˜ํ•œ ๋Š˜์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— Trade-off๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ


์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ๊ธฐ๋ฒ• โœ”๏ธ

๐Ÿ‘‰ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ํฌ๊ธฐ์˜ ๋…ผ๋ฆฌ์ ์ธ ๋ธ”๋ก ๋‹จ์œ„์ธ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋ฒ•
๐Ÿ‘‰ ํ•˜๋‚˜์˜ ์„ธ๊ทธ๋จผํŠธ ๋‹จ์œ„๋กœ ํ†ต์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ 
๐Ÿ‘‰ ์„ธ๊ทธ๋จผํŠธ๋“ค์— ๋Œ€ํ•ด ํ•„์š” ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ณ , ํ•„์š”์—†์„ ๊ฒฝ์šฐ ๋‚ด๋ฆฌ๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๋‹ค๋ณด๋ฉด ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์Œ


๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ

๐Ÿ‘‰ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณด์กฐํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค ์ „์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค์ง€ ์•Š๋”๋ผ๋„ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๊ธฐ๋ฒ•
๐Ÿ‘‰ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์‹ค์ œ ์กด์žฌํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ ์žˆ์–ด ๋ฉ”๋ชจ๋ฆฌ๋กœ์จ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ


Page Fault โœ”๏ธ

๐Ÿ‘‰ ์ง€๊ธˆ ์‹คํ–‰์‹œ์ผœ์•ผ ํ•  Page๊ฐ€ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š์€ ์ƒํ™ฉ


Thrashing

๐Ÿ‘‰ Page Fault๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ
๐Ÿ‘‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์›ํ™œํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ผ์ • ์ˆ˜์ค€ ์ด์ƒ์˜ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์„ ํ• ๋‹น๋ฐ›์•„์•ผ ํ•˜๋Š”๋ฐ, ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์žฌ๋˜์–ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ”„๋ ˆ์ž„์„ ์ถฉ๋ถ„ํžˆ ํ• ๋‹น ๋ฐ›์ง€ ๋ชปํ•ด Page Fault๊ฐ€ ๋ฐœ์ƒ


Demand Paging โœ”๏ธ

๐Ÿ‘‰ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•
๐Ÿ‘‰ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ์ž‘ ์‹œ, ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๋Š” ๋Œ€์‹  ์ดˆ๊ธฐ์— ํ•„์š”ํ•œ ๋ถ€๋ถ„๋“ค๋งŒ ์ ์žฌํ•˜๋Š” ๋ฐฉ๋ฒ•


์บ์‹œ์˜ ์ง€์—ญ์„ฑ

๐Ÿ‘‰ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU์˜ ์ฒ˜๋ฆฌ ์†๋„์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ ‘๊ทผ ์†๋„ ์ฐจ์ด๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ณ ์† Buffer Memory
๐Ÿ‘‰ ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์บ์‹œ๋Š” CPU๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•  ๊ฒƒ์ธ๊ฐ€ ์–ด๋Š ์ •๋„ ์˜ˆ์ธกํ•ด์•ผ ํ•จ
๐Ÿ‘‰ ์ ์ค‘๋ฅ ์ด ๋†’์„์ˆ˜๋ก ์บ์‹œ ์„ฑ๋Šฅ์ด ์˜ฌ๋ผ๊ฐ€๋ฉฐ, ์ด๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด 2๊ฐ€์ง€์˜ ๋ฐ์ดํ„ฐ ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ๋ฅผ ์‚ฌ์šฉ
ใ€€ใ€€๐Ÿ‘‰ ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ
ใ€€ใ€€ใ€€ใ€€๐Ÿ‘‰ ํ•œ ๋ฒˆ ์ฐธ์กฐ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜†์— ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ฐธ์กฐ๋  ํ™•๋ฅ ์ด ๋†’์Œ
ใ€€ใ€€๐Ÿ‘‰ ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ
ใ€€ใ€€ใ€€ใ€€๐Ÿ‘‰ ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ณง ๋‹ค์Œ์— ๋‹ค์‹œ ์ฐธ์กฐ๋  ํ™•๋ฅ ์ด ๋†’์Œ


Caching line

๐Ÿ‘‹ ์บ์‹œ๋Š” ํ”„๋กœ์„ธ์„œ ๊ฐ€๊นŒ์ด์— ์œ„์น˜ํ•˜๋ฉด์„œ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋†”๋‘๋Š” ์žฅ์†Œ
๐Ÿ‘‰ ์บ์‹œ๊ฐ€ ์•„๋ฌด๋ฆฌ ๊ฐ€๊นŒ์ด ์žˆ๋”๋ผ๋„ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋Š ๊ณณ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ๋ชจ๋ฅธ๋‹ค๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ฒŒ ๋จ
โœ‹ ์บ์‹œ์— ๋ชฉ์  ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์ ‘๊ทผํ•˜์—ฌ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ์บ์‹œ๊ฐ€ ์˜๋ฏธ ์žˆ์Œ
๐Ÿ‘‰ ๋”ฐ๋ผ์„œ, ์บ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ๋ฐ์ดํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๋“ฑ์„ ๊ธฐ๋กํ•ด ๋‘” ํƒœ๊ทธ๋ฅผ ๋‹ฌ์•„ ํŠน์ • ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌถ์Œ์œผ๋กœ ์ €์žฅํ•œ ๊ฒƒ
๐Ÿ‘‰ ๊ตฌ์กฐ 3๊ฐ€์ง€
ใ€€ใ€€๐Ÿ‘‰ Direct MAP
ใ€€ใ€€ใ€€ใ€€๐Ÿ‘‰ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ, DRAM์˜ ์—ฌ๋Ÿฌ ์ฃผ์†Œ๊ฐ€ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•œ ์ฃผ์†Œ์— ๋Œ€์‘๋˜๋Š” ๋‹ค๋Œ€์ผ ๋ฐฉ์‹
ใ€€ใ€€๐Ÿ‘‰ Full Associative
ใ€€ใ€€ใ€€ใ€€๐Ÿ‘‰ ๋น„์–ด์žˆ๋Š” ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉด, ๋น„์–ด์žˆ๋Š” ๊ณณ์— ๋งˆ์Œ๋Œ€๋กœ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹
ใ€€ใ€€๐Ÿ‘‰ Set Associative
ใ€€ใ€€ใ€€ใ€€๐Ÿ‘‰ ํŠน์ • ํ–‰์„ ์ง€์ •ํ•˜๊ณ , ๊ทธ ํ–‰์•ˆ์˜ ์–ด๋–ค ์—ด์ด๋“  ๋น„์–ด์žˆ๋Š” ๊ณณ์— ๋งˆ์Œ๋Œ€๋กœ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹


ํŽ˜์ด์ง€ ๊ต์ฒด โœ”๏ธ

๐Ÿ‘‰ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ํŠน์ • ํŽ˜์ด์ง€๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  (page out), ๊ทธ ์ž๋ฆฌ์— ํ•„์š”ํ•œ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ (page in)
๐Ÿ‘‹ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์ด ๊ณ„์†๋˜๋ฉด ์š”๊ตฌ ํŽ˜์ด์ง€๊ฐ€ ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜๊ณ  ์–ธ์  ๊ฐ€๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฐ€๋“ ์ฐจ๊ธฐ ๋•Œ๋ฌธ


ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ‘‰ FIFO
ใ€€ใ€€๐Ÿ‘‰ ๋จผ์ € ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋“ค์–ด์˜จ ํŽ˜์ด์ง€ ์ˆœ์„œ๋Œ€๋กœ ํŽ˜์ด์ง€ ๊ต์ฒด ์‹œ์ ์— ๋จผ์ € ๊ต์ฒด
๐Ÿ‘‰ OPT
ใ€€ใ€€๐Ÿ‘‰ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„ ๊ต์ฒด
๐Ÿ‘‰ LRU
ใ€€ใ€€๐Ÿ‘‰ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ต์ฒด


Kernel โœ”๏ธ

๐Ÿ‘‰ ํ•˜๋“œ์›จ์–ด์™€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•˜์—ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋“œ์›จ์–ด์—์„œ๋ถ€ํ„ฐ ์˜ค๋Š” ์ž์›์„ ๊ด€๋ฆฌํ•˜๋ฉฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ
๐Ÿ‘‰ ์ธํ„ฐํŽ˜์ด์Šค : ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์‹œ์Šคํ…œ์ด ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋งค๊ฐœ์ฒด


Interrupt โœ”๏ธ

๐Ÿ‘‰ CPU๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์„ ๋•Œ, ์ž…/์ถœ๋ ฅ ํ•˜๋“œ์›จ์–ด ๋“ฑ์˜ ์žฅ์น˜์— ์˜ˆ์™ธ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ CPU์—๊ฒŒ ์•Œ๋ ค ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ
๐Ÿ‘‹ CPU์™€ I/O์˜ ์†๋„ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”
ใ€€ใ€€๐Ÿ‘‹ I/O ์—ฐ์‚ฐ์ด CPU ๋ช…๋ น ์ˆ˜ํ–‰ ์†๋„๋ณด๋‹ค ํ˜„์ €ํžˆ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ
๐Ÿ‘‰ ๋™์ž‘ ๊ณผ์ •
ใ€€ใ€€๐Ÿ‘‰ 1. CPU๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰
ใ€€ใ€€๐Ÿ‘‰ 2. Interrupt ์š”์ฒญ
ใ€€ใ€€๐Ÿ‘‰ 3. CPU๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค์Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์™€ ํ˜„์žฌ ์ƒํƒœ๋ฅผ PCB์— ์ €์žฅ
ใ€€ใ€€๐Ÿ‘‰ 4. Interrupt Service Routinue์„ ์‹คํ–‰
ใ€€ใ€€๐Ÿ‘‰ 5. Interrupt ์ข…๋ฃŒ ํ›„ ๊ธฐ์กด ์ƒํƒœ ๋ณต๊ตฌ
ใ€€ใ€€๐Ÿ‘‰ 6. ํ”„๋กœ๊ทธ๋žจ์„ ๊ณ„์† ์‹คํ–‰


Interrupt ์ข…๋ฅ˜ (์šฐ์„  ์ˆœ์œ„)

๐Ÿ‘‰ 1. ์™ธ๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ (1st)
ใ€€ใ€€๐Ÿ‘‰ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ธํ„ฐ๋ŸฝํŠธ
ใ€€ใ€€๐Ÿ‘‹ CPU ์•„๋‹Œ ๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๊ฐ€ CPU์— ์š”์ฒญ
๐Ÿ‘‰ 2. ๋‚ด๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ (2nd)
ใ€€ใ€€๐Ÿ‘‰ CPU ๋‚ด๋ถ€์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ
ใ€€ใ€€๐Ÿ‘‹ Divide by Zero
๐Ÿ‘‰ 3. ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ (3rd)
ใ€€ใ€€๐Ÿ‘‰ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ธํ„ฐ๋ŸฝํŠธ
ใ€€ใ€€๐Ÿ‘‹ syscall


syscall

๐Ÿ‘‰ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ์ปค๋„์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค
๐Ÿ‘‹ fork(), exec(), malloc() ๋“ฑ
๐Ÿ‘‹ ์ธํ„ฐํŽ˜์ด์Šค : ๋™์ž‘์— ๋„์›€์„ ์ฃผ๋Š” ์‹œ์Šคํ…œ


fork() ๐Ÿ†š exec()

๐Ÿ‘‰ ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
๐Ÿ‘‰ fork()
ใ€€ใ€€๐Ÿ‘‰ PID๊ฐ€ ๋‹ค๋ฅธ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ๊น€
ใ€€ใ€€๐Ÿ‘‹ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น
๐Ÿ‘‰ exec()
ใ€€ใ€€๐Ÿ‘‰ PID๊ฐ€ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊ฒจ์ง€๋ฉฐ ๋ฎ์–ด ์“ฐ์—ฌ์ง€๋Š” ๊ฐœ๋…
ใ€€ใ€€๐Ÿ‘‹ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ , ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์Œ


์บ์‹œ ๐Ÿ†š ๋ ˆ์ง€์Šคํ„ฐ

๐Ÿ‘‰ ์บ์‹œ
ใ€€ใ€€๐Ÿ‘‰ CPU์™€ ๋ณ„๋„๋กœ ์žˆ๋Š” ๊ณต๊ฐ„, ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ๊ฐ„์˜ ์†๋„ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ
๐Ÿ‘‰ ๋ ˆ์ง€์Šคํ„ฐ
ใ€€ใ€€๐Ÿ‘‰ ๋ ˆ์ง€์Šคํ„ฐ๋Š” CPU ์•ˆ์—์„œ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„


Memory Pool

๐Ÿ‘‰ ์ผ์ • ๋Ÿ‰์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋Ÿญ์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด pool์— ์ €์žฅํ•˜๋Š” ๊ธฐ๋ฒ•
๐Ÿ‘‹ ํ”„๋กœ๊ทธ๋žจ ์š”์ฒญ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์ฃผ๊ณ , ์ž„๋ฌด ์™„๋ฃŒ์‹œ ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•˜์—ฌ pool์— ์ €์žฅ
๐Ÿ‘‹ ๋ถˆํ•„์š”ํ•˜๊ฒŒ Memory๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ์ผ์ด ์‚ฌ๋ผ์ ธ์„œ ์ด์™€ ๊ด€๋ จ๋œ ๋น„์šฉ์„ ์ค„์—ฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€์ด ๋จ
๐Ÿ‘‹ But, ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๊ณ„์† ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น์„ ํ•ด๋†“์œผ๋ฏ€๋กœ Memory leak ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ



๐Ÿ’š Additional

๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ Reader-Writer Lock

๐Ÿ‘‰ ๋™๊ธฐํ™” ํ•˜๊ธฐ ์œ„ํ•ด ์˜ค์ง reader-writer ๋ฝ๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์ค‘์Šค๋ ˆ๋“œ ์‘์šฉ์„ ๊ฐ€์ •ํ•˜์ž. ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์œ„ํ•œ 4๊ฐ€์ง€ ์กฐ๊ฑด์„ ์ ์šฉํ•  ๋•Œ, ๋‹ค์ค‘ reader-writer ๋ฝ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ์—ฌ์ „ํžˆ ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
ใ€€ใ€€๐Ÿ‘‰ ๋‹ค์ค‘ reader-writer ๋ฝ์€ ํ•˜๋‚˜์˜ ๋ฝ์ด ์ ์œ ๋˜๋ฉด ๋‹ค๋ฅธ reader ๋˜๋Š” writer๋Š” ๋ฝ์„ ์„ ์ ํ•˜๊ฑฐ๋‚˜ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ˜ธ ๋ฐฐ์ œ์™€ ๋น„์„ ์ ์˜ ์ƒํ™ฉ์ด ๋จ
ใ€€ใ€€๐Ÿ‘‰ ๋˜ํ•œ, reader ๋˜๋Š” writer๋Š” ๋ฝ์„ ์„ ์ ํ•˜๋ฉด ๋ฒ„ํผ์— ์ฝ์€ ๋‚ด์šฉ์ด๋‚˜ ์“ธ ๊ณต๊ฐ„์ด ์žˆ์„ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฝ์„ ์ ์œ ํ•˜๋ฉฐ ๋Œ€๊ธฐํ•จ
ใ€€ใ€€๐Ÿ‘‰ But, ๋‹ค์ค‘ reader-writer ๋ฝ์˜ ๊ฒฝ์šฐ์—๋Š” ์ˆœํ™˜ ๋Œ€๊ธฐ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ


Polling

๐Ÿ‘‰ ๋ฐ˜๋ณตํ•ด์„œ ๋ฃจํ”„๋ฅผ ๋Œ๋ฉฐ ํŠน์ • ์‹œ๊ทธ๋„์ด ๋“ค์–ด์™”๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ


์ปค๋„๋ชจ๋“œ์™€ ์œ ์ €๋ชจ๋“œ ๊ตฌ๋ถ„ํ•œ ์ด์œ  (CPU 2๊ฐ€์ง€ ๋ชจ๋“œ)

๐Ÿ‘‰ ์‹œ์Šคํ…œ์— ์ค‘์š”ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์—ฐ์‚ฐ์€ ์ปค๋„ ๋ชจ๋“œ์—์„œ๋งŒ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜์—ฌ ํ•˜๋“œ์›จ์–ด ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•จ
๐Ÿ‘‹ ์ปค๋„๋ชจ๋“œ : OS๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์ˆ˜ํ–‰๋˜๋Š” ๋ชจ๋“œ
๐Ÿ‘‹ ์œ ์ €๋ชจ๋“œ : ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰๋˜๋Š” ๋ชจ๋“œ


์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ ๐Ÿ†š ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ

๐Ÿ‘‰ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ
ใ€€ใ€€๐Ÿ‘‰ ์ปค๋„์ด ์ง์ ‘ ์Šค๋ ˆ๋“œ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ •์„ฑ๊ณผ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋จ
ใ€€ใ€€๐Ÿ‘‹ ์ปค๋„์ด ๊ฐ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
ใ€€ใ€€๐Ÿ‘‹ But, ์œ ์ €/์ปค๋„ ๊ฐ„ ์ „ํ™˜์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ด๋ค„์ง€๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋จ
๐Ÿ‘‰ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ
ใ€€ใ€€๐Ÿ‘‰ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์‹์„ฑ์ด ๋†’๊ณ  ์œ ์—ฐํ•œ ์Šค์ผ€์ฅด๋ง ๊ฐ€๋Šฅ
ใ€€ใ€€๐Ÿ‘‹ ์œ ์ €/์ปค๋„ ๋ชจ๋“œ ๊ฐ„ ์ „ํ™˜์ด ์ผ์–ด๋‚˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Overhead๊ฐ€ ์ ์Œ
ใ€€ใ€€๐Ÿ‘‹ But, ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ธ”๋ก๋œ๋‹ค๋ฉด ์ „์ฒด ์Šค๋ ˆ๋“œ๊ฐ€ ๋ธ”๋ก๋จ
๐Ÿ‘‹ Overhead : ์–ด๋–ค ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ๋“ค์–ด๊ฐ€๋Š” ๊ฐ„์ ‘์ ์ธ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ



*****
NOT A TALENT โŽ NOT GIVING UP โœ…
CopyRight โ“’ 2022 DCherish All Rights Reserved.