Computer Science/[ OS ]

[ OS ] 19. 저장장치와 입출력 - 디스크 저장장치

kim.svadoz 2021. 6. 4. 18:45
728x90
반응형

디스크 저장장치

비휘발성 메모리의 대용량장치인 HDD나 SDD같은 Secondary Storage에도 스케쥴링이 필요하다.

  • 디스크 접근시간
    • Seek Time + retotatinal delay(track이 도는시간) + transfer time
    • Seek Time이 가장 크다 (header를 움직이는 시간)
  • 다중 프로그래밍 환경의 disk queue에는 많은 요청이 쌓여 있고 이 요청들을 효율적으로 스케쥴링하여 탐색시간을 줄이기 위해 디스크 스케쥴링이 필요하다

디스크 스케쥴링 알고리즘

seek time(access timie)을 최소화 하고
data transfer의 bandwidth를 최대화 하는 것이 최종 목표이다.

  • FCFS
    • 가장 먼저 온 것을 먼저 실행
  • Shortest-Seek-Time-First
    • seek time(disk head가 움직이는 시간)이 최소화 되는 것을 먼저 실행
  • SCAN Scheduling
    • disk head가 디스크 전체에 걸쳐셔 스캔
  • Elevator Algorithm
    • SCAN알고리즘을 부르는 또다른 호칭

Bootstrap, BootBlock, MBR

컴퓨터가 시작함에 있어서(예를 들어 전원을 켰을 경우 혹은 리붓되었을 경우를 위해) 반드시 초기화 프로그램이 시스템상에 존재하여, 실행되어야 한다.
이 프로그램을 부트스트랩 프로그램이라 하는데, 이는 CPU 레지스터에서부터 각각의 장치에 이르는 시스템의 모든 구성요소를 초기화 해준 후, 운영체제를 실행시켜주는 역할을 한다다.
이를 위해서 부트스트랩 프로그램은 디스크에서 운영체제 커널을 찾아서 메모리에 적재하고, 진입점으로 메모리를 이동(jump)시킴으로서 운영체제가 동작하도록 도와줍니다.

대부분의 컴퓨터 상에서 부트스트랩 프로그램은 읽기전용 메모리인 'ROM'에 저장되어 있다.

이 특성은 별도의 메모리 초기화 과정이 필요 없으며, 위치가 고정되어 있기 때문에 시스템 시작시에 프로세서가 즉시 부트스트랩을 시작할 수 있다는 점에서 유용하다.
그리고, ROM은 읽기 전용 메모리이기 떄문에 컴퓨터 바이러스에 의해 감염되지도 않습니다.

단, 부트스트랩 코드를 변경하기 위해서는 ROM과 하드웨어 칩을 변경해야 한다. 그렇기 떄문에 대부분의 시스템은 아주 작은 부트스트랩 로더 프로그램을 부트 ROM에 저장하고, 대신 부트스트랩 로더(BootStrap Roader)를 사용하여 실질적인 부트스트랩 프로그램을 디스크에서 불러오도록 하는 방법을 사용하여 부트스트랩 프로그램이 쉽게 변경될 수 있도록 한다.
이 실질적인 부트스트랩 프로그램은 디스크에서 특정위치에 위치한 '부트 블록'에 저장된다. 흔히 부트 파티션이 있는 디스크를 '부트 디스크' 혹은 '시스템 디스크'라고 부릅니다

부트 ROM에 있는 코드는, 디스크 컨트롤러가 부트 블록을 메모리에 적재한 후, 적재된 코드를 실행시킨다. 이때에는 (아직)장치 드라이버가 로드되진 않는다. 실질적인 부트스트랩 프로그램은 부트 ROM에있는 부트스트랩 로더보다 더욱 복잡한 구조를 가지며, 디스크상의 고정되지 않은 위치에서, 운영체제를 불러와 실행시킬 수 있다. 그렇다 하더라도, 실질적인 부트스트랩 코드는 크기가 크지 않다.

Windows 2000의 부팅 프로세스를 예로 하여 살펴보겠다. Windows 2000 시스템은 부트코드를 하드디스크의 가장 처음 섹터(이를 MBR-Master Boot Record라 명명합니다)에 위치시킨다.
그리고, Windows 2000은 하드디스크를 하나 이상의 파티션으로 나누는것을 허용한다. 그중에서 부팅을 위해 사용되는 하나의 파티션을 부트 파티션이라 하며, 이 안에는 운영체제와 장치 드라이버가 저장된다.

Windows2000시스템의 부팅은 시스템의 ROM에 있는 코드를 실행하는것으로부터 시작한다.
이 코드는 부트 코드를 MBR에서 읽어오도록 한다. MBR부트 코드 뿐만 아니라 파티션의 정보를 담는 테이블 정보도 가지고 있어서, 디스크의 어떤 파티션에서 시스템이 부팅될지를 결정히는 flag 또한 가지고 있다.
부트 파티션이 확인되면, ROM 코드(부트로더)는 부트 파티션의 첫번째 섹터(이를 부트섹터라 합니다)를 불러온 후 다양한 서브시스템이나 시스템 서비스등을 로드하는등의 나머지 부트 프로세스를 계속 진행한다.

RAID

Redundant Array of Independant disk (독립된 디스크의 복수 배열)

or

Redundant Array of Inexpensive Dist (저렴한 디스크의 복수 배열)

즉, 여러 개의 디스크를 묶어 하나의 디스크처럼 사용하는 기술

  • 컴퓨터를 구성하는 여러 부품 중 기계적인 특성 때문에 상대적으로 속도가 많이 느린 하드디스크를 보완하기 위해 만든 기술이다.
  • 기대 효과
    • 대용량의 단일 볼륨을 사용하는 효과
    • 디스크 I/O 병렬화로 인한 성능향상(Parallelism)
    • 데이터 복제로 인한 안정성 향상 (RAID 1)
  • RAID를 구성하는 디스크의 개수가 같아도, RAID의 구성 방식에 따라 성능, 용량이 바뀐다.
  • 이 구성 방식을 RAID Level이라고 부른다.
728x90
반응형