๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Dev Blog
CS/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ] ์ปค๋„๊ณผ ์ธํ„ฐํŽ˜์ด์Šค

by ์œ ์ง„์˜ 2023. 4. 10.
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์šด์˜์ฒด์ œ ๊ฐ•์˜์™€ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ ๊ต์žฌ์— ๋Œ€ํ•œ TIL์ž…๋‹ˆ๋‹ค.

 

์‹œ์Šคํ…œ ํ˜ธ์ถœ(System Call)

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

์œ„ ๊ทธ๋ฆผ์€ C์–ธ์–ด๋กœ ๋งŒ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค. ์ด๋•Œ, sys_open()์ด๋ผ๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ C์–ธ์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•ด ์ฃผ๋Š” open()์„ ์‚ฌ์šฉํ•œ๋‹ค.
 

์ปค๋„์˜ ์—ญํ• ๊ณผ ์ข…๋ฅ˜

 
์ปค๋„์˜ ์—ญํ• 
 

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

 
์ปค๋„์˜ ๊ตฌ์กฐ
 

๋‹จ์ผํ˜• ๊ตฌ์กฐ ์ปค๋„: ์ดˆ์ฐฝ๊ธฐ ์šด์˜์ฒด์ œ์˜ ๊ตฌ์กฐ๋กœ, ์ปค๋„์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ๋“ˆ์ด ๊ตฌ๋ถ„ ์—†์ด ํ•˜๋‚˜๋กœ ๊ตฌ์„ฑ
 

  • ๋ชจ๋“ˆ ๊ฐ„์˜ ํ†ต์‹  ๋น„์šฉ์ด ์ค„์–ด๋“ค์–ด ํšจ์œจ์ ์ธ ์šด์˜์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋†’์€ ์ƒํ˜ธ ์˜์กด์„ฑ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋“ค์ด ๋งŽ์ด ๋ฐœ์ƒ

๊ณ„์ธตํ˜• ๊ตฌ์กฐ ์ปค๋„: ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๋ชจ๋“ˆ์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ๊ณ„์ธต์œผ๋กœ ๋งŒ๋“ค๊ณ  ๊ณ„์ธต ๊ฐ„์˜ ํ†ต์‹ ์„ ํ†ตํ•ด ์šด์˜์ฒด์ œ ๊ตฌํ˜„
 

  • ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ „์ฒด ์ปค๋„์„ ๊ณ ์น˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•ด๋‹น ๊ณ„์ธต๋งŒ ๋”ฐ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์œˆ๋„์šฐ OS๋ฅผ ๋น„๋กฏํ•ด ์˜ค๋Š˜๋‚ ์˜ ์šด์˜์ฒด์ œ ๋Œ€๋ถ€๋ถ„์ด ์ด ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋‹ค.

๋งˆ์ดํฌ๋กœ ๊ตฌ์กฐ ์ปค๋„: ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๊ด€๋ฆฌ ๋“ฑ ๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์‚ฌ์šฉ์ž ์˜์—ญ์— ๊ตฌํ˜„
 

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

 

๐Ÿ’ก ์‚ฌ์šฉ์ž ์˜์—ญ? ์‚ฌ์šฉ์ž ๋ชจ๋“œ? ์ปค๋„ ์˜์—ญ? ์ปค๋„ ๋ชจ๋“œ?

 

์ปค๋„ ์˜์—ญ๊ณผ ์‚ฌ์šฉ์ž ์˜์—ญ
 

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

CPU Protection Rings
 

CPU๋„ ๊ถŒํ•œ ๋ชจ๋“œ๋ผ๋Š” ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
 

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

 
์œ„ ๊ฐœ๋…๋“ค์˜ ๊ด€์ ์œผ๋กœ ๋ณธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. ์‚ฌ์šฉ์ž ๋ชจ๋“œ์—์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋œ๋‹ค.
2. ์šด์˜์ฒด์ œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ API๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
3. ํ•ด๋‹น API์•ˆ์— ์กด์žฌํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์–ด์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.
4. ์ปค๋„ ์˜์—ญ์˜ OS ๋‚ด๋ถ€์—์„œ ํ•ด๋‹น ๋ช…๋ น์ด ์‹คํ–‰๋œ๋‹ค.
5. ์‹คํ–‰์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด ๋‹ค์‹œ ์‚ฌ์šฉ์ž ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜๊ณ  API ํ˜ธ์ถœ ์ดํ›„์˜ ์ž‘์—…์„ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰ํ•œ๋‹ค.

๋Œ“๊ธ€