본문 바로가기

문과 코린이의, [운영체제] 기록

[문과 코린이의 IT 기록장] 운영체제(OS) - Disk Management and Scheduling (Disk Structure, Disk Management, Disk Scheduling, Disk Scheduling Algorithm, Swap-Space Management, RAID)

반응형

[문과 코린이의 IT 기록장] 운영체제(OS) - Disk Management and Scheduling (Disk Structure, Disk Management, Disk Scheduling, Disk Scheduling Algorithm, Swap-Space Management, RAID)

[문과 코린이의 IT 기록장] 운영체제(OS) - Disk Management and Scheduling (Disk Structure, Disk Management, Disk Scheduling, Disk Scheduling Algorithm, Swap-Space Management, RAID)

 


 

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net

2021.09.20 - [문과 코린이의, [운영체제] 기록] - [문과 코린이의 IT 기록장] 운영체제(OS) - Virtual Memory (Deamand Paging, Page Fault 처리 루틴, Replacement Algorithm, Page Frame의 Allocation, Global vs Local Replacement, Trashing, Working-Set Model, PFF(Page-Fault Frequency) Scheme, ..

 

[문과 코린이의 IT 기록장] 운영체제(OS) - Virtual Memory (Deamand Paging, Page Fault 처리 루틴, Replacement Algo

[문과 코린이의 IT 기록장] 운영체제(OS) - Virtual Memory (Deamand Paging, Page Fault 처리 루틴, Replacement Algorithm, Page Frame의 Allocation, Global vs Local Replacement, Tr..

vansoft1215.tistory.com

2021.10.02 - [문과 코린이의, [운영체제] 기록] - [문과 코린이의 IT 기록장] 운영체제(OS) - File Systems & File System Implementations ( File and File System, Directory and Logical Disk, Open() 연산, File Protection, File System의 Mounting, Access Method, Allocation of File Data in Disk,..

 

[문과 코린이의 IT 기록장] 운영체제(OS) - File Systems & File System Implementations ( File and File System, Directo

[문과 코린이의 IT 기록장] 운영체제(OS) - File Systems & File System Implementations ( File and File System, Directory and Logical Disk, Open() 연산, File Protection, File ..

vansoft1215.tistory.com


1. Disk Structure

1) Logical Block

 * 디스크의 외부(컴퓨터 host의 내부)에서 보는 디스크의 단위 정보 저장 공간 (disk 외부에서 관리하는 단위)

- 주소를 가진 1차원 배열처럼 들어가 있음.

 * 요청은 배열의 몇 번째에 있는 원소를 달라는 식으로 요청을 함.

- 정보를 전송하는 최소 단위

 

2) Sector

 * sector는 disk 내부에서 관리하는 단위

 * sector에 데이터를 읽고 쓰는 것은 disk controller가 관리함.

 * disk controller는 요청이 들어온 것에 대한 것을, 어떠한 트랙의 조각에 위치시킬 것인지를 결정한다.

 

- Logical Block이 물리적인 디스크(Physical disk)에 매핑된 위치

 * Logical Block과 Sector는 매핑되어있음.

- Sector 0은 최외곽 실린더의 첫 트랙에 있는 첫번째 섹터이다

 * physical disk의 sector 0번은, Logical disk 상에서도 0번에 위치함. (부팅과 관련된 정보 저장)

 

 


2. Disk Management

1) Physial Formatting (Low-level Formatting)

- 디스크를 컨트롤러가 읽고 쓸 수 있도록 sector들로 나누는 과정

 * 공장에서 disk를 처음 만들 때, 그 disk를 disk controller가 읽고 쓸 수 있는 sector단위로 나눠놓는 과정을 formatting이라고 함

 * 과거에는 dsik를 사면, 사용자가 일일이 formatting(포멧)을 해야 했음 

 * 그러나 최근에는 워낙 disk의 용량이 커서 formatting(포멧)에 엄청난 시간이 들기 때문에, 구매할 때 이미 해서 나오는 경우가 많음

 

- 각 sectorheader + 실제 data(보통 512bytes) + trailer로 구성

- header와 trailer sector number, ECC(Error-Correcting Code) 등의 정보가 저장되며 disk controller가 직접 접근 및 운영

 * disk 외부에서, logical block에 해당하는 블록을 읽거나 쓰라고 요청을 하면, disk 내부의 sector에 그 내용을 씀

 * header와 trailer에는 그 내용이 제대로 써있는지를 체크하는 ECC나, 주소 매핑을 위한 sector number 등을 부가적으로 저장을 함.

 ** ECC 함수 : 512byte 데이터 저장 + 데이터의 축약코드 저장 (hash함수 같은 것을 통해 축약된 코드)

 ** ECC값과 데이터로 만든 값과 비교해 같은지를 확인. bad sector가 나지 않는다면 그대로 실행. (에러 검출 가능)

 * 즉, header와 trailer에는 disk controller가 데이터를 읽고/쓰고 할 때, 부가적인 정보를 저장함

 

2) Partitioning

- 디스크를 하나 이상의 실린더 그룹으로 나누는 과정

 * 즉, sector 영역들을 묶어서 하나의 독립적인 disk(Logical disk)를 만드는 것

 ex. disk 하나를 사서 C드라이브, D드라이브 등 나누는 것

- OS는 이것을 독립적 disk로 취급 (logical disk)

 

 

3) Logical Formatting

- 파일시스템을 만드는 것

 * 즉, Partitioning이 끝난 후, 각각의 파티션을 swap area용도나 file system 용도로 사용할 수 있는데, 그 중 파티션에 file system을 설치하는 것을 logical formatting이라고 함.

- FAT, inode, free space 등의 구조 포함

 

 

4) Booting (부팅의 절차)

