Scribbling

운영체제 - 10 본문

Computer Science/Computer Knowledge

운영체제 - 10

focalpoint 2021. 10. 31. 16:26

1. 입출력 시스템

1.1 입출력장치

컴퓨터는 CPU와 메인메모리, 주변장치인 입출력장치와 저장장치로 구성되며, 각 장치는 메인보드의 버스로 연결된다. 주변장치는 데이터 전송 속도에 따라 저속 주변장치와 고속 주변장치로 나뉜다.

- 저속 주변 장치: 데이터 전송률이 낮은 장치로, 키보드나 마우스가 해당된다.

- 고속 주변 장치: 대용량의 데이터가 오고가는 장치이다. 출력장치인 그래픽카드나 하드디스크가 해당된다.

 

1.2 입출력 버스의 구조

초기 컴퓨터는 모든 장치가 하나의 버스로 연결된 일괄작업 시스템으로, CPU가 작업을 진행하다가 입출력 또한 직접 수행하였다. 이를 폴링(Polling) 방식이라고 한다. 그러나 주변장치는 CPU나 메인메모리보다 매우 느리다. 그래서 폴링 방식처럼 CPU가 직접 입출력을 담당하는 방식은 매우 비효율적이다.

과거에는 주변장치가 키보드, 마우스, 모뎀, 그래픽카드, 프린터, 하드디스크 정도였지만 지금은 랜카드, 스캐너, 블루투스, USB 등 수많은 주변장치가 추가되었다. 이에 따라 현대의 컴퓨터는 모든 입출력을 입출력 제어기(I/O Console)에 맡기는 구조로 변모하였다. 입출력 제어기는 2개의 채널, 메인버스와 입출력 버스로 나뉘고, 메인버스는 고속으로 작동하는 CPU와 메모리가 사용하고 입출력 버스는 주변장치가 사용한다. 입출력 제어기는 CPU에서 입출력 요청이 오면 데이터를 직접 송수신한다.

고속 주변장치가 키보드나 마우스 같은 저속 주변장치과 버스를 공유한다면 입출력 속도가 매우 저하되므로, 고속 입출력 버스와 저속 입출력 버스로 분리되어 운영된다. 두 버스 사이의 데이터 전송은 채널 선택기(Channel Selector)가 관리한다. 고속 입출력 버스에서 10번 데이터를 받고 저속 버스에서 1번 데이터를 받는 식이다.

그래픽카드는 특이 케이스이다. 초기의 그래픽 카드는 단순히 데이터를 화면에 출력하는 기능만 수행하였으나, 화면의 해상도가 높아지고 3D 게임이 보급되면서 그래픽카드가 계산해야 하는 양이 늘어남에 따라 그래픽카드에 GPU를 부착하게 되었다. GPU의 계산 능력은 CPU를 능가할 정도이고, 데이터의 양 또한 고속 입출력 버스로 감당하기 어려울 정도이다. 따라서 그래픽카드는 메인버스에 바로 연결하여 사용하게 되었다. 그래픽카드는 그래픽 전용 포트인 AGP(Accelerated Graphics Port)에 카드를 꽂는다. 

3D 게임의 경우 3차원으로 이루어진 객체나 빛이 이동할 때마다 많은 계산이 필요한데, CPU는 이러한 계산에 적합하지 않다. 따라서 현대 컴퓨터의 그래픽 카드에 GPU가 추가된 것이다. CPU는 정수 계산이 빠르지만 그래픽 계산은 대부분 실수이므로 GPU는 실수 계산 능력이 탁월하다. 그리고 CPU는 계산 외에도 메모리 관리, 주변장치 관리 등의 다양한 task들을 처리하지만 GPU는 그래픽 계산만 하므로 계산 능력이 월등하다.

각각의 버스 채널은 주소 버스, 데이터 버스, 제어 버스로 구성된다. 주소 버스에는 말 그대로 주소가 실리고, 데이터 버스에는 데이터가 실리며, 제어 버스에는 명령어, 오류 처리, 인터럽트 등의 신호가 실린다.

 

1.3 직접 메모리 접근

입출력 제어기는 다양한 주변장치 간의 입출력을 대행하고, 메인메모리와 하드디스크 간의 입출력 또한 수행한다. 직접 메모리 접근(DMA; Direct Memory Access)는 메모리에 접근할 수 있도록 입출력 제어기에 부여된 권한이다. 입출력 제어기는 여러 채널에서 전송된 데이터를 배분하여 하나의 데이터 흐름을 만든다. 그리고 채널 선택기가 어떤 것을 어디로 보낼지를 결정한다.

* DMA 전송 절차

i. CPU -> DMA 제어기 명령

ii. DMA -> CPU 메인 버스 사용 요청 (사이클 스틸)

iii. 데이터 전송

iv: ii~iii 반복하여 데이터 전송 완료 후 인터럽트

* 사이클 스틸: DMA와 CPU 메인 버스에 대한 우선권을 DMA에게 주는 방식. 

