운영체제(10) : 입출력 시스템과 저장장치

김두현·2024년 12월 17일
1
post-thumbnail

📍목차


  1. 입출력 시스템
  2. 저장장치
  3. 디스크 스케줄링
  4. RAID

1️⃣ 입출력 시스템


컴퓨터는 필수장치인 CPU와 메모리, 주변장치인 입출력장치와 저장장치 모두 메인보드의 버스를 통해 연결된다.

그러나 버스에는 많은 장치가 연결되기 때문에, 1개의 버스로는 병목 현상이 발생해 여러 개의 버스를 묶어서 사용한다.
그리고 이때 데이터가 다니는 통로를 터널이라고 한다.

버스를 여러 개 사용하더라도, 주변장치도 장치마다 데이터 전송 속도가 다르기 때문에 모든 주변장치가 채널을 공유하게 되면 효율이 떨어진다.
따라서 현대 운영체제는 입출력 버스를 고속 입출력 버스와 저속 입출력 버스로 분리한다.

그래픽 카드의 경우, 화면의 해상도가 높아지고 게임의 발전에 따라 계산해야 하는 양이 늘어나게 되었다.
입출력 버스로 감당하기 어려워진 그래픽 카드는 위와 같이 그래픽 전용 포트인 AGP에 연결해 메인포트 바로 연결되는 구조를 가진다.

✔️ 직접 메모리 접근 (DMA)

입출력 제어기는 CPU가 연산에 집중할 수 있도록 주변장치의 입출력을 대행하고 여러 채널에서 온 데이터를 메모리로 옮긴다.
그러나 메모리 접근 권한은 CPU만 가지고, 주변장치는 가지고 있지 않다.

따라서 입출력 제어기가 CPU의 도움 없이도 메모리에 접근할 수 있도록 부여한 권한을 직접 메모리 접근이라고 한다.

입출력 제어기는 여러 채널로부터 받은 데이터 중 어떤 것을 메모리로 보낼지 결정하고, 반대로 메모리에서 가져온 데이터를 적절한 채널로 전송한다.
이때 메모리와 입출력 제어기 사이에 DMA 제어기가 위치한다.

메모리는 CPU 전용 공간이라고 언급한 바 있는데, 이로 인해 DMA 제어기의 작업 공간과 겹치게 된다.
이를 해결하기 위해

CPU 작업 공간과 DMA 제어기 작업 공간을 분리하는데, 이를 메모리 맵 입출력(MMIO)이라고 한다.

메모리 맵 입출력에서는 주소 공간 중 일부를 DMA 제어기에 할당하여 작업 공간이 겹치는 것을 방지한다.

✔️ 단일 버퍼와 이중 버퍼

버퍼는 속도가 다른 두 장치 간 속도 차이를 완화하는 역할을 한다.

운영체제에서도 대부분의 입출력장치와 더불어 커널에서도 버퍼를 사용한다.
커널이 입출력장치로 보낼 데이터를 버퍼에 담아놓으면, 입출력 제어기가 커널 버퍼에서 입출력장치로 데이터를 보낸다.
커널은 데이터를 버퍼에 쌓아둔 채 다른 작업을 할 수 있어 성능이 향상된다.

버퍼 활용 방식으로는 단일 버퍼이중 버퍼가 있다.
단일 버퍼의 경우 데이터를 담는 작업과 데이터를 가져오는 작업을 동시에 하기 어렵기 때문에,
입력용 버퍼와 출력용 버퍼를 지정할 수 있는 이중 버퍼 방식이 버퍼 운용에 유리하다.

2️⃣ 저장장치


현대 운영체제는 용량, 가격, 성능 등을 고려해 하드디스크, SSD, USB 등 다양한 저장장치를 활용한다.
본 포스팅에서는 하드디스크의 구조와 디스크 스케줄링 기법에 대해 알아보자.

✔️ 하드디스크 구조

하드디스크는 원반을 사용한 저장장치로, 맨 앞과 맨 뒤의 데이터 접근 시간이 비슷해 많이 사용된다.
하드디스크의 구조를 나타내면 아래와 같다.

명칭역할
플래터양면으로 이루어진 원형 디스크
섹터가장 작은 저장 단위
블록여러 개의 섹터로 구성된 저장 단위
트랙동심원상에 있는 섹터의 집합
실린더여러 플래터에 있는 같은 트랙의 집합
헤드데이터를 읽기 위한 부품

✔️ 디스크 장치의 데이터 전송 시간

디스크를 이용한 장치에서 데이터를 전송하는 데 걸리는 시간을 알아보자.

데이터를 전송하는 과정은 아래와 같다.

  1. 데이터가 저장된 트랙을 찾기 위해 헤드가 이동한다. 이를 탐색 시간이라고 한다.
  2. 트랙을 찾은 후, 데이터가 저장된 섹터를 만나기 위해 플래터가 회전한다. 이를 회전 지연 시간이라고 한다.
  3. 섹터를 찾았다면 데이터를 읽은 후 전송한다. 이를 전송 시간이라고 한다.

즉, 데이터 전송 시간은 탐색 시간 + 회전 지연 시간 + 전송 시간이다.

여기서 회전 지연 시간과 전송 시간의 경우, 플래터는 일반적으로 1분에 7,500회 이상 회전하며 데이터 전송 또한 전자가 이동하기 때문에 매우 짧다.
그러나 모터로 헤더를 이동하는 탐색 시간은 상대적으로 매우 길다.
디스크를 오래 사용해 조각이 많이 발생하게 되면 헤드의 이동 시간이 길어져 속도가 느려진다.

따라서, 디스크의 성능을 높이려면 탐색 시간을 최소화해야 한다.
이를 위한 다양한 스케줄링 기법에 대해 알아보자.

3️⃣ 디스크 스케줄링


디스크 스케줄링은 트랙의 이동을 최소화하여 탐색 시간을 줄이기 위함이다.

가장 단순한 방식부터 시작하여 단점을 개선한 방식순으로 알아보자.
트랙 접근 순서는 아래와 같다.

158171132319142015\to8 \to17 \to11 \to3 \to23 \to 19\to14 \to20

🔑 FCFS 디스크 스케줄링

FCFS 디스크 스케줄링은 요청이 들어온 순서대로 서비스한다.

가장 단순한 방식으로, 별다른 기법을 사용하지 않는다.

총 이동거리 : 65

🔑 SSTF 디스크 스케줄링

SSTF 디스크 스케줄링은 현재 헤드의 위치에서 가장 가까운 트랙부터 서비스한다.

헤드가 중간에 있는 경우, 가장 안쪽이나 가장 바깥쪽 트랙을 서비스할 확률이 낮아져 아사 현상이 발생할 수 있다는 단점이 있다.

총 이동거리 : 31

🔑 블록 SSTF 디스크 스케줄링

블록 SSTF 디스크 스케줄링은 큐에 있는 트랙 요청을 일정한 블록 형태로 묶는다.

이는 SSTF 디스크 스케줄링의 단점을 보완한 방식으로, 현재 트랙에서 가장 먼 트랙을 블록의 끝으로 이동한다.
이는 큐의 맨 끝으로 이동시키는 SSTF 디스크 스케줄링과 차이가 있다.

블록 SSTF 디스크 스케줄링은 에이징을 통해 아사 현상을 완화했으나, 성능은 많이 떨어진다.

총 이동거리 : 51

🔑 SCAN 디스크 스케줄링

SCAN 디스크 스케줄링은 헤드가 한 방향으로만 움직이며 서비스한다.

헤드가 움직이면 맨 마지막 트랙에 도달할 때까지 전진한다.
SCAN 디스크 스케줄링은 공평성을 적게 위반하면서 성능이 좋아 많이 사용하는 기법이다.

다만, 헤드가 가장 바깥쪽 트랙은 한 번씩 방문하는 반면 안 쪽 트랙은 두 번씩 방문하기 때문에 공평성 문제는 여전히 존재한다.

총 이동거리 : 38

🔑 C-SCAN 디스크 스케줄링

C-SCAN 디스크 스케줄링은 한 쪽 방향으로 이동할 때만 서비스하고, 반대 방향으로 돌아올 때는 서비스하지 않고 이동만 한다.

이는 SCAN 디스크 스케줄링의 공평성 위배 문제를 보완하기 위함이나, 작업 없이 헤드를 이동하는 것은 매우 비효율적이다.

총 이동거리 : 46

🔑 LOOK 디스크 스케줄링

SCAN 디스크 스케줄링은 트랙 요청이 없어도 헤드가 맨 마지막 트랙에 도착한 후에 방향을 바꾸는 반면,

LOOK 디스크 스케줄링은 더 이상 서비스할 트랙이 없으면 헤드가 끝까지 가지 않고 중간에서 방향을 바꾼다.

SCAN 디스크 스케줄링을 개선한 LOOK 디스크 스케줄링은 많이 사용되고 있다.

🔑 C-LOOK 디스크 스케줄링

C-LOOK 디스크 스케줄링은 C-SCAN 디스크 스케줄링의 LOOK 버전이다.

총 이동거리 : 38

🔑 SLTF 디스크 스케줄링

최소 지연 우선 기법을 의미하는 SLTF 디스크 스케줄링은 앞서 소개한 방식들과는 달리 헤드 지지대를 고정하고 모든 트랙을 읽을 수 있는 여러 개의 헤더를 지지대에 부착한다.

헤드를 움직이는 탐색 시간이 없어 빠른 데이터 송수신이 가능하나, 매우 비싸 잘 사용되지 않는다.

4️⃣ RAID


RAID란, 데이터를 자동으로 백업하고 장애가 발생하면 복구하는 시스템을 의미한다.

스트라이핑

스트라이핑이란, RAID에는 여러 디스크에 데이터를 동시에 저장하여 입출력 속도를 높이는 방식이다.

A, B, C, D라는 4개의 데이터를 디스크 1개에 저장한다면 입력 작업을 4번 해야 하지만,
디스크가 4개라면 데이터를 동시에 입력하여 속도를 높일 수 있다.

미러링

미러링이란, 같은 크기의 백업 디스크에 같은 내용을 저장하고 이를 통해 복구하는 방식이다.

👏 마무리


입출력 시스템의 구조와 다양한 디스크 스케줄링 기법에 대해 알아봤다.
다음 포스팅에서는 파일 시스템에 대해 알아보자.


참고 자료

쉽게 배우는 운영체제


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글

관련 채용 정보