티스토리 뷰
● 도입
- 컴퓨터에는 여러 종류의 메모리가 있다.
- 이번 글에서는 컴퓨터는 왜 여러 종류의 메모리가 필요하며 각각의 차이점이 무엇인지 알아보자
● 메모리
- 위의 그림은 컴퓨터에서 사용되는 메모리들을 보여준다.
- (左 → 右) 갈수록 가격은 싸지고 용량은 커지지만 속도는 느리다.
1. 레지스터
- 레지스터는 가장 빠른 기억장소로 CPU 내에 존재한다.
- 컴퓨터 전원이 꺼지면 데이터가 사라지기 때문에 휘발성 메모리라고 부른다.
- CPU를 구분할 때 32bit, 64bit 라는 용어를 사용하는데 이것은 레지스터의 크기가 32bit와 64bit 라는 것을 의미한다.
- 32bit 레지스터를 가지고 있으면 32bit CPU / 64bit 레지스터를 가지고 있으면 64bit CPU 라고 한다.
- CPU는 계산을 할 때 메인메모리(RAM)에 있는 값을 레지스터로 가져와서 계산을 수행한다.
- 계산 결과는 다시 메인메모리에 저장시킨다.
ex)
- 위의 사진은 컴파일을 할 때 생성되는 어셈블리 코드의 일부이다.(왼쪽이 명령어, 오른쪽이 데이터)
- 초록색 박스 부분이 레지스터를 가지고 처리하는 부분이다.
cf) 어셈블리 코드는 기계어로 일대일 매칭이 되기 때문에 실제로 레지스터를 사용하는 것을 볼 수 있다.
2. 캐시
- 프로그램이 실제로 올라가는 곳이 바로 메인메모리(이하 RAM)이며 RAM과 레지스터 사이에는 캐시라는 휘발성 메모리가 존재한다.
- 레지스터는 CPU가 사용하는 메모리로 속도가 굉장히 빠르다. 그에 비해 RAM의 속도는 매우 느리다.
- RAM에 있는 값을 레지스터로 옮기려면 시간이 한참 걸리기 때문에 필요할 것 같은 데이터를 미리 가져오는 작업이 필요한데 이때 미리 가져온 데이터를 저장하는 곳이 바로 캐시이다.
- 캐시는 성능상의 이유로 여러개를 둔다.
- 만약 CPU가 값을 요청해 RAM에서 레지스터로 값을 옮겨야 한다면 단계에 따라 가장 속도가 빠른 L1 캐시를 보고 여기에 값이 없다면 L2 캐시를 확인해본다.
- L2 캐시에도 값이 없다면 그때 RAM에서 값을 가져온다.
3. 메인메모리(RAM)
- 메인메모리(이하 RAM)는 실제 운영체제와 다른 프로세스들이 올라가는 공간이다.
- 전원이 공급되지 않으면 데이터가 지워지기 때문에 휘발성 메모리이다.
- HDD, SDD 보다 속도는 빠르지만 가격이 비싸기 때문에 데이터 저장보다는 실행중인 프로그램만 올린다.
4. HDD, SDD
- HDD, SDD는 보조저장장치이다.
- 컴퓨터에는 작업한 파일, 음악, 게임 등을 저장할 필요가 있다.
- 위에서 살펴본 레지스터, 캐시, 메인메모리 등은 휘발성 메모리이고 가격이 비싸기 때문에 저장이라는 작업에 적합하지 않다.
- 그렇기에 가격도 저렴하고 전원이 공급되지 않아도 데이터가 지워지지 않는 비휘발성 메모리가 필요했는데 그것이 바로
HDD와 SDD이다.
- 같은 용량의 하드디스크와 메인메모리의 가격 차이만 봐도 알 수 있다. 1TB 용량의 하드디스크는 7만원이지만 같은 용량의 RAM은 544만원이다.
- 메인메모리의 가격도 충격인데 만약 캐시와 레지스터로 1TB를 만든다고 하면 컴퓨터의 가격은 기절일 것이다.
- 현재의 PC는 레지스터, 캐시, RAM, HDD의 적절한 조합으로 가격과 속도가 절충돼있기 때문에 합리적인 가격에 사용할 수 있는 것이다.(솔직히 합리적인지는 모르겠음)
'CS > 운영체제' 카테고리의 다른 글
#28 주변장치 - I/O 디바이스, 저장장치 (0) | 2023.06.03 |
---|---|
#27 메모리 - 메모리와 주소 (0) | 2023.05.29 |
#25 컴파일과 프로세스 (0) | 2023.05.22 |
#24 데드락 해결 by 은행원 알고리즘(Banker's algorithm) (0) | 2023.05.21 |
#23 데드락(deadlock, 교착상태) by 공유자원 (0) | 2023.05.15 |
- Total
- Today
- Yesterday
- API
- SpringBoot
- 프로세스
- spring
- Phaser3
- 자료구조
- 코테
- 메모리
- 알고리즘
- MySQL
- 빅데이터 분석기사
- Phaser
- 코딩테스트
- node.js
- SQL
- Spring Boot
- DART
- MongoDB
- 빅데이터
- Stream
- Advanced Stream
- db
- git
- nosql
- java
- Java8
- OS
- jpa
- 운영체제
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |