12 입출력 시스템 & 디스크 관리

2024. 2. 13. 15:12프로그래밍 공부/OS

Overview

I/O Mechanisms

- How to send data between processor and I/O device

 

I/O Services of OS

- OS Supports for better I/O performance ↑

 

Disk Scheduling

- Improve throughput of a disk

 

RAID Architecture

- Improve the performance and reliability of disk system

 

I/O System (HW)

                                                                        시스템 버스

                                                     프로세서  ←------------→메인 메모리

                                                                                 |

                                                                                ↓

                                                                       입출력 제어기

                                                                                 |                                             - 데이터 버스

             시스템 버스 -------------------------------------------------------|- 주소 버스

                                          |                 |                     |                          |                  - 제어 버스

                                  - 디스크         키보드           모니터             네트워크 모뎀

주변장치(입출력장치)-| CD-ROM    마우스           프린터

                                  | DVD            스캐너           사운드 시스템

                                  -USB 메모리  터치 스크린

 

I/O Mechanisms

       CPU      제어

Processor controlled memory access

- Polling(Programmed I/O)

- Interrupt

            데이터                  데이터/주소                         ----------입출력 장치

메모리  ------ 프로세서 --------------- 입출력 모듈 데이터

                                                                                   ----------입출력 장치

Direct Memory Access (DMA)

 

Pooling (Programmed I/O)

Processor가 주기적으로 I/O 장치의 상태 확인

- 모든 I/O 장치를 순환하면 확인

- 전송 준비 및 전송 상태 등

 

장점

- Simple

- I/O 장치가 빠르고, 데이터 전송이 잦은 경우 효율적

 

단점

- Processor의 부담이 큼

   * Pooling overhead (I/O device가 느린 경우)

 

Interrupt

CPU    interrupt

I/O 장치가 작업을 완료한 후, 자신의 상태를 Processor에게 전달

- Interrupt 발생 시, Processor는 데이터 전송 수행

 

            데이터                  데이터/주소                         ----------입출력 장치

메모리  ------ 프로세서 --------------- 입출력 모듈 데이터

                            ↑______________________|         ----------입출력 장치

                                              인터럽트

장점

- Pooling 대비 low overhead

- 불규칙적인 요청 처리에 적합

 

단점

- Interrupt handling overhead

 

제어판 - 장치 관리자 - 보기 - 연결별 리소스 - 인터럽트 요청

 

Direct Memory Access (DMA)

Processor controlled memory access 방법

- Processor가 모든 데이터 전송을 처리해야 함

   * High overhead

 

Direct Memory Access (DMA)

- I/O 장치와 Memory 사이의 데이터 전송을 Processor 개입 없이(X) 수행

 

            데이터              

메모리  ------ 프로세서 overhead ↓

  |                →

  | 인터럽트 |                         전송 요청                      ----------입출력 장치

  |             DMA 제어기   --------------- 입출력 모듈 데이터

  |___________________________________|      ----------입출력 장치

                                              데이터

 

Processor는 데이터 전송의 시작/종료 만 관여

 

                                                                                 디스크 드라이브

                                                                                    |

프로세서          ①           DMA 제어기         디스크 제어기                  메인 메모리

                     ----→

                                      Address                   버퍼

                                        count                         |

                                       control                        |                                    ↑

                          ⑤                            ④              |                                     | 

        ↑           ←----           |  |        ←----  ↑     |                                     

         | 인터럽트를 종료할 때 |  |          ②       |      |                  ③                |

         --------------------   -------------      -----------------------     버스

                                        ⑤

 

① 프로세서가 전송 방향, 전송 바이트 수, 데이터 블록의 메모리 주소 등을 DMA 제어기에 보낸다.

② DMA 제어기는 디스크 제어기에 데이터를 메인 메모리로 전송하라고 요청한다.

③ 디스크 제어기가 메인 메모리에 데이터를 전송한다.

④ 데이터 전송을 완료하면 디스크 제어기는 DMA 제어기에 완료 메시지를 전달한다.

⑤ DMA 제어기가 프로세서에 인터럽트 신호를 보낸다.

 

Overview

I/O Mechanisms

- How to send data between processor and I/O device

 

I/O Services of OS

- OS Supports for better I/O performance

 

Disk Scheduling

- Improve throughput of a disk

 

RAID Architecture

- Improve the performance and reliability of disk system

 

I/O Services of OS

