코젤브

1. 리눅스의 기본 개념과 프로그래밍 본문

컴공의 일상/시스템 프로그래밍

1. 리눅스의 기본 개념과 프로그래밍

코딩하는 젤리 2022. 4. 26. 16:37

운영체제 : 하드웨어 리소스를 응용프로그램이 사용할 수 있는 형태로 변환/제공 해주는 소프트웨어

운영체제의 역할

  1. 추상화 제공
    일반적으로 사용하는 공통적인 기능 재활용 가능
    하드웨어 종속성 제거
     * 하드웨어 종속성: 하드웨어에 의존하는 / 하드웨어 업그레이드 시 애플리케이션에 영향 받는 경우
  2. 리소스 관리
    애플리케이션 간의 영향 제거
    리소스에 대한 효율적인 활용/ 공평한 접근

운영체제의 기능

  • 프로세스 관리
  • 메모리 관리
  • 파일시스템 관리
  • 프로세스 사이의 통신

시스템 프로그래밍
: 유닉스 환경에서 시스템 콜을 이용하는 프로그래밍

- 파일 시스템과 관련된 처리가 필요한 경우
- 프로세스와 관련된 처리가 필요한 경우
- 프로세스 사이의 통신이 필요한 경우


시스템 콜 vs 라이브러리 함수

시스템 콜

: 시스템(OS)이 제공하는 서비스를 프로그램에서 이용한 수 있도록 지원하는 프로그래밍 인터페이스
- 운영체제는 라이브러리나 헤더 파일 형태로 API를 제공 
- 리턴값 = 시스템 호출명(인자, ...);

라이브러리 함수
 라이브러리: 미리 컴파일된 함수를 묶어서 제공하는 특수 형태 파일
 라이브러리 함수: 라이브러리에 포함된 함수
 - 보통 /usr/lib에 위치

  • 정적 라이브러리: 프로그램 컴파일 시 같이 적재 = 실행 파일에 포함 (실행 빠름)
  • 동적 라이브러리: 실행 파일에 포함 X (실행 느림), 실행 시점에 link, 메모리를 효율적으로 사용

man 페이지
: 명령/ 함수 등 다양한 서비스에 대한 매뉴얼

- 섹션 구분 : 가장 낮은 섹션이 기본으로 출력

  • 섹션 1: 리눅스에서 사용하는 일반적인 명령
  • 섹션 2: 시스템 호출
  • 섹션 3: 라이브러리 함수