검수요청.png검수요청.png

시스템 소프트웨어

위키원
이동: 둘러보기, 검색
시스템 소프트웨어 구조

시스템 소프트웨어(System Software)는 컴퓨터 시스템 운영에 필요한 기본 환경을 제공하는 소프트웨어를 말한다. 목표는 CPU, 메모리, 네트워크, 스토리지 등 다양한 하드웨어 장치에 대한 여러 레벨의 추상화를 응용 프로그램에게 제공함으로써 보다 손쉬운 응용 프로그램 개발과 효율적인 실행을 지원하는 데에 있다.[1] 시스템 S/W 또는 플랫폼 소프트웨어라고도 불린다.

개요[편집]

응용 소프트웨어를 실행하기 위한 플랫폼을 제공하고 컴퓨터 하드웨어를 동작, 접근할 수 있도록 설계된 컴퓨터 소프트웨어다. 사용자의 문제를 직접 해결하는 응용 소프트웨어와는 반대되는 개념으로, 메모리에서 하드디스크데이터를 전송하거나 문자열을 디스플레이 장치로 출력하는 등의 작업을 수행한다. 시스템 전체를 작동시키는 프로그램으로, 프로그램을 주기억장치에 적재시키거나 인터럽트 관리, 장치 관리, 언어 번역 등의 기능도 담당하고 있다. 시스템 소프트웨어에는 로더(Loader), 운영체제(OS), 언어 프로그램, 장치 드라이버, 프로그래밍 도구, 컴파일러, 어셈블러, 링커(Linker), 유틸리티, 웹서버(Web Server), 와스(WAS), 데이터베이스 관리 시스템(DBSM) 등이 있다. 소프트웨어 라이브러리의 경우 C 런타임 라이브러리는 시스템 소프트웨어의 일부로 여기지만, 오픈 GL이나 데이터베이스 라이브러리의 경우는 명확하지 않다. 직접 회로의 비휘발성 기억 장소에 위치하는 경우가 있는데, 이런 경우 일반적으로 펌웨어로 부른다.[2] 시스템 소프트웨어는 다른 소프트웨어들이 구동 또는 처리될 수 있는 환경을 만들어주는 플랫폼의 역할을 하는 소프트웨어이기 때문에 플랫폼 소프트웨어라고도 한다. 시스템 소프트웨어 아래에는 컴퓨터 하드웨어나 운영체제 등의 하위 단계가 있고, 위로는 응용 소프트웨어(프로그램)라는 상위 단계가 있다. 시스템 소프트웨어의 아래에 또 다른 시스템 소프트웨어가 있거나 시스템 소프트웨어 위에 또 다른 시스템 소프트웨어가 있는 경우도 있을 수 있다.

역사[편집]

1950년대에 프로그래밍 언어가 등장하기 시작했으며, 프로그램과 데이터를 함께 모아 일괄처리를 수행했다. 포트란, 알콜, 코볼 등의 주요 언어가 배포되어 경영과 알고리즘 및 과학상의 문제를 각각 취급했다. 1960년에는 다양한 주변 장치를 사용할 수 있었으며, 여러 개의 작업을 주기억장치에 적재하여 실행하는 다중프로그램 및 시분할 시스템을 도입해 다중 사용자를 위한 대화식 시스템을 개발했다. 이후, 1970년대에 일괄처리, 시분할처리, 실시간처리를 모두 지원하는 다중모드 시분할 시스템으로 발전했다. 네트워크의 중요성이 부각되어 (LAN)과 이더넷(Ethernet)을 사용하였으며, 보안 유지를 위한 암호화의 중요성도 부각되었다. 소프트웨어가 지속해서 발전해 나감과 동시에 컴퓨터 하드웨어도 발전했다. 1970년대 중반 마이크로소프트가 소개되었으며, 취미로 컴퓨터를 구입하고 이용하여 소프트웨어를 작성하는 것이 경제적으로도 가능해졌다. 이는 간편하게 사용되는 개인용 컴퓨터와 PC 및 마이크로소프트 윈도우까지 이어진다. 컴퓨터를 도스(DOS)로 부팅하여 윈도우를 실행하는 방식과 도스 부팅과 동시에 윈도우가 실행되도록 설정할 수도 있었다. 1980년에는 개인용 및 워크스테이션의 등장으로 대형 컴퓨터의 강력한 기능을 갖춘 데스크톱형 소형 컴퓨터의 구축도 가능해졌다. 1990년 이후부터는 그래픽 사용자 인터페이스(GUI)가 보편적을오 활용되기 시작하여 하드웨어의 성능향상 또한 비약적인 성취를 이루어냈다. 인터넷과 월드와이드웹의 영향을 받은 시스템 소프트웨어는 시스템 설계 방식의 시계추가 중앙 집중화 시스템에서 분산 시스템 쪽으로 기울었고, 자바 프로그래밍 언어가 가상 머신의 추상화에 도움을 주었다. 시스템 소프트웨어는 하드웨어와 응용 소프트웨어 사이를 이어주는 역할을 하며, 다른 소프트웨어들이 구동 및 처리될 수 있는 환경을 만들어주기 때문에 플랫폼 소프트웨어라고도 불리고 있다.[3][4]

