단순히 코드를 작성하는 수준을 넘어 내가 짠 코드가 하드웨어 물리 계층에서 어떻게 움직이는지 이해해야 함. 이 기초를 이해하지 못하면 나중에 메모리 누수나 인코딩 문제가 발생했을 때 원인을 찾지 못하고 헤매게 됨
1. CPU, RAM, SSD(HDD)
본인이 작성한 코드는 전기 신호가 되어 컴퓨터 내부를 돌아다님. 이 흐흠에 있어서 가장 중요한 부품 3가지가 CPU, RAM, SSD(HDD)임.
1) CPU(Processor)-컴퓨터의 두뇌
역할: RAM에 올라온 명령어를 하니씩 가져와서 연산하고 처리합니다.
특징: 세상에서 제일 빠른 계산기지만 저장 능력은 거의 없음(왜 거의 라고 말하냐면 레지스터라는 아주 작은 공간이 있음 이건 시스템 프로그래밍에 대해 공부하면 배울 수 있음)
2) RAM(Memory)-작업대
역할: 작업을 수행하기 위해 데이터를 임시로 펼쳐놓는 공간
특징: 속도가 매우 빠르지만 전원이 꺼지면 데이터는 사라짐.
개발자와의 관계: 프로그램을 실행하면 SSD에 있건 코드가 RAM으로 복사되어 올라옴 이것을 로딩(Loading)이라고 함.
3) SSD(Storage)-거대한 창고
역할: 데이터를 영구적으로 저장함. 전원이 꺼져도 데이터는 남아 있음
특징: 용량은 크지만, CPU가 직접 데이터를 가져다 쓰기에는 속도가 너무 느림.
개발자와의 관계: 작성한 소스 코드 파일은 처음에 이곳에 저장됨
2. 데이터의 표현: 0과 1의 세계
컴퓨터는 "안녕하세요"도 숫자 "10"도 이해하지 못합니다. 오직 전기가 흐른다(On=1), 안 흐른다(Off=0)만 알 뿐입니다.
1) 2진수와 16진수
- 2진수(Binary): 컴퓨터의 언어입니다.
- 예: 십진수 10 -> 이진수 1010(2)
- 16진수 (Hexadecimal): 2진수는 너무 길어서 사람이 읽기 힘들음 그래서 2진수 4자리를 묶어 1자리로 표현하는 16진수를 사용함 주로 메모리 주소나 색상코드를 다룰 때 씀
- 0, 1, 2,........,9, A, B, C, D, E, F,
- EX-이진수 1111(2) -> 십진수 15 -> 16진수 F(16)
2) 문자 인코딩(Encoding) - 한글이 깨지는 이유
컴퓨터에 'A'라는 글자를 저장하려면 'A'를 숫자로 바꾸는 약속(규칙)이 필요한데 것을 인코딩이라고 함.
- ASCII(아스키): 가장 기초적인 약속. 7bit를 사용하여 영어 알파벳과 특수문자 128개만 표현 가능합니다
- UTF-8: 전 세계 모든 언어(유니코드)를 표현하기 위한 가변 길이 인코딩 방식
- 영어는 1byte, 한글은 3byte로 표현됨
- 한글 깨짐: 웹 개발을 하다보면 `` 같은 문자를 보게 됨 . 이는 UTF-8로 저장된 한글을 다른 방식으로 읽으려 할 때 바이트가 어긋나서 발생하는 현상임
'목표 : 풀스택 개발자' 카테고리의 다른 글
| 5일차 클로저 실전 응용 2가지 (0) | 2025.11.26 |
|---|---|
| 4일차 전역 변수 이제 그만: 클로저(Closure)로 안전한 카운터 만들기 (1) | 2025.11.25 |
| 3일차 호이스팅과 TDZ: 자바스크립트는 왜 내 변수를 숨겼을까? (feat. Call Stack) (0) | 2025.11.24 |
| 2일차 터미널(CLI) 정복 (Mouse-less) (0) | 2025.11.24 |
| 안녕하세요 코딩 못하는 컴붕이입니다. (0) | 2025.11.24 |