생각자리
[10장] 입출력 시스템과 저장장치 본문
쉽게 배우는 운영체제 (조성호 著, 한빛아카데미) 참고하여 작성했습니다
입출력장치와 채널
주변장치
주변장치는 저속 주변장치(키보드, 마우스 등)와 고속 주변장치(그래픽 카드, 하드 디스크 등)로 나뉨
하나의 버스로 주변장치를 묶으면 저속장치가 고속장치의 데이터 이동을 방해함
채널
데이터가 지나다니는 하나의 통로
채널 공유와 채널 분리
채널을 모든 주변장치가 공유하면 전체적으로 데이터 전송 속도가 느려짐
전송 속도가 비슷한 장치끼리 묶어서 장치별로 채널을 할당하면 전체 데이터 전송 속도를 향상할 수 있음
입출력 버스의 구조
초기 입출력 버스 구조
모든 장치가 하나의 버스로 연결됨
CPU가 작업을 진행하다가 입출력 명령을 만나면 직접 입출력장치에서 데이터를 가져오는 폴링(polling)방식 이용
입출력 제어기를 사용한 구조
버스를 메인 버스와 입출력 버스의 2개의 채널로 나눔
메인 버스 : 고속으로 작동하는 CPU와 메모리가 사용
입출력 버스 : 주변장치가 사용
입출력 제어기를 사용하면 느린 입출력장치로 인해 CPU와 메모리의 작업이 느려지는 것을 막을 수 있어 전체 작업 효율 향상
입출력 버스의 분리
입출력 제어기를 사용하면 작업 효율을 높일 수 있지만,
저속 주변장치 때문에 고속 주변장치의 데이터 전송이 느려지는 문제가 있음
속도의 해결을 위해 입출력 버스를 고속 입출력 버스와 저속 입출력 버스로 분리하여 운영
고속 입출력 버스에는 고속 주변장치를 연결하고 저속 입출력 버스에는 저속 주변장치를 연결함
두 버스 사이의 데이터 전송은 채널 선택기가 관리
직접 메모리 접근
CPU의 도움 없이도 메모리에 접근할 수 있도록 입출력 제어기에 부여된 권한
입출력 제어기에는 직접 메모리에 접근하기 위한 DMA 제어기가 마련되어 있음
채널 선택기는 여러 채널에서 전송된 데이터 중 어떤 것을 메모리로 보낼지 결정