# 처음 메모리는 모두 다 비어있음 (프로그램, 운영체제 모두 X)

 

- ROM에 있는 'small boostrap loader'의 실행

 * 메모리 영역 중, 전원이 나가도 내용이 유지되는 소량의 부분인 ROM이 있음. 이 부분에 부팅을 위한 아주 간단한 loader가 저장되어있음. 

- sector 0(boot block)을 load하여 실행

 * 컴퓨터 전원을 켜게 되면 cpu 제어권이 ROM의 주소를 가르키고, ROM에 있는 small boostrap loader라는 게 cpu에서 명령어로 실행됨. (HDD의 0번 sector에 있는 내용을 메모리에 올리고 실행하라)

- sector 0은 'full Boostrap loader program'

- OS를 디스크에서 load하여 실행

* boot block이 실행되고 나면, file system에서 운영체제 커널의 위치를 찾아서 메모리에 올리라고 지시

 


3. Disk Scheduling

1) Acceess time의 구성

a. Seek time

- 헤드를 해당 실린더(트랙)로 움직이는데 걸리는 시간

 * 이 시간이 디스크 접근 시간에서 가장 큰 시간구성요소임. (기계장치 이동이기 때문)

 

b. Rotational tatency

- 헤드가 원하는 sector에 도달하기까지 걸리는 회전지연시간

 

c. Transfer time

- 실제 데이터를 읽고/쓰고 전송하는 시간

 * 이 시간이 가장 적은 시간을 차지함.

 * 고속의 입출력이 필요한 경우, 한번의 seek로 많은 양을 transfer하는 것이 이득임. (매번 적은 데이터들을 위해 seek하면 disk가 비효율적으로 돌아감)

 


2) Disk bandwidth

 * disk의 성능을 나타내는 것 

- 단위 시간 당 disk에서 전송된 바이트의 수

 * 이것을 높이려면, 즉 disk가 효율적으로 동작하려면 seek time을 줄일 수 있도록 노력해야함.

 


3) Disk Scheduling

- seek time을 최소화하는 것이 목표

- seek time = seek distance

 


4. Disk Scheduling Algorithm

Question ) 큐에 다음과 같은 실린더 위치의 요청이 존재하는 경우, disk 헤드 53번에서 시작한 각 알고리즘의 수행 결과는? (실린더 위치는 0-199)

head start : 53

