라이브러리 함수와 시스템 콜 차이

시스템 콜

커널 자원을 사용자가 사용할 수 있도록 미리 만들어 놓은 함수

사용자 모드 -> 시스템 콜 호출 -> 커널모드

라이브러리 함수

사용자가 많이 사용할 것 같은 기능을 미리 함수로 만들어 놓은 것

사용자 모드 -> 라이브러 함수 호출 -> 사용자 모드

차이가 멀까?

//오류 발생 이유: 메모리할당 하지 않음
time_t * cur_time;
 
time(cur_time);
 
printf("%d", (int)cur_time);

포인트 변수에 메모리를 할당하지 않고 사용하면 Segmentation Fault 오류 발생한다.

time_t * cur_time = (time_t *)malloc(sizeof(time_t));

시스템 콜은 커널이 건네주는 정보를 사용자 모드의 프로그램에 받아오려면 반드시 사용자 영역에 메모리를 할당해야 한다.

time_t * cur_time;
 
char * cur_string;
 
cur_string = ctime(cur_time);
printf("%s", cur_string);

하지만 라이브러리 함수는 사용자의 영역의 메모리를 별도로 할당하지 않아도 된다.

오류 처리 결과의 차이점도 있다.

시스템 콜 함수는 오류시 리턴 값은 -1이지만 라이브러리 함수는 오류시 NULL 값을 리턴한다.

'Operator System > Linux' 카테고리의 다른 글

쉘 프로그래밍 간단한 문법  (0) 2017.10.26
프로세스와 생성방법  (0) 2017.10.26
Make  (0) 2017.10.26
파일  (0) 2017.10.26
Compile과 라이브러리  (0) 2017.10.26

+ Recent posts