컴퓨터에서 사용되는 소프트웨어는 크게 제어 프로그램(control program)과 시스템 프로그램(system program), 응용 프로그램(application program)으로 나눌 수 있다.
제어 프로그램은 운영체제의 중심을 이루는 프로그램이며, 시스템 전체의 작동 상태 감시, 작업의 순서 지정, 작업에 사용되는 데이터 관리 등 시스템 내의 각종 자원을 관리 제어하는 프로그램이다. 종류로는 감시 프로그램과 작업 제어 프로그램. 자료처리 프로그램으로 구분할 수 있다. 시스템 프로그램은 각종의 응용 프로그램에 공통하는 문제 해결 및 프로그래밍 환경을 지원하기 위한 프로그램이며, 종류로는 언어 처리계 프로그램과 유틸리티계 프로그램이 있다. 언어 처리계 프로그램으로는 컴파일러(compiler), 인터프리터(interpteter), 어셈블러(assembler) 등이 있고, 유틸리티계(utility) 프로그램으로는 에디터(editor), 커맨드 인터프리터(command interpreter), 로더(loader), 정렬(sort)/합병(merge), 디버깅 에디터(debugging editor) 등이 있다.
[ 그림 1-3 ] 컴퓨터 시스템 구성요소 및 운영체제 4대 관리
응용 프로그램은 시스템 소프트웨어 기반 위에서 사용자에 의해 특정한 문제를 해결하기 위하여 만든 프로그램이다. 응용 프로그램 종류로는 워드 프로세싱, 통신 프로그램, 컴퓨터 그래픽, 데이터베이스, 스프레드시트, 게임 프로그램 등 여러 가지가 있다.
<aside>
❗ Tip 컴파일러, 어셈블러, 인터프리터, 로더, 정렬, 합병, 디버깅
- 컴파일러(compiler) : 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 프로그램. 원시프로그램(source program)으로 작성된 고급 언어 명령을 해석하여 기계어(machine language) 코드로 바꾼 후 그 결과를 목적 파일(object file)로 바꾸는 프로그램이다.
- 어셈블러(assembler) : 어셈블리어(assembly language)를 기계어 형태의 목적코드(object code)로 해석해주는 컴퓨터 언어 번역 프로그램이다.
- 인터프리터(interpreter) : 프로그래밍 언어의 원시 코드(source code)를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말함. 소스코드를 목적코드로 옮기는 컴파일과 대비되며, 소스 코드를 한 줄 한 줄 읽어 들이면서 실행하는 프로그램이다.
- 로더 (loader) : 외부기억장치로부터 자료를 주기억장치로 옮기기 위하여 메모리 할당 및 적재를 담당하는 서비스 프로그램이다.
- 정렬(sorting) : 순서 없이 나열된 자료를 특정한 킷값에 따라 오름차순(ascending)이나 내림차순(descending)으로 재배열하는 방법을 말한다.
- 합병(merge) : 여러 개의 자료 집합을 결합하여 한 개의 정렬된 집합으로 만드는 방법이다.
- 디버깅(debugging) : 프로그래밍 과정 중에 발생하는 문법적 오류나 비정상적인 연산 등을 찾아서 수정하는 것, 즉, 버그(bug, 벌레)를 찾아서 수정하거나 또는 오류를 피해 나가는 처리 과정을 말한다.
</aside>
2.1 제어 프로그램(control program)
2.2 처리 프로그램(process program)
2.3 운영체제의 4대 관리