๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
HYU/์šด์˜์ฒด์ œ(OS)

2. Operating System Overview (2)

by Jaeguk 2023. 3. 23.

Operating System "Service"

๋ฆฌ๋ˆ…์Šค์—์„œ ๋กœ๊ทธ์ธ์„ ํ•œ ๋‹ค์Œ์— ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ๋‹ค๋ฉด?

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

ls๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ์น˜๋ฉด ์–ด๋–ค ์ผ์ด ๋ฒŒ์–ด์งˆ๊นŒ.

ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์„œ๋น„์Šค๋ฅผ OS๊ฐ€ ์ œ๊ณตํ•˜๋Š”๋ฐ, ํ•ด๋‹น ์„œ๋น„์Šค๋Š” System Call์„ ํ†ตํ•ด ์ œ๊ณต์ด ๋œ๋‹ค.
ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์„œ๋น„์Šค๋Š” fork()๋ผ๋Š” System Call์„ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ์™ธ์—๋„ OS๋Š” ์ž๊ธฐ๊ฐ€ ํ•˜๋Š” ์ผ๋“ค์„ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ํ•ด์ฃผ๊ฒŒ ๋˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๋Ÿฐ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋น„์Šค์˜ ํ˜•ํƒœ๋กœ ์ œ๊ณต์„ ํ•œ๋‹ค. ๊ทธ ์„œ๋น„์Šค๋“ค์ด Operating-system service์ด๊ณ , ๊ทธ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์€ System Call์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๋“ ์ง€, ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ธ๋‹ค๋“ ์ง€, ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค๋“ ์ง€, I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋“ฑ์˜ ๋‹ค์–‘ํ•œ OS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์žˆ๋‹ค.
์ด ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ ์„œ๋น„์Šค์— ๋งž๋Š” System call์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์„œ๋น„์Šค๋Š” ๋ญ๊ฐ€ ์žˆ์„๊นŒ? ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค, ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ์„œ๋น„์Šค I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์„œ๋น„์Šค, ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์‚ญ์ œํ•˜๋Š” ์„œ๋น„์Šค, ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์„œ๋น„์Šค, ์—๋Ÿฌ๋ฅผ ํƒ์ง€ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค ๋“ฑ๋“ฑ...

 

์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹๋„ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

์‹œ์Šคํ…œ ์ฝœ์ด ๋“ค์–ด์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ , GUI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•, Command line์— ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ๋“ฑ์ด ์žˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ๋”๋ธ” ํด๋ฆญํ•˜์—ฌ ์‹คํ–‰์‹œํ‚ค๋ฉด GUI๋ผ๋Š” ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ fork() system call์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๊ณ ,

๊ทธ๋Ÿฌ๋ฉด OS๋Š” ๊ทธ system call์„ ๋ฐ›์•„ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ฒŒ ๋œ๋‹ค.

 

System Call

๋‹ค์‹œ ๋งํ•ด, ์‹œ์Šคํ…œ ์ฝœ์€ OS์˜ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋Š” Interface๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

System call์„ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ธฐ ๋ณด๋‹ค๋Š” high level์˜ API(Application Program Interface)๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ๋„๋ก ํ•˜๊ณ  ์žˆ๋‹ค.

 

๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” API๋“ค์€

1. WIN32 API for Windows

2. POSIX API for POSIX-based systems( UNIX, Linux, and Mac OS )

3. Java API for Java virtual machine( JVM )

์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ™์€ ๊ณ„์—ด์˜ OS๋งˆ๋‹ค ๊ฐ™์€ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

WIN32 API๋Š” ์œˆ๋„์šฐ ๊ณ„์—ด์˜ OS์—์„œ, POSIX API๋Š” Unix ๊ณ„์—ด์˜ OS์—์„œ, Java API๋Š” Java virtual machine์ด ์„ค์น˜๋œ ๋ชจ๋“  ์ปดํ“จํ„ฐ์—์„œ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์™œ System Call์„ ์ง์ ‘ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  API๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋”๋ผ๋„ OS๋งˆ๋‹ค System Call์ด ๋‹ค ๋‹ค๋ฅด๋‹ค.

=> Systemcall์€ OS์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—
๊ทธ๋Ÿฐ๋ฐ API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ API๋กœ ์—ฌ๋Ÿฌ OS์—์„œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ์Œ.
์ฆ‰, ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค ์ฝ”๋“œ๋กœ ์—ฌ๋Ÿฌ OS์—์„œ ๋™์ž‘ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.
=> ์ด์‹์„ฑ(Portability)์ด ์ข‹๋‹ค.

 

printf ํ•จ์ˆ˜ ์•ˆ์—๋„ system call์„ ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„์ด ๋“ค์–ด์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค.

printf ํ•จ์ˆ˜๋Š” ๋‚ด์šฉ์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜์ธ๋ฐ, ๋ชจ๋‹ˆํ„ฐ๋Š” ํ•˜๋“œ์›จ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— OS๋ฅผ ํ†ตํ•ด์„œ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ printf ํ•จ์ˆ˜ ๋‚ด์—๋Š” ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ํ™”๋ฉด์— ์ถœ๋ ฅ์„ OS์—๊ฒŒ ์š”์ฒญํ•˜๋Š” System Call์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ด printf ํ•จ์ˆ˜๋Š” OS์— ์ƒ๊ด€์—†์ด ์ฝ”๋“œ๊ฐ€ ๋™์ž‘์„ ํ•œ๋‹ค. ์‹ฌ์ง€์–ด ๊ฐ™์€ ๊ณ„์—ด์˜ OS๊ฐ€ ์•„๋‹ˆ๋ผ๋„ ๋™์ž‘์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๊ฑด ์–ด๋–ป๊ฒŒ ๋œ ๊ฑธ๊นŒ?

printf๋Š” OS๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ API๊ฐ€ ์•„๋‹ˆ๋ผ programming language๊ฐ€ ์ œ๊ณตํ•˜๋Š” API์ด๊ธฐ ๋•Œ๋ฌธ์— C์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” OS์—์„œ๋Š” ๋‹ค ๋Œ์•„๊ฐ„๋‹ค.
์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ OS์— ๋งž์ถฐ์„œ ์ปดํŒŒ์ผํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

=> ๊ทธ๋ž˜์„œ ์ด์‹์„ฑ์ด ๊ฐ€์žฅ ์ข‹์€ API๋Š” programming language์—์„œ ์ œ๊ณตํ•˜๋Š” API, ๊ทธ ๋‹ค์Œ์€ OS ๊ณ„์—ด์— ๋”ฐ๋ผ ์ œ๊ณต๋˜๋Š” API 

 


ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์นดํ”ผํ•˜๋Š” ๋™์ž‘์„ ์œ„ํ•ด์„œ ์–ด๋–ค System Call๋“ค์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ ๊นŒ?

input ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›์•„์„œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ณ , output ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›์•„์„œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค.

input ํŒŒ์ผ์„ Openํ•˜๊ณ , Output ํŒŒ์ผ์„ Create ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด์„œ input ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฝ์–ด์„œ output ํŒŒ์ผ์— ์“ด๋‹ค.

๋ชจ๋“  ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•˜๊ณ  ๋‚˜๋ฉด, output file์„ Closeํ•˜๊ณ  ์„ฑ๊ณต์ ์œผ๋กœ ๋งˆ์ณค๋‹ค๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•œ๋‹ค.

 

๋ฆฌ๋ˆ…์Šค์—์„œ ์‚ฌ์šฉ์ž๋Š” ๋‹จ์ˆœํžˆ copy file a file b ๋ผ๊ณ  ์“ฐ๋ฉด a ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด b ํŒŒ์ผ๋กœ ์‰ฝ๊ฒŒ ๋ณต์‚ฌ๊ฐ€ ๋˜์ง€๋งŒ,

์‹ค์ œ๋กœ copy๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ๋Š” System Call๋“ค์ด ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœ๋œ๋‹ค.

=> ์‚ฌ์šฉ์ž๋Š” API๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์‹คํ–‰ ๊ฐ€๋Šฅ

 

API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ : ์ด์‹์„ฑ, ํŽธ๋ฆฌ์„ฑ

 

System Call์ด ํ˜ธ์ถœ๋˜๋ฉด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ• ๊นŒ?

System Call๋งˆ๋‹ค ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ€์—ฌ๋˜์–ด ์žˆ๋‹ค.

