1. API
- API는 다양한 환경에서 사용될 수 있도록 하위호환이 가능한 인터페이스다.
- 하위호환이라는 의미는, 실행파일(= 응용프로그램)의 코드를 변경하지 않고도 다양한 환경에서 동일한 기능을 수행할 수 있도록,
- 하나의 기능에 대해서 다양한 인터페이스를 제공한다는 의미다.
2. C 라이브러리
▶ libc
- 유닉스의 C 라이브러리
▶ glibc(GNU libc)
- GNU 프로젝트에서 개발된 리눅스 C 라이브러리
- 시스템 콜, 시스템 wrapper, 기본 응용 프로그램 등이 포함된 라이브러리
3. C 컴파일러
▶ cc
- 유닉스의 C 컴파일러
▶ gcc(GNU cc)
- GNU 프로젝트에서 개발된 리눅스 C 컴파일러
- 우분투 리눅스에는 gcc를 설치하여 사용한다.
- gcc 컴파일러를 설치하기 위해서는 다음의 명령어를 사용해야한다.
sudo apt-get install gcc # gcc 설치 명령
gcc --version # gcc 버전확인
gcc -o test.c test # 실행파일을 만드는 명령어, test.c를 test라는 이름의 실행파일로 생성
- 우선 gcc를 설치하고 버전을 확인한다.
- 이전 포스팅의 내용을 직접 실습해보았다면 gcc 컴파일러를 이미 설치했을 것이다.
- test.c라는 파일을 만들어 컴파일러가 잘 작동하는지 확인한다. (이 과정은 나중에 수행할 예정입니다.)
4. ABI (Application Binary Interface)
- 응용 프로그램 바이너리 인터페이스
- 함수의 실행방식, 레지스터 활용방식, 시스템 콜 실행방식, 라이브러리와 응용프로그램의 링크방식 등의 원초적인 설정을 작성한 것
- ABI가 호환되면 재컴파일 없이 동작한다. (리눅스 프로그램을 윈도우에서 사용할 수 없는 이유 - ABI가 호환되지 않음)
- 컴파일러, 링커(라이브러리 링크), 툴체인(컴파일러를 만드는 프로그램)등 에서 ABI를 제공
5. 표준화
- 컴퓨터마다 시스템 프로그래밍 방식이 다르면 서로 사용하는 프로그램이 호환되지 않는다.
- 그렇게 되면 동일한 프로그램에 대해서 컴퓨터마다의 시스템 환경에 맞는 여러가지 버전이 개발되어야 하는 불편함이 있다.
- 그러므로 시스템프로그래밍 방식에 대한 표준화는 굉장히 중요하다.
a) POSIX
- 유닉스 시스템 프로그래밍 인터페이스의 표준
- IEEE(Institute of Electronic and Electronics Engineers)에서 표준화를 시도했다.
- 리차드 스톨만(GNU 재단)이 POSIX를 표준안 이름으로 제안했다.
b) C언어 표준화
- C언어도 다양한 종류가 있다.
- ANSI(American National Standars Institute)에서 ANSI C 라는 C언어 표준을 정립했다.
- 리눅스의 경우 POSIX와 ANSI C를 모두 지원한다.
d) 계속되는 업데이트
- 끊임없이 POSIX와 C, C++ 표준이 업데이트 되고 있다.
- 이에 따라 소프트웨어 또한 계속해서 업데이트되고, 개발/기술 트랜드 또한 계속해서 변한다.
- 모든 소프트웨어, 프로그래밍 트랜드는 밑바탕이 되는 시스템 레벨의 기술을 기반하고 있다.
- 그러므로 소프트웨어와 프로그래밍 트랜드와는 상관없이 시스템 레벨의 기술은 유지되고 있다.
- 이와 같은 이유로 상위 레벨의 프로그래밍을 할지라도,
- 하위(시스템 레벨)레벨의 기술을 이해를 하고 있다면, 더 나은 성능의 소프트웨어 개발이 가능하다.
'컴퓨터공학기초 개념 > 시스템 프로그래밍' 카테고리의 다른 글
18. 프로세스 - 시스템 콜 (0) | 2021.09.15 |
---|---|
17. 프로세스 - 프로세스 ID (0) | 2021.09.15 |
15. 시스템 프로그래밍 핵심개념 (0) | 2021.09.10 |
14. shell - 소프트링크와 특수파일 (0) | 2021.09.10 |
13. shell - 하드링크 (0) | 2021.09.10 |
댓글