개념 한 쪽
프로그래밍기능사 기초문법 — 언어 번역기와 시스템 소프트웨어
프로그래밍 언어가 기계가 이해하는 형태로 실행되기까지의 과정과, 실행 환경을 제공하는 시스템 소프트웨어의 역할을 이해하는 것이 기초문법의 핵심이다. 언어 번역기에는 어셈블러·컴파일러·인터프리터가 있고, 실행 준비와 적재를 담당하는 프로그램에는 로더와 재배치 로더가 있으며, 전체 시스템 자원을 관리하는 운영체제가 있다.
이 개념을 문제로 확인하고 싶으면 이 개념 문제 10개 풀기 회원용
가입 없이 오늘의 10문제 바로 풀기 →
뜻
프로그램 소스 코드를 사람이 읽을 수 있는 형태에서 기계가 실행할 수 있는 명령어로 바꿔 주는 소프트웨어를 언어 번역기라고 정의한다. 어셈블러는 어셈블리어를 기계어로 바꾸고, 컴파일러는 전체 소스 코드를 한 번에 변환하여 목적 프로그램(실행 파일)을 생성한다. 인터프리터는 소스 코드를 한 줄씩 해석·실행하여 즉시 동작하게 하고 목적 프로그램을 남기지 않는 점이 특징이다.
로더(Loader)는 이미 번역된 목적 프로그램을 메모리에 적재하여 실행 준비를 하는 프로그램이다. 재배치 로더(Relocation Loader)는 적재 과정에서 프로그램 내부의 기호적 참조를 실제 메모리 주소로 연결하고, 프로그램이 기억장치의 임의 위치에 적재될 수 있게 조정하는 기능을 수행한다. 반면 명령을 해석하여 실행하는 실제 작업은 CPU의 역할이다.
운영체제(OS)는 하드웨어와 사용자 또는 응용 프로그램 사이에서 중개자 역할을 하며 시스템 자원을 관리하고 사용자 편의를 제공한다. 운영체제는 프로세스 관리, 메모리 관리, 입출력 장치 관리 등을 통해 여러 프로그램이 충돌 없이 동작하도록 한다. 컴파일러나 DBMS, 디버거 같은 소프트웨어들은 운영체제 위에서 동작하는 응용 또는 지원 소프트웨어로 구분된다.
명령어는 수행할 작업을 나타내는 명령 코드부(Op Code)와 작업 대상의 위치를 나타내는 번지부(Address)로 구성된다. 명령어는 이 두 부분의 조합으로 동작을 지시하므로 명령 코드부와 번지부의 구분을 명확히 이해해야 한다.
마이크로프로세서는 CPU의 주요 기능을 하나 또는 소수의 대규모 집적회로(IC) 칩에 내장한 장치이다. CPU의 연산장치와 제어장치를 집적하여 단일 칩으로 구현한 것이 마이크로프로세서이며, 이 점은 하드웨어의 집적화 관점에서 중요하다.
예제
문제로 자주 나오는 유형은 번역기와 로더·운영체제의 역할을 혼동하는 것이다. 예컨대 로더를 언어 번역기로 잘못 지칭하거나 인터프리터와 컴파일러의 번역 방식을 뒤바꾸는 문항이 출제될 수 있다. 인터프리터는 목적 프로그램을 만들지 않고 한 줄씩 번역하여 즉시 실행한다는 점을 보고 선택하면 정확하다.
또한 재배치 로더의 기능으로 '메모리 적재와 기호적 참조를 실제 주소로 연결'하는 기능을 확인해야 한다. 반대로 '명령어 해석'은 로더의 기능이 아니며, 명령을 해석하는 일은 CPU의 역할임을 구별해야 한다. 명령어 구성 문제에서는 명령 코드부(Op Code)와 번지부(Address)의 조합을 정답으로 골라야 한다.
마이크로프로세서 관련 문제에서는 CPU 기능을 집적회로 칩에 통합한 장치임을 기억하면 정답을 찾기 쉽다.
자주 묻는 물음
- 인터프리터와 컴파일러의 차이는 무엇인가?
- 인터프리터는 소스 코드를 한 줄씩 번역하면서 즉시 실행하고 목적 프로그램을 생성하지 않는다. 컴파일러는 전체 소스 코드를 한 번에 번역하여 목적 프로그램(실행 파일)을 만든 뒤 실행한다.
- 로더와 재배치 로더의 기능 차이는 무엇인가?
- 로더는 번역된 목적 프로그램을 메모리에 적재하여 실행 준비를 하는 역할을 한다. 재배치 로더는 적재 시에 기호적 참조를 실제 메모리 주소로 연결하고 프로그램이 임의의 메모리 위치에 올라가도 동작하도록 재배치 조정을 수행한다.
- 명령어의 구성 요소는 무엇인가?
- 명령어는 수행할 연산을 지정하는 명령 코드부(Op Code)와 연산 대상의 위치를 나타내는 번지부(Address)로 구성된다.
프로그래밍기능사 풀이 세트에서 이 개념의 문제 10개를 바로 풀어 보세요.