본문 바로가기
CS/운영체제

10) 입출력 시스템과 저장장치

by 에드박 2020. 9. 29.

1. 입출력 버스의 구조

 

컴퓨터는 필수장치인 CPU와 메모리, 주변장치인 입출력장치와 저장장치로 구성되며, 각 장치는 메인보드에 있는 버스로 연결됩니다. 다양한 주변장치는 데이터 전송 속도에 따라 저속 주변장치와 고속 주변장치로 구분 할 수 있습니다.

 

  • 저속 주변장치 : 메모리와 주변장치 사이에 오고가는 데이터 양이 적어 데이터 전송률이 낮은 장치
    ex) 키보드, 마우스
  • 고속 주변장치 : 메모리와 주변장치 사이에 대용량의 데이터가 오고가서 데이터 전송률이 높은 장치
    ex ) 그래픽카드, 하드디스크

-컴퓨터를 사용하기 시작한 초기 입출력 버스의 구조는 모든 장치가 하나의 버스로 연결되고, CPU가 작업을 진행하다가 입출력 명령을 만나면 직접 입출력장치에서 데이터를 가져왔는데 이를 폴링(polling)방식이라고 합니다.

 

-CPU와 메모리의 성능이 급격히 향상되고 주변장치의 종류가 많아지면서 CPU가 폴링 방식으로 주변장치를 관리하기 어려워 졌습니다. 그래서 모든 입출력을 입출력 제어기(I/O controller)에 맡기는 구조로 바뀌었습니다.

  • CPU에서 입출력 요청이 오면 입출력 제어기는 입출력장치로부터 데이터를 직접 송수신합니다.

-저속 입출력장치와 고속 입출력장치가 하나의 입출력 버스를 공유하고 있어서 저속 입출력 장치로 인해 고속 입출력 장치도 속도가 저하됩니다. 이를 해결하기 위해 입출력 버스를 고속 입출력 버스와 저속 입출력 버스로 분리하여 운영하고 있습니다.

그래픽카드는 점점 계산하는 양이 늘어남에 따라 GPU가 부착되었습니다.
GPU의 계산능력은 CPU를 능가할 정도이고, 다루는 데이터 또한 고속 입출력 버스로 감당할 수 없을 만큼 대용량 입니다.
그래서 입출력 버스만으로 감당하기 어려워진 그래픽 카드는 입출력 버스에서 분리하여 메인버스에 바로 연결하여 사용하게 되었습니다.

 

현대의 컴퓨터는 CPU와 메모리를 연결하는 메인버스, CPU와 그래픽카드를 연결하는 그래픽 버스, 고속 입출력 버스와 저속 입출력 버스를 사용합니다.

 

2. 직접 메모리 접근

 

입출력 제어기는 다양한 주변장치의 입출력을 대행하고 여러 채널에서 온 데이터를 메모리로 옮기는 역할을 합니다.

 

CPU의 도움 없이도 입출력 제어기가 메모리에 직접 접근할 수 있도록 직접 메모리 접근(DMA) 제어기가 마련되어 있습니다.

 

주변장치에서 전송된 데이터는 DMA 제어기를 거쳐 메모리에 올라갑니다. 반대로 메모리에서 주변장치로 데이터를 전송할 때는 DMA 제어기가 메모리에서 데이터를 가져오면 채널 선택기에서 적당한 채널로 전송합니다.

 

오늘날의 입출력 시스템에서는 CPU가 작업하는 공간과 DMA 제어기가 데이터를 옮기는 공간을 분리하여 메인메모리를 운영하는데, 이를 메모리 맵 입출력(memory mapped I/O)이라고 부릅니다.
메모리 맵 입출력에서는 메인메모리의 주소 공간 중 일부를 DMA 제어기에 할당하여 작업 공간이 겹치는 것을 막습니다.

 

3. 하드웨어 인터럽트

 

주변장치의 입출력 요구나 하드웨어의 이상 현상을 CPU에 알려주는 역할을 하는 신호입니다. CPU가 요청한 작업을 완료했을 때, 키보드로 데이터를 입력받았을 때, 네트워크 카드에 새로운 데이터가 도착했을 때, 하드웨어에 이상이 발생했을 때 등 다양한 경우에 인터럽트가 발생합니다.

 

종류 특징 비고
외부 인터럽트 입출력 및 하드웨어 관련 인터럽트 주변장치 변화, 하드웨어 이상
내부 인터럽트 프로세스의 오류로 발생하는 인터럽트 예외 상황 인터럽트
시그널 사용자의 요청으로 발생하는 인터럽트 자발적 인터럽트

 

  • 인터럽트 벡터 : 여러 인터럽트 중 어떤 인터럽트가 발생했는지 파악하기 위해 사용하는 자료구조 입니다.
  • 인터럽트 핸들러 : 인터럽트의 처리 방법을 함수 형태로 만들어놓은 것입니다.
