
- HDD와 SSD로 사용하는 기술
- 데이터의 안전성 혹은 높은 성능을 위해 여러 물리적 보조 기억 장치를 마치 하나의 논리적 보조 기억 장치처럼 사용하는 기술
- 1TB 용량의 HDD 4개를 마치 4TB 용량의 HDD 1개를 사용하는 것처럼 논리적으로 묶어서 사용하는 기술이다.
- 데이터를 단순히 나누어 저장한다.
- 데이터가 HDD 개수만큼 나뉘어 저장된다.
- Stripe: 데이터를 줄의 형태로 나누어 저장하는 형태
- 장점: 입출력 속도의 향상
- 단점: 저장된 정보가 안전하지 않음; 백업이 없기 때문
- 데이터를 저장할 때 원본과 복사본에 저장한다.
- Mirroring: 복사본을 만드는 방식
- 장점: RAID 0에 비해 더 안전하게 데이터를 저장
- 단점: 입력 속도 저하, 많은 HDD 필요 -> 비용 증가
- RAID 1처럼 완전한 복사본을 만드는 대신 오류를 검출하고 복구하기 위한 정보를 저장한다.
- 원본 데이터에 대한 패리티 비트만을 별도의 저장 장치에 저장한다.
- 원래 패리티 비트는 오류 검출만 가능하고 복구는 불가능하지만, RAID 4에서 사용되는 패리티 비트는 오류 복구도 가능하다.
- 장점: 적은 용량으로 데이터의 안정성을 높일 수 있다.
- 단점: 패리티 비트가 있는 저장 장치에 병목 현상이 발생할 수 있다.
- 패리티를 여러 저장 장치에 분산하여 저장한다.
다양한 입출력 장치와 정보를 주고 받는 방식을 규격화하기 어렵다.1. 입출력 장치의 종류는 너무 다양하다.2. 입출력 장치마다 속도, 데이터 전송 형식도 다양하다.3. 일반적으로 CPU와 Memory의 데이터 전송률은 높지만 입출력 장치의 데이터 전송률은 낮다.
- 입출력 장치를 컴퓨터에 연결해주는 하드웨어 장치이다.
- 입출력 장치와 정보를 주고 받는 방식을 규격화
- 입출력 장치에 문제가 없는지 검사
- 데이터 전송률이 높은 장치와 낮은 장치 사이에 버퍼라는 임시 저장 공간을 두어 전송률을 비슷하게 맞추는 방법
- CPU와 입출력 장치 사이에서 주고 받을 데이터가 담기는 레지스터 (버퍼)
- 입출력 작업의 준비 상태, 완료 여부, 오류 유무 등의 입출력 장치 상태 정보를 저장하는 레지스터
- 입출력 장치가 수행할 내용에 대한 제어 정보를 저장하는 레지스터
- 장치 컨트롤러의 동작을 감지하고 제어하는 소프트웨어 프로그램이다.
- 프로그램 입출력, 인터럽트 기반 입출력, DMA 입출력
- 프로그램 속 명령어를 이용하여 입출력 장치에 연결된 장치 컨트롤러를 제어하는 방법이다.
- CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어진다.
- 입출력 장치에 연결된 장치 컨트롤러를 프로그램 속 명령어로 제어한다.
- 메모리에 저장된 데이터를 HDD에 백업할 때
CPU는 하드 디스크 컨트롤러의 상태 레지스터를 주기적으로 읽어보며HDD의 준비 여부를 확인한다.
- 메모리에 접근하기 위한 주소 공간과 입출력 장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법이다.
- 메모리에 접근하는 명령어와 입출력 장치에 접근하는 명령어의 형태가 동일하다.
- 메모리에 접근하기 위한 주소 공간과 입출력 장치에 접근하기 위한 주소 공간을 분리하는 방법이다.
- 메모리에 접근하는 명령어: 메모리 읽기/쓰기 선을 활성화시키는 메모리 전용 명령어
- 입출력 장치에 접근하는 명령어: 입출력 장치 읽기/쓰기 선을 활설화시키는 입출력 장치 전용 명령어
- HW 인터럽트는 장치 컨트롤러에 의해 발생한다.
- 예: CPU가 장치 컨트롤러에 입출력 명령 신호를 보낸 후 입출력이 끝나면 장치 컨트롤러는 CPU에 인터럽트 요청 신호를 보낸다.
프로그램 입출력방식보다 CPU 사이클을 효율적으로 관리할 수 있다.
- cf)
폴링 (Polling):CPU는 하드 디스크 컨트롤러의 상태 레지스터를 주기적으로 읽어보며HDD의 준비 여부를 확인한다.- 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업하고 ISR을 실행한다.
- 인터럽트를 기반으로 하는 입출력을 인터럽트 기반 입출력이라고 한다.
- 일반적으로 여러 입출력 장치를 동시에 사용하기 때문에 CPU는 인터럽트 요청 신호가 동시다발적으로 받는다.
- 동시다발적인 인터럽트를 처리하는 가장 간단한 방법은 Flag Register 속 인터럽트 비트를 활성화하여 순차적으로 처리하는 것이다.
- 단, 하드웨어 고장, 정전 등과 같은 NMI (Non-Maskable Interrupt)의 경우에는 인터럽트 비트를 비활성화해도 우선적으로 처리된다.
- 현실적으로 모든 인터럽트를 순차적으로 처리할 수 없으며, 이에 따라 인터럽트에 우선순위가 부여된다.
- 여러 장치 컨트롤러에 연결되어 장치 컨트롤러의 HW 인터럽트의 우선순위를 판단한 후 CPU에게 지금 처리해야 하는 인터럽트가 무엇인지 판단하는 HW이다.
- 바쁜 CPU의 부담을 덜기 위해 CPU를 거치지 않고 입출력장치가 Memory에 직접 접근하는 기능이다.
- CPU는 DMA 컨트롤러에 입출력 작업을 명령한다.
- DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행한다.
- 입출력 작업이 끝나면 DMA 컨트롤러는 인터럽트를 통해 CPU에 작업이 끝났음을 알린다.