Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

생각자리

[10장] 입출력 시스템과 저장장치 본문

CS/Operating System

[10장] 입출력 시스템과 저장장치

Manze 2022. 6. 12. 13:47
더보기

쉽게 배우는 운영체제 (조성호 著, 한빛아카데미) 참고하여 작성했습니다 

입출력장치와 채널

주변장치

주변장치는 저속 주변장치(키보드, 마우스 등)와 고속 주변장치(그래픽 카드, 하드 디스크 등)로 나뉨

하나의 버스로 주변장치를 묶으면 저속장치가 고속장치의 데이터 이동을 방해함

 

채널

데이터가 지나다니는 하나의 통로

 

채널 공유와 채널 분리

채널을 모든 주변장치가 공유하면 전체적으로 데이터 전송 속도가 느려짐

전송 속도가 비슷한 장치끼리 묶어서 장치별로 채널을 할당하면 전체 데이터 전송 속도를 향상할 수 있음


입출력 버스의 구조

초기 입출력 버스 구조

모든 장치가 하나의 버스로 연결됨

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) 방식은 어느 트랙에서나 단위 시간당 디스크의

이동 거리가 같은데, 이를 구현하려면 헤드가 안쪽 트랙에 있을 때는 디스크의 회전 속도를 빠르게 하고,

헤드가 바깥쪽 트랙으로 이동했을 때는 디스크의 회전 속도를 느리게 해야 함

선속도 일정 방식의 CD모든 트랙의 움직이는 속도가 같고 섹터의 크기도 같아서
안쪽 트랙보다 바깥쪽 트랙에 더 많은 섹터가 존재 (모든 트랙의 섹터 수가 다름)
장점 : CD는 한정된 공간에 많은 데이터를 담을 수 있고 하드디스크처럼 바깥쪽 트랙의 섹터 공간이 낭비되는 문제가 없음
단점 : 모터 제어가 복잡하고 소음이 발생

디스크의 데이터 전송 시간 


디스크 장치 관리

파티션
디스크를 논리적으로 분할하는 작업
파티션 하나에 하나의 파일 시스템이 탑재
대용량 하드디스크의 경우 하나로 사용하기보다 여러 개로 나누어 사용하면 관리하기가 편함
 
마운트

파일을 사용하기 위해서 파일을 저장하고 있는 장치를 사용할 수 있도록 탑재하는 것을 의미

 

포매팅 

디스크에 파일 시스템을 탑재하고 디스크 표면을 초기화하여 사용할 수 있는 형태로 만드는 작업
빈 저장장치에 파일 테이블을 탑재
하드디스크를 처음 사용할 때는 느린 포매팅을 하고, 하드디스크를 사용하다가 다시 포매팅을 할 때는 빠른 포매팅을 함
빠른 포매팅 : 데이터는 그대로 둔 채 파일 테이블을 초기화하는 방식
느린 포매팅 : 디스크에 파일 시스템을 탑재하고 디스크 표면을 초기화하는 방식

네트워크 저장 장치 

DAS (Direct Attached Storage)

HAS(Host Attached Storage)라고도 부름

서버와 같은 컴퓨터에 직접 연결된 저장장치를 사용하는 방식 (예) 윈도우의 파일 공유

단점

컴퓨터에 직접 연결된 저장장치를 사용하기 때문에 다른 운영체제가 쓰는 파일 시스템을 사용할 수 없다

데이터의 관리나 백업을 사용자가 직접 해야 한다 

 

NAS(Network Attached Storage)
기존의 저장장치를 LAN이나 WAN에 붙여서 사용하는 방식
NAS 전용 운영체제를 가진 독립적인 장치로 새로운 하드디스크를 추가하거나 뺄 수 있음
저장장치를 네트워크상에 두고 여러 클라이언트가 네트워크를 통해 접근하게 함으로써
공유 데이터의 관리 및 데이터의 중복 회피가 가능

 

