System call / Library call 차이
System call :
- OS안에
- 그들이 구현되어있는 것이 kernel내에 있어서 user가 진입하는 entry point
Library call :
- OS밖에
- 커널밖에 존재하기 때문에 user의 call을 라이브러리가 변경시켜서 kernel에 전달을 하는 기능을 하는 프로그램
System call은 다양한 측면에서 사용할 수 있다.
System call을 직접 사용할 수 있고 Libray call을 통해서 사용할 수 있다.
System Calls & Library Calls for File I/O
Library call
- Library는 자체도 하나의 프로그램
- System call을 통해서 System kernel에 있는 System utility를 사용하도록 만들어진 Program
1. user가 프로그래밍을 할 때 API제공을 목적으로 한다.
2. 자주 사용되는 기능을 프로그램화, 함수화 시킨 Obj
z.B) graphic, mat 등. obj형태로 존재
3. Linux에서 “/lib” or in “/usr/lib” 에 있다.
- user가 어떤 API함수들을 호출해서 Library call 실행한다.
- Source Code file을 컴파일하면 Executable File 생성된다.
- 프로그램을 실행할 때 linker라는 도구가 Library file안에 있는 function들을 linking 해준다
- user프로그램이 link되어서 실행된다.
Library 종류 (만드는 방식)
- 1. shared
- 공유된다.
- 다수의 user가 program이 동일한 기능을 수행하는 라이브러리를 이용한다면 하나의 프로그램만 만들고 공유해서 사용한다.
- 이 기능이 구현되어 있는 code가 Memory에 하나가 존재하고 Address가 user에게 제공된다.
- 실행파일은 link로 가져온다. Dynamic linking시스템이다.
- 프로그램 Memory 효율성
- 서버같은데서 돌아간다
- 2. static
- 각각의 프로그램에 static하게 실행파일에 들어간다.
- 프로그램마다 중복되어서 들어간다.
장 : 직접 code를 가지고 있어서 빠르게 실행된다.
단 : Memory 공간이 중복되어서 Memory overhead.
- 프로그램이 많이 들어가지 않는 embeded system에서 사용된다.
'시스템 프로그래밍' 카테고리의 다른 글
시스템 프로그래밍 2장 - Library call : File I/O function (0) | 2020.05.05 |
---|---|
시스템 프로그래밍 2장 - Library call : File I/O (0) | 2020.05.05 |
시스템 프로그래밍 1장 - Shell, File system, Compile (0) | 2020.05.05 |
시스템 프로그래밍 1장 - System-call, Library-call (0) | 2020.05.05 |
시스템 프로그래밍 1장 - OS (0) | 2020.05.05 |