내가 공부하기 위한 공간 - [운영체제] 9 - 입출력, 디스크 스케쥴링
[입출력]
<주변장치>
저속주변장치 : 메모리와 전송률이 비교적 낮은 장치(키보드)
고속주변장치 : 메모리와 전송률이 비교적 높은 장치(하드디스크)
주변장치는 메인보드 내 버스로 연결
채널을 통해 지나감, 채널 선택기를 통해 선택
- 채널은 주소, 데이터, 제어로 구성
채널 공유 : 한 채널을 모든 장치가 공유
채널 분리 : 비슷한 장치끼리 묶어서 채널 할당
<입출력>
입출력 <> 입출력제어기 <> 메인버스 <> 메모리, CPU, AGP
- 초기에는 입출력 제어기가 없음, 폴링방식
- 입출력 제어기를 통해 작업효율을 높임(고속은 저속땜에 속도 느려짐)
- 입출력 제어기에 고속과 저속을 분리
- 그래픽카드의 발전으로 입출력에서 분리하여 직접 메인버스에 연결
입출력제어기 <> DMA제어기 <> 입출력메모리
- 분리형 : 메인과 별도의 메모리에 보관(작업낭비발생)
- MMIO : 메인메모리에서 공간을 분리(DMA제어기를 통해 겹치는걸 막음)
<인터럽트>
하드웨어(외부)인터럽트 : 하드웨어로 인한 발생
예외상황(내부)인터럽트 : 프로세스의 잘못이나 예상치 못한 문제로 인한 발생
시그널 : 사용자 의도적으로 인한 발생
인터럽트백터 : 인터럽트 발생을 모은 자료구조
- 핸들러가 저장된 메모리 주소를 가짐(포인터형태)
인터럽트핸들러 : 인터럽트 처리방법(함수형태)
- 시그널인 경우 만든 핸들러 등록 가능
<버퍼>
단일버퍼 : 하나의 버퍼가 양방향
이중버퍼 : 방향이 다른 단방향 버퍼 둘 사용
[저장장치]
<하드디스크>
스핀들 : 플래터들을 중심에 고정, 회전
플래터 : 자기 디스크
섹터 : 가장 작은 저장 단위
트랙 : 섹터의 집합, 원형으로 나뉜 기록 선
디스크암 : 헤드 이동
읽기쓰기헤더 : 플래터의 데이터를 읽고 씀(플래터의 표면 수)
- 외부 충격에 민감
- N극0, S극 1
파킹 : 종료시 헤드를 플래터 맨 바깥으로 이동
- 비정상 종료시 배드섹터(파킹없이 헤드가 플래터에 붙는 것)가 될 가능성
<SSD>
보조저장장치, 플레시메모리
- 소음없음, 크기작음, 외부충격에강함, 전력과발열수준이 비교적 낮음, 비쌈
- 입출력이 빠름
둘다 단편화발생
- 하드디스크 : 헤드가 여러곳을 확인, 조각모음을 주기적
- SSD : 메모리를 사용 > 어디에 있든 차이가 없음(조각모음 필요없음) > 최대사용횟수로 인해 오히려 안하는 편이 나음
<CD>
트랙과 섹터로 구성
- 홈으로 반사 안되면 0, 반사되면 1
- 하드디스크는 각속도 일정방식(안과 밖의 섹터크기가 다름, 단순, 조용, 바깥으로 갈수록 낭비 공간, 밖에서 안으로 데이터가 채워짐)
- CD는 선속도 일정방식(크기가 같음, 복잡, 소음, 낭비없음, 안에서 밖)
[디스크스케쥴링]
데이터 전송시간 = 탐색시간+회전시간+전송시간
- 전송시간과 회전시간은 하드웨어 영향
- 비중이 큰 탐색시간으로 개선(조각모음, 스케쥴링)
<FCFS>
요청 순서대로 서비스
- 비효율, 헤더 이동 거리 큼
<SSTF>
현재 헤더를 기준으로 가장 가까운 트랙부터 서비스
- 빠르지만 아사현상 가능성
<블록SSTF>
요청을 일정한 블록으로 묶어서 SSTF
- n개로 묶으면 전체가 아닌 n개로 SSTF, 그다음 n개만큼 SSTF …
- 공평하지만 느림
<SCAN>
헤드가 한 방향으로만 움직이면서 서비스
- 현재 헤드에서 한 방향의 끝(0 또는 최대트랙번호)으로 이동하면서 서비스
- 끝에 도달하면 다른 방향으로 전환 후 똑같이 실행
- 공평성 위배
<C-SCAN>
반대방향으로 이동할 때 서비스 안함
- 현재 헤드에서 한 방향의 끝(0 또는 최대트랙번호)으로 이동하면서 서비스
- 끝에 도달하면 다른 방향의 끝으로 이동 후 서비스
- 작업없이 이동하는건 비효율
<LOOK>
헤드가 끝까지 가는게 아닌 해당 방향에 더이상 서비스 할 것이 없으면 전환
- 기본은 SCAN과 동일
<C-LOOK>
LOOK버전의 C-SCAN
<SLTF>
헤드가 고정된 저장장치(모든 트랙일 읽도록 여러 헤드 부착)에서 사용
- 디스크 회전 방향에 맞추어 요청을 재정렬 후 서비스
[RAID]
여러 개의 하드 디스크를 하나처럼 묶어, 속도 향상이나 데이터 안정성을 높이는 기술
RAID 0 | 스트라이핑(Striping). 데이터를 여러 디스크에 분산 저장 | 빠른 속도 | 장애 시 데이터 전부 손실 (복구 불가) |
RAID 1 | 미러링(Mirroring). 동일 데이터를 두 디스크에 저장 | 높은 안정성 | 저장 용량의 50%만 사용 가능 |
RAID 5 | 최소 3개 디스크 필요. 데이터 + 패리티 정보 분산 저장 | 성능+복구 균형 디스크 1개 장애 복구 가능 |
복잡함, 성능 약간 저하 |
RAID 6 | RAID 5 + 패리티 2개. 디스크 2개까지 장애 복구 가능 | 높은 안전성 | 쓰기 성능 감소 최소 4개 디스크 필요 |
RAID 10 (1+0) | RAID 1 + RAID 0. 미러링 + 스트라이핑 | 빠르고 안전 | 디스크 절반만 실제 용량 사용 |