top of page

[LSP] System Call 이란? (1)

안녕하세요. Team. LAMECH 입니다.

벌써 10월 입니다. 그 더웠던 여름은 온데간데 없고 이제는 아침, 저녁으로 쌀쌀하네요.

제 아들, 딸이 요즘 감기에 걸려 애들 엄마가 엄청 고생하고 있습니다. 전 24개월된 무려 이란성 쌍둥이 아빠 입니다. 쌍둥이 엄마의 고생은 정말 어마어마 합니다. 거기에 아빠인 저는 별로 도움이 안되니 미안하기만 합니다. 감기 조심하십시요.

지금은 13일 AM 1:00 이고, system programming 책을 보다가, 어떻게 삼천포로 빠져서 system call까지 오게 되었네요. ㅡ.ㅡ; 아마도 이 글은 아마도 이번주까지 쓰게 될 것 같습니다.

저는 글 쓰는 재주? 능력?은 꽝 입니다. 그리고 이 글을 보시는 분도 현재는 거의 없을 것이란 걸 알고 있습니다. 사실 제가 누군가에게 정보를 전하기에 관련된 분야의 지식이 거의 없다시피 합니다. 뭐랄까? 공부한 것을 한 번 정리한다는 생각으로 하고 있습니다.

뭐~~~ 개인적인 푸념은 여기까지 하고 시스템 콜(system call)에 대해서 알아보도록 하겠습니다.

제가 이해하고 있는 시스템 콜은 linux에서 시스템 자원을 관리하는 kernel이란 녀석에게 내가(application, 즉 사람이 어떤 목적을 가지고 작성한 program) 시스템 자원(hardware)를 쓰고 싶은데, 어떻게 좀 안될까? 하는 필요에서 제공되는 service라 생각합니다.

아시다시피 linux는 multi-user operating system이라는 이유로 사용자(application program)가 직접 시스템 자원을 access하는 것을 막고 있습니다. 왜냐? 나 말고 다른 사용자가 내 파일(linux는 모든 시스템 자원을 파일로 간주되기에...)을 본다거나, 수정한다면 기분이 썩 좋지도 않고, 문제를 야기할 소지가 있기 때문 입니다. 해서 linux는 시스템 자원을 kernel이란 녀석에서 관리하도록 일임 하였습니다.

우리의 application program이 linux란 OS상에서 hardware을 써야한다면 어쩔 수 없이 시스템 콜을 이용하여야 합니다. 뭔가 좀 억울하기는 하지만 그래도 괜찮습니다. 이 시스템 콜이란 녀석을 좀 알면 무리없이 피 같은 내 돈 주고 구입한 장비(거의 PC겠죠? 전 그렇습니다.)를 쓸 수 있습니다.

앞서 말한 내용을 좀 세련되게 말하면 "사용자 프로세스(user process, 우리의 노고가 담긴 application program이 실행되어 cpu와 ram에 자리를 잡았을 때..)가 software interrupt를 통해 kernel의 기능을 이용하기 위한 service을 요청하는 하나의 방법" 이라고 할 수 있겠습니다.

(실제로 kernel은 시스템 자원 관리 및 access 외에도 많은 일을 하기에...)

아~~ 그냥 쓰면 되지 왜 시스템 콜을 이용하여야만 할까요? 제가 너무 나쁘게만 말씀드린 것 같은데, 사실 저 같은 light user에게 시스템 콜이란 매우 고마운 service 입니다. 왜냐면? 기 말씀드린 보안 문제 인데요. 사용자 요청을 처리하기 전에 interface 수준에서 올바른 요청인지 검사할 수 있어 시스템 보안성을 높일 수 있고, 저수준의 programming을 몰라도 application programming 을 쉽게 할 수 있도록 해주기 때문 입니다. 상위 level의 programming language인 C/CPP정도만 알아도 APP를 만들어 낼 수 있으니 감사할 따름이죠.

이렇게 고마운 시스템 콜은 다음 시간에 제 기준에서는 아주 자세히, Linux heavy user 분들께는 아주 얇게 알아 보도록 하고 급 마무리 하겠습니다. 딸래미가 우네요... 죄송합니다... 꾸뻑~

추천 게시물
최근 게시물
SERVICES CATEGORY
보관
태그 검색
공식 SNS 페이지
  • Facebook Basic Square
  • Google+ Basic Square
  • YouTube Social  Icon
bottom of page