์‹œ์Šคํ…œ ์ฝœ์ด ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ ์‹œ์Šคํ…œ ์ฝœ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์‹œ์Šคํ…œ ์ฝœ์ด ๋ฉ”๋ชจ๋ฆฌ ์–ด๋””์— ์˜ฌ๋ผ์™€์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•œ๋‹ค.
๊ฐ ์‹œ์Šคํ…œ ์ฝœ๋งˆ๋‹ค ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ€์—ฌ๋˜์–ด ์žˆ๊ณ , ํ…Œ์ด๋ธ”์—๋Š” ๊ทธ ๋ฒˆํ˜ธ๋ฅผ ์ธ๋ฑ์Šค๋กœ ํ•˜์—ฌ ์‹œ์Šคํ…œ ์ฝœ์ด ์˜ฌ๋ผ์™€ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ํ…Œ์ด๋ธ”์˜ ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์Œ.


์‹œ์Šคํ…œ ์ฝœ์ด ํ˜ธ์ถœ๋˜๋ฉด ํ…Œ์ด๋ธ”์„ ์ฐธ๊ณ ํ•ด์„œ ํ•ด๋‹น ์‹œ์Šคํ…œ ์ฝœ์ด ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐพ์•„ PC๊ฐ€ ๊ฑฐ๊ธฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•œ ๋‹ค์Œ ํ•ด๋‹น ์ฝ”๋“œ๋กœ ์ ํ”„ํ•œ๋‹ค. CPU๊ฐ€ ๊ฑฐ๊ฑฐ์„œ๋ถ€ํ„ฐ ์ˆ˜ํ–‰ํ•˜๋ฉด ์‹œ์Šคํ…œ ์ฝœ์ด ๋™์ž‘.

=> ์‚ฌ์šฉ์ž๋Š” ์ด๋Ÿฐ ๊ฑธ ์ „ํ˜€ ์•Œ ํ•„์š” ์—†์ด API๋งŒ ํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค.

 

User application์ด System call์„ ์ง์ ‘ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ์˜ ๋™์ž‘ ๊ณผ์ •

์œ ์ € ํ”„๋กœ๊ทธ๋žจ์ด Open() ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ํ˜ธ์ถœํ•œ ์ˆœ๊ฐ„ mode bit๊ฐ€ ์œ ์ € ๋ชจ๋“œ์—์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ ๋ณ€๊ฒฝ์ด ๋˜๊ณ , Open ์‹œ์Šคํ…œ ์ฝœ์— ํ•ด๋‹นํ•˜๋Š” ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•ด์„œ ํ…Œ์ด๋ธ”์„ ํ†ตํ•ด Open ์‹œ์Šคํ…œ ์ฝœ์˜ ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ์ฃผ์†Œ๋ฅผ ์ฐพ์•„ ๊ทธ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ˆ˜ํ–‰์ด ๋ชจ๋‘ ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ ์œ ์ € ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ฆฌํ„ดํ•˜๊ณ , mode bit๋ฅผ ์œ ์ € ๋ชจ๋“œ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•œ๋‹ค.

 

์œ ์ € ํ”„๋กœ๊ทธ๋žจ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ System call์„ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ์˜ ๋™์ž‘ ๊ณผ์ •

์œ ์ € ํ”„๋กœ๊ทธ๋žจ์ด System call์ด ํฌํ•จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด, ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๊ฐ€ ์‹œ์Šคํ…œ ์ฝœ์„ ํ•˜๊ฒŒ ๋˜๊ณ ,

๊ทธ ์ˆœ๊ฐ„ ์ปค๋„ ๋ชจ๋“œ๋กœ ๋ณ€๊ฒฝ์ด ๋œ๋‹ค. ๋˜‘๊ฐ™์ด write ์‹œ์Šคํ…œ ์ฝœ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ธ๋ฑ์Šค๋กœ ํ•˜์—ฌ ํ•ด๋‹น ์‹œ์Šคํ…œ ์ฝœ์˜ ์ฝ”๋“œ๋ฅผ ์ฐพ์•„ ๊ทธ ๋ถ€๋ถ„์„ ์‹คํ–‰ํ•œ๋‹ค.