사용자 인터럽트인 시그널의 경우 자신이 만든 인터럽트 핸들러를 등록할 수도 있습니다.
예를 들어 Ctrl + C 키를 누르면 해당 프로세스를 종료하는 것이 아니라 종료 여부를 물어보거나 지금까지 작업한 내용을 저장하도록 인터럽트 핸들러를 바꿀 수 있다.
  • 버퍼 : 속도가 다른 두 장치의 속도 차이를 완화하는 역할을 합니다.  느린 장치를 통해 들어오는 데이터를 버퍼에 모아 한꺼번에 이동하면 효율적입니다. (하나씩 옮기면 계속해서 이동하는 작업량이 들어남)

 

4. 디스크 장치

 

4-1. 하드디스크

 

  • 하드디스크는 스핀들(spindle)이라는 원통 축에 여러개의 플래터(platter)가 달려 있습니다.
  • 플래터는 표면에 자성체가 별려있어 N극을 띠면 0, S극을 띠면 1로 인식합니다.
  • 하드디스크의 사양에 7500rpm이라고 표시되어 있다면 플래터가 1분에 7500바퀴를 일정한 속도로 회전한다는 의미입니다.
  • 섹터는 하드디스크의 가장 작은 저장 단위 입니다. 하나의 섹터에는 한덩어리의 데이터가 저장됩니다.
  • 블록은 여러 개의 섹터로 구성되며, 하드디스크에서는 논리적인 단위인 블록마다 주소가 배정됩니다.
    하드디스크 입장에서는 섹터가 가장 작은 단위이지만
    운영체제 입장에서는 하드디스크에 데이터를 보내거나 받을 때 블록이 가장 작은 단위입니다.
    (메모리에서는 물리적으로 하나의 바이트마다 주소가 배정됨)
  • 트랙은 플래터에서 회전축을 중신으로 데이터가 기록되는 동심원, 즉 동일한 동심원상에 있는 섹터의 집합을 말합니다.

 

4-2. CD

 

  • CD는 레이저로 표면을 태워서 미세한 홈을 만들어 빛을 쐈을때 홈에 들어가서 반사되지 않으면 0, 반사되어 돌아오면 1로 인식합니다.
  • 하드디스크와 CD는 둘 다 원반을 사용하지만 구동방식이 다릅니다.
       
       - 하드디스크는 각속도 일정 방식을 사용합니다.
       - CD는 선속도 일정 방식을 사용합니다.

 

각속도 일정 방식의 회전 : 하드디스크의 플래터는 항상 일정한 속도로 회전하여 바깥쪽 트책의 속도가 안쪽 트랙의 속도보다 훨씬 바릅니다. 그러므로 바깥쪽 섹터가 가장 안쪽에 있는 섹터보다 크기가 큽니다.

선속도 일정 방식의 회전 : CD에서 사용하는 선속도 일정 방식의 경우 어느 트랙에서나 단위 시간당 디스크의 이동 거리가 같은데, 이를 구현하려면 헤드가 안쪽 트랙에 있을 때는 디스크의 회전 속도를 빠르게 하고, 헤드가 바깥쪽 트랙으로 이동했을 때는 디스크의 회전속도를 느리게 해야합니다.

 

각속도 일정 방식의 섹터 : 각속도 일정 방식의 하드디스크는 트랙마다 속도가 다르기 때문에 섹터의 크기도 다릅니다.
안쪽 트랙에 비해 바깥쪽 트랙으로 갈수록 낭비되는 공간이 생기는 것이 단점이지만, 디스크가 일정한 속도로 회전하기 때문에 구동 장치가 단순하고 조용한것이 장점입니다.

선속도 일정 방식의 섹터 : 선속도 일정 방식의 CD는 모든 트랙의 움직이는 속도가 같고 섹터의 크기도 같습니다.  따라서 안쪽 트랙보다 바깥쪽 트랙에 더 많은 섹터가 존재합니다. 바깥쪽 트렉의 섹터 공간이 낭비되는 문제가 없지만 모터 제어가 복잡하고 소음이 발생하는 것이 단점입니다.

 

5. 디스크 장치의 데이터 전송 시간

 

  • 탐색 시간 : 헤드가 현재 위치에서 저장된 데이터가 있는 트랙까지 이동하는 데 걸리는 시간
  • 회전 지연 시간 : 플래터가 회전하여 헤드와 원하는 섹터가 만날 때까지 걸리는 시간
  • 전송 시간 : 헤드가 섹터에 있는 데이터를 읽어 전송하는 시간
