운영체제에는 커널모드와 사용자모드가 있다.
(1) 시스템 콜
시스템 콜이란 커널의 자원을 사용자가 사용할 수 있도록 만들어 놓은 함수들을 말한다. 시스템 콜을 호출하면, 사용자 모드에서 커널 모드로 전환하여 실행된다.
(2) 라이브러리 함수
라이브러리 함수란 사용자들이 많이 사용할 것 같은 기능들을 미리 함수로 만들어 놓은 것이다. 라이브러리 함수를 호출하면, 사용자 프로그램은 사용자 모드에서 실행된다.
(3) 시스템 콜 vs 라이브러리 함수
시스템 콜을 통해 커널 모드로 전환하여 사용자 프로그램에 필요한 값들을 전달해 줄 수 있는데, 사용자 프로그램에서 커널의 메모리 공간을 직접 이용할 수 없으므로, 메모리 공간을 할당해야한다.
-> 메모리 할당을 안할 시 Segmentation fault 발생.
반면, 라이브러리 함수는 특별한 할당이 없이도 라이브러리 함수에서 할당된 메모리를 이용할 수 있다.
시스템 콜 | 라이브러리 함수 | |
---|---|---|
수행공간 | 커널모드 | 사용자모드(유저모드) |
메모리 할당 여부 | 별도로 사용자 모드에서 메모리 할당 필요 | 라이브러리 함수에서 할당된 메모리 이용 가능 |