종류[편집]

언어 번역[편집]

컴파일러[편집]

고급 언어로 작성된 소스 프로그램 전체를 목적 프로그램으로 번역한 후, 링킹 작업을 통해 컴퓨터에서 실행 가능한 실행 프로그램을 생성하는 것이다. 쉽게 설명하면 고급 프로그래밍 언어로 작성된 원시 코드를 컴퓨터 내부에서 사용가능한 언어인 기계어로 번역하고, 실행을 가능하게 해주는 프로그램이다. 실행 단계로 구분하면 선행처리, 컴파일, 결합, 링킹 및 로딩 순으로 처리된다. 논리적 단계로 구분하면 어휘 분석, 구문 분석, 의미 분석, 중간 코드 생성, 코드 최적화, 목적 코드 생성 순으로 처리된다.[5] 원시 코드에서 목적 코드로 옮기는 과정을 컴파일이라고 하고, 여기서 원시 코드는 원래의 문서를 말한다. 목적 코드는 컴파일 과정을 통해 컴파일러가 출력한 문서를 가리키는데, 주로 다른 프로그램이나 하드웨어가 처리하기에 용이한 형태로 출력되지만 사람이 읽을 수 있는 문서 파일이나 그림 파일 등으로 옮기는 경우도 있다. 번역 과정이 번거롭고, 번역 시간이 오래 걸리긴 하지만 실행 속도가 빠르다. 포트란(Fortran), 코볼(COBOL), 파스칼(Pascal), C 언어 등이 있다.[6]

어셈블러[편집]

어셈블리어를 기계어 형태의 오브젝트 코드로 해석해주는 컴퓨터 언어 번역 프로그램이다. 기본 컴퓨터 명령어들을, 컴퓨터 프로세서가 기본 연산을 수행하는데 사용할 수 있는 비트 패턴으로 변환시키는 프로그램이다.[7] 어셈블리 명령 부호를 오프코드(opcode)로 해석할 뿐만 아니라 메모리의 위치들을 이름으로 표시하는 기능, 매크로를 통한 문장 치환 기능 등을 함께 제공한다. 실행 프로그램을 만들기 위해 얼마나 많은 패스가 소스를 거치는지에 따라 1패스와 다중 패스로 나뉜다. 높은 수준의 어셈블러는 고급 제어 구조, 높은 수준의 프로시져나 함수 선언 및 호출, 높은 수준의 자료형 추상화와 같은 높은 수준의 언어 추상화 기능을 제공하기도 한다. 현대의 어셈블러는 함수 스케줄링 기능을 가지고 있어서 중앙처리장치의 파이프라인을 효과적으로 사용할 수 있다.[8]

인터프리터[편집]

고급언어로 작성된 프로그램을 한 줄 단위로 받아들여 번역하고, 번역과 동시에 프로그램을 한 줄 단위로 즉시 실행시키는 프로그램이다. 줄 단위로 번역 실행되기 때문에 시분할 시스템에 유용하고, 프로그램이 직접 실행되기 때문에 목적 프로그램이 실행되지 않는다. 인터프리터는 소스 코드를 직접 실행하거나, 소스 코드를 효율적인 다른 중간 코드로 변환하고, 변환한 것을 바로 실행하거나, 인터프리터 시스템의 일부인 컴파일러가 만든, 미리 컴파일된 저장 코드의 실행을 호출하는 것 중 적어도 한 가지 기능을 가지고 있다. 번역 속도는 빠르지만, 실행속도가 느리다. 베이직(BASIC), 스노볼(Snobol), 리스프(Lisp), APL 등이 있다.[7]

로더[편집]

