ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • OS의 second storage structure(disk)
    학교 수업/OS 2020. 5. 12. 14:18

    Disk : 컴퓨터의 보조 기억 장치, 비휘발성

       ex) 하드디스크, 플로피 디스크 등


    1. 디스크의 구조(disk structure)

     1) logical block : 디스크의 외부에서 보는 디스크의 단위 정보 저장 공간

                          주소를 가진 1차원 배열로 인식을 하며, 정보를 전송하는 최소 단위

                          Logical block은 물리적인 디스크에 매핑된 위치


     2) sector : 디스크 내부에서 디스크를 관리하는 최소 단위

                   sector 0은 최외곽 실린더의 첫 트랙에 있는 첫번째 섹터


    track(데이터 저장 공간)의 일부를 sector라고 한다.


    2. 디스크 관련한 시간들

      1) 탐색시간(seek time) : 헤드를 해당 데이터가 존재하는 트랙이나 실린더 위에 위치시키는 소요 시간

       (disk arm의 head)

    2) 회전 지연시간(latency time) : 디스크 원판이 회전하여 섹터가 헤드의 바로 아래에 위치할 때까지 소요시간

    3) 전송시간(transfer time) : 디스크와 주 기억장치 간 실제 데이터가 이동하는 데 소요 시간

    4) 접근시간(access time) : 탐색시간 + 회전지연시간 + 전송시간

    (seek)        (latency)           (transfer)

    -> 탐색 시간이 제일 큼.


    3. 디스크 스케줄링(disk scheduling)

     - 주 기억장치에 부재중이지만, 사용해야 할 데이터가 디스크상의 여러 곳에 저장되어 있을 때

       데이터를 접근하기 위해 디스크 헤드를 움직이는 경로를 결정하는 기법

     - os가 담당한다.

     - 스케줄링은 탐색시간(seek time)을 최소화하는 것이 목표이다.

     - 디스크 스케줄링의 종류

      1) FCFS(First Come First Served) : 디스크 입출력 요구들을 도착한 순서대로 서비스 하는 기법

                                                 순서가 바뀌지 않으므로 공평성이 보장

                                                 디스크의 부하가 커지면 응답시간이 길어진다.


          ) 226개의 트랙, 현재 헤드의 위치가 100이고, 입출력 대기큐가 아래와 같다면.


    160

    200

    90

    170

    20

    190

    120

    130

           

            가장 먼저 입력된 요구인 160을 시작으로,

            160 → 200 → 90 → 170 → 20 → 190 → 120 → 130

            순으로 처리되며, 헤드의 총 이동 거리는

            60 + 40 + 10 + 80 + 150 + 170 + 70 + 10 = 690 이다.


    2) SSTF(Shortest Seek Time First) : 현재 헤드의 위치로부터 가장 가까운 거리에 있는 요청을 서비스

                                                    FCFS보다 처리량이 많고 평균 응답시간이 짧다.

                                                    가장 안쪽이나 바깥쪽의 트랙은 기아현상이 일어나, 응답시간의 편차가 크다.


            ) 226개의 트랙, 현재 헤드의 위치가 100이고, 입출력 대기 큐가 아래와 같다면.


    160

    200

    90

    170

    20

    190

    120

    130

           

              헤드와 가장 가까운 90을 먼저 처리한다. 이후, 90에서 가장 가까운 120을 처리한다.

               따라서, 90 120 130 160 170 190 200 20

               순으로 처리되며, 헤드의 총 이동 거리는

               10 + 30 +10 + 30 + 10 + 20 + 10 + 180 = 300 이다.


      3) SCAN : 헤드 진행 방향과 같은 방향의 가장 짧은 거리에 있는 요청을 먼저 서비스

                헤드 이동 중 서비스 요청이 없어도 헤드는 진행 방향의 끝까지 이동한 후 반대쪽 방향전환

                엘리베이터 방식으로 운행, 대부분의 디스크 스케줄링의 기본 전략


            ) 226개의 트랙, 현재 헤드의 위치가 100이고, 입출력 대기 큐가 아래와 같다면.


    160

    200

    90

    170

    20

    190

    120

    130

           

               헤드와 가장 가까운 90을 먼저 처리한다.

               90 100보다 안쪽에 위치하므로, 헤드는 안쪽으로 움직이며 요구를 처리한다.

               따라서, 90을 처리한 후에 20을 처리하며, 헤드가 끝에 다다르면 반대로 진행한다.

               요구가 처리되는 순서는,

               90 20 0 120 130 160 170 190 200

               이며, 총 이동 거리는

               10 + 70 + 20 + 120 + 10 + 30 + 10 + 20 + 10 = 300 이다.

     

    4) LOOK : SCAN의 문제점을 개선한 스케줄링 방법

                 실제 서비스 요청이 있는 트랙까지만 이동한 후 방향 전환을 하여, 헤드 이동거리 단축

           

            ) 226개의 트랙, 현재 헤드의 위치가 100이고, 입출력 대기 큐가 아래와 같다면.


    160

    200

    90

    170

    20

    190

    120

    130

           

               헤드와 가장 가까운 90을 먼저 처리한다.

               90 100보다 안쪽에 위치하므로, 헤드는 안쪽으로 움직이며 요구를 처리한다.

               따라서, 90을 처리한 후에 20을 처리한다

         진행하는 방향에 대해 더 이상의 요구가 없으므로 헤드는 반대 방향으로 진행하며 요구를 처리한다

         요구가 처리되는 순서는,

               90 20 120 130 160 170 190 200

               이며, 총 이동 거리는

               10 + 70 + 100 + 10 + 30 + 10 + 20 + 10 = 260 이다.


      5) C-SCAN(Circular-SCAN) : 헤드가 항상 바깥쪽 트랙에서 안쪽으로 진행하면서 가까운 요청을 서비스

                                       서비스 요청이 없어도, 맨 안쪽 트랙까지 이동한 후 다시 맨 바깥쪽으로 헤드가 이동하여 안쪽으로 진행

                                       안쪽이나 바깥쪽 트랙에 대한 기아현상을 제거

                                       응답시간의 편차가 매우 적다.


            ) 226개의 트랙, 현재 헤드의 위치가 100이고, 입출력 대기 큐가 아래와 같다면.


    160

    200

    90

    170

    20

    190

    120

    130

           

               안쪽으로 진행하며 요구들을 처리하다 디스크의 끝에 도달했을 때,

               255 헤더로 요구에 대한 처리없이 이동하여 다시 안쪽으로 진행하며 요구들을 처리한다.

               이에 따라 처리되는 요구의 순서는,

               90 20 0 255 200 190 170 160 130 120

               이며, 총 이동 거리는,

               10 + 70 + 20 + 255 + 55 + 10 + 20 + 10 + 30 + 10 = 490 이다.

     

              +C-LOOK : C-SCAN의 방식의 문제점을 개선한 스케줄링,

                            실제 서비스 요청이 있는 트랙까지만 이동한 후 맨 바깥쪽의 트랙으로 이동


    6) N-Step SCAN : 헤드가 한쪽 방향으로 이동해 나가면서 최초 요청에 의해서 들어온 것만 서비스하다가 다시 반대쪽으로 오면서 이전에 도착했던 요청들을 서비스

                            SSTFSCAN방법보다는 응답시간의 편차가 적다.

                            요청이 많아도 대기 중인 요청만 처리하므로 기아현상이 발생하지 않는다


            ) 226개의 트랙, 현재 헤드의 위치가 100이고, 입출력 대기 큐가 아래와 같다면.


    160

    200

    90

    170

    20

    190

    120

    130

     

     

    80 요구

     

     

     

     

               헤드와 가장 가까운 90을 먼저 처리하다, 80의 요구가 들어왔다면

               80이 비록 90보다 안쪽에 위치하더라도 이 요구는 처리되지 않는다.

               80이라는 요청은 헤드가 끝(0)에 다다른 후, 진행 방향이 바뀌었을 때 비로소 처리된다.

               따라서, 요구가 처리되는 순서는,

               90 20 0 80 120 130 160 170 190 200

               이며, 총 이동 거리는

               10 + 70 + 20 + 80 + 40 + 10 + 30 + 10 + 20 + 10 = 300 이다.


    4. 디스크 관리(disk management)

     1) 초기화(formatting) : 사용 환경에 맞게 구조/형식을 정하는 일.

    - low-level(=physical) formatting : 디스크가 처음에 하는 포맷과정, 디스크에 물리적 구조를 만들어 낸다

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

        -> 보통, 공장 출하 전에 시행되어진다.

        -> sector는 header information, data, ECC를 담고 있으며 주로 512byte

    - logical formatting :  partitioning 후, 각 파티션마다 파일시스템을 구축한다.

    os가 디스크 공간의 파일을 접근 가능하게끔


      + partitioning ? 디스크를 논리적으로 분할하는 것. 보통 하나의 디스크를 1개 이상의 파티션으로 구성한다.


     2) RAID(Redundant Array of Independent Disk) structure

        혹은, Inexpensive

       - 저렴한 여러 개의 디스크를 묶어서 하나의 논리적 디스크로 사용하는 것

       - 목적 : 디스크 처리 속도 향상, 동일 정보를 여러 디스크에 중복 저장해 신뢰성 향상

       - 구성 방식(raid level) :

          RAID를 구성하는 디스크의 개수가 같아도, 구성 방식에 따라 성능과 용량이 바뀐다.

          주로 사용하는 raid levelraid 0, raid 1, raid 5, raid 6 


       ① RAID 0 : 여러 개의 디스크를 마치 하나의 논리적 단위처럼 사용 ->striping

      block단위로 striping데이터를 block단위로 분산

                       최소 2개의 디스크가 필요하며raid를 구성하는 모든 디스크에 데이터를 분할하여 저장

                      전체 디스크를 모두 동시에 사용하기에 성능과 용량은 N

     하지만 하나의 디스크라도 문제가 발생할 경우 전체 RAID가 깨지므로 안정성은 1/N


                       Striping : 논리적으로 연속된 데이터를 물리적으로 여러 개의 저장장치에 나눠서 저장


                     


             

       ② RAID 1 : 각 멤버 디스크에 같은 데이터를 중복 기록한다. -> mirroring 이라고 부른다

                     최소 2개의 디스크가 필요하며, 동일한 데이터를 N개 복제하여 각 디스크에 저장한다.

                     때문에, 여러 개로 RAID를 구성해도 실제 사용 가능한 용량은 단일 디스크의 용량과 동일하고

                     안정성이 높다.

             

       ③ RAID 2 : bit단위로 striping을 하고, error correction을 위해 hamming code를 사용

                      최소 3개의 디스크로 구성 가능, 데이터 디스크와 ECC(error correction code) 디스크로 구성

                      1개의 디스크 에러시 복구 가능(2개 이상은 불가능) ->RAID 4가 나오면서 거의 사용x


       ④ RAID 3 / 4 :  RAID 3은 byte단위로 striping을 하고, RAID 4는 block 단위로 striping 

    error correction을 위해 패리티 정보(parity check)를 사용

                          최소 3개의 디스크로 구성 가능, 데이터 디스크와 패리티 디스크로 구성

                          1개의 디스크 에러시 복구 가능(2개 이상은 불가능)


                     RAID 4가 block단위로 striping하는 것은 RAID 5 & 6과 동일하지만

    패리티 코드를 동일한 디스크에 저장하기 때문에 패리티 디스크의 사용량이 높아 해당 디스크의 수명이 줄어듬

             


         RAID 5 : 제일 사용빈도가 높은 RAID level

                      Block단위로 striping을 하고, error correction을 위해 패리티 정보(parity check)를 사용

                      , 패리티 저장하는 디스크를 고정하지 않고 매번 다른 디스크에 저장

                      최소 3개의 디스크로 구성 가능 + 1개 디스크 에러 복구가능(2개 이상 불가능)

               

          RAID 6 : block단위로 striping을 하고, error correction을 위해 패리티 정보(parity check)를 사용

                       , 패티리 저장하는 디스크를 고장하지 않고 매번 다른 디스크에 저장

                       RAID 5와 달리 2개의 패리티 사용(공간효율은 RAID 5보다 떨어지지만, 신뢰성은 높다)

                       최소 4개의 디스크로 구성 가능 + 2개의 디스크 에러 복구가능(3개 이상 불가능)

       


    + 추가      

    중첩된 RAID 레벨들 : 많은 수의 디스크를 필요로 해서 기존 RAID 레벨들보다 구현 비용은 비쌈

         그래도, 안정성에 있어서 도움이 되므로 비용에도 불구하고 널리 사용된다.

     

     RAID 0 + 1 :  RAID 0으로 묶은 디스크를 최종적으로 RAID 1으로 구성

                               일반 RAID 1구성보다 높은 성능을 낼 수 있으며, 한쪽 RAID 0에 들어가는 디스크들이 고장난다고 해도 나머지 RAID 0 디스크를 통해 정상 동작 및 데이터 복구를 할 수 있다.

                                최소 4개의 드라이브


                      

    RAID 1+0 : RAID 1로 구성된 디스크들을 최종적으로 RAID 0 방식으로 striping해서 성능 높임

                            역시, RAID 1의 미러링을 기본으로 하고 있으므로 디스크 1개가 고장나도 그와 함께 미러링 된 디스크를 통해 복구가 가능

                           최소 4개의 드라이브

                      

              

               -> RAID 01RAID 10은 별 차이가 없지만, 6개 이상의 디스크를 사용하게 되면 차이가 생긴다.

                  RAID 01의 구성은 3:3으로 구성되지만, 10은 2:2:2로 구성된다. 



    RAID 01은 1개의 디스크만 고장나서 복구해도, 다른 RAID 0 구성의 디스크 데이터들까지 전체 복구해야한다.

    RAID 10은 고장난 디스크가 1개면, 미러링으로 묶인 디스크의 데이터만 복구하면 되므로

    실제로 RAID 10이 더 좋다. 



    '학교 수업 > OS' 카테고리의 다른 글

    OS의 파일시스템?  (0) 2020.05.10
    OS의 메모리관리2  (0) 2020.05.09
    OS의 메모리 관리  (0) 2020.05.08
    Deadlock  (0) 2020.05.07
    OS의 process synchronization?  (0) 2020.05.05

    댓글

Designed by Tistory.