Library   라이브러리

(2022-11-17)

1. 라이브러리프로그램 재사용 및 생산성 향상을 위해, 
     - 프로그램 내부처리에 깊게 관여하지 않도록 도와주는,
     - 유용하고 공통적인 함수들의 집단


2. 라이브러리 특징

  ㅇ 재사용이 가능하도록 작성되고, 
  ㅇ 미리 컴파일된채 특정 라이브러리 파일에 담아둔, 
  ㅇ 함수들의 모음
     - 이들은 대개 공통적인 작업을 수행하기 위한 일련의 함수들로 구성됨


3. 언어별 표준 라이브러리

  ㅇ 특정 프로그래밍 언어 마다, 자주 사용되는 표준적인 소스 코드들을,
     - 미리 구현시켜 모아놓은 라이브러리를 말함
        . 例) 표준 C 라이브러리 (libc), C++ STL
        . 例) 파이썬 표준 라이브러리 등


4. C 언어 라이브러리

  ※ ☞ C 라이브러리 참조
     - 주로, 표준 C 라이브러리 (약칭, `libc`)를 말함
     - 통상, 미리 컴파일되어 라이브러리 파일 형태로 제공됨

  ※ (여기서는 주로, UNIX/Linux 라이브러리 에 국한하여 정리)

  ㅇ 시스템 내 라이브러리 위치 :  /lib, /lib64, /usr/lib 등

  ㅇ 라이브러리 이름 :  항상 lib로 시작함
     - 例)  lib[라이브러리명칭].so.[버전]

  ㅇ 구분  :  정적 라이브러리, 공유 라이브러리
     - 정적 라이브러리  :  파일 이름이 .a로 끝남
        . 추가필요한 다른 라이브러리들을, 모두 실행 프로그램에 포함시키는 방법
     - 공유 라이브러리 (동적 라이브러리)  :  파일 이름이 .so 및 .sa로 끝남
        . 메모리에 올려놓고, 관련된 실행 프로그램이 이와 연결되도록 함
           .. 추가필요한 다른 라이브러리들에 대한 연결고리 만을 갖도록 하는 방법
        . 공유 라이브러리는 많은 점에서 MS 윈도우즈동적 링크 라이브러리(DLL)와 비슷


5. 런타임 라이브러리 

  ※ ☞ 시스템 콜 (시스템 호출 API) 참조
     - 커널은, 시스템 호출 API를 통해, 광범위한 서비스를 제공하게 됨
     - 관련 헤더 파일 例) 
        . fcntl.h (열려있는 파일의 특성 제어를 위해서 사용), syscall.h, unistd.h 등

  ※ ☞ API 참조
     - 프로그램이 쉽게 이용할 수 있도록, 규격화된 응용 서비스들의 모음

  ※ 라이브러리 호출, 시스템 호출 간의 비교
     - 라이브러리 호출
        . 언어 또는 어플리케이션의 일부임
        . 사용자 공간에서 실행됨
        . 例) system, fprintf, malloc 등
     - 시스템 호출
        . 운영체제의 일부임
        . 트랩 또는 인터럽트를 통해, 운영체제 커널에 의뢰함
        . 커널 공간에서 실행됨
        . 例) chdir, fork, write, brk 등



Copyrightⓒ written by 차재복 (Cha Jae Bok)
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"