* Memory-Mapped I/O: 메인 메모리의 주소 공간 중 일부를 DMA 제어기에 할당하는 방식. 주변 장치의 레지스터 혹은 메모리 주소를 보관한다. 주변 장치로의 데이터 이동에 별도의 명령어가 필요없으며, 주소가 메인 메모리에 이미 저장되어 있기 때문에 주변장치에 대한 주소를 다룸에 있어 유리하다.

참고할만한 주소: https://m.blog.naver.com/ionebabo/221519182829

1.4 인터럽트

입출력 제어기 및 DMA 제어기를 통해 데이터 전송 작업이 완료되면, 입출력 제어기는 CPU에 인터럽트를 보낸다. 인터럽트는 크게 외부 인터럽트와 내부 인터럽트로 구분된다. 외부 인터럽트는 입력장치로부터 오는 인터럽트뿐 아니라 전원 이상이나 기계적 오류로 발생하는 인터럽트를 포함한다. 내부 인터럽트는 숫자를 0으로 나누거나 주소 공간을 벗어나는 것과 같이 오류와 관련된 인터럽트이다. 이들과 별개로 사용자의 의지로 발생시키는 자발적 인터럽트를 시그널이라고 부른다.

 

2. 디스크 장치

2.1 하드디스크

하드디스크는 스핀들(Spindle)이라는 원통 축에 여러 개의 플레터(Platter)가 달려 있다.

- 플래터: 플래터는 표면에 자성차가 발려 있어서 자기를 이용하여 0과 1을 구분한다.

- 섹터와 블록: 섹터는 하드디스크의 가장 작은 저장 단위이고, 블록은 논리적인 저장 단위 중 가장 작은 단위이다. 메인 메모리는 바이트마다 주소가 부여되지만, 하드디스크에서는 블록마다 주소가 배정된다.

- 트랙과 실린더: 트랙은 플래터에서 회전축을 중심으로 데이터가 기록되는 동심원이다. 실린더는 여러개의 플래터에 있는 같은 트랙의 집합이다.

- 헤드: 하드디스크에서 데이터를 읽거나 쓸 때 헤드를 사용한다.

컴퓨터 종료 시 헤드가 플래터의 표면에 흠집을 내지 않도록 헤더가 플래터의 바깥으로 이동하는데, 이를 파킹이라고 한다. 

하드디스크의 플래터는 항상 일정한 속도로 회전하여 바깥쪽 트랙의 속도가 안쪽 트랙의 속도보다 빠르다. 반면 CD는 어느 트랙에서나 단위 시간당 디스크의 이동 거리가 같다. 각속도 일정 방식의 하드디스크는 트랙마다 속도가 다르기 때문에 섹터의 크기도 다르다. 때문에 안쪽 트랙에 비해 바깥쪽 트랙으로 갈수록 공간 낭비가 심하다. 그러나 디스크가 일정 속도로 회전하므로 구동 장치가 단순하고 조용하게 가동된다. 반면 CD는 한정된 공간에 많은 데이터를 담을 수 있으나 소음이 심하다.

 

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

데이터 전송 시간 = 탐색 시간 + 회전 지연 시간 + 전송 시간

- 탐색 시간: 헤드가 현재 위치에서 해당 트랙까지 이동하는 시간

- 회전 지연 시간: 트랙에서 원하는 섹터를 만날 때까지 회전하는 시간

- 전송 시간: 데이터를 읽어 전송하는 시간

데이터 전송 시간에서 가장 많은 비중을 차지하는 것은 탐색 시간이다. 하드디스크를 오래 사용하면 점점 느려지는데, 이는 조각이 많이 발생해서이다. 조각이 많이 발생하면 데이터를 읽을 때 헤드가 여러 트랙을 돌아다녀야하므로 속도가 저하된다. 하드디스크의 성능을 높이려면 탐색 시간을 최소화해야한다. 이를 위해 사후적 방법으로 조각 모음을 시행하며, 탐색함에 있어 효율성을 높이기 위한 디스크 스케줄링 기법을 사용한다.

 

2.3 디스크 장치 관리

A. 파티션

파티션은 디스크를 논리적으로 분할하는 작업이다. 

B. 포매팅

포매팅은 디스크에 파일 시스템을 탑재하고 디스크 표면을 초기화하여 사용가능한 형태로 만드는 작업이다.

C. 조각모음

하드디스크는 주기적인 조각모음이 필요하다. 반면 SSD같은 반도체를 이용한 저장장치는 조각모음을 할 필요가 없다. 이는 하드디스크처럼 헤드가 움직여서 데이터를 읽는 방식이 아니고, 전기 신호로 데이터를 읽기 때문이다. SSD에서 조각모음하는 것은 SSD에도 좋지 않다. SSD는 각 셀마다 읽거나 쓸 수 있는 횟수가 제한적인데, 조각모음을 하는 것은 쓸떼없는 읽기/쓰기 작업이기 때문이다.

 

2.4 네트워크 저장장치

