View

[OS] ์‹œ์Šคํ…œ ํ˜ธ์ถœ(System calls)

์ฑ…์ฝ๋Š” ๊ฐ์ž 2022. 8. 30. 21:35
๋ฐ˜์‘ํ˜•

๐Ÿ’ก์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด๋ž€?

๊ธฐ๋ณธ์ ์œผ๋กœ '์šด์˜์ฒด์ œ(Operating System)' ๋Š” Operating(์šด์˜)์ด๋ž€ ์ด๋ฆ„์— ๊ฑธ๋งž๊ฒŒ ์ปดํ“จํ„ฐ๋ฅผ ์ œ๋Œ€๋กœ ์‹คํ–‰ ๋ฐ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

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

๊ทธ๋ž˜์„œ ๋ฌด์Šจ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‚˜๋ฉด, ๋ฐ”๋กœ ์‹œ์Šคํ…œ ์ฝœ(system call)์ด๋ž€ ๊ฒƒ์ด ๋ฐ”๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์šด์˜์ฒด์ œ(system)์—๊ฒŒ ์šด์˜์ฒด์ œ ๊ธฐ๋Šฅ์„ ์š”์ฒญํ•˜๋Š”(call) ๊ฒƒ!!!!


๐Ÿ’ก์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ•˜๋Š” ์ด์œ ๋Š”?

์‹œ์Šคํ…œ์ฝœ(system call)'์ด๋ž€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ(system)์ธ ์šด์˜์ฒด์ œ์—๊ฒŒ ์–ด๋–ค ๊ธฐ๋Šฅ(์„œ๋น„์Šค)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ(call)ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์˜ˆ์‹œ๋ฅผ ๋“ค์ž๋ฉด '์šด์˜์ฒด์ œ'๋Š” ํšŒ์‚ฌ ๊ด€๋ฆฌ์ž๊ณ  'ํ”„๋กœ์„ธ์Šค'๋Š” ๋ง๋‹จ ์ง์›์ธ ๊ฒƒ์ด๋‹ค.

'ํ”„๋กœ์„ธ์Šค3'์ด๋ž€ ์ง์›์ด ์ž๊ธฐ ์ž๋ฆฌ์— ์•‰์•„ ์ž์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์ค‘์ด์˜€๋Š”๋ฐ, ๋งŒ์•ฝ ์ž๊ธฐ ํ”„๋กœ๊ทธ๋žจ์™ธ ํŠน์ • ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค๊ณ  ์ณ๋ณด์ž. ์ด๋Ÿด ๋•Œ ๊ทธ๋ƒฅ ์กฐ์šฉํžˆ ๋…์ž์ ์œผ๋กœ ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋“ค์ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ด€๋ฆฌ์ž ์šด์˜์ฒด์ œ์—๊ฒŒ ํ—ˆ๋ฝ์„ ์š”์ฒญ(call)์„ ํ•ด์•ผํ•œ๋‹ค.

//์ฐธ๊ณ ์‚ฌ์ง„:

https://mamu2830.blogspot.com/2021/01/whatIsSystemCall.html

๋”ฐ๋ผ์„œ ์šด์˜์ฒด์ œ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“  ์ž์›(๋„คํŠธ์›Œํฌ, ๋””์Šคํฌ, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ๋“ฑ๋“ฑ)์„ 'ํ”„๋กœ์„ธ์Šค'๊ฐ€ ํ•„์š”๋กœ ํ•  ๊ฒฝ์šฐ ์ „๋ถ€๋‹ค ์ด '์‹œ์Šคํ…œ์ฝœ(system call)'์„ ํ†ตํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ํŒŒ์ผ์„ ์—ฌ๋Š” ๊ฒƒ(open)๋„ ๊ทธ๋ ‡๊ณ , ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ(exec), ๋˜‘๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“œ๋Š” ๊ฒƒ(fork) ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์–ด๋–ค ํ–‰์œ„๋ฅผ ์ง€์‹œํ•˜๋Š” ์‹œ๊ทธ๋„(์‹ ํ˜ธ)์„ ๋ณด๋‚ผ ๋•Œ(kill)๋„ ๋ง์ด๋‹ค!

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


๐Ÿ’ก์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ ๋ฐฉ์‹

์šด์˜์ฒด์ œ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ์— ๋„ฃ์–ด ์ „๋‹ฌํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐœ์ˆ˜๋ณด๋‹ค ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋” ๋งŽ์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ๋Š” ๋ฐ‘์— ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•œ๋‹ค.
  • ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ๋ธ”๋ก[ํ˜น์€ ํ…Œ์ด๋ธ”]์— ์ €์žฅํ•˜๊ณ , ๋ธ”๋ก์˜ ์ฃผ์†Œ๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„ฃ์–ด ์ „๋‹ฌํ•œ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์Šคํƒ์— (push)๋„ฃ์–ด์ง€๊ณ  ์šด์˜์ฒด์ œ์— ์˜ํ•ด (pop)๊บผ๋‚ด์–ด์ง„๋‹ค.