로더는 어떤 프로그램을 실행하기 위해 해당 목적 프로그램을 메모리에 적재하고 배치 주소를 옮기는 시스템 소프트웨어 프로그램이다. 프로그램을 주기억 장치에 적재하기 위해 공간을 확보하는 할당(Allocation), 주기억 장치의 일부 공간을 논리적 주소 공간으로 연결하는 연결(Linking), 주기억 장치의 공간에서 위치를 조정하는 재배치(Relocation), 프로그램을 주기억 장치에 물리적, 논리적으로 배치하는 적재(Loading) 기능이 있다. 절대(Absolute), 재배치, 직접 연결, 동적, 동적 연결 등의 로더가 있다. 절대 로더는 컴파일러에 의해 지정된 절대 주소의 메모리로 오브젝트 코드를 적재하며, 초기의 로더가 이에 해당된다. 실행 코드는 오직 단일한 연속 공간 내에서만 실행된다. 재배치 로더는 컴파일러에 의해 상대 주소로 오브젝트 코드가 생성되며, 이를 적재하는 시점에서 할당 정책에 의해 적재할 메모리 공간을 선정하고, 그 공간의 시작 주소와 상대 주소를 절대 주소로 계산하여 적재한다. 절대 로더와 마찬가지로 코드는 오직 단일한 연속 공간 내에서만 실행된다. 직접 연결 로더는 실행 코드가 몇 개의 세그먼트로 나누어져 있고, 각각의 세그먼트는 별도의 메모리 공간에 배치되며, 이때 각 변수의 주소는 직접 지정 방식에 의해 절대 주소로 변환된다. 실행 코드는 실행 전에 복수의 연속된 세그먼트로 나뉘어 적재된다. 동적 로더는 실행 코드는 세그먼트로 분리되어 있지만, 가상 기억 공간 내의 주소로 링크하는 것으로 각각의 세그먼트는 실행 시점에서 적재되며, 최종의 주소도 이때 결정된다. 동적 연결 로더는 세그먼트와 페이지로 분리되며, 가상 기억 공간 내에서도 상대 주소로 적재되는 것으로, 로더는 실행 시점에서 세그먼트를 페이지 단위로 실제 메모리에 적재하면 각 변수의 절대 주소를 바인딩한다.

링커[편집]

로더의 네 가지 기능 중 연결(Link)만을 담당하고 있고, 링커에 의해 수행되는 작업을 링킹(Linking)이라 한다. 링킹은 여러 개의 코드와 데이터를 모아서 연결하여 메모리에 로드 될 수 있고, 실행되는 한 개의 파일로 만드는 작업이다. 링커는 링킹을 담당하는 프로그램으로, 소프트웨어 개발에서 독립적인 컴파일을 가능하게 하는 역할을 한다.[9] 링커는 하나의 결과를 출력하기 위해 작성된 서로 다른 작은 프로그램들을 연결하여 실행 가능한 하나의 프로그램으로 만들어준다. 목적 프로그램을 실행 가능한 로드 모듈로 변환하는 프로그램으로 언어 번역 프로그램이 생성한 목적 프로그램들과 라이브러리 또는 다른 실행 프로그램들을 연결하여 실행 가능한 로드 모듈을 만드는 시스템 소프트웨어이며, 연결 편집기라고도 한다. 링커 덕분에 우리는 모듈 중 한 개를 변경할 때, 다른 파일들을 재컴파일할 필요가 없이 컴파일 하고자 하는 파일만을 간단하게 재컴파일 하고, 이를 다시 링크하여 변경사항을 적용할 수 있다.

유틸리티[편집]

유틸리티 프로그램은 컴퓨터 하드웨어, 운영체제, 응용 소프트웨어를 관리하는 데 도움을 주는 프로그램이다. 사용자가 컴퓨터를 편리하게 사용할 수 있도록 도와주는 시스템 소프트웨어로, 운영체제의 기능을 보완해준다. 디스크 조각모음, 파일압축, 백업과 복원, 장치 드라이버 등이 있다.[10] 유틸리티 프로그램은 시스템을 유지하고, 처리 작업이 정상적으로 진행되는 동안 시스템에 일상적인 요구 작업을 수행하는 시스템 소프트웨어이다. 플로우차트 작성기와 트랜잭션 프로파일 분석기 등의 애플리케이션 시스템, 데이터 조작 유틸리티와 자료 비교 유틸리티 등의 데이터 품질을 평가하고 검증한다. 또한, 출력분석기와 네트워크 시뮬레이터 등 프로그램의 정상 작동 여부를 테스트하고 자료의 무결성을 유지 관리한다. 신속한 프로그램 개발을 위한 지원으로는 시각적 디스플레이 유틸리티, 라이브러리 복사, 문서 편집기, 온라인 코딩 처리기, 보고서 생성기, 코드 생성기 등이다. 중앙처리장치와 메모리 이용도 모니터링기 및 통신회선 분석기를 이용하여 운영 효율성을 향상할 수 있다. 대부분의 유틸리티 기능은 보안 시스템 외부에서 실행될 수 있으며, 활동의 감사 증적을 남기지 않고 사용될 수 있다. 때문에 유틸리티 프로그램은 민감하고 강력한 유틸리티들에 대한 접근과 사용을 더욱 엄격하게 통제하고 제한되어야 한다.[11]

