티스토리 뷰
Disk Structure
- Logical block : 디스크 외부에서는 디스크는 일정한 크기의 정보저장공간을 가진 1차원 배열로 취급한다. 논리블럭 단위로 저장되고 전송된다.
- Sector : 논리블록이 저장되는 디스크 내부의 물리적 위치를 섹터라고 하며 디스크 관리의 최소단위이다. 논리블럭 하나가 섹터 하나와 1:1로 매핑되어 있다. sector 0는 초외곽 실린더의 첫 트랙에 있는 첫번째 섹터이다.
- platter : 하나의 디스크에서 원판은 하나 또는 여러개 일 수 있다.
- track : 각 원판은 track으로 구성된다.
- cylinder : 상대적 위치가 동일한 트랙의 집합을 의미한다.
- arm : 데이터를 읽고 쓰기 위해서 arm이 해당 섹터가 위치한 실린더로 이동한 뒤 원판이 회전한다. 회전하면서 head가 정보가 저장된 섹터 위치에 도달해야 한다.
Disk Management
Physical formatting(Low-level formatting)
디스크를 컨트롤러가 읽고 쓸 수 있도록 섹터들로 나누는 과정이다. 각 섹터는 header + data(보통 512bytes) + trailer로 구성되어 있다. header와 trailer는 sector number, ECC(Error-Correcting Code)등의 정보가 저장되며 컨트롤러가 직접 접근 및 운영한다.
Partitioning
디스크를 하나 이상의 실린더 그룹으로 나누는 과정이다. OS는 이것을 독립적 disk(logical disk)로 취급한다.
Logical formatting
파일 시스템을 만드는 것이다. FAT, inode, free space등의 구조를 포함한다.
Booting
ROM에 있는 small bootstrap loader의 실행으로 진행된다. sector 0은 boot block으로 full bootstrap loader program이 존재하며 이것을 로드하여 실행한다. OS가 디스크에서 load하여 실행하는 것이다.
Disk Scheduling
접근시간(access time)은 3가지로 구분된다.
- 탐색시간 (seek time) : 헤드를 해당 실린더로 움직이는데 걸리는 시간이다. 디스크를 읽고 쓰는데 걸리는 시간의 대부분에 해당되기 때문에 한 번의 seek으로 많은 전송을 해주는 것이 좋다.
- 회전지연시간 (rotational latency) : 헤드가 원하는 섹터에 도달하는데 걸리는 시간이다. seek time의 1/10 수준이다.
- 전송시간 (transfer time) : 실제 데이터의 전송시간이다.
- Disk bandwidth : 단위시간 당 전송된 바이트 수를 의미한다.
디스크 스케줄링에서는 seek time을 최소화 하는 것이 목표이다! seek time을 최소화 하기 위해서는 seek distance를 최소화 하는 것이 중요하다. 아래는 디스크 스케줄링 알고리즘이다.
FCFS (First Come First Service)
비효율적인 알고리즘으로 들어온 순서대로 처리하는 방식이다.
SSTF (Shortest Seek Time First)
현재 헤드에서 가까운 순서대로 처리하는 방식이다. 계속 현재 헤드와 가까운 데이터 요청이 들어온다면 기존에 헤드에서 멀리 있던 데이터를 읽지 못하는 starvation 문제가 발생할 수 있다.
SCAN
disk arm이 디스크 한쪽 끝에서 다른쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리하며 진행되는 방식이다. 엘리베이터 스케줄링이라고 하기도 한다. 다른쪽 끝에 도착하면 역방향으로 이동하며 오는 길목에 있는 모든 요청을 처리하며 다시 반대쪽 끝으로 이동한다. 실린더 위치에 따라 대기시간이 다르다는 문제가 있다. 가운데 있는 부분은 오가며 처리되므로 대기시간이 짧다.
C-SCAN
헤드가 한쪽 끝에서 다른쪽 끝으로 이동하는 길목에 있는 모든 요청을 처리한다. 다른쪽 끝에 도달하면 곧바로 시작했던 끝쪽으로(출발지점) 이동하여 다시 이동하며 처리한다. SCAN은 왔다갔다 하면서 계속 처리했다면 C-SCAN은 출발점에서 끝점으로 가면서만 처리하고 끝점에서 출발점으로 돌아올 때는 일처리를 하지 않는다. SCAN보다 균일한 대기시간을 제공한다.
일반적으로는 SCAN에 기반한 알고리즘을 사용한다고 한다.
N-SCAN
SCAN의 변형 알고리즘이다. 일단 arm이 한 방향으로 움직이기 시작하면 그 시점 이후에 도착한 job은 되돌아올 때 처리하는 방식이다.
LOOK과 C-LOOK
SCAN과 C-SCAN과 다르게 헤드가 진행하는 방향에 더 이상 기다리는 요청이 없다면 헤드의 이동방향을 즉시 반대로 하는 방식이다. SCAN, C-SCAN은 끝과 끝을 이동했다면 LOOK, C-LOOK은 요청이 없다면 끝까지 가지 않고 요청한 최대, 최소 값까지만 이동하는 것이다.
Disk-Scheduling Algorithm의 결정
LOOK, C-LOOK이 일반적으로 디스크 입출력이 많은 시스템에서 효율적이다. file의 할당 방법에 따라 디스크 요청이 영향을 받는다. 디스크 스케줄링 알고리즘은 필요할 경우 다른 알고리즘으로 쉽게 교체가능하도록 OS와 별도의 모듈로 작성되는 것이 바람직하다고 한다.
Swap-space Area
디스크를 사용하는 2가지 이유는
1. memory의 휘발적인 특성때문에 사용하는 file system(비휘발성) 사용
2. 프로그램 실행을 위한 메모리 부족으로 swap space(휘발성)의 활용 이 있다.
Swap-space는 memory의 연장공간으로 사용되며, 파일시스템 내부에 둘 수도 있으나 별도의 partition을 사용하는 것이 일반적이다. 공간 효율성보다는 속도 효율성을 우선시하며, 일반 파일보다 훨씬 짧은 시간만 존재하며 자주 참조된다. 따라서 block의 크기 맟 저장방식이 일반 파일 시스템과 다르다. 일반적으로 더 큰 block의 크기를 가진다.
다중 디스크(RAID: Redundant Array of Independent Disks)
여러개의 디스크를 묶어서 사용하는 방식이다. 사용목적은 시스템의 성능향상과 신뢰성(reliability)향상이다. 여러 디스크에 block의 내용을 분산저장하여 병렬적으로 읽어오기(interleaving, striping) 때문에 디스크 처리 속도가 향상된다. 동일한 정보를 여러 디스크에 중복저장하기 때문에 하나의 디스크가 고장시 다른 디스크에서 읽어올 수 있다.(mirroring, shadowing)
이런 시스템의 가장 큰 목표는 다수의 요청이 빠른 서비스를 받을 수 있도록 하는 시스템의 확장성(scalability)에 있다. 디스크 간의 부하균형(load balancing)을 이루도록 하는 스케줄링이 필요하다. 더불어 사용되지 않는 디스크는 전력을 관리하는 것이 중요해졌다. 전력절감 측면에서는 요청이 적을 경우 일부 디스크에 부하를 집중시켜 잔여 디스크를 휴면상태에 이를 수 있게 하는 부하편향 기법을 고려할 필요가 있다.
디스크의 저전력 관리
- 활동상태(active) : 데이터를 읽거나 쓰고 잇는 상태 (활성상태)
- 공회전상태(idle) : 디스크가 회전 중이지만 데이터를 읽거나 쓰지는 않는 상태 (활성상태)
- 준비상태(standby) : 디스크가 회전하지 않지만 인터페이스가 활성화 된 상태 (비활성상태)
- 휴면상태(sleep) : 디스크가 회전하지 않고 인터페이스도 비활성화 된 상태 (비활성상태)
비활성화 기법
후속 요청까지의 시간이 일정시간 이상일 경우에만 디스크 회전을 정지시키는 것이 전력 소모를 절감하는 데 효과적이다. 비활성화를 시점을 결정하는 기법에는 시간기반 기법, 예측기반기법, 확률기반 기법이 있다.
회전속도 조절 기법
디스크 회전속도(RPM: Rotation Per Minutes)를 가변적으로 조절하는 기법이다. 최근 제안되는 기법이며 멀티미디어 환경에서는 시간에 따른 순차적인 데이터 접근이 이루어지기 때문에 주기성과 규칙성이 있어 효과가 입증되고 있다고 한다.
디스크의 데이터 배치 기법
디스크의 용량은 빠르게 증가하나 접근속도는 향상되지 않고 있다. 이 기법은 데이터의 복제본을 많이 만들어 헤드와 가까운 곳에 있는 복제본에 접근하게 하는 기법이다. 쓰기 연산에서 일관성 문제가 발생할 수 있으나 가까운 복제본에 데이터를 쓰고 나머지는 무효화 연산을 진행해 효율성을 높이고 있다고 한다.
버퍼캐싱 및 사전인출 기법
미래의 데이터 요청을 예측할 수 있다면 디스크가 활성 상태일 때 헤드에서 가까운 데이터를 사전인출(prefetching)하는 기법이다. 또한 긴급요청이 아닐경우 다른 요청과 함께 요청되도록 지연시킬 수도 있다. 디스크가 저전력 모드일 경우 지연시키고, 활성 상태일 경우 요청 수행 + 사전인출을 함으로써 상태 변화 횟수를 줄인다.
쓰기 전략을 통한 저전력 기법
비활성 상태일 경우 쓰기를 하지 않고 기다렸다가 활성상태가 되었을 경우 쓰기를 사용하는 기법이 연구되고 있다.
정리
디스크는 물리적인 저장공간이며, 디스크에서 데이터를 처리할 때 가장 오래 걸리는 것은 seek time이다. 따라서 탐색시간을 줄이는 것이 효율적인 스케줄링의 목표이다. 서버 등의 시스템에서는 디스크 여러개를 묶어 사용하는 경우도 있다. 효율적으로 관리하기 위해 부하균형이나 저전력 상태를 유지하기 위한 기법이 연구되고 있다.
운영체제 시리즈는 반효경 교수님의 운영체제 강의 와 "운영체제와 정보기술의 원리"라는 책을 바탕으로 정리한 내용입니다.
'Computer Science > 운영체제' 카테고리의 다른 글
운영체제 시리즈 마무리 (0) | 2021.01.16 |
---|---|
운영체제 시리즈 16. 웹캐싱 (0) | 2021.01.16 |
운영체제 시리즈 14. File System Implementation (0) | 2021.01.14 |
운영체제 시리즈 13. File Systems (0) | 2021.01.12 |
운영체제 시리즈 12. Virtual memory (0) | 2021.01.11 |
- Total
- Today
- Yesterday
- 우테코수업
- 내부코드
- 모의면접준비
- 운영체제
- 네트워크
- Transaction
- python
- JPA
- 월간회고
- TIL
- 학습로그
- 인증
- 개발공부일지
- java
- javascript
- CS
- 우아한테크코스
- React
- OS
- 회고
- TCP/IP
- 글쓰기미션
- 코드스쿼드
- DB
- 마스터즈코스
- JS
- 알고리즘
- 객체지향
- 카카오
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |