๐Ÿฆ• ๊ณต๋ฃก์ฑ…์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ์šด์˜์ฒด์ œ ๋ชฉ์ฐจ

๋ธ”๋กœ๊ทธ๋ฅผ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค! ๐Ÿ‘‰๐Ÿ‘‰ https://parksb.github.io/articles.html 13์‹œ๊ฐ„ ๋’ค ๋‹น์žฅ ์‹œํ—˜์ธ๋ฐ ์ „๊ณต์„œ๋ฅผ ์ •๋…ํ•˜๋Š” ๊ฑด ๋ฌด๋ฆฌ๋ผ๊ณ  ํŒ๋‹จ. ์ˆ˜์—…์€ ์ฑ•ํ„ฐ5๋ฅผ ๋„˜์–ด๊ฐ€๋Š”๋ฐ ๋‚œ ์•„์ง ์ฑ•ํ„ฐ4 ์ดˆ๋ฐ˜๊นŒ์ง€ ๋ฐ–์— ์ฝ์ง€ ๋ชปํ–ˆ๊ณ ... ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ•ด๋‘” ๊ฑด ์•„์ง ์ฑ•ํ„ฐ2๊นŒ์ง€๋‹ค. ์ค‘๊ฐ„๊ณ ์‚ฌ๋Š” ์ฑ•ํ„ฐ1๋ถ€ํ„ฐ ์ฑ•ํ„ฐ5 ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง๊นŒ์ง€๋‹ˆ๊นŒ ํ‚ค์›Œ๋“œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ง€๊ธˆ๊นŒ์ง€ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค. ์ค‘๊ฐ„๊ณ ์‚ฌ ์ดํ›„๋กœ๋„ ์ •๋ฆฌ๋ฅผ ํ•˜๋‹ค๋ณด๋‹ˆ ์ƒ๊ฐ๋ณด๋‹ค ๊ธธ์–ด์ ธ์„œ ๊ธ€์„ ๋ถ„๋ฆฌํ–ˆ๋‹ค. ๐Ÿ“ Ch.1 Overview ์ฑ… ์ „์ฒด ๋‚ด์šฉ์ด ๋‹ด๊ฒจ์žˆ๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฑ•ํ„ฐ๋‹ค. ์ด ๋ถ€๋ถ„์„ ์ œ๋Œ€๋กœ ์ •๋…ํ•˜๊ณ  ์ฑ…์„ ์ฝ์œผ๋ฉด ํ›จ์”ฌ ์ฝ๊ธฐ ์ˆ˜์›”ํ•˜๋‹ค. ์ž์„ธํ•œ ์ •๋ฆฌ๋Š” Operating System Concepts Ch.1 Overview (1)์„ ์ฐธ๊ณ . ๐Ÿ“ Ch..

์šด์˜์ฒด์ œ์˜ ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

Scheduling Criteria ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ”„๋กœ์„ธ์„œ์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋””์ŠคํŒจ์น˜(Dispatch)๋ผ๊ณ  ํ•œ๋‹ค. (์ด๋•Œ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๊ฐ€ ready์—์„œ running์œผ๋กœ ๋ฐ”๋€๋‹ค.) ๊ทธ๋ฆฌ๊ณ  ์šด์˜์ฒด์ œ๊ฐ€ ๋ ˆ๋”” ํ(Ready queue)์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘์—์„œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””์ŠคํŒจ์น˜ํ•  ๊ฒƒ์ธ๊ฐ€ ์ •ํ•˜๋Š” ๊ฒƒ์ด ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง(Process scheduling)์ด๋‹ค. ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ FCFS, SJF, SRF, RR ๋„ค ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๊ณ , ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ‰๊ฐ€ํ•  ๋•Œ๋Š” ์ˆ˜ํ–‰ ์‹œ๊ฐ„(burst time)๊ณผ CPU ์‚ฌ์šฉ๋Ÿ‰(CPU utilization), ๋‹จ์œ„ ์‹œ๊ฐ„ ๋‹น ๋๋งˆ์นœ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜(Throughput), ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„(Turnaround time), ๋ ˆ๋”” ํ์—์„œ ๋Œ€๊ธฐํ•œ..