์‹คํ–‰์ด ์™„๋ฃŒ๋˜๋ฉด write๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ printf ํ•จ์ˆ˜๋กœ ๋ฆฌํ„ด์ด ๋˜๊ณ  printf๋Š” write์˜ ๋ฆฌํ„ด ๊ฐ’์„ ๋ฐ›์•„์„œ ์œ ์ € ํ”„๋กœ๊ทธ๋žจ์˜ printf ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค.

 


Virtual Machine (๊ฐ€์ƒ ๋จธ์‹ )

๊ต์ˆ˜๋‹˜์ด ๊ฐ€์ƒ ๊ธฐ๊ณ„๋ฉด ๊ฐ€์ƒ ๊ธฐ๊ณ„๊ณ  ๋ฒ„์ถ”์–ผ ๋จธ์‹ ์ด๋ฉด ๋ฒ„์ถ”์–ผ ๋จธ์‹ ์ด์ง€ ์™œ ๊ฐ€์ƒ ๋จธ์‹ ์ด๋ผ๊ณ  ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํ•˜์…จ๋Š”๋ฐ, ๋“ฃ๊ณ  ๋ณด๋‹ˆ ๊ทธ๋ ‡๋‹ค,,

 

์•„๋ฌดํŠผ ์šฐ๋ฆฌ๋Š” Virtual Machine์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์™œ ์ด๋Ÿฌํ•œ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

๊ณผ์ œ๋ฅผ ์œ„ํ•ด์„œ ์šด์˜์ฒด์ œ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๋ฐ”๊พผ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋…ธํŠธ๋ถ์˜ ์šด์˜์ฒด์ œ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๋ฐ”๊ฟ”์„œ ์ปดํŒŒ์ผํ•ด์„œ ๊ทธ๊ฑธ ์„ค์น˜ํ•œ ๋‹ค์Œ ๋ถ€ํŒ…์„ ํ–ˆ๋Š”๋ฐ, ๋‚ด๊ฐ€ ์ฝ”๋”ฉ์„ ์ž˜๋ชปํ•ด์„œ ๋ถ€ํŒ…์ด ์•ˆ ๋˜๋ฉด?
์ •์ƒ์ ์ธ OS๋ฅผ ๋‹ค์‹œ ์„ค์น˜ํ•ด์„œ ์ •์ƒ์ ์œผ๋กœ ๋ถ€ํŒ…๋˜๊ฒŒ ๋งŒ๋“ค์–ด์„œ ๋˜ ๋‹ค์‹œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ฝ”๋“œ๋กœ ์ˆ˜์ •ํ•ด์„œ ์ˆ˜์ •ํ•œ OS๋ฅผ ๊น”์•„์„œ ๋˜ ๋ถ€ํŒ…์„ ๋‹ค์‹œ ํ•ด๋ณธ๋‹ค. ๋˜ ์‹คํŒจํ•˜๋ฉด ์ด ๊ณผ์ •์„ ๋‹ค์‹œ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค. ์—„์ฒญ๋‚œ ์‹œ๊ฐ„์ด ์†Œ์š”๋  ๊ฒƒ์ž„.
๋˜ํ•œ ์ด๋Ÿฐ ์ž‘์—…์€ ๋‚ด ๊ฐœ์ธ์šฉ PC์—์„œ๋งŒ ํ•ด์•ผํ•œ๋‹ค. ๊ณต์šฉ PC์—์„œ ํ•˜๋ฉด ํฐ์ผ๋‚จ.

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

๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์›๋ž˜์˜ ํ•˜๋“œ์›จ์–ด์™€ OS ์œ„์— ์ƒˆ๋กœ์šด ๊ฐ€์ƒ ๋จธ์‹ ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฐ€์ƒ ๋จธ์‹  ์œ„์— ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” OS๋ฅผ ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜๋‚˜์˜ ๊ธฐ๊ณ„์—์„œ ์—ฌ๋Ÿฌ OS๋ฅผ ์„ค์น˜ํ•ด์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์—์„œ ๊ตฌ์„ฑํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
=> ์ด๊ฒƒ์€ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์—์„œ ๋งค์šฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค
=> ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์—์„œ๋Š” ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜๋‹ˆ๊นŒ ์‚ฌ๋žŒ๋งˆ๋‹ค ํ•„์š”ํ•œ OS๊ฐ€ ๋‹ค๋ฆ„. ๊ทธ๋Ÿฐ๋ฐ ํ•˜๋‚˜์˜ ๊ธฐ๊ณ„ ์œ„์— ๊ฐ€์ƒ ๋จธ์‹ ์„ ์„ค์น˜ํ•ด์„œ ๋‹ค์–‘ํ•œ OS ํ™˜๊ฒฝ์„ ์ œ๊ณต ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Cloud Computing(ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…)