์šด์˜์ฒด์ œ๋Š” ๋ธ”๋ก์ด๋‚˜ ์Šคํƒ ๋ฐฉ๋ฒ•์„ ์„ ํ˜ธํ•˜๋Š”๋ฐ, ์ด๋Š” ์ „๋‹ฌ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜๋‚˜ ๊ธธ์ด๋ฅผ ์ œํ•œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋น„๊ต์  (1)์˜ ๊ฒฝ์šฐ๋Š” CPU ๋ ˆ์ง€์Šคํ„ฐ์˜ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋ฉด ๋ˆ„๋ฝ์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ ํ˜ธ๋ฅผ ์ž˜ ํ•˜์ง€ ์•Š๊ณ  (2),(3)๋ฒˆ ๋ฐฉ์‹์„ ์„ ํ˜ธํ•œ๋‹ค.


๐Ÿ’ก์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ์œ ํ˜•

์‹œ์Šคํ…œ ์ฝœ์€ ๋‹ค์„ฏ ๊ฐ€์ง€์˜ ์ค‘์š”ํ•œ ๋ฒ”์ฃผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ์ œ์–ด, ํŒŒ์ผ ์กฐ์ž‘, ์žฅ์น˜ ์กฐ์ž‘, ์ •๋ณด ์œ ์ง€๋ณด์ˆ˜, ํ†ต์‹ ๊ณผ ๋ณดํ˜ธ. ์—ฌ๊ธฐ์„œ๋Š” ๊ฐ ๋ฒ”์ฃผ๋“ค์— ์–ด๋– ํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๋Š”์ง€๋งŒ ๊ฐ„๋žตํ•˜๊ฒŒ ์‚ดํŽด๋ณธ๋‹ค.

ํ”„๋กœ์„ธ์Šค ์ œ์–ด(Process Control)

  • ๋๋‚ด๊ธฐ(end), ์ค‘์ง€(abort)
  • ์ ์žฌ(load), ์‹คํ–‰(execute)
  • ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ(create process)
  • ํ”„๋กœ์„ธ์Šค ์†์„ฑ ํš๋“๊ณผ ์„ค์ •(get process attribute and set process attribute)
  • ์‹œ๊ฐ„ ๋Œ€๊ธฐ(wait time)
  • ์‚ฌ๊ฑด ๋Œ€๊ธฐ(wait event)
  • ์‚ฌ๊ฑด์„ ์•Œ๋ฆผ(signal event)
  • ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ํ•ด์ œ : malloc, free

ํŒŒ์ผ ์กฐ์ž‘(File Manipulation)

  • ํŒŒ์ผ ์ƒ์„ฑ(create file), ํŒŒ์ผ ์‚ญ์ œ(delete file)
  • ์—ด๊ธฐ(open), ๋‹ซ๊ธฐ(close)
  • ์ฝ๊ธฐ(read), ์“ฐ๊ธฐ(write), ์œ„์น˜ ๋ณ€๊ฒฝ(reposition)
  • ํŒŒ์ผ ์†์„ฑ ํš๋“ ๋ฐ ์„ค์ •(get file attribute and set file attribute)

์žฅ์น˜ ๊ด€๋ฆฌ(Devide Management)

  • ์žฅ์น˜์˜ ๋…ผ๋ฆฌ์  ๋ถ€์ฐฉ(attach) ๋˜๋Š” ๋ถ„๋ฆฌ(detach)
  • ์žฅ์น˜ ์†์„ฑ ํš๋“, ์žฅ์น˜ ์†์„ฑ ์„ค์ •
  • ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์œ„์น˜ ๋ณ€๊ฒฝ
  • ์žฅ์น˜๋ฅผ ์š”๊ตฌ(request devices), ์žฅ์น˜๋ฅผ ๋ฐฉ์ถœrelease device)

์ •๋ณด ์œ ์ง€(Information Maintenance)

  • ์‹œ๊ฐ„๊ณผ ๋‚ ์งœ์˜ ์„ค์ •๊ณผ ํš๋“(time)
  • ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ์˜ ์„ค์ •๊ณผ ํš๋“(date)
  • ํ”„๋กœ์„ธ์Šค ํŒŒ์ผ, ์žฅ์น˜ ์†์„ฑ์˜ ํš๋“ ๋ฐ ์„ค์ •

ํ†ต์‹ (Communication)

  • ํ†ต์‹  ์—ฐ๊ฒฐ์˜ ์ƒ์„ฑ, ์ œ๊ฑฐ
  • ๋ฉ”์‹œ์ง€์˜ ์†ก์‹ , ์ˆ˜์‹ 
  • ์ƒํƒœ ์ •๋ณด ์ „๋‹ฌ
  • ์›๊ฒฉ ์žฅ์น˜์˜ ๋ถ€์ฐฉ ๋ฐ ๋ถ„๋ฆฌ

์ฐธ๊ณ :

์‹œ์Šคํ…œ์ฝœ์ด๋ž€? ์‰ฝ๊ณ  ์ž์„ธํžˆ!

[ํ—ˆ์–ธ์ฆ/๋ฆฌ๋ˆ…์Šค] System Call ์ด๋ž€? (feat. linux)

์šด์˜์ฒด์ œ 04 : ์‹œ์Šคํ…œ ์ฝœ (์‹œ์Šคํ…œ ํ˜ธ์ถœ, System Call)

๋ฐ˜์‘ํ˜•
Share Link
reply
๋ฐ˜์‘ํ˜•
ยซ   2024/11   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30