태그: Compile와 Go Loader

이번에는 정보처리기사 필기 과목인 운영체제의 프로그램에 관해 알아보아요.

프로그램
컴퓨터가 수행할 수 있는 논리의 집합
프로그래밍 언어로 작성하며 컴파일러와 인터프리터, 어셈블러로 번역합니다.

저급언어
기계어와 어셈블리어로 구분합니다.
기계어는 컴퓨터가 이해할 수 있는 언어이며 어셈블리어는 기계어와 1:1 대응하여 니모닉(Mnemonic)언어라고 부릅니다.

고급언어
인간이 사용하는 자연어와 비슷한 형태 및 구조를 갖습니다.
컴파일러나 인터프리터로 번역합니다.

컴파일러
고급 언어로 작성한 원시 프로그램을 소스 코드 단위로 목적 프로그램으로 번역
한 번 번역하면 다시 번역할 필요가 없어서 실행 속도가 빠릅니다.
*컴파일러가 번역한 목적 프로그램은 링커에 의해 실행 프로그램을 생성합니다.

인터프리터
고급 언어로 작성한 원시 프로그램을 한 줄 단위로 번역하고 실행
실행 시마다 매 번 번역하여 실행 속도가 느립니다.
BASIC, LISP, APL, SNOBOL 등이 있습니다.

링커Linker)
링커는 컴파일러에 의해 번역한 목적 프로그램과 라이브러리 등을 연결하여 실행 가능한 모듈을 만드는 시스템 소프트웨어

로더(Loader)
프로그램을 주기억장치에 적재하는 시스템 소프트웨어
메모리 할당(Allocation), 연결(Linking), 재배치(Relocation), 적재(Loading) 기능을 수행합니다.
컴파일러나 링커 등의 소프트웨어가 로더의 기능을 대신하여 수행하기도 합니다.

Compile Go Loader
컴파일러가 로더의 기능까지 수행합니다.(연결 기능은 수행하지 않습니다.)

Absolute Loader
목적 프로그램을 메모리에 적재하는 기능만 수행합니다.
프로그래머가 메모리 할당과 연결을 직접 지정합니다. (지정한 메모리 위치를 변경하는 것이 어려움)

Relative Loader
메모리 할당(Allocation), 연결(Linking), 재배치(Relocation), 적재(Loading) 기능을 모두 수행합니다.
재배치 로더(Reloaction Loader), 직접 연결 로더(Direct Linking Loader)라고도 부릅니다.

Dynamic Loading Loader
실행 시 필요한 부분만 적재하고 호출 시에 적재합니다.
호출 시 적재를 Load On Call이라 부릅니다.
프로그램 크기가 클 때 유리한 방식입니다.

매크로(Macro) 프로세서
원소 프로그램에 매크로 호출하는 부분에 매크로에 정의한 코드를 삽입하는 시스템 소프트웨어
정의 인식 => 정의 저장 =>  호출 인식 => 확장 및 인수 치환 과정으로 처리합니다.

매크로
자주 사용하는 코드를 특정 이름으로 정의하여 필요할 때마다 사용하는 구문
프로그램 내에서 확인할 수 있어 개방 서브루틴(Opened Sub Routine)으로 부릅니다.
부 프로그램과 다르게 사용한 위치에 매크로로 정의한 코드를 삽입하여 수행합니다.