소프트웨어 커널
커널 입출력 서브시스템 (I/O service)
SCSI 장치
제어기
키보드
장치
드라이버
마우스
장치
드라이버
...
하드웨어 인터페이스
하드웨어 SCSI 장치
제어기
키보드
장치
드라이버
마우스
장치
드라이버
...
SCSI 장치 키보드 마우스 ...

 

I/O Scheduling

- 입출력 요청에 대한 처리 순서 결정

   * 시스템의 전반적 성능 향상 ↑

   * Process의 요구에 대한 공평한 처리

- E.g., Disk I/O scheduling

 

Error handling

- 입출력 중 발행하는 오류 처리

- E.g., disk access fail, network communication error 등

 

I/O device information managements

 

Buffering "버퍼링"

- I/O 장치와 Program 사이에 전송되는 데이터를 Buffer에 임시 저장

- 전송 속도 (or 처리 단위) 차이 문제 해결

                                                                                     디스크

                    데이터 입력                            데이터 이동

입출력 장치 --------------------------------------> □

                    1초 100                                  1초 10

(a) 버퍼링 미사용

 

                                             버퍼                                 디스크

                    데이터 입력                            데이터 이동

입출력 장치 ---------------->□-------------------> 

 

(b) 단일 버퍼링

 

                                             버퍼                                 디스크

                     버퍼 교대----                      데이터 이동

입출력 장치 -------------↓--->□----↑---------------> 

                    데이터 입력              □        --버퍼 교대

 

(c) 이중 버퍼링

 

Caching cache 자주 → CPU

- 자주 사용하는 데이터를 미리 복사해 둠

- Cache hit 시 I/O를 생략할 수 있음

 

Spooling printer

- 한 I/O 장치에 여러 Program이 요청을 보낼 시, 출력이 섞이지 않도록 하는 기법

                                            spool

   * 각 Program에 대응하는 disk file에 기록 (spooling)

   * Spooling이 완료 되면, spool을 한번에 하나씩 I/O 장치로 전송

               

 

Overview

I/O Mechanisms

- How to send data between processor and I/O device

 

I/O Services of OS

- OS Supports for better I/O performance

 

Disk Scheduling

- Improve throughput of a disk

 

RAID Architecture

- Improve the performance and reliability of disk system

 

Disk Scheduling

Disk access 요청들의 처리 순서를 결정

Disk system의 성능을 향상

                         모호

 

평가 기준

- Throughput

   * 단위 시간당 처리량

- Mean response time

   * 평균 응답 시간

- Predictability

   * 응답 시간의 예측성

   * 요청이 무기한 연기(starvation)되지 않도록 방지

 

Data access time

1) Seek time

- 디스크 head를 필요한 cylinder로 이동하는 시간

2) Rotational delay

- 1) 이후에서부터,

- 필요한 sector가 head 위치로 도착하는 시간

3) Data transmission time

- 2) 이후에서부터,

- 해당 sector를 읽어서 전송(or 기록)하는 시간

 

Optimizing seek time

- FCFS (First come First Service)

- SSTF (Shortest Seek Time First)

- Scan

- C-Scan (Circular Scan)

- Look

 

Optimizing rotational delay

- Sector queueing (SLTF, Shortest Latency Time First)

 

SPTF (Shortest Positioning Time First)

 

First Come First Service (FCFS)

선착순

요청이 도착한 순서에 따라 처리

장점

- Simple

   * Low scheduling overhead

- 공평한 처리 기법 (무한 대기 방지)

 

단점

- 최적 성능 달성에 대한 고려가 없음

 

Disk access 부하가 적은 경우에 적합

 

Example

- 총 256개의 cylinder으로 구성

- Head의 시작 위치: 100번 cylinder

- Access request queue

160 200 90 170 20 190 120 130

 

         20     90    100  120 130 160 170 190 200

0        ↓             ↓              ↓         ↓                      255

                                        60        

                                                              40              

                                     110                                        

                                       80                 

                          150                                       

                           170                                                              

                                                 70                      

                                       10   

 

Total seek distance = 690

 

Shortest Seek Time First (SSTF)

현재 head 위치에서 가장 가까운 요청 먼저 처리

 

장점      이동거리↓

- Throughput ↑

- 평균 응답 시간 ↓

 

단점

- Predictablity ↑

- Starvation 현상 발생 가능

 

일괄처리 시스템에 적합

 

160 200 90 170 20 190 120 130

 

         20     90    100  120 130 160 170 190 200

0        ↓             ↓              ↓         ↓                      255

                        10   

                             30         

                                       10        

                                              30  

                                                      10              

                                                               20                          

                                                                       10         

                                          180                              

 

