컴퓨터의 기본 구조는 주어진 정보 데이터를 처리하기 위해 크게
입력장치, 기억장치, 연산(처리)장치, 제어장치, 출력장치 등 5가지 단위로 이루어져 있다.
RAM(Random Access System, Memory, 주기억장치)
- 컴퓨터의 작업공간이라고도 함
- 데이터를 저장하는 역할
- 데이터 처리속도가 빠르나 휘발성이 특징
CPU(Central Processing Unit, 중앙정보처리시스템)
- 기억장치와 연산(처리)장치, 제어장치를 묶은 것
- 중앙에서 사용자들이 입력한 명령어를 해석하고 연산한 후, 그 결과를 제어하는 역할을 담당함
HDD(Hard Disk, 하드디스크)
- 기억장치
- 데이터를 보관, 저장하는 장치
- 데이터 처리속도가 RAM보다 느림
OS(Operating System, 운영체제)
- 컴퓨터 시스템의 각종 자원을 효율적으로 관리하고 컴퓨터 하드웨어와 시용자 간의 인터페이스를 담당하는 시스템
- 하드웨어에서 적당한 전기신호를 받아 명령을 실행해줌
- RAM에 공간을 할당해줌(Code, Data, Stack, Heap, 총 4가지 영역)
코드영역
- 우리가 작성한 소스코드가 들어가는 영역
데이터영역
- 전역변수와 static 변수가 할당되는 영역
힙영역
- 프로그래머가 할당/해제하는 메모리공간
스택영역
- 프로그램이 자동으로 사용하는 임시 메모리공간
- 함수 호출 시 생성되는 지역변수와 매개변수가 저장되는 영역
- 함수 호출이 완료되면 사라짐
HEAP영역과 STACK영역은 같은 공간을 공유함
HEAP이 메모리 위쪽 주소부터 할당되면 STACK은 아래쪽부터 할당되는 방식
그래서 각 영역이 상대 공간을 침범하는 일을 각각 HEAP OVERFLOW, STACK OVERFLOW 라고 칭한다.
STACK영역이 클수록 HEAP영역이 작아지고, 반대도 마찬가지
HEAP과 STACK의 장단점
- HEAP
변수는 전역적으로 액세스 가능
메모리 크기제한 X
상대적으로 느린 액세스
변수는 자바에서 NEW
- STACK
매우 빠른 액세스
지역변수만 가능
스택 크기 제한 O
'개린이를 위한 기초 상식 뿜뿜!' 카테고리의 다른 글
[개발 상식] Web 기초 - 2 (0) | 2021.06.13 |
---|---|
[개발 상식] Web 기초 - 1 (0) | 2021.06.13 |
[개발 상식] CMD 명령어 (0) | 2021.05.29 |