SAN(Storage Area Network)
데이터 서버, 백업 서버, RAID 등의 장치를 네트워크로 묶고 데이터 접근을 위한 서버를 두는 형태
시스템이 제공하는 인터페이스를 통해 데이터에 접근
저장장치에 필요한 장치를 네트워크로 묶어 하나의 시스템을 구성하기 때문에 다양한 서비스를 제공
 
데이터의 공유, 백업, 보안 등이 서버를 통해 자동으로 이루어짐
 
데이터 서버나 백업 서버를 같이 구축하여  NAS보다 구축 비용이 많이
 

디스크 스케줄링

트랙의 이동을 최소화하여 탐색 시간을 줄이는 것이 목적

 

공통으로 이용할 트랙 접근 순서
 
FCFS  디스크 스케줄링 (First Come, First Service disk scheduling)
요청이 들어온 순서대로 서비스

SSTF 디스크 스케줄링 (Shortest Seek Time First disk scheduling)

현재 헤드가 있는 위치에서 가장 가까운 트랙부터 서비스
다음에 서비스할 두 트랙의 거리가 같다면 먼저 요청받은 트랙을 서비스
효율성은 좋지만 아사 현상을 일으킬 수 있어 사용하지 않음

 

블록 SSTF 디스크 스케줄링 (block SSTF disk scheduling)

 

큐에 있는 트랙 요청을 일정한 블록 형태로 묶음

모든 트랙은 블록 안에서만 움직임
에이징을 사용하여 공평성을 보장하지만 성능은 FCFS 디스크 스케줄링만큼 좋지 않음

 

SCAN 디스크 스케줄링 (SCAN disk scheduling)

헤드가 움직이기 시작하면 맨 마지막 트랙에 도착할 때까지 뒤돌아가지 않고 계속 앞으로만 전진하면서 요청 받은 트랙을 서비스
동일한 트랙이나 실린더 요청이 연속적으로 발생하면 헤드가 더 이상 나아가지 못하고
 
제자리에 머물게 되어 바깥쪽 트랙이 아사 현상을 겪는 문제가 발생
 

C-SCAN 디스크 스케줄링 (Circular SCAN disk scheduling)

 

SCAN 디스크 스케줄링을 변형한 것 - 헤드가 한쪽 방향으로 움직일 때는 요청 받은 트랙을 서비스하고

 

반대 방향으로 돌아올 때는 서비스하지 않고 이동만 함

작업 없이 헤드를 이동하는 것은 매우 비효율적
동일한 트랙(실린더) 요청이 연속적으로 발생하면 바깥쪽 트랙이 아사 현상을 겪음

 

LOOK 디스크 스케줄링 (LOOK disk scheduling)

더 이상 서비스할 트랙이 없으면 헤드가 끝까지 가지 않고 중간에서 방향을 바꿈
 
 
C-LOOK 디스크 스케줄링 (Circular LOOK disk scheduling)
 
C-SCAN 디스크 스케줄링의 LOOK 버전
 
한쪽 방향으로만 서비스하C-SCAN 디스크 스케줄링과 유사한데,
 
차이점은 더 이상 서비스할 트랙이 없으면 헤드가 중간에서 방향을 바꿀 수 있다는 것
 
 
SLTF 디스크 스케줄링 (Shortest Latency Time First disk scheduling)
 
큐에 들어온 요청을 디스크의 회전 방향에 맞추어 재정렬한 후 서비스

RAID (Redundant Array of Independent Disks)

자동으로 백업을 하고 장애가 발생하면 이를 복구하는 시스템
하나의 원본 디스크와 같은 크기의 백업 디스크에 같은 내용을 동시에 저장하고,
하나의 디스크가 고장 났을 때 다른 디스크를 사용하여 데이터를 복구
 
  1. RAID 0 (Stripe set)
    같은 규격의 디스크를 병렬로 연결하여 여러 개의 데이터를 여러 디스크에
    동시에 저장하거나 가져올 수 있음 (백업기능 없음)
    데이터를 여러 갈래로 찢어서 저장하기 때문에 RAID 0을 스트라이핑이라고 부름
    4개의 디스크로 구성된 RAID 0은 1개의 디스크로 구성된 일반 시스템보다 이론적으로는 입출력 속도가 4배 빠름
    장애가 발생하면 데이터를 잃지만 입출력이 빨라 RAID 1, 5, 6과 같이 사용
  2. RAID 1 (미러링)
    하나의 데이터를 2개의 디스크에 나누어 저장하여 장애 시 백업 디스크로 활용
    데이터가 똑같이 여러 디스크에 복사되기 때문에 미러링이라고 부름
    같은 크기의 디스크를 최소 2개 이상 필요로 하며 짝수 개의 디스크로 구성
    저장하는 데이터와 같은 크기의 디스크가 하나 더 필요하기 때문에 비용이 증가
    같은 내용을 두 번 저장하기 때문에 속도가 느려질 수 있음

  3. RAID 2 
    오류를 검출하는 기능이 없는 디스크에 대해 오류 교정 코드 ECC를 따로 관리하고,
    오류가 발생하면 이 코드를 이용하여 디스크를 복구
    오류 교정 코드를 별도의 디스크에 따로 보관하고 있다가 장애가 발생하면 이를 이용하여 데이터를 복구
    비트별로 만들어진 오류 교정 코드는 별도의 디스크에 저장되며, 장애 발생 시 이 코드를 이용하여 데이터를 복구
    RAID 1보다는 작은 저장 공간을 요구하지만 오류 교정 코드를 계산하는 데 많은 시간을 소비하여 잘 사용되지 않음
  4. RAID 3 
    섹터 단위로 데이터를 나누어 저장
    N-way 패리티 비트를 구성한 후 데이터 디스크가 아닌 별도의 디스크에 보관함으로써 장애 발생 시 오류를 복구
    RAID 3에서 추가되는 디스크의 양은 4개의 디스크당 1개 정도
    추가되는 디스크의 양은 적지만 N-way 패리티 비트를 구성하는 데 필요한 계산량이 많다는 것이 단점
  5. RAID 4 
    RAID 3과 유사하나 섹터가 아닌  블록 단위로 저장
    데이터가 저장되는 디스크와 패리티 비트가 저장되는 디스크(진한 초록색)만 동작한다는 것이 장점
    RAID 3과 마찬가지로 패리티 비트를 추가하기 위한 계산량이 많지만 추가되는 디스크의 양은 적음
  6.  RAID 5
    패리티 비트를 여러 디스크에 분산하여 보관함으로써 패리티 비트 디스크의 병목 현상을 완화
    패리티 비트를 해당 데이터가 없는 디스크에 보관
    한 디스크에 장애가 발생하면 다른 디스크에 있는 패리티 비트를 이용하여 데이터를 복구할 수 있음
  7.  RAID 6 
    RAID 5와 같은 방식이지만 패리티 비트가 2개여서 디스크 2개의 장애를 복구할 수 있음
    패리티 비트를 2개씩 운영하기 때문에 RAID 5보다 계산량이 많고 4개의 디스크당
    2개의 추가 디스크가 필요하다는 단점이 있음

  8. RAID 10 
    미러링 기능을 가진 RAID 1과 빠른 데이터 전송이 가능한 RAID 0을 결합한 형태
    디스크를 RAID 0으로 먼저 묶으면 RAID 0+1이 되고, RAID 1로 먼저 묶으면 RAID 10이 됨
    RAID 0+1의 경우 장애가 발생했을 때 복구하기 위해 모든 디스크를 중단해야 하지만
    RAID 10은 일부 디스크만 중단하여 복구할 수 있음
  9. 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
Comments