์ด๊ฑด ์ž˜ ๋ชฐ๋ผ๋„ ๋œ๋‹ค๊ณ  ํ•˜์…จ๋Š”๋ฐ(์ฐธ๊ณ ๋งŒ ํ•˜์ž), ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์€ ์ฒ˜์Œ์— ๊ฒฝ์ œ์ ์ธ ๋ชฉ์ ์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ๋‹ค.

๊ฐœ์ธ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์˜ํ•˜๋‹ค ๋ณด๋ฉด ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํŠน์ •ํ•œ ์‹œ์ ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ง‘์ค‘๋˜๋Š” ํ˜„์ƒ์„ ๋ณด์ธ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆ˜๊ฐ• ์‹ ์ฒญ ์‚ฌ์ดํŠธ๋Š” ํ•™๊ธฐ ์ดˆ์— ์ˆ˜๊ฐ• ์‹ ์ฒญํ•  ๋•Œ๋งŒ ์ด์šฉ์ž๊ฐ€ ๋ชฐ๋ฆฌ๊ณ  ํ‰์†Œ์—” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฑฐ์˜ ์—†๋‹ค.

๊ทธ๋ ‡๊ธฐ์— ์–ด๋–ค ๋•Œ์— ๋งž์ถฐ์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•๋ณดํ• ์ง€๊ฐ€ ํ•ญ์ƒ ๋”œ๋ ˆ๋งˆ๋‹ค.

๋งŒ์•ฝ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์žฅ ๋งŽ์„ ๋•Œ์— ๋งž์ถฐ์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•๋ณดํ•˜๋ฉด ํ‰์†Œ์—” ๊ทธ ์ž์›๋“ค์ด ๋‚ญ๋น„๊ฐ€ ๋˜๊ณ , ๊ฐ€์žฅ ์ ์„ ๋•Œ์— ๋งž์ถฐ์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•๋ณดํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋ชฐ๋ ธ์„ ๋•Œ ์ž์›์ด ๋ถ€์กฑํ•˜๊ฒŒ ๋œ๋‹ค.

=> ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ „์šฉ ์ปดํ“จํ„ฐ์—์„œ ํ˜ธ์ŠคํŒ…ํ•˜๋ฉด ์ดˆ๊ธฐ ๋น„์šฉ๊ณผ, ๋‚ญ๋น„๋˜๋Š” ์ž์›์ด ๋„ˆ๋ฌด ๋งŽ์•˜์Œ.

 

๊ทธ๋ž˜์„œ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•˜๋‚˜์˜ ๊ธฐ๊ณ„๋ฅผ ๊ณต์œ ํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์ด๋‹ค.

์ด๋Ÿฌํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ํ•œ ๋ฐ ๋ชจ์œผ๋ฉด Peak๋Š” ๋‚ฎ์•„์ง€๊ณ , ํ‰๊ท ์„ ์˜ฌ๋ผ๊ฐ€๋Š” ํ˜„์ƒ์„ ๋ณด์ธ๋‹ค.

์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ Statistical Multiplexing Gain์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ๋” ๋งŽ์ด ๋ชจ์„ ์ˆ˜๋ก ๊ทธ๋ž˜ํ”„๋Š” ์ ์  ์™„๋งŒํ•ด์ง€๊ฒŒ ๋˜๊ณ , ๊ทธ๋Ÿฌ๋ฉด ๊ฑฐ๊ธฐ์— ๋งž์ถฐ์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•˜๋ฉด ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฌธ์ œ์—†์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ ์‚ฌ๋žŒ๋งˆ๋‹ค ํ•„์š”ํ•œ OS๊ฐ€ ๋‹ค๋ฅด๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด ๊ฐ€์ƒ ๋จธ์‹ ์ด๋‹ค.