메모리 공간 분할
- CPU의 작업 공간과 DMA의 작업 공간이 겹치는 것을 방지하기 위해 과거에는 DMA 제어기가 전송하는 데이터를
‘입출력 메모리’라는 별도의 메모리에 보관함 - 현재는 CPU가 작업하는 공간과 DMA 제어기가 데이터를 옮기는 공간을 분리하여 메인 메모리를 운영하는데,
이를 메모리 맵 입출력 memory mapped I/O이라고 부름
인터럽트
인터럽트는 주변장치의 입출력 요구나 하드웨어의 이상 현상을 CPU에 알려주는 역할을 하는 신호
각 장치에는 IRQ라는 고유의 인터럽트 번호가 부여되어 있음
인터럽트가 발생하면 CPU는 IRQ를 보고 어떤 장치에서 인터럽트가 발생했는지 파악
종류
인터럽트 벡터
여러 인터럽트 중 어떤 인터럽트가 발생했는지 파악하기 위해 사용하는 자료 구조
인터럽트 벡터의 값이 1이면 인터럽트가 발생했다는 의미
인터럽트 핸들러
인터럽트의 처리 방법을 함수 형태로 만들어놓은 것
운영체제는 인터럽트가 발생하면 인터럽트 핸들러를 호출하여 작업함
사용자 인터럽트인 시그널의 경우 자신이 만든 인터럽트 핸들러를 등록할 수도 있음
버퍼링
버퍼
속도가 다른 두 장치 속도 차이를 완화하는 역할을 하는 저장 공간
이중 버퍼를 사용하면 한 버퍼는 데이터를 담는 용도로 쓰고 또 한 버퍼는 데이터를 가져가는 용도로 쓸 수 있어 유용함
하드웨어 안전 제거
버퍼가 다 차지 않으면 버퍼가 다 찰 때까지 입출력장치에 자료가 전송되지 않는데,
이 상태에서 저장장치를 제거하면 버퍼 안의 데이터가 저장되지 않는 문제가 발생
하드웨어 안전 제거를 사용하면 버퍼가 다 차지 않아도 강제로 버퍼의 내용이 저장장치로 옮겨짐(플러시flush)
디스크 장치
<하드디스크 구조>
플래터
표면에 자성체가 발려 있어 자기를 이용하여 0과 1의 데이터를 저장할 수 있음
플래터의 표면이 N극을 띠면 0으로, S극을 띠면 1로 인식
보통 2장 이상으로 구성되며 항상 일정한 속도로 회전
섹터
하드디스크의 가장 작은 저장 단위
하나의 섹터에는 한 덩어리의 데이터가 저장
블록
하드디스크와 컴퓨터 사이에 데이터를 전송하는 논리적인 저장 단위 중 가장 작은 단위
블록은 여러 개의 섹터로 구성되며, 윈도우 운영 체제에서는 블록 대신 클러스터라고 표현
하드디스크 입장에서는 섹터가 가장 작은 단위
운영체제 입장에서는 하드디스크에 데이터를 보내거나 받을 때 블록이 가장 작은 저장 단위
트랙
플래터에서 회전축을 중심으로 데이터가 기록되는 동심원, 즉 동일한 동심원상에 있는 섹터의 집합
실린더
개념적으로 여러 개의 플래터에 있는 같은 트랙의 집합
헤드와 플래터
하드디스크에서 데이터를 읽거나 쓸 때는 읽기/쓰기 헤드를 사용
플래터가 회전을 시작하면 표면에 약한 바람이 일어나는데, 헤드는 이 바람에 의해 표면에서 약간 떠 있는 형태로 작동
플래터의 표면에 생긴 상처는 데이터를 저장할 수 없는 배드 섹터가 됨
디스크 저장 장치
CD
하드디스크와 마찬가지로 트랙과 섹터로 구성되며, 수평으로 움직이는 헤드가 트랙 사이를 움직이면서 데이터를 읽음
하드디스크와 CD 의 디스크 회전
① 각속도 일정 방식
하드디스크의 플래터는 항상 일정한 속도로 회전하여 바깥쪽 트랙의 속도가 안쪽 트랙의 속도보다
훨씬 빠르므로 가장 바깥쪽에 있는 섹터가 가장 안쪽에 있는 섹터보다 더 큰데,
일정한 시간 동안 이동한 각도가 같다는 의미에서 이러한 방식을 등각속도(CAV: Constant angular velocity)라고 함
② 선속도 일정 방식
CD에서 사용하는 등선속도 (CLV: Constant linear velocity) 방식은 어느 트랙에서나 단위 시간당 디스크의
이동 거리가 같은데, 이를 구현하려면 헤드가 안쪽 트랙에 있을 때는 디스크의 회전 속도를 빠르게 하고,
헤드가 바깥쪽 트랙으로 이동했을 때는 디스크의 회전 속도를 느리게 해야 함
디스크의 데이터 전송 시간
디스크 장치 관리
파일을 사용하기 위해서 파일을 저장하고 있는 장치를 사용할 수 있도록 탑재하는 것을 의미
포매팅
네트워크 저장 장치
DAS (Direct Attached Storage)
HAS(Host Attached Storage)라고도 부름
단점
컴퓨터에 직접 연결된 저장장치를 사용하기 때문에 다른 운영체제가 쓰는 파일 시스템을 사용할 수 없다
데이터의 관리나 백업을 사용자가 직접 해야 한다
디스크 스케줄링

