컴공의 일상/시스템 프로그래밍
1. 리눅스의 기본 개념과 프로그래밍
코딩하는 젤리
2022. 4. 26. 16:37
운영체제 : 하드웨어 리소스를 응용프로그램이 사용할 수 있는 형태로 변환/제공 해주는 소프트웨어
운영체제의 역할
- 추상화 제공
일반적으로 사용하는 공통적인 기능 재활용 가능
하드웨어 종속성 제거
* 하드웨어 종속성: 하드웨어에 의존하는 / 하드웨어 업그레이드 시 애플리케이션에 영향 받는 경우 - 리소스 관리
애플리케이션 간의 영향 제거
리소스에 대한 효율적인 활용/ 공평한 접근
운영체제의 기능
- 프로세스 관리
- 메모리 관리
- 파일시스템 관리
- 프로세스 사이의 통신
시스템 프로그래밍
: 유닉스 환경에서 시스템 콜을 이용하는 프로그래밍
- 파일 시스템과 관련된 처리가 필요한 경우
- 프로세스와 관련된 처리가 필요한 경우
- 프로세스 사이의 통신이 필요한 경우
시스템 콜 vs 라이브러리 함수
시스템 콜
: 시스템(OS)이 제공하는 서비스를 프로그램에서 이용한 수 있도록 지원하는 프로그래밍 인터페이스
- 운영체제는 라이브러리나 헤더 파일 형태로 API를 제공
- 리턴값 = 시스템 호출명(인자, ...);
라이브러리 함수
라이브러리: 미리 컴파일된 함수를 묶어서 제공하는 특수 형태 파일
라이브러리 함수: 라이브러리에 포함된 함수
- 보통 /usr/lib에 위치
- 정적 라이브러리: 프로그램 컴파일 시 같이 적재 = 실행 파일에 포함 (실행 빠름)
- 동적 라이브러리: 실행 파일에 포함 X (실행 느림), 실행 시점에 link, 메모리를 효율적으로 사용
man 페이지
: 명령/ 함수 등 다양한 서비스에 대한 매뉴얼
- 섹션 구분 : 가장 낮은 섹션이 기본으로 출력
- 섹션 1: 리눅스에서 사용하는 일반적인 명령
- 섹션 2: 시스템 호출
- 섹션 3: 라이브러리 함수