반응형
☝ 시스템 버스
- 하드웨어 구성 요소를 물리적으로 연결하는 선
- 각 구성요소가 다른 구성요소로 데이터를 보낼 수 있도록 통로가 되어줌
- 용도에 따라 데이터 버스, 주소 버스, 제어 버스로 나뉜다.
☝ 데이터 버스
- 중앙처리장치와 기타 장치 사이에서 데이터를 전달하는 통로
- 기억장치와 입출력장치의 명령어와 데이터를 중앙처리장치로 보내거나,
중앙처리장치의 연산 결과를 기억장치와 입출력장치로 보내는 '양방향 버스'
☝ 주소 버스
- 데이터를 정확히 실어나르기 위해서 기억장치 '주소'를 설정해야 함
- 주소버스는 중앙처리장치가 주기억장치나 입출력장치로 기억장치 주소를 전달하는 통로
- 단방향 버스
☝ 제어 버스
- 주소 버스와 데이터 버스는 모든 장치에 공유되기 때문에 제어 수단이 필요
- 제어 버스는 중앙처리장치가 기억장치나 입출력장치에 제어 신호를 전달하는 통로
- 제어 신호 종류 : 기억장치 읽기 및 쓰기, 버스 요청 및 승인, 인터럽트 요청 및 승인, 클락, 리셋 등
- 제어 버스는 읽기 동작과 쓰기 동작을 모두 수행하는 양방향 버스
☝ 자바 컴파일 과정
- 개발자가 자바 소스코드(.java)를 작성한다.
- 자바 컴파일러가 자바 소스파일을 컴파일한다. 이때 나오는 파일은 자바 바이트 코드(.class)이다.
- 자바 바이트 코드 파일은 컴퓨터가 이해할 수 없고 자바 가상 머신이 이해할 수 있는 코드이다.
- 바이트 코드의 각 명령어는 1바이트 크기의 Opcode(명령 코드)와 추가 피연산자로 이루어져 있다.
- 컴파일된 바이트 코드를 JVM의 클래스로더(Class Loader)에게 전달한다.
- 클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여,
런타임 데이터 영역, 즉 JVM의 메모리에 올린다.
동적로딩
자바는 동적로딩을 지원하기 때문에 실행 시 모든 클래스가 로딩되지 않고,
필요한 시점에 필요한 클래스만 로딩된다.
- 실행엔진은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와 실행한다.
- 이때 실행 엔진이 자바 바이트 코드를 컴퓨터가 이해할 수 있는 기계어로 변환시키는 방법에는
인터프리터 방식과 JIT(Just-In-Time) 컴파일러 방식이 있다.
인터프리터
바이트 코드 명령어를 하나씩 읽어서 해석하고 실행
하나하나의 실행은 빠르나 전체적인 실행 속도가 느리다
JIT 컴파일러
인터프리터의 단점을 보완하는 방식
기계어로 번역된 코드를 캐싱해두었다가 필요할 때 캐싱해둔 값을 사용하는 방식
중복된 코드를 그때 그때 계속 번역하지 않기 때문에 전체적인 실행속도가 빨라진다
반응형
'내가 공부하려고 올리는 > TIL' 카테고리의 다른 글
2022-08-05 TIL (0) | 2022.08.06 |
---|---|
2022-08-03 TIL(프로세스, 스레드, 스케줄러, CPU 스케줄러) (0) | 2022.08.03 |
2022-08-01 TIL (0) | 2022.08.01 |
2022-07-29 TIL (0) | 2022.07.30 |
2022-07-27 TIL (0) | 2022.07.27 |
댓글