A. DAS(Direct Attached Storage): 서버와 같은 컴퓨터에 직접 연결된 저장장치이다. 대표적으로 컴퓨터 하나를 파일 공유 서버로 지정하고 나머지 컴퓨터에서 서버로 지정된 컴퓨터에 접근하여 파일을 이용하는 방식이 이에 해당된다. DAS는 컴퓨터의 메인보드에 있는 입출력 버스와 연결된다. 

B. NAS(Network Attached Storage): 기존의 저장장치를 LAN이나 WAN에 붙여서 사용하는 방식이다. 저장장치를 네트워크 상에 두어 여러 클라이언트가 네트워크를 통해 접근하게 함으로써 공유 데이터의 관리 및 데이터의 중복 회피가 가능하다.

C. SAN(Storage Area Network): NAS의 진보된 형태로, NAS가 저장장치에 네트워크 인터페이스를 부착한 형태라면, SAN은 데이터 서버 백업 서버, RAID 등의 장치를 네트워크로 묶고 데이터 접근을 위한 서버를 두는 형태이다. 데이터의 공유, 백업, 보안 등이 서버를 통해 자동으로 이루어진다. 

 

3. 디스크 스케줄링

디스크는 매우 느리지만 자주 사용된다. 디스크 스케줄링(Disk Scheduling)은 트랙의 이동을 최소화하여 탐색 시간을 줄인다.

A. FSFC 디스크 스케줄링

First Come, First Service이다. 말 그대로 요청 순으로 처리한다.

B. SSTF 디스크 스케줄링

SSTF 디스크 스케줄링(Shortest Seek Time First)은 현재 헤드가 있는 위치에서 가장 가까운 트랙부터 서비스한다. 가장 효율적이나, 아사 현상이 큰 문제여서 사용하지 않는다. 

C. 블록 SSTF 디스크 스케줄링

SSTF의 개선 방식으로, 트랙 요청을 블록으로 나눈 뒤 SSTF 알고리즘을 적용한다.

D. SCAN 디스크 스케줄링

SCAN 디스크 스케줄링은 헤드가 한 방향으로만 움직이면서 서비스한다. SCAN 디스크 스케줄링은 많이 사용되나, 바깥쪽 트랙이 아사 현상을 겪는 문제가 있다.

E. C-SCAN 디스크 스케줄링

SCAN 디스크 스케줄링의 바깥쪽 트랙 아사 문제를 개선한 알고리즘이다. C-SCAN 디스크 스케줄링(Circular SCAN)은 헤드가 한쪽 방향으로 움직일 때는 트랙을 서비스하고 반대 방향으로 돌아올 때는 서비스 하지않고 이동만하여 마치 원형처럼 동작한다. 그러나 작업 없이 헤드가 움직이는 구간이 매우 길어서 비효율적이다.

F. LOOK 디스크 스케줄링

LOOK 디스크 스케줄링은 SCAN 디스크 스케줄링의 개선안으로, 트랙 요청을 보고 더 이상 서비스할 트랙이 없는 경우 헤드의 방향을 바꾸어 진행한다. 이 알고리즘이 많이 사용되고 있다.

G. C-LOOK 디스크 스케줄링

LOOK 디스크 스케줄링을 E와 유사하게 "원형" 처럼 동작하도록 구현한다.

H. SLTF 디스크 스케줄링

SLTF 디스크 스케줄링(Shortest Latency First)은 앞의 방식들과는 다르다. 앞의 방식은 트랙을 따라 움직이는 헤드를 가진 하드디스크를 가정하고 있지만, SLTF는 모든 트랙을 읽을 수 있는 여러 개의 헤드를 가진 하드디스크에서 사용하는 알고리즘이다. 이러한 장치는 매우 고가라 많이 사용되지는 않는다. SLTF 스케줄링은 섹터의 순서를 최적화하는 방식으로, 섹터의 순서를 회전 방향에 맞추어 재정렬한 뒤 서비스한다.

 

4. RAID

RAID(Redundant Array of Independent Disks)는 자동으로 백업을 하고 장애가 발생하면 이를 복구하는 시스템이다. RAID는 동일한 규격의 디스크를 여러 개 모아 구성한다.

A. RAID 0

RAID 0는 여러 디스크에 데이터를 동시에 저장하여 데이터 입출력 속도를 높이는 방식이다. 이는 스트라이핑(Striping)이라고 불린다. RAID 0는 데이터 복구 기능은 없다.

B. RAID 1

RAID 1에서는 하나의 데이터를 2개의 디스크에 나누어 저장하여 장애 시 백업 디스크로 활용한다. 기본적으로 디스크의 용량이 2배 필요하며, 데이터를 두번 저장하므로 입출력 속도가 느리다. 따라서 입출력이 없는 시점에 백업이 이루어지는 것이 효율적이다.

C. RAID 10

RAID 10은 RAID 1+0을 의미하며, 빠른 데이터 전송과 백업을 지원한다.

 

 

'Computer Science > Computer Knowledge' 카테고리의 다른 글

운영체제 - 12  (0) 2021.11.03
운영체제 - 11  (0) 2021.11.02
운영체제 - 9  (0) 2021.10.22
운영체제 - 8  (0) 2021.10.20
운영체제 - 7  (0) 2021.10.16