DBMS[편집]

데이터베이스 관리 시스템(DBMS)은 데이터베이스를 체계적으로 관리하기 위한 시스템 소프트웨어의 일종이다. 다수의 컴퓨터 사용자들이 컴퓨터에 수록한 수많은 자료들을 쉽고 빠르게 추가, 수정, 삭제할 수 있게 해준다. 축적된 자료구조의 정의, 자료구조에 따른 자료의 축적, 데이터베이스 언어에 의한 자료 검색 및 갱신 등 여러 가지 역할을 한다. 오라클(Oracle), 마이에스큐엘(MySQL), 사이베이스(SyBase) 등 여러 가지 가 있다.[12]

웹서버[편집]

웹서버는 시스템 소프트웨어의 일종이며, HTTP를 통해 웹 브라우저에 요청하는 HTML 문서나 이미지 파일 등의 객체(object)를 전송하는 서비스 프로그램이다. 웹서버 소프트웨어를 구동하는 하드웨어까지 웹서버라고 혼동하는 경우가 있는데, 하드웨어는 웹서버가 아니다. 클라이언트인 웹 브라우저의 URL에서 나타내는 HTML 문서 및 각종 정보를 HTTP로 송신한다. 대부분 클라이언트의 웹 브라우저의 사이에 다수의 커넥션을 연결하여 HTML 문서 및 기타 파일(이미지 파일 등)을 병렬로 전송하여 처리 시간을 단축하는 서비스를 제공한다. HTML 문서 처리를 위한 프로그램으로 공용 게이트웨이 인터페이스(CGI) 스크립터나 자바 서블릿 등을 사용하여 웹 화면에 연동되는 동적 처리를 수행한다. 공용 게이트웨이 인터페이스 처리를 위해 (Perl), 루비(ruby), PHP 등의 스크립트 언어가 많이 개발된 상태이다. 대규모의 웹 시스템을 구성하는 경우, 같은 서비스를 제공하는 웹서버를 병렬로 설치하고, 웹서버의 앞쪽에는 로드 밸런스라는 분산 처리 하는 네트워크 장비를 통해 웹서버에 처리를 분배하는 방식으로 사용하고 있다. 이렇게 하면 웹 시스템의 가용성과 신뢰성이 보장된다.

와스[편집]

와스(WAS)는 미들웨어 및 시스템 소프트웨어의 일종이며, 웹 응용 프로그램이 설치되어 작동하는 웹 애플리케이션 서버이다. 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 것으로 중간자(middleware)의 일종이다. 웹서버와 달리 동적 서버 콘텐츠를 수행하고, 주로 데이터베이스(DB) 서버와 같이 수행된다. 웹서버에는 HTML 문서가 저장되고, 와스에는 자바(Java) 등 응용 프로그램 파일이 저장된다. 프로그램 실행 환경과 데이터베이스 접속 기능을 제공하고, 여러 개의 트랜잭션을 관리하고, 업무를 처리하는 비즈니스 로직을 처리하는 것은 웹 애플리케이션 서버의 기본 기능이다.

특징[편집]

가장 기본이 되어야 하는 특징은 어떤 기계를 사용하는지와 무관하게 항상 동일해야 하고, 시스템 소프트웨어를 개발함에 있어서 '단 하나의 솔루션'은 없다는 것이다. 따라서 모든 소프트웨어 디자이너들은 이용 가능한 다양한 옵션들에 대해 염두에 두고 상황에 따라 가장 최적의 방법을 찾아야 한다. 모든 시스템 소프트웨어가 기계 종속적인 것은 아니지만, 일반적으로 기계 종속적이다. 따라서 시스템 소프트웨어를 개발할 때는 해당 기기의 특성에 대해 먼저 정확하게 인지하고 있어야 한다. 기능에 따라 제어프로그램과 처리 프로그램으로 분류 할 수 있다.[12]

