´ÙÀ½ À§·Î ÀÌÀü ¸ñÂ÷ ¸®´ª½º ÇÁ·Î±×·¡¸Ó¸¦ À§ÇÑ °¡À̵å

4. ½Ã½ºÅÛ È£Ãâ (System Calls)

½Ã½ºÅÛ È£ÃâÀº ÀϹÝÀûÀ¸·Î ¿î¿µÃ¼Á¦(Ä¿³Î)°¡ Çϵå¿þ¾î/½Ã½ºÅÛ¿¡ ÁöÁ¤µÈ ¶Ç´Â Ư±ÇÀÌ ÀÖ¾î¾ß ÇÏ´Â µ¿ÀÛµéÀ» ¼öÇàÅä·Ï ¿äûÇÏ´Â °ÍÀÌ´Ù. ¸®´ª½º 1.2 ¿¡¼­´Â 140°³ÀÇ ½Ã½ºÅÛ È£ÃâµéÀÌ Á¤ÀǵǾî ÀÖ´Ù. close()¿Í °°Àº ½Ã½ºÅÛ È£ÃâÀº ¸®´ª½º libc¿¡ ±¸ÇöµÇ¾î ÀÖ´Ù. ÀÌ ±¸ÇöÀº Á¾Á¾ °á±¹¿¡´Â syscall()¸¦ È£ÃâÇÏ´Â ¸ÅÅ©·ÎÀÇ È£ÃâÀ» Æ÷ÇÔÇÑ´Ù. syscall()¿¡ ³Ñ°ÜÁö´Â ÆĶó¹ÌÅÍ´Â ÇÊ¿äÇÑ ¾Æ±Ô¸ÕÆ®¿¡ ÀÇÇØ ÃßÀûµÇ´Â ½Ã½ºÅÛ È£Ãâ ¹øÈ£ÀÌ´Ù. ½ÇÁ¦ÀÇ ½Ã½ºÅÛ È£Ãâ ¹øÈ£µéÀº <sys/syscall.h>ÀÌ »õ·Î¿î libc¿¡ ÀÇÇØ ¾÷µ¥ÀÌÆ®µÇ´Â µ¿¾È <linux/unistd.h>¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. libc¸¦ ±Ù°£À» µÎÁö¾Ê´Â »õ·Î¿î È£ÃâÀÌ ³ªÅ¸³ªÁö ¾Ê´Â ÇÑ syscall()¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é, ¾Æ·¡¿Í °°ÀÌ syscall()¸¦ »ç¿ëÇÏ¿© ÆÄÀÏÀ» ´ÝÀ» ¼ö ÀÖ´Ù.(±ÇÀåÇÏÁö ¾ÊÀ½) :

#include <syscall.h>

extern int syscall(int, ...);

int my_close(int filedescriptor)
{
   return syscall(SYS_close, filedescriptor);
}

i386 ±¸Á¶¿¡¼­´Â Çϵå¿þ¾î ·¹Áö½ºÅÍÀÇ °¹¼ö¶§¹®¿¡ ½Ã½ºÅÛ È£Ãâ ¹øÈ£ÀÌ¿Ü¿¡ 5°³ÀÇ ¾Æ±Ô¸ÕÆ®·Î ½Ã½ºÅÛ È£ÃâÀÌ Á¦ÇѵȴÙ. ¶Ç ´Ù¸¥ ±¸Á¶À§¿¡¼­ ¸®´ª½º¸¦ »ç¿ëÇÑ´Ù¸é _syscall ¸ÅÅ©·Î¸¦ À§ÇØ Çϵå¿þ¾î°¡ ¾ó¸¶³ª ¸¹Àº ¾Æ±Ô¸ÕÆ®¸¦ Áö¿øÇÏ´ÂÁö ¶Ç´Â ¾ó¸¶³ª ¸¹Àº °³¹ßÀÚÀÇ ¼±ÅÃÀÌ Áö¿øµÇ´ÂÁö¸¦ ¾Ë¾Æ º¸±âÀ§ÇØ <asm/unistd.h>¸¦ üũÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ _syscall ¸ÅÅ©·ÎµéÀº syscall() ´ë½Å¿¡ »ç¿ëµÉ ¼ö ÀÖÁö¸¸, ÀÌ·¯ÇÑ ¸ÅÅ©·Î´Â ¶óÀ̺귯¸®¿¡ ÀÌ¹Ì Á¸ÀçÇÒ·±Áö ¸ð¸£´Â Full FunctionÀ¸·Î È®ÀåµÇ¹Ç·Î ÃßõÇÒ¸¸ÇÏÁö ¸øÇÏ´Ù.

#include <linux/unistd.h>

_syscall1(int, close, int, filedescriptor);

_syscall1 ¸ÅÅ©·Î´Â close() ÇÔ¼ö¿Í °°Àº ¸ð½ÀÀ¸·Î È®ÀåµÈ´Ù. ±×·¯¹Ç·Î libc ¾È¿¡ close()¸¦ ÇÑ,µÎ¹ø ±×¸®°í ÇÁ·Î±×·¥ ¾È¿¡ Çѹø °¡Áø´Ù. ½Ã½ºÅÛ È£ÃâÀÌ ½ÇÆÐÇϸé syscall() À̳ª _syscall ¸ÅÅ©·ÎÀÇ ¹Ýȯ°ªÀº -1ÀÌ°í ¼º°øÇϸé 0 À̳ª 0º¸´Ù Å«°ªÀ» °®´Â´Ù. ½Ã½ºÅÛ È£ÃâÀÌ ½ÇÆÐÇß´Ù¸é ¹«½¼ ÀÏÀÌ ÀϾ´ÂÁö ¾Ë±âÀ§ÇØ Àü¿ªº¯¼öÀÎ errno¸¦ »ìÆìºÁ¶ó.

BSD¿Í SYS V¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ´ÙÀ½ÀÇ ½Ã½ºÅÛ È£ÃâµéÀº ¸®´ª½º¿¡¼­ »ç¿ëÇÒ ¼ö ¾ø´Ù. :
audit(),auditon(),auditsvc(),fchroot(),getauid(),getdents(),getmsg(),mincore(), poll(),putmsg(),setaudit(),setauid().


ÀÌÀü:3. ¸®´ª½º libc ÆÐÅ°Áö ´ÙÀ½:5. "½ºÀ§½º ±º¿ë Ä®"°°Àº ioctl

Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved

Email To:Webmaster , Another address
LAST UPDATE Nov 7,1997
Created Nov 7,1997