데이터 전송 시간 = 탐색시간 + 회전 지연 시간 + 전송 시간

 

디스크의 데이터 전송 시간 중 가장 많은 비중을 차지하는 것은 탐색 시간입니다.

일반적인 하드디스크의 플래터는 7500rpm 이상으로 동작하기 때문에 1분에 7500번 넘게 회전하여 회전 지연 시간은 매우 짧습니다. 그러나 모터로 헤드를 이동해야 하는 탐색 시간은 회전 지연 시간에 비해 상대적으로 매우 긴 시간입니다.

 

하드디스크의 성능을 높이려면 탐색 시간을 최소화 해야합니다.

최소화 하는 방법은 다음과 같습니다.

  • 조각 모음을 자주하는 것
  • 디스크 스케줄링 기법을 사용하는것

 

6. 디스크 장치 관리

 

디스크 장치를 사용하는 데에선 파티션, 포매팅, 조각 모음과 같은 관리 기법이 필요합니다.

  • 파티션 : 디스크를 논리적으로 분할하는 작업 ex) c드라이브, d드라이브, e드라이브
  • 포매팅 : 디스크 표면을 초기화하는 작업
  • 조각 모음 : 디스크에 파일을 저장했다 지우기를 반복함으로써 중간중간에 생긴 빈 공간을 하나로 모으는 작업

 

7. 네트워크 저장장치

 

네트워크를 사용하는 저장장치는 어떻게 구성하느냐에 따라 DAS, NAS, SAN으로 구분된다. DAS는 서버와 같은 컴퓨터에 직접 연결된 저장장치를 말하고, NAS는 기존의 저장장치를 LAN이나 WAN에 붙여서 사용하는 방식이며, SAN은 데이터 서버, 백업 서버, RAID 등의 장치를 네트워크로 묶고 데이터 접근을 위한 서버를 두는 형태이다.

 

8. 디스크 스케줄링 기법

  • FCFS 디스크 스케줄링 : 가장 단순한 디스크 스케줄링 방식으로, 트랙요청이 들어온 순서대로 서비스합니다.
  • SSTF 디스크 스케줄링 : 현재 헤드가 있는 위치에서 가장 가까운 트랙부터 서비스합니다. 만약 다음에 서비스할 두 트랙의 거리가 같다면 먼저 요청받은 트랙을 서비스합니다.
  • 블록 SSTF 디스크 스케줄링 : SSTF 디스크 스케줄링의 공평성 위배를 어느 정도 해결한 방법으로, SSTF 디스크 스케줄링에 에이징을 적용한 것입니다
  • SCAN 디스크 스케줄링 : SSTF 디스크 스케줄링의 공평성 위배 문제를 완화하기 위해 만들어진 기법으로, 헤드가 움직이기 시작하면 맨 마지막 트랙에 도착할 때까지 뒤돌아가지 않고 계속 앞으로만 전진하면서 요청받은 트랙을 서비스합니다.
  • C-SCAN 디스크 스케줄링 : 헤드가 한쪽 방향으로 움직일 때는 요청받은 트랙을 서비스하지만 반대 방향으로 돌아올 때는 서비스하지 않고 헤드만 이동합니다.
  • LOOK 디스크 스케줄링 : 더 이상 서비스할 트랙이 없으면 헤드가 끝까지 가지 않고 중간에서 방향을 바꿉니다.
  • C-LOOK 디스크 스케줄링 : C-SCAN 디스크 스케줄링의 LOOK 버전입니다. 더 이상 서비스할 트랙이 없으면 헤드가 중간에서 방향을 바꿉니다.
  • SLTF 디스크 스케줄링 : 헤드가 고정된 저장장치에서 사용하는 스케줄링 기법으로, 작업 요청이 들어온 섹터 순서를 디스크가 회전하는 방향에 맞추어 다시 정렬한 후 서비스 합니다.

9. RAID

 

자동으로 백업을 하고 장애가 발생하면 이를 복구하는 시스템으로, 동일한 규격의 디스크를 여러 개 모아 구성하며 장애가 발생했을 때 데이터를 복구하는데 사용합니다. 디스크를 구성하는 방식에 따라 RAID 0, 1, 2, 3, 4, 5, 6, 0+1, 10, 50, 60 등이 있습니다.

'CS > 운영체제' 카테고리의 다른 글

9)가상 메모리 관리  (0) 2020.09.22
8)가상 메로리의 기초  (0) 2020.09.19
7) 물리 메모리 관리  (0) 2020.09.16
6) 교착 상태  (0) 2020.09.14
5) 프로세스 동기화  (0) 2020.09.10

댓글