시스템 프로그래밍
시스템 프로그래밍을 할 때는 반드시 프로그램이 동작할 하드웨어와 운영체제에 대해 정확히 알고 개발해야 한다.
시스템 프로그램은 주로 커널 및 시스템 라이브러리를 사용하고 애플리케이션 프로그램은 고급 라이브러리를 사용한다. 고급 라이브러리는 하드웨어와 운영체제에 대한 자세한 내용을 추상화하는데, 추상화는 서로 다른 시스템 간 이식을 가능하게 하거나 서로 다른 버전 간의 호환성을 제공하며 더 사용하기 쉽고 강력한 상위 레벨의 툴킷을 작성할 수 있게 해준다.
리눅스 시스템 프로그래밍은 시스템 콜, C 라이브러리, C 컴파일러를 주축으로 이뤄진다.
시스템 콜
사용자 영역의 애플리케이션을 커널 영역으로 직접 연결하는 것은 불가능하다. 보안과 안정성의 이유로 애플리케이션은 커널 코드를 직접 실행하거나 커널 내부 데이터를 조작할 수 없다. 대신 애플리케이션은 시스템 콜을 실행한다는 '시그널'을 커널로 보낼 수 있다. 이러한 매커니즘을 통해서만 커널 내부로 진입하고 커널이 허용한 코드를 실행한다.
C 라이브러리
C 라이브러리(libc)는 유닉스 애플리케이션의 핵심이다.
다른 언어로 프로그래밍해도 상위 레벨의 라이브러리에 포함되어 핵심 서비스와 시스템 콜을 처리하기 위해 C 라이브러리가 동작한다.
Last updated
Was this helpful?