๐Ÿค” Java๋Š” ์–ด๋–ป๊ฒŒ Garbage Collection์„ ํ• ๊นŒ?

Garbage Collection(GC)์€ ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์“ธ๋ฐ์—†์ด ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•˜๋Š” ์ž‘์—…์ด๋‹ค. C์—์„  ๊ทธ๋Ÿฐ ์ž‘์—…์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ํ–ˆ๋‹ค. ๋งŒ์•ฝ free()๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜์ง€ ์•Š๊ณ  ๊ณ„์† ๋™์ ํ• ๋‹น์„ ์ˆ˜ํ–‰์‹œํ‚จ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฝ‰ ์ฐจ๋ฒ„๋ฆฌ๊ณ  ๋งŒ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ์ž‘์—…์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์•„๋ฌด๋ฆฌ ๋งŽ์€ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์ง€์›Œ๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋Š” ์ฝ”๋“œ๋Š” ์–ด๋””์—๋„ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ๊ฐœ๋ฐœ์„ ํ•ด๋„ ๊ดœ์ฐฎ์€๊ฑธ๊นŒ? JVM์ด GC๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ๋‹ค. JVM Memory Structure GC๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์ „์— ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ด์•ผ ํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋„ค๊ฐ€์ง€ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰œ๋‹ค. Stack: ์ง€์—ญ๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ..

ES6์™€ ํ•จ๊ป˜ Javascript๋กœ OOPํ•˜๊ธฐ

๋ธ”๋กœ๊ทธ๋ฅผ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค! ๐Ÿ‘‰๐Ÿ‘‰ https://parksb.github.io/articles.html ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP, Object-Oriented Programming)์€ ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Procedural Programming)๊ณผ ๋Œ€๋น„๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค. ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ์–ธ์–ด๋กœ๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ C์–ธ์–ด๊ฐ€ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ C์ฝ”๋“œ๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. C ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ , ์ด ๊ธฐ๋Šฅ๋“ค์ด ์–ด๋–ค ์ ˆ์ฐจ๋กœ ์ˆ˜ํ–‰๋˜๋Š”๊ฐ€๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœํ•œ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ์–ธ์–ด๋Š” Java๊ฐ€ ๋Œ€ํ‘œ์ ์ด๋‹ค. Java ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ํ”„๋กœ๊ทธ๋žจ์— ํ•„์š”ํ•œ ๊ฐ ๊ฐ์ฒด๋“ค์˜ ์†์„ฑ๊ณผ ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜๊ณ , ์ด ๊ฐ์ฒด๋“ค์ด ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”๊ฐ€๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœํ•œ๋‹ค. (์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ..

๐Ÿ“š Operating System Concepts Ch.2 System Structures (2)

System Calls ์‹œ์Šคํ…œ ์ฝœ์€ ์ปค๋„๊ณผ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์„ ์ด์–ด์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•œ๋‹ค. ์ข€ ์ƒ์†Œํ•˜๊ฒŒ ๋Š๊ปด์งˆ ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ๊ทธ๋ƒฅ ๋กœ์šฐ ๋ ˆ๋ฒจ ์ž‘์—…์„ ํ•˜๋Š” ์ฝ”๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ๋””์Šคํฌ์— ์žˆ๋Š” ํŒŒ์ผ์„ ์—ฐ๋‹ค๋Š” ๊ฒƒ์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค. ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋•Œ ์‹œ์Šคํ…œ ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ์ฃผ์†Œ ๋ฒ”์œ„์—๋Š” ์–ด๋–ค ๋™์ž‘๋“ค์ด ํ• ๋‹น๋˜์–ด ์žˆ๋‹ค. ์ด๊ฒƒ์„ ์‹œ์Šคํ…œ ์ฝœ ํ…Œ์ด๋ธ”(System call table)์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ(Interrupt vector)๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด fopen() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๋ฉด, ์šด์˜์ฒด์ œ๋Š” ํŒŒ์ผ์„ ์—ฌ๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ ์ฝœ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•œ๋‹ค. ์‹œ์Šคํ…œ ์ฝœ ํ…Œ์ด๋ธ”์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์˜ ๋ชจ์Œ์ธ๋ฐ, ..