Total seek distance = 300

 

Scan Scheduling

현재 head의 진행 방향에서, head와 가장 가까운 요청 먼저 처리

(진행방향 기준) 마지막 cylinder 도착 후, 반대 방향으로 진행

 

장점

- SSTF의 starvation 문제 해결

- Throughput 및 평균 응답시간 우수

 

단점

- 진행 방향 반대쪽 끝의 요청들의 응답시간 ↑

 

160 200 90 170 20 190 120 130

 

         20     90    100  120 130 160 170 190 200

0        ↓             ↓              ↓         ↓                      255

                        10   

              70        

   20   

             120                  

                                       10        

                                              30  

                                                      10              

                                                               20                          

                                                                       10         

 

Total seek distance = 300

 

C-Scan Scheduling

SCAN과 유사

Head가 미리 정해진 방향으로만 이동

- 마지막 cylinder 도착 후, 시작 cylinder로 이동 후 재시작

 

장점

- Scan 대비 균등한 기회 제공

 

160 200 90 170 20 190 120 130

 

         20     90    100  120 130 160 170 190 200

0        ↓             ↓              ↓         ↓                      255

                        10   

              70        

   20   

                                             255                                             

                                                                                    55         

                                                                       10        

                                                               20               

                                                      10         

                                              30  

                                       10        

 

Total seek distance = 490

 

Look Scheduling

Elevator algorithm

Scan (C-Scan)에서 현재 진행 방향에 요청이 없으면 방향 전환

- 마지막 cylinder까지 이동하지 않음

- Scan (C-Scan)의 실제 구현 방법

 

장점

- Scan의 불필요한 head 이동 제거

 

         20     90    100  120 130 160 170 190 200

0        ↓             ↓              ↓         ↓                      255

                        10   

              70        

                    100           

                                       10        

                                              30  

                                                      10              

                                                               20                          

                                                                       10         

 

Total seek distance = 260

 

Optimizing Rotational Delay

Shortest Latency Time First (SLTF)

Fixed head disk 시스템에 사용

- 각 track마다 head를 가진 disk

   * e.g., drum disk

- Head의 이동이 없음

 

Sector queuing algorithm

- 각 sector별 queue 유지

- Head 아래 도착한 sector의 queue에 있는 요청을 먼저 처리 함

 

Drum memory of a Polish ZAM-41 computer

 

Track

Geometrical sector

Track sector

Cluster

 

트랙 1                                      큐 스케쥴링

트랙2

 

                S8      S7                 

         S1                  S6

         S2                  S5        Q1                      T4

                S3   S4                Q2                 T1 T2

                                            Q3

                                            Q4   T5  T1  T4  T3

                                            Q5                      T5

                                            Q6                T5  T4

                                            Q7                T2  T3

                                            Q8

                                                      섹터 큐

                                            다음 요청 S6-T4

 

Moving head disk의 경우

같은 cylinder 또는 track에 여러 개의 요청 처리를 위해 사용 가능

- Head가 특정 cylinder에 도착하면, 고정 후

- 해당 cylinder의 요청을 모두 처리

 

Shortest Positioning Time First (SPTF)

Positioning time = Seek time + rotational delay

Positioning time: 원하는 위치에 head를 갖다놓는 time

Positioning time이 가장 작은 요청 먼저 처리

 

장점

- Throughput ↑, 평균 응답 시간 ↓

 

단점

- 가장 안쪽과 바깥쪽 cylinder의 요청에 대해 starvation 현상 발생 가능

 

Eschenbach scheduling

- Positioning time 최적화 시도

- Disk가 1회전하는 동안 요청을 처리할 수 있도록 요청을 정렬

   * 한 cylinder 내 track, sector들에 대한 다수의 요청이 있는 경우

      다음 회전에 처리 됨

 

Overview

I/O Mechanisms

- How to send data between processor and I/O device

 

I/O Services of OS

- OS Supports for better I/O performance

 

Disk Scheduling

- Improve throughput of a disk

 

RAID Architecture

- Improve the performance and reliability of disk system

 

RAID Architecture

Redundant Array of Inexpensive Disks (RAID)

여러 개의 물리 disk하나의 논리 disk로 사용

- OS support, RAID controller

 

Disk system의 성능 향상을 위해 사용

- Performance (access speed)

- Reliability

 

RAID 0

Disk striping

- 논리적인 한 block을 일정한 크기로 나누어 각 disk에 나누어 저장

 

