리눅스 시스템 호출, 라이브러리 함수와 차이의 커널 함수

항상 라이브러리 함수와 같은 시스템 호출하지만,이 같은 오늘 아니라는 것을 알고 있다고 생각 이전에 이해하지 못했다 시스템 호출뿐만 아니라 라이브러리 함수 봐.
라이브러리 함수는 우리가 일반적으로 주어진 서비스를 구하는 방법에 지침으로) (쓰기) 등의 일반적인 읽기 (로 실제로 함수 정의하는 응용 프로그램 프로그래밍 인터페이스 API,에 기능을 참조 것입니다,하지만 시스템 호출 소프트에 의해 중단 또한 커널 시스템 호출에, 명확한 요청을 보낼 수있는 커널이 완료되고, 사용자 모드 기능은 라이브러리에서 이루어집니다.
일반 사용자 공간 애플리케이션 파일 조작을 수행하는 경우, 시스템 콜, 공간 스위칭 오버 커널 사용자 공간이있을 것이다 시스템 호출을 사용하여 커널 공간에서 일어난다. 파일이 항상 저장 매체에 존재하기 때문에 사실, 심지어 읽기 및 쓰기 작업은 사용자 공간에서 라이브러리 함수를 사용하는지, 그래서 하드웨어 (메모리)를 운영하고 있으며, 시스템 콜을 일으킬 수밖에 파일을 조작합니다. 즉, 문서 라이브러리 함수의 동작은 실제로 시스템 호출에 의해 구현된다. 예 C 라이브러리 함수에 fwrite ()을 위해 달성 write () 시스템 호출을 통해서이다.
이 경우, 왜 그냥 시스템이 전화를 사용하는 라이브러리 함수는 시스템 호출의 오버 헤드를 사용할 수 있습니까? 판독 및 기록 데이터 파일 (이 달성 기본 시스템 호출의 구동 장치의 동작에 관련된 데이터의 큰 양)은 일반적으로 크기 때문에 이것은, 그 다음, 라이브러리 함수를 사용하는 것은 상당히 시스템 호출의 수를 줄일 수있다. 이 결과, 버퍼 기술에 기인한다. 사용자 공간과 커널 공간에서, 파일 조작은 사용자 공간의 버퍼가 가득 차거나 동작이 완료 쓸 때, 콘텐츠가 먼저 사용자 공간 버퍼에 기록에 fwrite 가진 파일을 작성 등의 버퍼를 사용, 사용자가 전용 버퍼 것 커널은 하드웨어 매체에 대응하는 파일에 기록 된 커널 버퍼 내용의 끝을 기록 할 때, 버퍼가 가득 할 때 또는 콘텐츠 영역은 커널 버퍼 동일한 토큰을 기입된다.
시스템 호출 시스템 명령 : 시스템 API 명령은 상대적으로, 각 시스템의 명령들이) (오픈 등의 전화를 찾을 것 같은 그런 strace를 1! 등 등 일반적으로 사용되는 시스템 명령의 LS, 호스트 이름으로, 실행 프로그램보다 높은 수준이다, BRK () 함수 fstat () 의 ioctl () 시스템 호출.
시스템 호출은 사용자 프로세스 자체가 핵심 기능하지 않은 커널 인터페이스 계층을 입력하지만 그는,이 기능은 커널을 작성라고, 시스템에 커널이 다른 시스템 호출은 해당 커널 함수를 찾을 커널에 의해 구현되는 기능입니다 시스템 호출 "서비스 루틴." 그것은 그 시스템 콜 서비스 루틴 패키지 루틴이라고 할 수있다.

추천

출처www.cnblogs.com/dbalightyear/p/11280216.html