💡 3주차 (Chapter 06~08) 정리
06-1) RAM의 특징과 종류
특징 : 전원을 끄면 저장된 내용이 모두 날아가는 휘발성 저장장치로 주로 실행할 대상이 저장됨.
용량이 클수록 많은 프로그램을 동시에 빠르게 실행하는데 유리함 그러나 한계는 존재함
종류 :
06-2) 메모리의 주소 공간
물리 주소 : 정보가 실제로 저장된 하드웨어상의 주소. 메모리가 사용함.
논리 주소 : 실행중인 프로그램 각각에 부여된 0번지부터 시작되는 주소. CPU와 실행중인 프로그램이 사용함
논리 주소와 물리 주소 간의 변환: CPU와 주소 버스 사이에 위치함 메모리관리장치(MMU)라는 하드웨어에 의해 수행됨. MMU는 CPU가 발생시킨 논리주소에 베이스 레지스터 값을 더해 물리 주소로 변환시킨다. 베이스 레지스터는 프로그램의 첫 물리주소를 저장하며, 논리주소는 프로그램의 시작점으로부터 떨어진 거리라고 볼 수 있다.
메모리 보호 기법: 한계 레지스터를 통해 메모리를 보호한다. 한계 레지스터는 논리 주소의 최대 크기를 저장하므로 프로그램의 물리 주소 범위는 베이스 레지스터 값 이상, 베이스 레지스터 값 + 한계 레지스터 값 미만의 범위를 갖게 된다. CPU는 메모리 접근 전 접근하고자하는 논리 주소가 한계 레지스터보다 작은지를 검사하여 더 클 경우 인터럽트를 발생시켜 실행을 중단함. 이러한 방식을 통해 메모리를 보호할 수 있음.
06-3) 캐시 메모리
저장 장치 계층 구조 : 컴퓨터가 사용하는 저장 장치들을 CPU에 얼마나 가까운가를 기준으로 계층적으로 나타낸 구조. 위 계층으로 올라갈수록 CPU와 가깝고 빠르나 용량이 작고 비싼 저장장치이며, 아래 계층으로 내려갈수록 CPU와 멀고 용량이 크고 저렴하지만 느린 저장장치이다.
캐시 메모리 : CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치. 메모리의 일부 데이터를 미리 캐시 메모리에 저장하여 CPU가 매번 메모리에 접근할 필요 없이 캐시 메모리를 이용하여 정보를 가져올 수 있도록 함. 이를 통해 캐시 메모리는 CPU의 연산 속도와 메모리 접근 속도의 차이를 줄일 수 있다. 캐시 메모리도 CPU와 가까운 순서대로 계층을 구성함. 코어와 가까운 순서대로 L1, L2, L3 캐시로 나눌 수 있음.
참조 지역성 원리 : CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리. 최근 접근했던 메모리 공간에 다시 접근하려는 경향인 시간 지역성과 접근한 메모리 공간 근처를 접근하려는 경향인 공간 지역성이 있다. 캐시 메모리는 이러한 참조 지역성의 원리에 따라 데이터를 예측하여 캐시 적중률을 높인다.
저장 장치 계층 구조 도식도 및 표
계층 | 예시 | 속도 | 용량 | 가격 (GB당) |
---|---|---|---|---|
레지스터 | CPU 내부 레지스터 | 수 ns 이하 | 수 byte | 매우 비쌈 |
캐시 메모리 | L1, L2, L3 캐시 | ns 단위 | KB~MB | 매우 비쌈 |
메인 메모리 | DRAM (RAM) | 수십~수백 ns | GB | 비쌈 |
보조 기억 장치 | SSD, HDD | 수 ms | GB~TB | 저렴 |
3차 저장 장치 | 테이프, 광디스크 등 | 수 초 이상 | 수 TB~PB | 가장 저렴 |
하드 디스크 : 자기적인 방식으로 데이터를 저장하는 보조 기억장치
플래터 : 실질적으로 데이터가 저장되는 곳, 하드디스크는 일반적으로 여러겹의 플래터로 이루어짐
스핀들 : 플래터를 회전시키는 구성요소들
- 헤드 : 플래터를 대상으로 데이터를 읽고 쓰는 부품
- 디스크암 : 원하는 위치로 헤드를 이동시키는 부품
트랙 : 플래터를 여러 동심원으로 나누었을 때 그 중 하나의 원
섹터 : 트랙의 한 조각으로 하드 디스크의 가장 작은 전송 단위
실린더 : 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위
하드 디스크가 저장된 데이터에 접근하는 시간
플래시 메모리: 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치. 보통 대용량 저장장치로 많이 사용되는 보조기억장치로서의 플래시 메모리는 NAND 플래시 메모리.
플래시 메모리의 타입: 같은 용량의 메모리여도 셀 타입에 따라 차이는 천차만별이다!
구분 | SLC (Single-Level Cell) | MLC (Multi-Level Cell) | TLC (Triple-Level Cell) |
---|---|---|---|
셀당 비트 | 1비트 | 2비트 | 3비트 |
수명 (쓰기 사이클) | 약 100,000회 | 약 3,000~10,000회 | 약 500~3,000회 |
속도 | 가장 빠름 | 중간 | 가장 느림 |
신뢰성 | 매우 높음 | 보통 | 낮음 |
용량 | 낮음 | 중간 | 높음 |
단가 (GB당) | 가장 비쌈 | 중간 | 가장 저렴함 |
주요 사용처 | 산업용, 서버용 SSD | 일반 소비자용 SSD | 대용량 저장용 USB, SSD |
플래시 메모리의 단위: 셀 < 페이지 < 블록 < 플레인 < 다이, 셀이 모여서 페이지, 페이지가 모여서 블록..... 순으로 단위가 커진다.
읽기/쓰기는 페이지 단위, 삭제는 블록 단위로 이루어짐.
플래시 메모리의 상태:
Free : 어떠한 데이터도 저장하지 않는 상태. 새로운 데이터를 저장할 수 있음
Valid : 이미 유효한 데이터를 저장하고 있는 상태. 덮어쓰기는 불가능
Invalid : 쓰레기값이라 부르는 유효하지 않은 데이터를 저장하고 있는 상태
*가비지 컬렉션 : 특정 블록 내의 한 페이지만 Invalid 상태인 경우, 해당 페이지만 삭제할 수 없음! 이 경우 플래시 메모리는 유효한 페이지들만을 새로운 블록으로 복사 후, 기존의 블록을 삭제하는 방식으로 쓰레기값을 정리한다. 이러한 기능을 가비지 컬렉션이라고 함.
07-2) RAID의 정의와 종류
RAID의 정의 : 데이터의 안전성 혹은 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술. 주로 하드디스크와 SSD를 사용함
RAID의 종류 : RAID의 구성방법을 RAID 레벨이라고 표현함. 0,1,4,5,6이 가장 대중적임. 여러 RAID레벨을 혼합한 Nested RAID도 존재함. 각 레벨마다 장단점이 있어 상황에 따라 최적의 RAID 레벨은 달라질 수 있음.
장치 컨트롤러 : 입출력장치의 다양성, CPU와 메모리에 비해 낮은 데이터 전송률 때문에 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러라는 하드웨어를 통해 연결됨. 컴퓨터 내부와 정보를 주고받는 하드웨어적 통로. 장치 컨트롤러는 CPU와 입출력 장치의 통신 중개, 오류 검출, 데이터 버퍼링의 역할을 함. 단순하게 정리하면 데이터 레지스터, 상태 레지스터, 제어 레지스터로 구성됨.
장치 드라이버 : 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램. 소프트웨어적 통로. 컴퓨터가 장치 드라이버를 인식하고 실행할 수 없으면 해당 장치는 컴퓨터 내부와 정보를 주고받을 수 없음. 운영체제에 의해 인식, 실행됨
프로그램 입출력 : 프로그램 속 명령어로 입출력장치를 제어하는 방법. CPU가 입출력 명령어를 만다면 입출력장치에 연결된 장치 컨트롤러와 상호작용하며 입출력 작업을 수행함. 이 과정은 CPU는 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어지는데 여기에 두가지 방식이 존재함.
메모리맵 입출력과 고립형 입출력의 차이
항목 | 메모리맵 I/O | 고립형 I/O (Isolated) |
---|---|---|
주소 공간 | 메모리와 I/O 공유 (같은 주소 공간 사용) | 메모리와 I/O 분리 (분리된 주소 공간 사용) |
접근 방식 | 메모리 명령어로 접근 | I/O 전용 명령어 사용 (in , out ) |
명령어 | 메모리와 입출력장치에 같은 명령어 사용 가능 | 입출력 전용 명령어 사용 |
장점 | 구현 단순, 코드 재사용 쉬움 | 메모리 주소 공간이 축소되지 않음 |
단점 | 메모리 주소 공간이 축소됨 | 명령어가 추가되어 복잡해짐 |
주로 사용되는 곳 | RISC 시스템(ARM 등) | x86 아키텍처 등 |
-- 🤔 의문 : 고립형 입출력에서 컴퓨터의 주소 공간이 1024개일 때, 어떻게 메모리도 1024개의 주소공간을 활용하고, 입출력장치도 1024개의 주소 공간을 활용할 수 있다는거지? 공간을 분리한거라면 각각의 메모리가 필요한거아닌가?
-- 💡 NO!: 공간 분리에 대해 잘못 이해하고 있었다. 나는 어쨌든 컴퓨터가 가진 주소 공간 안에서 메모리와 입출력 장치가 그걸 반으로 공유해서 쓰면 메모리맵, 컴퓨터의 주소 공간을 아예 분리해서 사용하면(사실 어떻게 분리하는지도 모르겠지만...) 고립형이라고 생각했다. 근데 이러면 두 방식 다 사실상 컴퓨터의 주소공간을 공유하는 것에 불과한 것... 이미 존재하는 컴퓨터의 주소 공간을 분리한다기보다는, 고립형 입출력은 입출력 장치를 위한 분리된 주소 공간이 따로 있는 것이라고 이해해야함!!!
인터럽트 기반 입출력 : 여러 입출력 장치에서 인터럽트가 동시 발생시 CPU는 인터럽트 간의 우선순위를 고려하여 인터럽트를 처리함. 이렇게 우선순위를 반영하여 다중 인터럽트를 처리하는 방식은 여러가지 있음. 그 예로 PIC(프록그래머블 인터럽트 컨트롤러)가 있음.
DMA 입출력 : 위의 두 방식과 달리 입출력장치와 메모리가 CPU를 거치지 않고 직접 상호작용하는 입출력방식. 이를 위해 시스템버스에 연결된 DMA 컨트롤러가 필요함
입출력버스 : 입출력장치와 컴퓨터 내부를 연결 짓는 통로로, 입출력작업 과정에서 시스템버스 사용 횟수를 줄일 수 있음
✅ 기본 숙제
185p 확인문제 3번
205p 확인문제 1번
✅ 추가 숙제
Ch.07(07-2) RAID의 정의와 종류를 간단히 정리해 보기
- 위에 이미 정리해놓음!