기계 구조[편집]

  • 기계 종속적 소프트웨어 : 해당 기계가 제공하는 특징적인 기능들을 제공하며, 타깃 하드웨어를 직접 사용한다. 각 기계 별로 다른 차이점들로는 기계 코드, 명령 형식, 주소 지정 방식, 레지스터 등이 있다. 기계 종속은 컴퓨터 언어나 소프트웨어의 구성 및 작동이 특정 기계나 환경에 의존하는 속성이다.
  • 기계 독립적 소프트웨어 : 기본이 되는 설계와 로직이 모두 유사한 것으로, 어셈블러의 기본적인 로직과 설계, 코드 최적화를 제공하는 소프트웨어를 예로 들 수 있다. 기계 독립은 컴퓨터의 하드웨어 구성이나 종류에 관계없이 실행할 수 있는 것을 말한다. [12]

연구 및 개발[편집]

시스템 소프트웨어 개발자들은 컴퓨터 시스템의 자체 기능 수행 명령체계인 시스템 소프트웨어를 연구 및 개발하고, 설계하여 이와 관련한 프로그램을 작성하는 업무를 수행하고 있다. 시스템 소프트웨어 연구 및 개발은 시스템 소프트웨어 설계와 분석 및 시스템 소프트웨어 프로그램 분야로 나뉜다. 시스템 소프트웨어는 요구사항을 바탕으로 기능과 성능을 분석하고 정의하여 시스템 소프트웨어를 제작하고 테스트해야 한다. 서로 다른 유형과 다른 수준의 소프트웨어들 간의 연계 및 소프트웨어와 하드웨어 간의 연계를 고안하고, 컴퓨터 언어나 시스템 소프트웨어 패키지를 설계, 개발, 조정한다. 이 외에도 컴퓨터 시스템소프트웨어 설명서를 작성하거나, 솔루션을 프로그램 명세서로 전환, 프로그램의 타당성과 로직을 검사, 수정하는 등 여러 가지가 있다.[13] 시스템 소프트웨어 개발자에는 운영체제 프로그래머, 시스템 프로그래머, 리눅스 개발자 등 여러 가지가 있다.

운영체제[편집]

시스템 소프트웨어의 한 부분으로 하드웨어를 움직이게 할 수 있는 권한을 가지고 있어 CPU 메모리와 하드디스크 등의 하드웨어를 관리하며, 내 컴퓨터와 다른 컴퓨터들이 대화할 수 있도록 도와주는 등 많은 일들을 해주는 소프트웨어다. 즉, 개인 PC, 스마트폰, 서버컴퓨터, 채굴기 등 각종 컴퓨터 운영에 필요한 하드웨어와 소프트웨어를 제어하고 관리하기 위해 기본적이고 공통적인 기능을 모아둔 시스템 소프트웨어이다. 운영체제가 제공하는 하드웨어 제어 및 관리는 범용성을 띠고 있기 때문에, 각 애플리케이션 소프트웨어들의 특성을 반영하지 못해 일부 애플리케이션 소프트웨어는 어셈블리로 직접 하드웨어를 제어하기도 한다. 응용 소프트웨어와 하드웨어를 연결시켜주는 커널이 운영 체제에 존재한다.[12] 운영체제는 운영 방식에 따라 8가지로 나뉘는데, 데이터를 모아서 한꺼번에 처리하는 일괄처리방식, 요구 작업을 즉시 처리 하는 실시간처리방식, 처리 시간을 시간별로 분할하여 처리하는 시분할처리방식, 1개의 CPU에서 2개 이상의 프로그램을 동시에 처리하는 다중 프로그래밍 방식, 2개 이상의 CPU에서 업무를 분담하여 처리하는 다중처리방식, 한 가지 일을 여러 컴퓨터에서 나누어 처리하는 분산처리방식, 한쪽의 CPU가 작동 중일 때 다른 CPU가 고장에 대비하여 대기하고, 고장 시 즉시 업무 처리를 하는 듀플렉스시스템 방식, 2개의 CPU가 같은 업무를 동시에 처리하는 듀얼 시스템 방식이 있다.[14] 운영체제마다 구성이 다르기는 하지만 대부분이 제어 프로그램과 처리 프로그램을 공통적으로 갖고 있다.

제어 프로그램

시스템 전체의 작동 상태를 감시하고, 작업의 순서를 지정해주고, 작업에 사용되는 데이터를 관리하는 등의 역할을 수행하는 것으로, 감시 프로그램과 작업 제어 프로그램으로 구분할 수 있다. 감시 프로그램은 제어 프로그램 중 가장 중요한 역할을 담당하는 것으로, 각종 프로그램의 실행과 시스템 전체의 작동 상태를 감시, 감독하는 프로그램이다. 작업 제어 프로그램은 어떤 업무를 처리하고 다른 업무로의 이행을 자동으로 수행하기 위한 준비 및 그 처리에 대한 완료를 담당하는 프로그램으로, 작업의 연속 처리를 위한 스케줄 및 시스템 자원 할당 등을 담당한다. 작업 스케줄러는 여러 개의 작업을 연속적으로 처리하기 위하여 특정 작업이 끝났을 때 다음 작업을 준비시키는 역할을 한다. 마스터 스케줄러는 컴퓨터 시스템과 운영자 사이에서 정보를 주고받을 수 있도록 중개자 역할을 한다. 자료 관리 프로그램은 주기억장치와 보조기억장치 사이의 데이터 전송과 보조기억장치의 자료 갱신 및 유지보수 기능을 수행하는 프로그램이다.

처리 프로그램

제어 프로그램의 지시를 받아 사용자가 요구한 문제를 해결하기 위한 프로그램이다. 또한, 언어 번역 프로그램과 서비스 프로그램 및 문제 프로그램 등으로 구분한다. 언어 번역 프로그램은 원시 프로그램을 기계어 형태의 목적 프로그램 및 번역하는 프로그램이다. 어셈블러, 컴파일러, 인터프리터 등이 있다. 문제 프로그램은 문제의 프로그램의 특정 업무 및 문제 해결을 위해 사용자가 작성한 프로그램도 있다. 서비스 프로그램은 컴퓨터를 효율적으로 사용할 수 있는 사용 빈도가 높은 프로그램으로 연결 편집기, 링커, 정렬 및 합병 프로그램, 라이브러리안, 유틸리티 프로그램 등이 있다. 연결 편집기와 링커는 언어 번역 프로그램이 생성한 목적 프로그램과 또 다른 목적 프로그램, 라이브러리 함수 등을 연결하여 실행 가능한 프로그램(로드 모듈)을 만드는 프로그램이다. 정렬 및 합병 프로그램은 데이터를 일정한 기준으로 정렬하거나 정렬된 두 개 이상의 파일을 하나로 합치는 프로그램이다. 라이브러리안은 프로그램의 라이브러리를 유지/관리하는 프로그램, 유틸리티 프로그램은 사용자의 편의를 도모하기 위한 프로그램으로 편집기, 디버깅 등이 있다.

각주[편집]

  1. 김진수, 〈시스템 소프트웨어 및 구조 연구실〉, 《서울대학교 컴퓨터공학부》
  2. 시스템 소프트웨어〉, 《위키백과》
  3. DEV KOBOSO, 〈소프트웨어와 정보시스템〉, 《개인 사이트》, 2019-04-27
  4. 100일의 도전 m1k1, 〈2.2 소프트웨어 공학 역사〉, 《티스토리》, 2019-10-08
  5. 차재복, 〈Compiler, Compile 컴파일러, 컴파일〉, 《정보통신기술용어해설》
  6. 휴먼밸, 〈프로그램 언어와 컴파일러〉, 《오픈튜토리얼스》, 2016-10-21
  7. 7.0 7.1 프로그래머(뉴비), 〈시스템 소프트웨어의 구성〉, 《티스토리》, 2017-10-10
  8. 어셈블러〉, 《위키백과》
  9. bruteforce, 〈(Linking) 링커/링킹이란 무엇인가〉, 《티스토리》, 2020-01-14
  10. 코딩팩토리, 〈(OS) 시스템 소프트웨어의 개념과 구성〉, 《티스토리》, 2019-01-27
  11. International Scholar Pooh, 〈4.5.6 유틸리티 프로그램〉, 《개인 사이트》, 2019-10-23
  12. 12.0 12.1 12.2 12.3 조영규, 〈시스템 소프트웨어란?(응용소프트웨어와 시스템 소프트웨어의 차이)〉, 《다음 블로그》, 2014-03-03
  13. 시스템 소프트웨어 개발자〉, 《통계청》
  14. javrin4, 〈시스템소프트웨어, 응용소프트웨어, 고급언어, 저급언어〉, 《네이버 블로그》, 2017-03-01

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 시스템 소프트웨어 문서는 소프트웨어에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.