JS 수업 도중 폰 노이만 구조에 대한 언급이 스쳐가듯 나와서 찾아보았다!
JavaScript와 폰 노이만 구조는 직접적인 관련이 있는 개념은 아니지만, 컴퓨터가 어떻게 작동하는지를 이해하면 JavaScript가 어떻게 실행되는지도 더 잘 이해할 수 있다👀
1. 폰 노이만 구조란?
폰 노이만 구조는 현대 컴퓨터의 기본 구조로, 1945년 수학자 존 폰 노이만(John von Neumann)이 제안한 개념이다.
"프로그램도 데이터처럼 메모리에 저장하고, CPU가 이를 읽어서 실행한다."
주요 구성 요소
- 중앙처리장치(CPU, Central Processing Unit)
- 연산 및 제어를 담당하는 핵심 장치
- 연산장치(ALU, Arithmetic Logic Unit): 덧셈, 뺄셈, 논리 연산 수행
- 제어장치(CU, Control Unit): 명령어 해석 및 실행
- 메모리(Memory)
- 프로그램과 데이터를 저장하는 공간
- 코드와 데이터가 같은 메모리(공통 저장소)에 위치함
- 입출력 장치(I/O Devices)
- 키보드, 마우스, 모니터 등과 같은 사용자 인터페이스
- 버스(Bus)
- CPU와 메모리, 입출력 장치를 연결하는 통로
- 데이터 버스, 주소 버스, 제어 버스로 나뉨
특징
- 프로그램과 데이터를 같은 메모리(RAM)에 저장 → 프로그램 내에서 데이터를 수정 가능
- CPU가 명령어를 순차적으로 실행 (기본적으로 Fetch → Decode → Execute 순서)
- 컴퓨터가 하나의 명령어만 처리할 수 있기 때문에 병목 현상(Neumann Bottleneck) 발생 가능
2. JavaScript와 폰 노이만 구조의 관계
JavaScript는 폰 노이만 구조를 기반으로 실행되지만, 추가적인 실행 환경(엔진, 런타임 등)이 필요하다.
즉, JS가 실행되는 과정에서 CPU와 메모리를 어떻게 활용하는지를 보면 폰 노이만 구조의 개념이 적용된다는 걸 알 수 있어.
JavaScript 실행 과정
JS는 기본적으로 인터프리터 언어라서, 명령어를 한 줄씩 해석해서 실행한다.
이때, JS 실행 방식은 폰 노이만 구조의 Fetch → Decode → Execute 방식과 유사한 흐름을 따른다.
- JS 코드 작성 (소스 코드)
- 우리가 작성한 JS 코드는 텍스트(데이터)로 저장됨.
- JavaScript 엔진(V8, SpiderMonkey 등)이 실행
- JS 엔진은 폰 노이만 구조의 CPU처럼 작동해서 JS 코드를 처리함.
- 엔진 내부에서 인터프리터 + JIT(Just-In-Time) 컴파일러를 사용해서 실행 속도를 높임.
- 메모리 할당 (Heap & Stack)
- JS 엔진은 데이터를 저장하기 위해 Heap(힙)과 Stack(스택)을 사용.
- 변수, 함수 호출, 객체 등은 이 메모리 공간에 저장됨.
- 이벤트 루프(Event Loop) 동작
- JS는 단일 스레드 언어지만, 비동기 처리를 위해 이벤트 루프를 활용함.
- 백그라운드(Web API)에서 처리된 작업이 콜백 큐(Queue)를 거쳐 메인 스레드에서 실행됨.
폰 노이만 구조와 JS 실행 비교
폰 노이만 구조 | JavaScript |
CPU(제어장치 + 연산장치) | JavaScript 엔진(V8, SpiderMonkey 등) |
메모리(RAM) | Heap & Stack |
명령어 해석 & 실행 | 인터프리터 & JIT 컴파일러 |
순차적 명령 실행 (Fetch → Decode → Execute) | JS 엔진이 코드 실행 (해석 & 실행) |
정리
- 폰 노이만 구조는 모든 현대 컴퓨터의 기반이 되는 개념이고, JavaScript도 이 구조 위에서 실행된다.
- JS 엔진이 CPU처럼 동작하며, 메모리 관리(Heap, Stack) 및 명령어 실행(인터프리터 & JIT 컴파일러)을 담당한다.
- JavaScript의 비동기 처리(Event Loop)는 폰 노이만 구조와 다른 개념이지만, 기본 실행 방식(Fetch → Decode → Execute)은 유사하다.
즉, JavaScript는 폰 노이만 구조 위에서 동작하지만, JS 엔진이 추가적인 기능을 제공하면서 실행 속도를 최적화한다!
'WEB' 카테고리의 다른 글
[TIL] 뷰 (0) | 2025.05.19 |
---|---|
[TIL] 테이블 (0) | 2025.05.19 |
[TIL] 서버통신 - axios | json-server | CORS (0) | 2025.04.02 |
[TIL] HTML 표준 | 반응형 웹 vs 적응형 웹 (0) | 2025.03.19 |
[CSS] normalize vs reset (0) | 2024.08.08 |