라이브러리 함수와 시스템 콜 차이
시스템 콜
커널 자원을 사용자가 사용할 수 있도록 미리 만들어 놓은 함수
사용자 모드 -> 시스템 콜 호출 -> 커널모드
라이브러리 함수
사용자가 많이 사용할 것 같은 기능을 미리 함수로 만들어 놓은 것
사용자 모드 -> 라이브러 함수 호출 -> 사용자 모드
차이가 멀까?
//오류 발생 이유: 메모리할당 하지 않음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 |