시스템 소프트웨어는 하드웨어응용소프트웨어 사이에서 동작을 중재하는 소프트웨어 계층이다.[1] 이 계층은 응용 프로그램이 장치 제어 세부 사항을 직접 다루지 않아도 실행될 수 있도록 공통 인터페이스와 추상화를 제공한다.[1][2]

1. 개요

시스템 소프트웨어는 운영체제를 중심으로 컴파일러, 라이브러리, 미들웨어, 런타임처럼 실행과 배포를 떠받치는 구성 요소를 포함한다.[1][2] 이들 요소는 중앙처리장치, 메모리, 저장장치, 네트워크 같은 자원을 일관된 방식으로 다루게 해 준다.[2][3]

시스템 소프트웨어의 핵심 가치는 하드웨어를 사람이 이해하기 쉬운 규칙으로 바꾸는 데 있다.[1] 덕분에 개발자는 장치별 세부 제어보다 프로그램의 기능과 구조에 집중할 수 있다.[1][2]

2. 역할

첫째, 시스템 소프트웨어는 자원을 관리한다. 운영체제파일시스템, 메모리, 입출력 장치를 조정하고 프로세스 간 실행을 배분한다.[2][3] 이런 조정은 컴퓨팅 환경의 성능과 안정성을 함께 좌우한다.[3]

둘째, 시스템 소프트웨어는 추상화를 제공한다. 하드웨어 세부 사항을 표준 인터페이스로 바꾸면 응용소프트웨어는 같은 방식으로 저장, 출력, 통신 기능을 사용할 수 있다.[1][2] 따라서 시스템 소프트웨어는 하드웨어와 프로그램 사이의 규칙을 정리하는 기반 계층으로 이해된다.[1]

3. 주요 구성 요소

운영체제는 가장 핵심적인 시스템 소프트웨어다. 자원 할당, 보안, 파일 관리, 장치 제어를 담당하며 일반적으로 부팅 직후부터 종료 시점까지 지속적으로 동작한다.[2][3]

컴파일러와 개발 도구는 사람이 작성한 코드를 실행 가능한 형태로 바꾸고, 라이브러리는 자주 쓰는 기능을 묶어 재사용성을 높인다.[1][2] 미들웨어는 서로 다른 애플리케이션이나 서비스가 데이터를 주고받도록 연결하며, 런타임은 프로그램이 실제로 동작하는 환경을 제공한다.[1][3]

실행 기반은 시스템 소프트웨어의 또 다른 축이다. 서버나 기기에서 제공되는 공통 실행 환경은 응용 프로그램의 배포와 운영을 단순화하고, 여러 서비스가 같은 인프라를 공유하도록 돕는다.[1][3]

4. 응용 소프트웨어와의 관계

시스템 소프트웨어응용 소프트웨어는 목적이 다르다. 전자는 시스템이 돌아가도록 바탕을 만들고, 후자는 사용자가 필요한 작업을 직접 수행한다.[1][2] 문서 편집기나 웹 브라우저는 응용 소프트웨어이고, 이를 실행하게 해 주는 운영체제라이브러리는 시스템 소프트웨어에 가깝다.[1]

두 계층은 서로 의존한다. 응용 소프트웨어가 파일을 저장하거나 네트워크에 접속할 때 실제 장치와의 통신은 시스템 소프트웨어가 맡는다.[2][3] 따라서 두 계층의 경계는 분명하지만, 실제 실행에서는 긴밀하게 맞물려 있다.[1]

5. 컴퓨터 구조와 연구

컴퓨터 구조컴퓨터시스템 연구에서는 시스템 소프트웨어가 하드웨어의 성능을 얼마나 잘 끌어내는지가 중요한 주제다.[3] 이 분야는 임베디드시스템, 병렬 처리, 컴퓨터 네트워크, 컴퓨터보안처럼 폭넓은 하위 영역과 맞닿아 있다.[3]

연구 현장에서는 확장성신뢰성, 비용효율성을 동시에 만족하는 설계를 목표로 삼는다.[3] 그래서 시스템 소프트웨어는 단순한 실행 도구를 넘어, 하드웨어 자원의 활용 방식과 전체 컴퓨팅 경험을 결정하는 핵심 기반으로 다뤄진다.[2][3]

6. 같이 보기

시스템 소프트웨어와 직접 맞닿는 문서들을 함께 보면 개념의 경계가 더 분명해진다.[1]

7. 관련 문서

8. 인용 및 각주

[1] Ccs.hanyang.ac.kr(새 탭에서 열림)

[2] Ccs.kaist.ac.kr(새 탭에서 열림)

[3] Ccs.kaist.ac.kr(새 탭에서 열림)

[4] Ccs.yonsei.ac.kr(새 탭에서 열림)