queue : 98, 183, 37, 122, 14, 124, 65, 67

 

 * scheduling algorithm이 구현되는 곳이, 일반적으로 disk 내부가 아님.

 * IO scheduiler는 disk보다는 운영체제쪽에 존재하기 때문에, 정확한 disk상의 위치는 파악할 수 없음

 * 따라서 논리블록번호(logical block)을 보고 스케줄링을 하면, 어느 정도는 그 정보가 disk상의 sector에 맞아떨어짐. 그 방식으로 스케줄링을 함.

 * 여기서는 실린더 번호로 구현하는 방법에 대해 이야기해보고자 함.


1) FCFS (First Come First Service)

- 먼저 들어온 순서대로 처리해주는 방법

- 단점 : 안쪽 트랙과 바깥쪽 트랙이 번갈아 요청하게 되면 디스크 헤더가 굉장히 많이 이동을 해야하는, 비효율성 발생

 


2) SSTF (Shortest Seek Time First)

- 현재 disk head 위치에서 제일 가까운 요청을 먼저 처리한다. (큐에 들어와있는것들 중)

- 단점 : starvation 문제 발생 가능 (큐에 다시 더 가까운 주소영역의 요청이 계속 들어올 경우, 헤드가 이동하지 못함)


3) SCAN (= 엘리베이터 스케줄링)

- disk arm이 디스크의 한쪽 끝에서 다른쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리한다.

 * 사이에 큐에 들어온 것도 처리

- 다른 한쪽 끝에 도달하면, 역방향으로 이동하며 오는 길목에 있는 모든 요청을 처리하며 다시 반대쪽 끝으로 이동한다.

- 장점 : 디스크 헤드의 이동거리가 짧아지며, starvation 문제가 발생하지 않는다.

- 문제 : 실린더 위치에 따라 대기 시간이 다르다.

 ex. 가운데 부분은, 기다리는 시간의 예상 기대치가, 가장자리 부분보다 상대적으로 짧다.

# 기본적으로 disk scheduling algorithm은 SCAN에 기반한 알고리즘들을 쓰고 있음. (공정성을 기반)


4) C-SCAN

- 헤드가 한쪽 끝에서 다른쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리한다.

 * 사이에 큐에 들어온 것도 처리

- 다른쪽 끝에 도달했으면, 요청을 처리하지 않고 곧바로 출발점으로 다시 이동한다.

 * 큐의 요청을 처리하지 않으면서 이동한다

- 장점 : SCAN보다 균일한 대기 시간을 제공한다.

 


5) Other Algorithms

(1) N-SCAN

- SCAN의 변형 알고리즘

- 일단 arm이 한 방향으로 움직이기 시작하면 그 시점 이후에 도착한 job은 되돌아올 때 service

 * 즉, 큐에 미리 들어온 것은 지나가면서 처리하고, 지나가는 도중에 큐에 들어온 것은 다음에 처리하는 방식

 * 큐에 들어온 요청들이 기다리는 시간의 분포가 좀 더 짧아지는 장점이 존재.

 

(2) Look and C-Look

- SCAN이나 C-SCAN은 헤드가 디스크 끝에서 끝으로 이동

- Look과 C-Look은 헤드가 진행중이다가 그 방향에 더 이상 기다리는 요청이 없으면, 헤드의 이동방향을 즉시 반대로 이동한다.

 * SCAN하고 C-SCAN의 약간의 비효율적인 측면을 개선한 것.

 * Look은 SCAN의 보완, C-Look은 C-SCAN의 보완

C-SCAN
C-LOOK : 183~199 사이에는 더 이상 요청이 없으므로 이상 가지 않고 꺾음


6) Disk-Scheduling Algorithm의 결정

- SCAN, C-SCAN 및 그 응용 알고리즘은 Look, C-Look 등이 일반적으로 디스크 입출력이 많은 시스템에서 효율적인 것으로 알려져 있다.

 * 현대에서 많이 쓰는 알고리즘 (scan에 기반한 알고리즘)

- File의 할당 방법에 따라 디스크 요청은 영향을 받는다.

 * 연속할당을 하는 경우에는, 연속된 실린더 위치에서 읽어갈 수 있는 알고리즘을 활용해 이동거리를 줄일 수 있음.

