Linux System Programming(0) - What is System Programming

kimseyoung·2022년 12월 28일
0

System Programming

목록 보기
2/3

시스템 프로그래밍의 개념

시스템 프로그래밍이란 커널 및 핵심 시스템 라이브러리를 직접 사용하면서 하위 레벨에서 동작하는 시스템 소프트웨어를 작성하는 기술을 일컫는다. 셸, 텍스트 편집기, 컴파일러, 디버거, 시스템 유틸리티 및 시스템 데몬은 모두 시스템 소프트웨어이다. 네트워크 서버, 웹서버, 데이터베이스 역시 시스템 소프트웨어의 종류이며 이 런 스프퉤어는 주로 커널과 C 라이브러리를 직접 사용한다. GUI 애플리케이션 같은 소프트웨어는 시스템 소프트웨어보다 상위 레벨에서 동작하며 아주 가끔 필요한 경우에만 하위 레벨을 필요로 한다.

리눅스(Linux) 운영체제

리눅스는 리누스 토르발스(Linux Torvalds)가 처음 개발했으며, 지금은 오픈소스 운영체제의 대표가 되었다. 리눅스는 유닉스(UNIX)의 목표와 철학을 공유하고 있지만, 리눅스는 실용성에 집중하며 리눅스만의 독자적인 길을 만들어가는 중이다. 리눅스는 유닉스의 기본적인 면만 제외하면, 추가적인 시스템 콜 지원과 명료한 동작 특성, 새로운 기능을 제공함으로써 다른 전통적인 유닉스 시스템과 차별화 되고 있다.

시스템 프로그래밍 vs 애플리케이션 프로그래밍

시스템 프로그래밍과 애플리케이션 프로그래밍을 비교해보면 중요한 몇몇 부분만 다르고 나머지는 비슷하다. 시스템 프로그래밍을 할 때는 꼭 프로그램이 동작할 하드웨어와 운영체제에 대해서 정확히 알고 개발해야한다. 시스템 프로그램은 주로 커널 및 시스템 라이브러리를 사용하고 애플리케이션 프로그램은 고급 라이브러리를 사용한다.

이런 고급 라이브러리는 하드웨어와 운영체제에 대한 자세한 내용을 추상화(Abstract)하는데, 추상화는 서로 다른 시스템 간 이식을 가능하게 하거나 서로 다른 버전 간의 호환성을 제공하며 더 사용하기 쉽고 강력한 상위 레벨의 툴킷을 작성할 수 있게 해준다.

애플리케이션을 작성할 때 고급 라이브러리나 시스템 라이브러리를 얼마나 사용할지는 전적으로 애플리케이션이 동작하는 범위에 따라 결정된다. 하지만 시스템의 하위 레벨과 동떨어진 상위 레벨에서 동작하는 애플리케이션일지라도 시스템 프로그래밍을 알고 개발한다면 더 나은 애플리케이션을 만들 수 있다.

시스템 내부에 대한 이해는 모든 형태의 프로그래밍에 있어 큰 도움이 된다.

profile
Back-end Developer, DevOps Engineer

0개의 댓글