Computer Science/프로그래밍언어론

Chapter 2 Impact of Machine Architectures

윤재에요 2023. 4. 18. 21:39

Computer

  • 저장하고 프로그램을 실행할 수 있는 알고리즘과 자료구조들로 이루어짐
  • actual computer(hadware computer): 물리적 장치들로 구성된 컴퓨터
  • soft-simulated computer: 다른 컴퓨터 상에서 작동하는 소프트웨어로 구성된 컴퓨터

컴퓨터 구성요소

  • Date
  • Primitive Operations
  • Sequece Control
  • Data Access
  • Storage Management
  • Operating Environment

Machine Cycle

  • Fetch-Execute Cycle (또는 Fetch-Decode-Ececute Cycle)

Firmware Coomputers

  • 이론적 기반
    • Any precisely defined algorithm or data structure mat be realized in hardware
  • Firmware 커뮤터의 일반적 형태
    • 하드웨어와 이를 제어하기 위한 마이크로 프로그램
  • 기타 용어
    • Firmware: 하드웨어에 저장된 마이크로 프로그램
    • Emulation: 소프트웨어적으로 마이크로 프로그램 수행을 흉내내는 것

Virtual Architecture

  • Language Machine
    • 이론적으로는 특정 언어를 하드웨어나 펌웨어 형태로 지원하는 것이 가능함 -> Language Processor
    • LISP machine, BASIC machine, ...
    • 고비용 -> General Purpose Processor + 언어 처리기(SW)
  • 고급 언어의 구현 방법
    • 번역(translation)
    • 소프트웨어를 통한 시뮬레이션(interpreter)

언어 구현 구조

  • 컴파일레이션 -> 런타임 속도 빠름, 오류 찾기 힘듬
  • 인터프리테이션 -> 느림, 오류찾기 쉬움

 

가상기계

  • 구현된 프로그래밍 언어는 그 자체로 가상기계로 볼 수 있다
    • 자바 언어기계
    • 자바 바이트코드 기계 (JVM)
    • 실제 하드웨어

가상머신의 계층

응용프로그램 작성 시 사용하는 가상기계들은 계층을 이룬다.

 

 

언어 구현의 차이

  • 언어 구현의 차이가 발생하는 이유를 가상기계의 관점에서 되짚어 볼 수 있다.
    • 가상기계에 대한 오해(개념적인 차이): 언어가 제공해야 할 가상 기계를 구현자마다 다르게 이해할 수 있다. -> 구현할 언어의 정확한 정의가 필요
    • 구현 플랫폼의 차이: 언어가 구현될 하드웨어 플랫폼이 다를 경우, 하드웨어에서 지원하는 기능의 차이로 인해 언어 구현이 달라질 수 있다. (예. hardware-suppored types)
    • 구현 방법의 차이: 언어가 구현될 하드웨어가 같다고 하더라도 언어 기능을 제공하기 위한 구현 방법이 다를 수 있다.(예. calling conversion)

Binding

  • 바인딩이란?
    • 묶음
    • 프로그램 구성요소와 속성의 묶음
    • static binding
      • 실행하기전에 Binding이 일어남
      • 이미 정해져 버림
    • dynamic Binding
      • 실행중에 바인딩 일어남
      • 보통 사용됨
      • 느리지만 실행될 때 내가 원하는데로 바인딩 가능, 다양성큼
  • 바인딩 시작
    • 바인딩이 일어하는 시점
    • 언어 구성요소마다 또 같은 구성요소라고 하더라도 속석에 따라 바인딩 시각이 다를 수 있다.

바인딩 시각의 종류

  • 바인딩 시각을 아래와 같이 분류할 수 있음
    1. 언어 정의 시점(Language definition)
    2. 언어 구현 시점(Language implementation)
    3. 프로그램 번역 시점(Program translation; compile time)
    4. 링크시점(Link deit)
    5. 로드시점(Load)
    6. 프로그램 수행시점(Program execution; run time)
  • Static Binding(Early Binding) 은 1~5에 해당
  • Dynamic Binding(Late Binding) 은 6에 해당

바인딩 시각의 의미

  • 바인딩 시각은 정확한 정보량과 관련이 있음
    • 프로그램의 어떤 개체를 보았을 때 해당 개체에 대해 얼마나 정확한 정보를 말할 수 있는가 하는 문제
    • C 프로그램에서 "if"를 만았다면? if는 키워드이고 제어 구조의 일종이다
    • C 프로그램에서 "sum"이라는 이름을 만났다면? 함수이름인지 변수이름인지, 타입은 무엇인지, 함수라면 코드내용은 무엇인지, 변수라면 주소의 값은 무엇인지
  • 특정 개체의 특정 속성에 대한 바인딩 시각은 언어에 따라 다를 수 있음

바인딩 시각의 선택과 결과

  • Early Binding 
    • staticrh 유사하지만 동의어는 아니다. 
    • 번역 전에 파악할 수 있는 정보가 많음
    • 실행파일을 효율을 높일 수 있도록 번역이 가능
    • Compilation 방법과 잘 어울림
  • Late Binding
    • Dynamic과 유사하지만 동의어는 아니다.
    • 프로그래머의 선택이 더 중요하게 됨
    • 더 유연한 프로그래밍이 가능
    • Interpretation 방법과 잘 어울림