Linux에서 라이브러리 호출과 시스템 호출의 차이점은 무엇입니까?


13

Linux에서 라이브러리 호출과 시스템 호출의 차이점이 무엇인지 알고 싶습니다. 두 개념의 개념을 잘 이해하기위한 모든 조언은 대단히 감사하겠습니다.

답변:


9

실제로 "라이브러리 호출"과 같은 것은 없습니다. 공유 라이브러리에 연결된 함수를 호출 할 수 있습니다. 그리고 그것은 호출 할 함수의 위치를 ​​결정하기 위해 런타임에 라이브러리 경로를 검색한다는 것을 의미합니다.

시스템 호출은 커널이 처리하는 저수준 커널 호출입니다.


누군가 누군가 위의 질문을하면 시스템 호출과 함수 호출의 차이점으로 해석 할 수 있습니다.
Sen

"man ltrace"는 "라이브러리 호출 추적 프로그램"을 제공합니다. :)
ysdx

8

man man쉘 을 입력 하면 매뉴얼 섹션 목록이 나타납니다

2 시스템 호출 (커널이 제공하는 기능)

3 라이브러리 호출 (프로그램 라이브러리 내의 기능)

예를 들어, chmod입력 할 때 설명서의 섹션 2에서 찾을 수 man chmod있습니다. 그리고 fprintf섹션 3에서.


3

시스템 호출은 커널에 의해 직접 처리됩니다.

라이브러리 호출은 동적 (또는 정적으로 링크 된) 라이브러리에 의해 처리됩니다. 라이브러리 호출을 수행하는 프로그램은 호출이 작동하기 전에 해당 라이브러리를 먼저 가져와야합니다. 라이브러리 호출 자체는 시스템 호출을 사용할 수 있습니다.

때때로 라이브러리는 시스템 호출에 "프론트 엔드"로 제공되어 커널이 제공하지 않는 추가 기능이나 사용 편의성을 제공합니다.


라이브러리 호출은 반드시 동적 라이브러리에 의해 처리 될 필요는 없습니다. 라이브러리는 정적으로 링크 될 수 있으므로 가져 오기 (로드)가 필요하지 않습니다.
jlliagre

진실. 그 정보를 추가했습니다.
LawrenceC

그것의 절반 만 ...
jlliagre

헤드 전용 파일에서 작동해서는 안되며 라이브러리 호출의 일부입니까?
陳 力

1

시스템 호출 은 운영 체제가 응용 프로그램이 사용할 수 있도록 제공하는 기능입니다. math.h, string.h 등의 기능은 운영 체제와의 인터페이스와 관련이없는 기능입니다.


1

기본적으로 리눅스 커널 viz에는 두 가지 모드가 있습니다.

  1. 사용자 모드
  2. 커널 모드.

모든 리눅스 커널은이 두 모드 사이에서 서로 전환됩니다. 일반적으로 라이브러리 호출사용자 모드 에서 실행 되고 시스템 호출커널 모드 에서 실행 됩니다 . 운영 체제 측면에서 커널 모드는 본질적 으로 원자 모드이며 감독 모드입니다. 거의 모든 라이브러리 호출은 작업을 수행하기 위해 커널의 도움이 필요합니다. 각 라이브러리 호출은 차례로 기본 시스템 호출을 호출합니다. 다음 예제를 사용하여 더 명확하게 아이디어를 만들어 봅시다.

  1. fopen () : 라이브러리 호출입니다.
  2. open () : 시스템 호출입니다.

c 프로그램에서는 항상 헤더 파일에서 fopen ()을 사용합니다. 프로그래밍 환경은 커널에서 시스템 호출 open ()을 호출하고 파일 열기 작업을 수행합니다. 다시 실행 후, 제어 흐름은 사용자 모드로 돌아갑니다.

이를 설명하기 위해 다음 작업을 수행하십시오.

  1. man man: 여기 1-8에서 수동 섹션이 각각 특정 목적을 가지고 있습니다.
  2. 수행 man fopen: respose를 볼 수 있습니다 FOPEN(3). 여기서 3은 c- 라이브러리 호출 섹션 인 매뉴얼 페이지의 매뉴얼 섹션 3을 나타냅니다.
  3. 수행 man open: respose를 볼 수 있습니다 OPEN(2). 여기서 2는 시스템 호출 섹션 인 매뉴얼 페이지의 수동 섹션 2를 나타냅니다.

    당신이 개념을 이해하기를 바랍니다.


커널에는 하나의 모드 인 커널 모드 만 있습니다. 사용자 프로세스에는 userland와 kernel의 두 가지 작동 모드가 있습니다.
jlliagre

1

다른 답변에서 여기에 언급 된 차이점을 추가하십시오.

라이브러리 호출은 단순히 함수 호출이므로 사용자 공간에서 커널 공간으로 전환되지 않습니다. 반면에 시스템 호출은 커널 모드에서 작동하기 때문에 시스템 호출은 사용자 공간에서 커널 공간으로 전환됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.