=> ํ•˜๋‚˜์˜ ๊ธฐ๊ณ„๋กœ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ด์šฉํ•ด ๋‹ค์–‘ํ•œ OS ํ™˜๊ฒฝ ์ œ๊ณต ๊ฐ€๋Šฅ

 

Java Virtual Machine (JVM)

Java Virtual Machine์€ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์ฒ˜๋Ÿผ ์ƒ์—…์  ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค

์›น ์„œ๋ฒ„์—์„œ ํŽ˜์ด์ง€ ์‹คํ–‰ ํŒŒ์ผ์„ ์‚ฌ์šฉ์ž์˜ PC๋กœ ๋ณด๋‚ด์„œ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰์ด ๋˜๋„๋ก ํ•˜๋ฉด, ์›น ํŽ˜์ด์ง€๊ฐ€ ์ •์ ์ธ ์ปจํ…์ธ ๊ฐ€ ์•„๋‹Œ ๋™์ ์ธ ์›น ์ปจํ…์ธ ๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์ดํŠธ ๋‚ด์—์„œ ๊ฒŒ์ž„์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์›น ํŽ˜์ด์ง€. ์ด๋Ÿฐ ๊ฑด ์„œ๋ฒ„ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•ด์„œ ํŽ˜์ด์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์‹คํ–‰ํŒŒ์ผ์„ ๋ณด๋‚ด์„œ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.
=> ๊ทธ๋Ÿฐ๋ฐ ์‹คํ–‰ ํŒŒ์ผ์„ ๋ณด๋ƒˆ์„ ๋•Œ ์‚ฌ์šฉ์ž๋งˆ๋‹ค OS๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์ด ๋  ์ˆ˜๋„ ์žˆ๊ณ  ์•ˆ ๋  ์ˆ˜๋„ ์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ•˜๋‚˜์˜ ์ปจํ…์ธ ์— ๋Œ€ํ•ด์„œ ๋ฆฌ๋ˆ…์Šค์šฉ ์ฝ”๋“œ, ์œˆ๋„์šฐ์šฉ ์ฝ”๋“œ,, ๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ๋‹ค.
=> ๊ทธ๋ž˜์„œ ์–ด๋А ๊ธฐ๊ณ„๋กœ ๊ฐ€๋“  ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Java Virtual Machine์„ ๋งŒ๋“ฆ
=> ์›น ์ปจํ…์ธ ๊ฐ€ ๋งค์šฐ ํ’๋ถ€ํ•ด์กŒ๋‹ค.

 

์ปดํŒŒ์ผ์ด๋ผ๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—
๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•ด๋ฒ„๋ฆฌ๋ฉด ๊ทธ ๊ธฐ๊ณ„์–ด๋ฅผ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์—์„œ๋งŒ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
=> ๊ทธ๋ž˜์„œ ์ปดํŒŒ์ผ์„ ํ•˜์ง€๋ง๊ณ  java ํŒŒ์ผ์„ ๋ณด๋‚ธ ๋‹ค์Œ์— ์ปดํŒŒ์ผ์€ ์‚ฌ์šฉ์ž ์ปดํ“จํ„ฐ์—์„œ ํ•˜์ž ๋ผ๋Š” ์•„์ด๋””์–ด.

๊ทธ๋ž˜์„œ JVM์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๊ธฐ๊ณ„๋ผ๋ฉด ๊ทธ ๊ธฐ๊ณ„์˜ OS์— ์ƒ๊ด€์—†์ด java class ํŒŒ์ผ๋งŒ ๋ฐ›์œผ๋ฉด ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

*๋ชจ๋“  ๋‚ด์šฉ์€ ํ•œ์–‘๋Œ€ํ•™๊ต ๊ฐ•์ˆ˜์šฉ ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

728x90

'HYU > ์šด์˜์ฒด์ œ(OS)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

4. CPU Scheduling  (5) 2023.03.24
3. Processes and Threads  (0) 2023.03.23
2. Operating System Overview (1)  (0) 2023.03.22
1. Computer System Overview (2)  (0) 2023.03.20
1. Computer System Overview (1)  (1) 2023.03.20