"시스템 소프트웨어"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
잔글
1번째 줄: 1번째 줄:
'''시스템 소프트웨어'''(system software)는 시스템 운영에 필요한 기본 환경을 제공하는 [[소프트웨어]]를 말한다. 간략히 '''시스템 S/W'''라고 쓴다. 시스템 S/W에는 [[운영체제]](OS), [[웹서버]](Web Server), [[와스]](WAS), [[데이터베이스 관리 시스템]](DBMS) 등이 있다.
+
'''시스템 소프트웨어'''(system software)는 컴퓨터 시스템 운영에 필요한 기본 환경을 제공하는 [[소프트웨어]]를 말한다. 간략히 '''시스템 S/W'', '''시스템 SW'''라고 쓴다. 시스템 소프트웨어의 목표는 CPU, 메모리, 네트워크, 스토리지 등 다양한 하드웨어 장치에 대한 여러 레벨의 추상화를 응용 프로그램에게 제공함으로써 보다 손쉬운 응용 프로그램 개발과 효율적인 실행을 지원하는 데에 있다.<ref>김진수, 〈[https://cse.snu.ac.kr/lab/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EB%B0%8F-%EA%B5%AC%EC%A1%B0-%EC%97%B0%EA%B5%AC%EC%8B%A4 시스템 소프트웨어 및 구조 연구실]〉, 《서울대학교 컴퓨터공학부》</ref>
 +
 
 +
==개요==
 +
응용 소프트웨어를 실행하기 위한 플랫폼을 제공하고 컴퓨터 하드웨어를 동작, 접근할 수 있도록 설계된 컴퓨터소프트웨어다. 사용자의 문제를 직접 해결하는 응용 소프트웨어와는 반대되는 개념으로, 메모리에서 하드디스크로 데이터를 전송하거나 문자열을 디스플레이 장치로 출력하는 등의 작업을 수행한다. 시스템 전체를 작동시키는 프로그램으로, 프로그램을 주기억장치에 적재시키거나 인터럽트 관리, 장치관리, 언어 번역등의 기능도 담당하고 있다. 시스템 소프트웨어에는 로더(Loader), 운영체제(OS), 언어 프로그램, 장치 드라이버, 프로그래밍 도구, 컴파일러, 어셈블러, 링커(Linker), 유틸리티, 웹 서버(Web Server), 와스(WAS), 데이터베이스 관리 시스템(DBSM) 등이 있다. 소프트웨어 라이브러리의 경우 C 런타임 라이브러리는 시스템 소프트웨어의 일부로 여기지만, 오픈 GL이나 데이터베이스 라이브러리의 경우는 명확하지 않다. 직접 회로의 비휘발성 기억 장소에 위치하는 경우가 있는데, 이런 경우 일반적으로 펌웨어로 부른다.<ref>〈[https://ko.wikipedia.org/wiki/%EC%8B%9C%EC%8A%A4%ED%85%9C_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4 시스템 소프트웨어]〉, 《위키백과》</ref>
 +
 
 +
==특징==
 +
가장 기본이 되어야하는 특징은 어떤 기계를 사용하는 지와 무관하게 항상 동일해야 한고, 시스템 소프트웨어를 개발함에 있어 '''단 하나의 솔루션'''은 없다는 것이다. 따라서 모든 소프트웨어 디자이너들은 이용 가능한 다양한 옵션들에 대해 염두에 두고 상황에 따라 가장 최적의 방법을 찾아야 한다. 모든 시스템 소프트웨어가 기계 종속적인 것은 아니지만, 일반적으로 기계 종속적이다. 따라서 시스템 소프트웨어를 개발할 때는 해당 기기의 특성에 대해 먼저 정확하게 인지하고 있어야 한다. 기능에 따라 제어프로그램과 처리 프로그램으로 분류 할 수 있다.<ref name=“소프트웨어시스템및운영체제”>조영규, 〈[http://dev.youngkyu.kr/5 시스템 소프트웨어란?(응용소프트웨어와 시스템 소프트웨어의 차이)]〉, 《다음 블로그》, 2014-03-03</ref>
  
 
== 종류 ==
 
== 종류 ==
* '''[[운영체제]]'''(運營體制, '''OS''') : 개인 [[PC]], [[스마트폰]], [[서버컴퓨터]], [[채굴기]] 등 각종 [[컴퓨터]] 운영에 필요한 [[하드웨어]]와 [[소프트웨어]]를 제어하고 관리하기 위해 기본적이고 공통적인 기능을 모아둔 [[시스템 소프트웨어]]를 말한다.
+
로더(Loader), 운영체제(OS), 언어 프로그램, 장치 드라이버, 프로그래밍 도구, 컴파일러, 어셈블러, 링커(Linker), 유틸리티, 웹 서버(Web Server), 와스(WAS), 데이터베이스 관리 시스템(DBSM)
* '''[[웹서버]]'''<!--웹 서버-->(web server) : [[페이지]]가 들어 있는 [[파일]]사용자에게 제공하는 [[서버]] [[프로그램]]이다.
+
===로더===
* '''[[와스]]'''('''WAS''') : Web Application Server의 약자로서, 웹 응용 프로그램이 설치되어 작동하는 웹 애플리케이션 서버를 말한다. [[미들웨어]]의 일종이다. 웹서버에는 [[HTML]] 문서가 저장되고, WAS에는 [[Java]] 등 응용 프로그램 파일이 저장된다.
+
어떤 프로그램을 실행하기 위해 해당 목적 프로그램을 메모리에 적재하고 배치 주소를 옮기는 프로그램이다.
* '''[[데이터베이스 관리 시스템]]'''('''DBMS''') : Database Management System의 약자로서, [[데이터베이스]](DB)를 체계적으로 관리하기 위한 시스템 소프트웨어를 말한다.
+
*기능
 +
:프로그램을 주기억 장치에 적재하기 위해 공간을 확보하는 할당(Allocation), 주기억 장치의 일부 공간을 논리적 주소 공간으로 연결하는 연결(Linking), 주기억 장치의 공간에서 위치를 조정하는 재배치(Relocation), 프로그램을 주기억 장치에 물리적, 논리적으로 배치하는 적재(Loading) 기능이 있다.
 +
*종류
 +
절대(Absolute) 로더, 재배치 로더, 직접 연결 로더, 동적 로더, 동적 연결 로더 등이 있다. 절대 로더는 컴파일러에 의해 지정된 절대 주소의 메모리로 오브젝트 코드를 적재하며, 초기의 로더가 이에 해당된다. 실행 코드는 오직 단일한 연속 공간 내에서만 실행된다. 재배치 로더는 컴파일러에 의해 상대 주소로 오브젝트 코드가 생성되며, 이를 적재하는 시점에서 할당 정책에 의해 적재할 메모리 공간을 선정하고, 그 공간의 시작 주소와 상대 주소를 절대 주소로 계산하여 적재한다. 절대 로더와 마찬가지로 코드는 오직 단일한 연속 공간 내에서만 실행된다. 직접 연결 로더는 실행 코드가 몇 개의 세그먼트로 나누어져 있고, 각각의 세그먼트는 별도의 메모리 공간에 배치되며, 이때 각 변수의 주소는 직접 지정 방식에 의해 절대 주소로 변환된다. 실행 코드는 실행 전에 복수의 연속된 세그먼트로 나뉘어 적재된다. 동적 로더는 실행 코드는 세그먼트로 분리되어 있지만, 가상 기억 공간 내의 주소로 링크하는 것으로 각각의 세그먼트는 실행 시점에서 적재되며, 최종의 주소도 이때 결정된다. 동적 연결 로더는 세그먼트와 페이지로 분리되며, 가상 기억 공간 내에서도 상대 주소로 적재되는 것으로, 로더는 실행 시점에서 세그먼트를 페이지 단위로 실제 메모리에 적재하면 각 변수의 절대 주소를 바인딩 한다.
 +
 
 +
===운영체제===
 +
시스템 소프트웨어의 한 부분으로 하드웨어를 움직이게 할 수 있는 권한을 가지고 있어, CPU 메모리, 하드디스크 등의 하드웨어를 관리해주고, 내 컴퓨터와 다른 컴퓨터들이 대화할 수 있도록 도와주는 등 많은 일들을 해주는 소프트웨어다. 조금 더 풀어서 설명하자면, 개인 [[PC]], [[스마트폰]], [[서버컴퓨터]], [[채굴기]] 등 각종 컴퓨터 운영에 필요한 하드웨어와 소프트웨어를 제어하고 관리하기 위해 기본적이고 공통적인 기능을 모아둔 시스템 소프트웨어를 말한다. 운영체제가 제공하는 하드웨어 제어 및 관리는 범용성을 띠고 있기 때문에, 각 애플리케이션 소프트웨어들의 특성을 반영하지 못해 일부 애플리케이션 소프트웨어는 어셈블리로 직접 하드웨어를 제어하기도 한다. 응용 소프트웨어와 하드웨어를 연결시켜주는 커널이 운영 체제에 존재한다.<ref name=“소프트웨어시스템및운영체제”></ref> 운영체제는 운영 방식에 따라 8가지로 나뉘는데, 데이터를 모아서 한꺼번에 처리하는 일괄처리방식, 요구 작업을 즉시 처리하는 실시간처리방식, 처리시간을 시간별로 분할하여 처리하는 시분할처리방식, 1개의 CPU에서 2개 이상의 프로그램을 동시에 처리하는 다중 프로그래밍 방식, 2개 이상의 CPU에서 업무를 분담하여 처리하는 다중처리방식, 한 가지 일을 여러 컴퓨터에서 나누어 처리하는 분산처리방식, 한쪽의 CPU가 작동 중일 때 다른 CPU가 고장에 대비하여 대기하고, 고장 시 즉시 업무 처리를 하는 듀플렉스시스템 방식, 2개의 CPU가 같은 업무를 동시에 처리하는 듀얼 시스템 방식이 있다.<ref>javrin4, 〈[https://m.blog.naver.com/javrin4/220947459680 시스템소프트웨어, 응용소프트웨어, 고급언어, 저급언어]〉, 《네이버 블로그》, 2017-03-01</ref>
 +
 
 +
===링커===
 +
하나의 결과를 출력하기 위해 작성된 서로 다른 작은 프로그램들을 연결하여 실행 가능한 하나의 프로그램으로 만들어준다. 로더의 4가지 기능 중 연결만을 담당하고 있다.
 +
 
 +
===웹서버===
 +
HTTP를 통해 브라우저에 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말한다. 웹 서버 소프트웨어를 구동하는 하드웨어까지 웹 서버라고 혼동하는 경우가 있는데, 하드웨어는 웹 서버가 아니다. 클라이언트인 웹 브라우저의 URL에서 나타내는 HTML 문서 및 각종 정보를 HTTP로 송신한다. 대부분 클라이언트의 브라우저의 사이에 다수의 커넥션을 연결하여 HTML 문서 및 기타파일(이미지 파일 등)병렬로 전송하여 처리시간을 단축하는 서비스를 제공한다. HTML 문서 처리를 위한 프로그램으로 CGI 스크립터나 자바 서블릿 등을 사용하여 웹 화면에 연동되는 동적 처리를 수행한다. CGI 처리를 위해 펄(Perl), 루비(ruby), PHP 등의 스크립트 언어가 많이 개발된 상태이다. 대규모의 웹 시스템을 구성하는 경우, 같은 서비스를 제공하는 웹 서버를 병렬로 설치하고, 웹 서버의 앞쪽에는 로드 밸런스라는 분산 처리하는 네트워크 장비를 통해 웹 서버에 처리를 분배하는 방식으로 사용하고 있다. 이렇게 하면 웹 시스템의 가용성과 신뢰성이 보장된다.
 +
 
 +
===웹 애플리케이션 서버===
 +
와스(Web Application Server, WAS)라고도 하며, 웹 응용 프로그램이 설치되어 작동하는 웹 애플리케이션 서버를 말한다. 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 것으로 미들웨어의 일종이다. 웹 서버와 달리 동적 서버 콘텐츠를 수행하고, 주로 데이터베이스 서버와 같이 수행된다. 웹서버에는 [[HTML]] 문서가 저장되고, WAS에는 [[Java]] 등 응용 프로그램 파일이 저장된다. 프로그램 실행 환경과 데이터베이스 접속 기능을 제공하고, 여러 개의 트랜잭션을 관리하고, 업무를 처리하는 비즈니스 로직을 처리하는 것은 웹 애플리케이션 서버의 기본 기능이다.
 +
 
 +
===데이터베이스 관리 시스템===
 +
Database Management System의 약자를 따 DBSM이라고도 하며, [[데이터베이스]](DB)를 체계적으로 관리하기 위한 시스템 소프트웨어를 말한다. 다수의 컴퓨터 사용자들이 컴퓨터에 수록한 수많은 자료들을 쉽고 빠르게 추가, 수정, 삭제할 수 있게 해준다. 축적된 자료구조의 정의, 자료구조에 따른 자료의 축적, 데이터베이스 언어에 의한 자료 검색 및 갱신, 정보의 기밃호 등 여러 가지 역할을 한다. Oracle, MySQL, SyBase 등 여러 가지 가 있다.<ref name=“소프트웨어시스템및운영체제”></ref>
 +
 
 +
==분류==
 +
===제어 프로그램===
 +
시스템 전체의 작동 상태를 감시하고, 작업의 순서를 지정해주고, 작업에 사용되는 데이터를 관리하는 등의 역할을 수행하는 것으로, 감시 프로그램과 작업 제어 프로그램으로 구분할 수 있다.
 +
*감시 프로그램: 제어 프로그램 중 가장 중요한 역할을 담당하는 것으로, 각종 프로그램의 실행과 시스템 전체의 작동 상태를 감시, 감독하는 프로그램이다.
 +
*작업 제어 프로그램: 어떤 업무를 처리하고 다른 업무로의 이행을 자동으로 수행하기 위한 준비 및 그 처리에 대한 완료를 담당하는 프로그램으로, 작업의 연속  처리를 위한 스케줄 및 시스템 자원 할당 등을 담당한다.
 +
*자료 관리 프로그램: 주기억장치와 보조기억장치 사이의 데이터 전송과 보조기억장치의 자료 갱신 및 유지보수 기능을 수행하는 프로그램이다.
 +
 
 +
===처리 프로그램===
 +
제어 프로그램의 지시를 받아 사용자가 요구한 문제를 해결하기 위한 프로그램으로, 언어 번역 프로그램과 서비스 프로그램, 문제 프로그램 등으로 구분한다.
 +
*언어 번역 프로그램: 원시 프로그램을 기계어 형태의 목적  프로그램으로 번역하는 프로그램으로, 어셈블러, 컴파일러, 인터프리터가 있다.
 +
*서비스 프로그램: 컴퓨터를 효율적으로 사용할 수 있는 사용빈도가 높은 프로그램으로 연결 편집기, 링커, 정렬·합병 프로그램, 라이브러리안, 유틸리티 프로그램 등이 있다.
 +
*문제 프로그램: 문제 프로그램의 특정 업무 및 문제 해결을 위해 사용자가 작성한 프로그램이다.<ref>코딩팩토리, 〈[https://coding-factory.tistory.com/299 (OS) 시스템 소프트웨어의 개념과 구성]〉, 《티스토리》, 2019-01-27</ref>
 +
 
 +
==기계 구조==
 +
*기계 종속적 소프트웨어
 +
해당 기계가 제공하는 특징적인 기능들을 제공하며, 타깃 하드웨어를 직접 사용한다. 각 기계 별로 다른 차이점들로는 기계 코드, 명령 형식, 주소 지정 방식, 레지스터 등이 있다.
 +
*기계 독립적 소프트웨어
 +
기본이 되는 설계와 로직이 모두 유사한 것으로, 어셈블러의 기본적인 로직과 설계, 코드 최적화를 제공하는 소프트웨어를 예로 들 수 있다.<ref name=“소프트웨어시스템및운영체제”></ref>
 +
 
 +
{{각주}}
 +
 
 +
 
 +
==참고자료==
 +
*김진수, 〈[https://cse.snu.ac.kr/lab/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EB%B0%8F-%EA%B5%AC%EC%A1%B0-%EC%97%B0%EA%B5%AC%EC%8B%A4 시스템 소프트웨어 및 구조 연구실]〉, 《서울대학교 컴퓨터공학부》
 +
*〈[https://ko.wikipedia.org/wiki/%EC%8B%9C%EC%8A%A4%ED%85%9C_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4 시스템 소프트웨어]〉, 《위키백과》
 +
*조영규, 〈[http://dev.youngkyu.kr/5 시스템 소프트웨어란?(응용소프트웨어와 시스템 소프트웨어의 차이)]〉, 《다음 블로그》, 2014-03-03
 +
*javrin4, 〈[https://m.blog.naver.com/javrin4/220947459680 시스템소프트웨어, 응용소프트웨어, 고급언어, 저급언어]〉, 《네이버 블로그》, 2017-03-01
 +
*코딩팩토리, 〈[https://coding-factory.tistory.com/299 (OS) 시스템 소프트웨어의 개념과 구성]〉, 《티스토리》, 2019-01-2
  
 
== 같이 보기 ==
 
== 같이 보기 ==

2021년 1월 14일 (목) 16:06 판

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

개요

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

특징

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

종류

로더(Loader), 운영체제(OS), 언어 프로그램, 장치 드라이버, 프로그래밍 도구, 컴파일러, 어셈블러, 링커(Linker), 유틸리티, 웹 서버(Web Server), 와스(WAS), 데이터베이스 관리 시스템(DBSM)

로더

어떤 프로그램을 실행하기 위해 해당 목적 프로그램을 메모리에 적재하고 배치 주소를 옮기는 프로그램이다.

  • 기능
프로그램을 주기억 장치에 적재하기 위해 공간을 확보하는 할당(Allocation), 주기억 장치의 일부 공간을 논리적 주소 공간으로 연결하는 연결(Linking), 주기억 장치의 공간에서 위치를 조정하는 재배치(Relocation), 프로그램을 주기억 장치에 물리적, 논리적으로 배치하는 적재(Loading) 기능이 있다.
  • 종류

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

운영체제

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

링커

하나의 결과를 출력하기 위해 작성된 서로 다른 작은 프로그램들을 연결하여 실행 가능한 하나의 프로그램으로 만들어준다. 로더의 4가지 기능 중 연결만을 담당하고 있다.

웹서버

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

웹 애플리케이션 서버

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

데이터베이스 관리 시스템

Database Management System의 약자를 따 DBSM이라고도 하며, 데이터베이스(DB)를 체계적으로 관리하기 위한 시스템 소프트웨어를 말한다. 다수의 컴퓨터 사용자들이 컴퓨터에 수록한 수많은 자료들을 쉽고 빠르게 추가, 수정, 삭제할 수 있게 해준다. 축적된 자료구조의 정의, 자료구조에 따른 자료의 축적, 데이터베이스 언어에 의한 자료 검색 및 갱신, 정보의 기밃호 등 여러 가지 역할을 한다. Oracle, MySQL, SyBase 등 여러 가지 가 있다.[3]

분류

제어 프로그램

시스템 전체의 작동 상태를 감시하고, 작업의 순서를 지정해주고, 작업에 사용되는 데이터를 관리하는 등의 역할을 수행하는 것으로, 감시 프로그램과 작업 제어 프로그램으로 구분할 수 있다.

  • 감시 프로그램: 제어 프로그램 중 가장 중요한 역할을 담당하는 것으로, 각종 프로그램의 실행과 시스템 전체의 작동 상태를 감시, 감독하는 프로그램이다.
  • 작업 제어 프로그램: 어떤 업무를 처리하고 다른 업무로의 이행을 자동으로 수행하기 위한 준비 및 그 처리에 대한 완료를 담당하는 프로그램으로, 작업의 연속 처리를 위한 스케줄 및 시스템 자원 할당 등을 담당한다.
  • 자료 관리 프로그램: 주기억장치와 보조기억장치 사이의 데이터 전송과 보조기억장치의 자료 갱신 및 유지보수 기능을 수행하는 프로그램이다.

처리 프로그램

제어 프로그램의 지시를 받아 사용자가 요구한 문제를 해결하기 위한 프로그램으로, 언어 번역 프로그램과 서비스 프로그램, 문제 프로그램 등으로 구분한다.

  • 언어 번역 프로그램: 원시 프로그램을 기계어 형태의 목적 프로그램으로 번역하는 프로그램으로, 어셈블러, 컴파일러, 인터프리터가 있다.
  • 서비스 프로그램: 컴퓨터를 효율적으로 사용할 수 있는 사용빈도가 높은 프로그램으로 연결 편집기, 링커, 정렬·합병 프로그램, 라이브러리안, 유틸리티 프로그램 등이 있다.
  • 문제 프로그램: 문제 프로그램의 특정 업무 및 문제 해결을 위해 사용자가 작성한 프로그램이다.[5]

기계 구조

  • 기계 종속적 소프트웨어

해당 기계가 제공하는 특징적인 기능들을 제공하며, 타깃 하드웨어를 직접 사용한다. 각 기계 별로 다른 차이점들로는 기계 코드, 명령 형식, 주소 지정 방식, 레지스터 등이 있다.

  • 기계 독립적 소프트웨어

기본이 되는 설계와 로직이 모두 유사한 것으로, 어셈블러의 기본적인 로직과 설계, 코드 최적화를 제공하는 소프트웨어를 예로 들 수 있다.[3]

각주

  1. 김진수, 〈시스템 소프트웨어 및 구조 연구실〉, 《서울대학교 컴퓨터공학부》
  2. 시스템 소프트웨어〉, 《위키백과》
  3. 3.0 3.1 3.2 3.3 조영규, 〈시스템 소프트웨어란?(응용소프트웨어와 시스템 소프트웨어의 차이)〉, 《다음 블로그》, 2014-03-03
  4. javrin4, 〈시스템소프트웨어, 응용소프트웨어, 고급언어, 저급언어〉, 《네이버 블로그》, 2017-03-01
  5. 코딩팩토리, 〈(OS) 시스템 소프트웨어의 개념과 구성〉, 《티스토리》, 2019-01-27


참고자료

같이 보기