KOCW_I/O System
✅ Disk Structure
- ✔️ logical block
- 디스크의 외부에서 보는 디스크의 단위 정보 저장 공간
- 주소를 가진 1차원 배열처럼 취급
- 정보를 전송하는 최소 단위
CPU는
logical block
에 명령을 내리고(track
번호,sector
번호에 대해서는 모름)- ✔️ sector
logical block
이 물리적인 디스크에 매핑된 위치- 디스크 내에서는 데이터는
sector
에 저장 sector 0
은 최외곽cylinder
의 첫track
에 있는 첫 번째sector
- ✔️ Disk Structure
- 원판이 들어있고
magnet
에data
저장- 각각의
track
동심원이 여러개가 있고(안쪽track
, 바깥쪽track
) - 각
track
은 또sector
로 나누어져 있다 cylinder
: 어느 위치에 있는지 나타내고- sector에
data
저장 disk head
가data
를read, write
disk head
는 같은cylinder
를 가리키게 된다
✅ Disk Management
☑️ Physical Formatting(🟰 low-level formatting)
- 디스크를 컨트롤러가
read, write
할 수 있도록sector
들로 나누는 과정 - 각
sector
는header
➕실제 data
(보통 512bytes
) ➕trailer
로 구성 header
와trailer
는sector
를 관리하기 위한 정보sector number
,ECC(Error Correcting Code)
등의 정보 저장ECC
: 데이터를 축약한 코드controller
가 직접 접근하고 운영
☑️ Paritioning
- 디스크를 하나 이상의
cylinder
그룹으로 나누는 과정 - OS는 이것을
독립적 disk
로 취급(logical disk
)
☑️ Logical Formatting
- 파일 시스템을 만드는 것
FAT
,inode
,free space
등의 구조 포함- 먼저 디스크를 Paritioning하고, 그 안에 각각 파일 시스템을 설치
- 예를 들어 하나의
cylinder
그룹은FAT
으로 쓰고, 다른 그룹은swap area
로 쓰고…
☑️ Booting
- 컴퓨터 전원을 켰을 때 디스크를 불러오는 방법
- 메모리에 옆에
ROM
이 있고(involatile, 비휘발성) ROM
에 있는small bootstrap loader
의 실행small bootstrap loader
: 디스크의sector 0
에 있는 기계어를 실행해라- 즉,
sector 0(boot block)
을load
하여 실행 sector 0
은full bootstrap loader program
sector 0
에는 디스크에서 OS의 위치를 찾아 메모리에 올리라고 되어 있음- OS를 디스크에서
load
하여 실행
✅ Disk Scheduling
☑️ Disk Access time의 구성
디스크에서 정보를 찾아오는데 걸리는 시간을 구성하는 요소들
- ✔️ Seek Time
- 디스크 헤드를 실린더로 움직이는데 걸리는 시간
가장 많은 시간을 차지한다
- ✔️ Rotational Latency
- 헤드가 원하는 섹터에 도달하기까지 걸리는 시간
디스크가 회전해서 헤드랑 원하는 정보가 만나는 시간
- ✔️ Transfer Time
- 실제 데이터 전송 시간
- 실제로 디스크에서 데이터를
read, write
하는 시간
☑️ Disk bandwidth
- 단위 시간 당 전송된 바이트 수
☑️ Disk Scheduling
seek time
을 최소화하는 것이 목표- 즉, 헤드 이동 거리(시간)를 줄이는 것이 중요한 목표
seek time
🟰seek distance
📌 FCFS
- disk queue에 먼저 들어온 순서대로 디스크에서
read, write
📌 SSTF
Shortest Seek Time First
- 현재 디스크 헤드에서 제일 가까운 위치 먼저 간다
- 즉 seek time이 제일 빠른 순서대로 처리
- 👎🏻 starvation 문제
📌 SCAN
disk arm은 요청에 따라 달라지지 않고
그냥 자신의 갈 방향을 쭉 가면서 요청 처리
- disk arm이 디스크의 한쪽 끝에서 다른쪽 끝으로 이동하며
- 바깥쪽 실린더에서 ➡️ 안쪽 실린더
- 가는 길목에 있는 모든 요청을 처리한다
- 다른 한쪽 끝에 도착하면 역방향으로 이동
- 또 오는 길목에 있는 모든 요청을 처리
- 다시 반대쪽 끝으로 이동한다
- 엘레베이터와 비슷
- 👎🏻 실린더 위치에 따라 대기 시간이 다르다
- 👎🏻 한쪽 끝에 있는 요청이 중간에 있는 요청보다 좀 불리함
📌 C-SCAN
- 실린더 위치에 따라 대기 시간이 차이나는 문제 해결위해 등장
- 헤드가 한쪽 끝에서 다른쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리하는 건 동일
- 다른쪽 끝에 도착했으면
- 곧바로 다시 출발점으로 이동
- 👍🏻
SCAN
보다 균일한 대기 시간 제공 - 👍🏻 대기시간 편차를 줄인다
📌 N-SCAN
SCAN
처럼 왔다갔다 하면서 요청을 처리하지만- 출발하기 전
queue
에 들어온 요청들만 처리 - 이동하는 도중에
queue
에 들어오는 요청들은 무시하고 지나갔다가 - 돌아오는 길에 처리
- 👍🏻 대기시간 편차를 줄인다
- 👍🏻 먼저 들어온 요청이 먼저 처리된다
📌 LOOK
- 한쪽 방향으로 가다가 더 이상의 요청이 없으면
- 그 방향 끝까지 가는게 아니라
- 요청까지만 가고 반대 방향으로 turn
- 🆚
SCAN
이었으면 끝까지 가고 turn
📌 C-LOOK
C-SCAN
처럼 한 방향으로 요청을 처리하다가어느 요청 이상으로 요청이 없으면 그 방향 끝까지 가지 않고 반대 방향으로 turn
- 그림에서처럼
183
번 이상 요청이 없으므로199
번까지 가지 않고 turn 14
번 밑으로 요청이 없으므로 turn- 🆚
C-SCAN
이었으면0
까지,199
번까지 갔음
✅ Disk Scheduling Algorithm의 결정
SCAN
,C-SCAN
을 응용해 만든 알고리즘이 ` LOOK,
C-LOOK`- 파일 할당 방법에 따라 디스크 요청이 영향을 받는다
- Disk Scheduling Algorithm은 필요한 경우 다른 알고리즘으로 쉽게 교체할 수 있도록
- OS와 별도로 모듈로 작성되는 것이 바람직하다
✅ Swap Space Management
- ✔️ Disk를 사용하는 두 가지 이유
- memory의 volatile한 특성 ➡️ 영구적인 내용을 저장하는
file system
- 프로그램 실행을 위한 memory 공간 부족 ➡️
swap space(swap area)
💡 용도가 다르니, 관리하는 방법도
file system
과swap area
가 달라야 한다!- ✔️ Swap-space
virtual memory system
에서는 디스크를memory
의 연장 공간으로 사용file system
내부에 둘 수도 있으나- 별도
partition
사용이 일반적이다- 공간 효율성보다는 속도 효율성이 우선시된다
- 어짜피
swap area
는 전원 끄면 날아가는 내용이니까 공간을 효율적으로 저장할 필요는 크게 없음
- 어짜피
- 일반 파일보다
swap
은 훨씬 짧은 시간만 존재하고, 자주 참조됨 - 따라서
block
의 크기 및 저장 방식이 일반file system
과는 다르다 file system
보다 훨씬 큰 뭉치로 데이터를read, write
- 공간 효율성보다는 속도 효율성이 우선시된다
✅ RAID
Redundant Array of Independent Disks
- 여러 개의 디스크를 묶어서 사용
☑️ RAID의 목적
👍🏻 디스크 처리 속도 향상
- 여러 디스크에 block의 내용을 분산 저장
- 병렬적으로
read, write
- 각각의 디스크에서
1/n
씩 조금씩 읽어와서 모으기 - 하나의 디스크에서 왕창 읽어오는 것보다 효율적
- interleaving, striping(쪼개서)
👍🏻 신뢰성(reliability)향상
- 동일 정보를 여러 디스크에 중복 저장
- 하나의 디스크가 고장!
failiure
시 다른 디스크에서 읽어온다 - mirroring, shadowing
- 단순한 중복 저장을 해도 되고,
- 단순 중복은 최소화하고
- 일부 디스크에
parity
저장parity
: 일종의 축약 정보- 3개 중 1개 디스크가 고장나도 2개의 디스크와
parity
를 사용해 복원 가능
parity
사용으로 공간 효율성을 높일 수 있다
✅
✅
✅
✅
This post is licensed under CC BY 4.0 by the author.