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, writedisk 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 programsector 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.