1. 시스템 구조
OS(Windows, Mac 등등) |
HW(하드웨어 → 기계 장치) |
→ Input하는 방법: 사용자가 CLI(키보드, 마우스, 마이크)로 OS에 명령 값을 보냄
ex) 마우스 a → OS → shell(OS언어) → 2진수 → HW
ㅤ | ㅤ | Java | 사용자가 이해할 수 있는 명령어를 입력 |
C언어 | C언어는 한번 만들면 해당 OS에 종속 | 가상머신(JVM) | 각 OS에 맞게 명령어를 변환해서 보내줌 |
OS | 정해진 OS에만 사용 가능 | OS | 여러 OS 사용 가능 |
HW | OS에 명령을 받아 실행 | HW | OS에 명령을 받아 실행 |
→ .java = 사용자의 이해 / .class = 가상머신의 이해
→ 명령 사이에 다리(가상머신)가 생길수록 사용자가 편해지지만 속도는 느려짐.
- 하이브리드 언어
- 컴파일 (사전 번역) - 스크립트를 미리 받아 사전에 작업 완료, 전체를 .class를 바꾼 것
- 인터프리터 (실시간 번역) - 동시에 번역하는 것처럼 한 줄 씩 읽고 실행
2진수
□ → 1bit | ㅤ | □□ → 2bit |
□□□ → 3bit = 2³ = 8가지 경우의 수 | ㅤ | 00 → 0 종료 |
□□~□□(8개) → 8bit = 256 경우의 수 | ㅤ | 01 → 1 미풍 |
ㅤ | ㅤ | 10 → 2 약풍 |
ㅤ | ㅤ | 11 → 3 강풍 |
→ 문자 1개 ⇒ 1Byte, 문자들이 모여서 문장을 이룸
↳ 아스키 코드 표(전세계적 공유)
A —————전기선—————— B ⇒ 전기선이 연결되면 전류가 흐르면서 2진수를 10진수로 변환
java ↓ (아래로 명령) | ㅤ | ㅤ |
JVM ↓ | ㅤ | ? ↑ |
OS ↓ 인코딩 | 디코딩 → ⓐ | OS ↑ |
HW ↓ (01010010010) | ———————전류———————> | HW ↑ (위로 명령) |
2. CPU와 RAM의 관계
CPU (연산장치) | ⇆ | RAM (메모리) | ⇆ | HDD (하드디스크) |
레지스터 | ㅤ | Data (문자 한 개) | ㅤ | 물리적 장치 (영구적인 기록) |
레지스터 | ㅤ | Data (문자 한 개) | ㅤ | 데이터 고정 |
ㅤ | ㅤ | Data ⇒ 1Byte | ㅤ | ㅤ |
ㅤ | ㅤ | 공간 하나 ⇒ 8bit(통신의 기본) | ㅤ | ㅤ |
→ RAM (메모리): 전류로 데이터를 저장하기 때문에 휘발성의 특징
→ HDD (하드디스크): I/O(Input/Output)의 과정
↳ RAM이 자동으로 하드디스크에서 데이터를 주고 받을 때 (로딩, 부팅)
↳ 이 과정에서 시간이 가장 오래 소요 ⇒ 여기서 시간 축소가 중요
→ CPU: 필요한 데이터를 메모리에서 가져와 연산 후 다시 돌려보내는 과정
↳ 데이터를 가져왔을 때 필요한 저장 공간인 레지스터(또는 cash memory)가 존재
□ (레지스터) → 32bit =4Byte | 한번에 데이터를 4칸씩 전달 |
□ (레지스터) → 64bit = 8Byte | 한번에 데이터를 8칸씩 전달 |
→ 2배의 속도 차이 발생
- cash (상대적 용어)
↳ 가까이 있는 것을 cash라고 칭함.
↳ 엑세스할 수 있는 모든 것
↳ 하드디스크는 메모리를 cash라고 할 수 있음.
엑세스 - 정보를 찾을 때
8bit → 1Btye (16GByte ⇒ 160억 Byte)
털 → 1TByte
기 → 1000MBtye ⇒ 1GBtye (십억Byte)
매 → 1000KByte ⇒ 1MBtye
갈 → 1000Byte ⇒ 1KByte
Share article