반효경 교수님 운영체제 강의와 찾아본 내용을 정리한 글입니다.
디스크 구조
하나의 디스크 내에 원판의 수는 하나일 수도 있고 여러 개일 수도 있다. 각각의 원판은 트랙으로 구성되고 각 트랙은 섹터로 나뉘며, 섹터에 최사한의 단위 정보가 저장된다.
논리 블록 : 디스크의 저장공간 단위이다. 데이터가 저장될 때, 디스크 외부로 입출력이 일어날 때 모두 논리 블록 단위로 실행된다.
섹터 : 논리 블록이 저장되는 디스크 내의 물리적인 위치. 논리 블록 하나가 섹터 하나와 1대1 매핑이 된다.
실린더 : 여러 개의 원판에서 상대적 위치가 동일한 트랙들의 집합
디스크 스케줄링
하나의 섹터에 접근하는데 탐색시간, 회전지연시간, 전송시간으로 나뉜다.
탐색시간 : 디스크 헤드를 해당 실린더 위치로 이동시키는데 걸리는 시간
회전지연시간 : 디스크가 회전해서 읽고 쓰려는 섹터가 헤드 위치에 도달하기까지 걸리는 시간
전송시간 : 해당 섹터가 헤드 위치에 도달한 후 데이터를 실제로 섹터에 읽고 쓰는 데 소요되는 시간
디스크의 입출력 효율을 위해 접근 시간을 줄여야한다. 하지만 회전지연시간, 전송시간은 상대적인 수치가 작을 뿐 아니라 운영체제에서 통제하기 힘든 부분이다. 따라서 디스크 스케줄링은 헤드의 움직입을 최소화, 탐색 시간을 줄이는데 주목한다. 디스크 스케줄링은 결국엔 헤드를 안쪽-바깥쪽으로 이동하는 시간을 줄이기 위함이다.
1. FCFS (First Come First Serve) 스케줄링
디스크에 먼저 들어온 요청을 먼저 처리하는 방식
단점
- 끝과 끝을 왔다갔다 해야하는 상황을 생각해보면 거리적으로 효율적이지 못함
2. SSTF (Shortest Seek Time First) 스케줄링
헤드의 현재 위치로부터 가장 가까운 위치에 있는 요청을 제일 먼저 처리하는 알고리즘이다.
장점
- FCFS 보단 이동거리가 줄어든다
단점
- Starvation 문제 발생 - 현재의 헤드 위치로부터 가까운 곳에서 지속적인 요청이 들어온다면 멀리 떨어진 곳의 요청은 무한히 기다려야한다
3. SCAN 알고리즘
디스크의 제일 안쪽부터 제일 바깥을 오가며 그 경로에 존재하는 모든 요청을 처리한다.
장점
- 큐에 들어온 모든 요청을 처리할 수 있다
- 이동 거리 측면에서 효율적이다
- 모든 요청이 처리되기 때문에 기아현상이 일어나지 않는다
단점
- 모든 실린더의 위치의 기다리는 시간이 공평하지 않다. 가운데 위치 vs 가장 안쪽/ 바깥쪽 - 가운데에 있는 실린더는 대기시간이 짧지만 가장 안쪽이나 바깥쪽에 있으면 다시 돌아오기까지 한 주기를 기다리기 때문에 시간이 오래걸린다.
4. C-SCAN 알고리즘
SCAN 처럼 헤드가 한쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리한다. 하지만 SCAN과 달리 다른 쪽 끝에 도달해 방향을 바꾼 후에는 요청을 처리하지 않고 출발점으로 다시 이동한다.
장점
- SCAN 알고리즘에서의 불공평한 탐색 시간 문제를 해결해준다. 모두 대기 시간이 한 주기로 같아주기 때문이다.
5. LOOK, C-LOOK 알고리즘
LOOK 알고리즘 : 한쪽 방향으로 이동하다가 그 방향에 더 이상 대기중인 요청이 없으면 헤드의 이동 방향을 즉시 반대로 바꾸는 스케줄링이다.
C-LOOK 알고리즘 : LOOK 알고리즘과 동일하지만 한쪽 방향으로 이동할 때에만 요청을 처리한다.
LOOK, C-LOOK 스케줄링이 다른 알고리즘에 비해 효율적인 것으로 알려져있다.
다중 디스크 환경에서의 스케줄링
포털 사이트 등 수많은 동시 사용자를 서비스하는 서버에서는 다수의 디스크를 함께 사용한다. 동일한 정보를 여러 디스크에 중복 저장함으로써 인기 있는 데이터를 여러 디스크로부터 동시에 서비스할 수 있고, 일부 디스크에 오류가 발생해도 지속적인 서비스가 가능하며, 정보의 유실을 방지할 수 있다.
'💻Computer Science > Operating System' 카테고리의 다른 글
[OS] 프로세스 동기화 (0) | 2023.07.25 |
---|---|
[OS] CPU 스케줄링 (0) | 2023.07.25 |
[OS] 프로그램의 구조와 실행 (0) | 2023.07.25 |
[OS] 컴퓨터 시스템의 동작 원리 (0) | 2023.07.25 |
[OS] file system (0) | 2023.07.07 |