결딴력 2022. 8. 2. 21:52
반응형

☝ 시스템 버스

  • 하드웨어 구성 요소를 물리적으로 연결하는 선
  • 각 구성요소가 다른 구성요소로 데이터를 보낼 수 있도록 통로가 되어줌
  • 용도에 따라 데이터 버스, 주소 버스, 제어 버스로 나뉜다.

 

데이터 버스

  • 중앙처리장치와 기타 장치 사이에서 데이터를 전달하는 통로
  • 기억장치와 입출력장치의 명령어와 데이터를 중앙처리장치로 보내거나,
    중앙처리장치의 연산 결과를 기억장치와 입출력장치로 보내는 '양방향 버스'

 

주소 버스

  • 데이터를 정확히 실어나르기 위해서 기억장치 '주소'를 설정해야 함
  • 주소버스는 중앙처리장치가 주기억장치나 입출력장치로 기억장치 주소를 전달하는 통로
  • 단방향 버스

 

제어 버스

 

  • 주소 버스와 데이터 버스는 모든 장치에 공유되기 때문에 제어 수단이 필요
  • 제어 버스는 중앙처리장치가 기억장치나 입출력장치에 제어 신호를 전달하는 통로
  • 제어 신호 종류 : 기억장치 읽기 및 쓰기, 버스 요청 및 승인, 인터럽트 요청 및 승인, 클락, 리셋 등
  • 제어 버스는 읽기 동작과 쓰기 동작을 모두 수행하는 양방향 버스

 

자바 컴파일 과정

  • 개발자가 자바 소스코드(.java)를 작성한다.
  • 자바 컴파일러가 자바 소스파일을 컴파일한다. 이때 나오는 파일은 자바 바이트 코드(.class)이다.
  • 자바 바이트 코드 파일은 컴퓨터가 이해할 수 없고 자바 가상 머신이 이해할 수 있는 코드이다.
  • 바이트 코드의 각 명령어는 1바이트 크기의 Opcode(명령 코드)와 추가 피연산자로 이루어져 있다.
  • 컴파일된 바이트 코드를 JVM의 클래스로더(Class Loader)에게 전달한다.
  • 클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여,
    런타임 데이터 영역, 즉 JVM의 메모리에 올린다.
동적로딩
자바는 동적로딩을 지원하기 때문에 실행 시 모든 클래스가 로딩되지 않고,
필요한 시점에 필요한 클래스만 로딩된다.
  • 실행엔진은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와 실행한다.
  • 이때 실행 엔진이 자바 바이트 코드를 컴퓨터가 이해할 수 있는 기계어로 변환시키는 방법에는
    인터프리터 방식과 JIT(Just-In-Time) 컴파일러 방식이 있다.
인터프리터
바이트 코드 명령어를 하나씩 읽어서 해석하고 실행
하나하나의 실행은 빠르나 전체적인 실행 속도가 느리다

JIT 컴파일러
인터프리터의 단점을 보완하는 방식
기계어로 번역된 코드를 캐싱해두었다가 필요할 때 캐싱해둔 값을 사용하는 방식
중복된 코드를 그때 그때 계속 번역하지 않기 때문에 전체적인 실행속도가 빨라진다

 

 

 

반응형