이론/컴퓨터구조

컴파일러, 인터프리터, 컴퓨터구조

ohojee 2023. 10. 12. 18:48

컴파일러와 인터프리터

고급언어를 기계어로 변환하는 소프트웨어

  • 컴파일러
  • 인터프리터
  • 어셈블러

컴파일러

  • 고급 언어로 작성된 소스 프로그램 → 기계어 실행 프로그램으로 변환하는 소프트웨어
    • 컴파일 과정에서 전체 소스 프로그램 분석기계어 실행 프로그램 파일로 변환 → 변환된 프로그램 파일은 OS에 의해 메모리에 로딩CPU에 의해 실행
    • ex) C, C++, Pascal 등
  • 특징
    • 전체 소스 프로그램을 분석컴파일 과정에서 많은 시간 소요 but, 프로그램 최적화 가능
    • 기계어 실행 파일을 CPU가 실행 ⇒ (인터프리터 방식에 비해) 실행 속도 빠름
  • 실행과정
  • 링커: 호출하는 관계들을 연결

실행 → 메모리 할당 → 메모리에 로딩 → hw가 실행

실행파일은 0번지부터 시작, but 로딩은 0번지부터 되지 않음 ⇒ 주소 바꿔줘야함(relocation)

인터프리터

  • 고급 언어로 작성된 프로그램을 명령어 단위로 해석하여 바로 실행하는 소프트웨어
    • 인터프리터가 소스 프로그램의 명령어 단위로 해석 및 실행을 반복
    • 기계어 실행 파일을 만들지 x
    • ex) Basic, Python, JavaScript 등
  • 특징
    • 명령어 단위로 변환 ⇒ (컴파일러 방식에 비해) 변환 시간 짧음
    • 소프트웨어에 의해 실행 ⇒ 실행 속도가 느림
    • 실행 파일 만들어지지 x, 프로그램 실행 시마다 다시 해석 필요

어셈블러

  • 어셈블리어로 작성된 프로그램을 기계어 프로그램으로 변환하는 소프트웨어
    • 어셈블리어? 기계어 코드에 1:1로 대응되는 심볼로 표현한 언어(사실상 기계어) 메모리 상에 숫자로 되어있는 언어를 이해하기 쉽도록 바꾼 것 ⇒ 어셈블리어 프로그래밍? 기계어 프로그램을 작성한다는 것
  • 어셈블리어 사용하는 경우
    • 속도와 크기가 매우 중요한 프로그램
    • 고급언어 프로그램에서 속도가 매우 중요한 부분의 프로그래밍
    • 오래된 컴퓨터 혹은 특수 목적의 컴퓨터
    • 동작 모드 변경 등 CPU를 직접 제어해야 할 때

컴퓨터 구조, 구성

컴퓨터 구조

(= 명령어 집합 구조(ISA), CPU 아키텍쳐)

  • 하드웨어와 소프트웨어 사이에서 인터페이스 역할을 하는 명령어 집합 구조
  • 프로그래머에게 보이는 시스템의 속성을 의미
    • ex) 명령어 집합, 데이터 표현에 사용되는 비트 수, 레지스터의 개수나 형식, 메모리 주소 지정 방식 등

컴퓨터 구성

(= 컴퓨터 구현)

  • 컴퓨터 구조에 대한 형체를 제공하는 논리적인 골격
    • CPU와 각종 구성 요소, 관련 회로의 인터페이스에 대한 세부 구현 방법
    • 동일한 컴퓨터 구조에 대해 다양한 컴퓨터 구성이 가능
  • 프로그래머에게 투명한(보여지지 않는) 하드웨어 내역을 의미 ⇒ 어떻게 구현되던 상관 x
    • ex) 직렬 덧셈장치 or 병렬 덧셈장치, 고정결선식 제어장치 or 마이크로 프로그래밍식 제어장치, 파이프라이닝 방식, 캐시 메모리 구성 등

컴퓨터 계열

동일한 컴퓨터 구조 & 다른 컴퓨터 구성(cpu 등) ⇒ 같은 컴퓨터 계열?
  • 동일한 컴퓨터 구조를 사용하지만 다른 방식으로 구현한 컴퓨터의 집합
    • ex) 인텔 아톰, 펜티엄, 셀러론, i3, i5, i7, i9
  • 컴퓨터 계열은 소프트웨어의 호환성 개념 제공 ⇒ 동일한 컴퓨터 구조를 사용하기 때문에 같은 소프트웨어 사용 가능(호환성)

하드웨어, 소프트웨어 상호조정

  • 컴퓨터 시스템의 모든 기능은 하드웨어 또는 소프트웨어로 구현 가능
    • 기능에 따라 어떤게 hw로 구현되었는지, 어떤게 sw로 구현되었는지 구분 불가
  • 하드웨어와 소프트웨어의 상호 조정 관계
    • hw는 성능, sw는 융통성 면에서 장점

Uploaded by N2T