- disk scheduling algorithm은 필요한 경우, 다른 알고리즘으로 쉽게 교체할 수 있도록 OS와 별도의 모듈로 작성되는 것이 바람직하다.

 * 커널의 내부 모듈과는 별도로 만들어, 필요할 때 다른 알고리즘으로 교체해서 쓸 수 있도록 하는 것이 바람직함. (파일 할당 등 여러 요소에 따라서도 알고리즘이 달라져야 하기 때문)

 


5. Swap-Space Management

1) Disk(보조기억장치)를 사용하는 두 가지 이유

 * 메모리의 제약점 때문

- Memory는 휘발적인 성질을 가지고 있다.

: DRAM 메모리는 내용이 사라지는 휘발적인 특성을 가지고 있기 때문에, file system처럼 영속적으로 데이터를 유지해야 하는 메모리는 비휘발성의 디스크에 저장해야 한다.

 

- 프로그램 실행을 위한 메모리 공간이 부족하다. 즉 DRAM 메모리의 공간이 한정되어 있다.

: 현대의 컴퓨터는 multiprogramming degree와 같이, 여러 프로그램이 동시에 메모리에 올라가 실행되는 경우가 높아지면서, 메모리의 연장공간이 더욱 필요하게 됨. 그 연장공간으로서의 디스크를 사용하는, swap space(swap area)용도로 사용할 필요가 있다.

 

2) Swap-space 관리

 * Physical Disk를 Partitioning해서 Logical disk를 만들 수 있음. 각각의 Logical disk는 운영체제가 독립적인 disk로 간주하게 됨

 * 그러면 각각의 disk에다가, file system을 설치해서 사용할 수도, swap area형식으로 사용할수도 있음.

 * file system에서는, 공간효율성을 높이는 방식을 사용하고 있음.

 

- Virtual Memory system에서는 디스크를 memory의 연장 공간으로 사용

- 파일시스템 내부에 둘 수도 있으나, 별도 partition 사용이 일반적 

 * swap area는 프로그램이 끝나면, 이 공간의 내용들이 사라짐.

 * 물리적 메모리의 연장공간으로 쓰므로, 쫓겨날 때도 빠르게 나가야 함.

 * 디스크를 접근하는 시간 중 대부분은 seek time인데, 이 시간을 줄여서 속도효율성을 높여야 함.

 * 따라서, seek time을 줄이기 위해서 swap area에 데이터를 올리고 내리는 단위는 굉장히 큰 단위(512K) 등을 사용하는 것이 좋음.

 * 공간효율성보다는 속도 효율성이 우선

 * 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조됨

 * 따라서, block의 크기 및 저장 방식이 일반 파일 시스템과 다름

 

 


6. RAID (= Redundant Array of Independent Disks)

: 저렴한 여러개의 디스크를 묶어서 사용하는 것

 * 간단한 원리만 설명

 

- RAID 사용 목적 (RAID 사용 장점)

1) 디스크 처리 속도 향상

- 여러 디스크에 block의 내용을 분산 저장

- 병렬적으로 읽어옴 

 * 여러 디스크에 동일한 데이터가 중복 저장이 되어있으면, host 컴퓨터에서 데이터를 읽어오라고 disk에 요청을 했을 때, 여러 disk에서 조금씩 읽어올 수 있음.

 * 즉 분산저장 + 병렬적으로 읽어오기 때문에, 처리속도를 향상시킬 수 있다는 장점 존재

 * 이러한 기법을, interleaving / striping이라고 함

 

2) 신뢰성(reliability) 향상

- 통일 정보를 여러 디스크에 중복 저장

- 하나의 디스크가 고장(failure)시 다른 디스크에서 읽어옴 

 * 이 용어를 Mirroring, Shadowing이라고 할 수 있음

 * 이 기법은, a. 디스크에 내용을 통째로 다른 디스크에 중복 저장하는 단순 RAID방법도 있고, b. 중복저장의 정도를 낮게 해서 오류가 발생했는지를 판단하고 복구할 수 있을 정도만 하는 parity방법 (이는 공간효율성 향상 가능)이 있음.

 


* 유의사항
- 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다.
- 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다.
- 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :)
반응형