모든 disk에 입출력 부하 균등 분배

- Parallel access

- Performance 향상

 

단점: 한 Disk에서 장애 시, 데이터 손실 발생

- Low reliability

 

 

Pi

___________________________

 |                  |               |                |                 

A                B              C               D                                      

E                F               G              H 

 I                J               K               L

M              N              O               ...   

 

RAID 1

Disk mirroring

- 동일한 데이터를 mirroring disk에 중복 저장

 

최소 2개의 disk로 구성

- 입출력은 둘 중 어느 disk에서도 가능

 

장점: 한 Disk에서 장애가 생겨도 데이터 손실 x

- High reliability

 

단점: 가용 disk 용량 = (전체 disk 용량/2)

 

RAID 1

_______

 |           |

A          A

B    =    B

C          C

D          D

    미러링

 

RAID 3

RAID 0 + parity disk 해링 코드

- Byte 단위 분할 저장

- 모든 disk에 입출력 부하 균등 분배

   * Parallel access, Performance 향상

 

한 Disk에서 장애 시, parity 정보를 이용하여 복구

 

Write 시 parity 계산 필요

- Overhead

- Write가 몰릴 시, 병목현상 발생 가능

                                                                                                                   스트링

    스트링 0       스트링 1      스트링 2      스트링 3        ▷                           0 1 2 3

  |                    |                  |                  |                  페러티 생성          |      패러티

A0                A1               A2               A3                                      페러티 A

B0                B1               B2               B3                                      페러티 B

C0                C1               C2               C3                                      페러티 C

D0                D1               D2               D3                                      페러티 D

 

RAID 4

A0 A1 A2 A3

RAID 3과 유사, 단 Block 단위 분산 저장

- 독립된 access 방법

- Disk 간 균등 분배가 안 될수도 있음

- 한 Disk에서 장애 시, parity 정보를 이용하여 복구

- Write 시 parity 계산 필요

   * Overhead/ Write가 몰릴 시, 병목현상 발생 가능

 

병목 현상으로 성능 저하 가능

- 한 Disk에 입출력이 몰릴 때

 

                                                                                                                 블록

    블록 0          블록 1          블록 2          블록 3.                                    0 1 2 3

  |                    |                  |                  |                  페러티 생성          |      패러티

A0                A1               A2               A3                                      페러티 A

B0                B1               B2               B3                                      페러티 B

C0                C1               C2               C3                                      페러티 C

D0                D1               D2               D3                                      페러티 D

 

RAID 5

RAID 4과 유사

- 독립된 access 방법

Parity 정보를 각 disk들에 분산 저장

- Parity disk의 병목현상 문제 해소

현재 가장 널리 사용 되는 RAID level 중 하나

- High performance and relability 

                                                                                                             

                   블록 A          블록   B         블록 C         블록 D        블록 E   

|                |     |                    |                  |                  |                    |    

                   A0                B0               C0              D0         패리티 0

페러티 생성     A1                 B1                C1           패리티 1          E1

                      A2                B2           패리티 2          D2              E2

                      A3            패리티 3           C3              D3              E3

                  패리티 4            B4               C4              D4              E4

 

RAID Architecture

Other RAID levels are available

- RAID 6, 0+1, Etc.

 

Error Correction with Parity

- https://en.wikipedia.org/wiki/Parity_bit 

 

Parity bit - Wikipedia

From Wikipedia, the free encyclopedia Bit added to a binary string for error detection 7 bits of data (count of 1-bits) 8 bits including parity even odd 0000000 0 00000000 00000001 1010001 3 10100011 10100010 1101001 4 11010010 11010011 1111111 7 11111111

en.wikipedia.org

     * Redunant array of independent disks section 참조

 

Conclusion

I/O Mechanisms

- Processor controlled memory access (Pooling, Interrupt)

- Direct Memory Access (DMA)

I/O Services of OS

- I/O scheduling, Error handling, I/O device management

- Buffering, Caching, Spooling

Disk Scheduling

- Optimizing seek time

- Optimizing rotational delay

- Minimizing positioning time

RAID Architecture

- RAID 0, 1, 3, 4, 5

 

'프로그래밍 공부 > OS' 카테고리의 다른 글

11 파일 시스템  (0) 2024.02.11
10 가상 메모리 관리  (0) 2024.02.07
9 Virtual Storage (Memory)  (0) 2024.02.05
8 메모리(주기억장치) 관리  (0) 2024.02.02
7 Deadlock  (0) 2024.01.31