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 |