SSTF 디스크 스케줄링 (Shortest Seek Time First disk scheduling)
블록 SSTF 디스크 스케줄링 (block SSTF disk scheduling)
큐에 있는 트랙 요청을 일정한 블록 형태로 묶음
SCAN 디스크 스케줄링 (SCAN disk scheduling)
C-SCAN 디스크 스케줄링 (Circular SCAN disk scheduling)
SCAN 디스크 스케줄링을 변형한 것 - 헤드가 한쪽 방향으로 움직일 때는 요청 받은 트랙을 서비스하고
반대 방향으로 돌아올 때는 서비스하지 않고 이동만 함
LOOK 디스크 스케줄링 (LOOK disk scheduling)
RAID (Redundant Array of Independent Disks)
- RAID 0 (Stripe set)
같은 규격의 디스크를 병렬로 연결하여 여러 개의 데이터를 여러 디스크에
동시에 저장하거나 가져올 수 있음 (백업기능 없음)
데이터를 여러 갈래로 찢어서 저장하기 때문에 RAID 0을 스트라이핑이라고 부름
4개의 디스크로 구성된 RAID 0은 1개의 디스크로 구성된 일반 시스템보다 이론적으로는 입출력 속도가 4배 빠름
장애가 발생하면 데이터를 잃지만 입출력이 빨라 RAID 1, 5, 6과 같이 사용 - RAID 1 (미러링)
하나의 데이터를 2개의 디스크에 나누어 저장하여 장애 시 백업 디스크로 활용
데이터가 똑같이 여러 디스크에 복사되기 때문에 미러링이라고 부름
같은 크기의 디스크를 최소 2개 이상 필요로 하며 짝수 개의 디스크로 구성
저장하는 데이터와 같은 크기의 디스크가 하나 더 필요하기 때문에 비용이 증가
같은 내용을 두 번 저장하기 때문에 속도가 느려질 수 있음 - RAID 2
오류를 검출하는 기능이 없는 디스크에 대해 오류 교정 코드 ECC를 따로 관리하고,
오류가 발생하면 이 코드를 이용하여 디스크를 복구오류 교정 코드를 별도의 디스크에 따로 보관하고 있다가 장애가 발생하면 이를 이용하여 데이터를 복구
비트별로 만들어진 오류 교정 코드는 별도의 디스크에 저장되며, 장애 발생 시 이 코드를 이용하여 데이터를 복구
RAID 1보다는 작은 저장 공간을 요구하지만 오류 교정 코드를 계산하는 데 많은 시간을 소비하여 잘 사용되지 않음 - RAID 3
섹터 단위로 데이터를 나누어 저장
N-way 패리티 비트를 구성한 후 데이터 디스크가 아닌 별도의 디스크에 보관함으로써 장애 발생 시 오류를 복구
RAID 3에서 추가되는 디스크의 양은 4개의 디스크당 1개 정도
추가되는 디스크의 양은 적지만 N-way 패리티 비트를 구성하는 데 필요한 계산량이 많다는 것이 단점 - RAID 4
RAID 3과 유사하나 섹터가 아닌 블록 단위로 저장
데이터가 저장되는 디스크와 패리티 비트가 저장되는 디스크(진한 초록색)만 동작한다는 것이 장점
RAID 3과 마찬가지로 패리티 비트를 추가하기 위한 계산량이 많지만 추가되는 디스크의 양은 적음 - RAID 5
패리티 비트를 여러 디스크에 분산하여 보관함으로써 패리티 비트 디스크의 병목 현상을 완화패리티 비트를 해당 데이터가 없는 디스크에 보관
한 디스크에 장애가 발생하면 다른 디스크에 있는 패리티 비트를 이용하여 데이터를 복구할 수 있음 - RAID 6
RAID 5와 같은 방식이지만 패리티 비트가 2개여서 디스크 2개의 장애를 복구할 수 있음
패리티 비트를 2개씩 운영하기 때문에 RAID 5보다 계산량이 많고 4개의 디스크당
2개의 추가 디스크가 필요하다는 단점이 있음 - RAID 10
미러링 기능을 가진 RAID 1과 빠른 데이터 전송이 가능한 RAID 0을 결합한 형태
디스크를 RAID 0으로 먼저 묶으면 RAID 0+1이 되고, RAID 1로 먼저 묶으면 RAID 10이 됨
RAID 0+1의 경우 장애가 발생했을 때 복구하기 위해 모든 디스크를 중단해야 하지만
RAID 10은 일부 디스크만 중단하여 복구할 수 있음 - RAID 50 과 RAID 60
RAID 50 : RAID 5로 묶은 두 쌍을 다시 RAID 0으로 묶어 사용
RAID 60 : RAID 6으로 묶은 두 쌍을 다시 RAID 0으로 묶어 사용
'CS > Operating System' 카테고리의 다른 글
[12장] 네트워크와 분산 시스템 (0) | 2022.06.12 |
---|---|
[11장] 파일 시스템 (0) | 2022.06.12 |
[9장] 가상 메모리 관리 (0) | 2022.06.11 |
[8장] 가상 메모리 기초 (0) | 2022.06.08 |
[7장] 물리 메모리 관리 (0) | 2022.05.23 |