파일처리

파일처리 ch3) 보조 저장장치와 시스템 소프트웨어

chris3471 2025. 3. 23. 23:18
728x90
반응형

하드 디스크 드라이브

하드 디스크

 

Platters : 데이터 저장 장소

Slider(and Head) : 읽거나 쓰는 용도

Spindle : 모터에 의해 돌아감 (Platter를 돌리기 위한 용도)

SCSI Interface Connector : 데이터 이동 통로

 

하드 디스크 드라이브의 도식적 설명

 

하드 디스크 드라이브의 도식

 

Boom : 읽기/쓰기 헤드를 지탱하는 암

Platters : 데이터가 저장되는 원형 디스크 표면

Spindle : 디스크를 회전시키는 모터

 

 

디스크 표면에 있는 트랙과 섹터

디스크 표면

 

트랙 : 디스크 표면에 원형으로 형성된 데이터 기록 경로

          (트랙의 바깥면과 안쪽면의 용량은 동일)

섹터 : 데이터 저장의 가장 작은 단위로 보통 512 바이트

 

 

 

실린더(cylinder)

디스크 드라이브의 도식적 설명

 

cylinder : 각 트랙을 모아놓은 집합 

-> 디스크 용량이 커지려면 cylinder의 개수가 많아져야 함.

 

저장 용량과 공간 필요량 추정

문제 및 답안

 

 

디스크 저장 용량 : 

 - 디스크의 용량을 계산하려면 디스크의 전체 저장 공간을 구해야함

 - 디스크의 용량은 각 섹터, 트랙, 실린더에 포함된 데이터의 양을 곱하여 구할 수 잇음

 

파일에 저장된 실린더 수 계산 :

 - 파일 크기 계산 

   -> 파일 크기 = 레코드의 수 * 레코드의 크기 = 50,000 * 256 바이트

 

 - 실린더 용량 계산 :

   - 실린더당 저장할 수 있는 용량은 트랙당 섹터 수와 섹터당 바이트 수를 곱한 값

 

 

 파일에 저장된 실린더 수 = 파일 크기 / 실린더 용량

 

 

섹터별 트랙 구성 (Organizing Tracks by Sector)

1. Sectors

 

  • 정의: 디스크에서 고정 크기를 가지며 가장 작은 주소 지정 단위.
  • 구성: 디스크의 트랙을 구성합니다.
  • 레코드 구성 방식: 섹터 내 데이터를 구성하는 두 가지 방법:
    1. 하나의 레코드만 저장: 시간 효율성을 위해 한 섹터에 하나의 레코드를 저장.
    2. 레코드가 섹터를 넘어서 저장: 저장 효율성을 위해 여러 레코드가 섹터를 넘어서 저장될 수 있음.

 

2. Clusters

 

  • 정의: 연속된 섹터의 고정된 수.
  • 파일 할당 단위: 파일에 할당할 수 있는 가장 작은 공간 단위.
  • 클러스터 크기: 큰 클러스터를 사용하면 더 많은 섹터를 한 번에 읽을 수 있어 디스크 탐색을 줄일 수 있습니다.
  • 내부 단편화: 클러스터가 커지면 내부 단편화가 발생할 수 있음. 사용하지 않는 공간이 클러스터 내에 남을 수 있기 때문입니다.

 

 

3. Extents

 

  • 정의: 인접한 클러스터가 하나의 파일의 일부 또는 전부로 할당된 것.
  • 비연속적 파일: 파일을 저장할 때 연속된 공간이 부족하면, 파일은 두 개 이상의 비연속적인 부분으로 나누어 저장됩니다. 이 비연속적인 각 부분을 **확장성(Extent)**이라고 부릅니다.

 

 

섹터의 물리적 배치

Interleaving sectors (섹터 인터리빙)

 - 디스크에서 데이터를 읽을 때, 데이터를 읽은 후 디스크 컨트롤러가 데이터를 처리할 시간을 고려해 섹터를 인터리빙하여 효율성을 높임

 

interleaving 이란 ? 

 - 디스크의 성능을 최적화하기 위한 기술

 - 디스크에서 데이터를 읽을 때 발생하는 지연 시간을 최소화힉 위해 섹터를 일정한 간격으로 배치하는 방식

 - 다음 데이터를 읽기 전에 잠시 기다려야 하는 경우를 고려해서 데이터를 일정 간격으로 배치함

 

interleaving factor ?

 - 인터리빙 계수 1은 섹터 간 간격 없이 연속적으로 데이터를 읽는 방식

 - 인터리빙 계수 5는 1번 섹터를 읽고, 2번부터 5번 섹터는 건너뛰고, 6번 섹터를 읽는 방식

 

interleaving 예시

 

 

Clusters (클러스터)

 

파일을 클러스터 단위로 보기

 - 파일은 여러 클러스터로 구성

 - 파일 할당 테이블 (FAT) 를 사용하여 논리적 섹터를 물리적 클러스터에 연결

 - cluster = 16 sectors (8KB)

 

클러스터와 FAT

 

Extents (확장성)

 

확장성

 - 파일이 커져서 필요한 클러스터가 연속되지 않으면,  파일 관리자는 비연속적인 공간을 할당하게 되며, 이 공간은 확장성 이라고 한다.

 - extents가 작을수록 좋다.

 - (b)처럼 저장하면 (a)보다 seek, rotation 비용이 더 든다. (transfer 비용은 동일)

 - (a)처럼 연속적으로 할당하면 읽기, 쓰기를 빠르게 수

 

(a)보다 (b)가 확장성이 높다.

 

Fragmentation (단편화)

 

단편화

 - 섹터 내 또는 섹터 간 레코드가 비효율적으로 저장될 경우 발생

 - 최적화되지 않은 데이터 저장 방식으로 비효율적인 공간이 초래할 수 있음

 - 인터리빙 계수가 낮을수록 단편화가 적음 ((a)가 단편화가 적음)

 - 단편화 관점에서는 (a) 방식이 더 적합 / 디스크 성능 최적화에는 (b)방식이 적합

 - (a)는 데이터가 연속적으로 저장 / (b)는 데이터가 연속적이지 않게 배치

 

 

 

디스크 접근 비용

  1. 탐색 시간(Seek Time)
    • 읽기/쓰기 헤드가 원하는 실린더로 이동하는 시간.
    • 평균적으로 전체 실린더의 1/3을 이동하는 시간이 소요됨.
    •  
  2. 회전 지연 시간(Rotational Delay)
    • 디스크가 회전하여 원하는 섹터가 헤드 아래에 도달하는 시간.
    • 일반적인 HDD는 **5,000 RPM(분당 회전 수)**으로 회전하며, 평균 회전 지연 시간은 약 6ms.
  3. 데이터 전송 시간(Transfer Time)
    • 데이터를 디스크에서 읽어 RAM으로 전송하는 시간.

transfer time 계산법

 

=> 평균적으로 seek 비용이 압도적으로 크다

 

디스크 접근 순서

1. Head를 데이터가 있는 곳으로 이동 (seek)

2. rotation (데이터의 첫 byte를 헤더 아래로 가게 위치시킴)

3. transfer (읽기 or 쓰기 작업)

 

 

📌 예제: 8,704KB 크기의 파일 읽기 시간 계산

  • 파일이 34,000개의 256바이트 레코드로 구성됨.
  • 평균 탐색 시간 = 8ms, 평균 회전 지연 = 3ms, 트랙 전송 시간 = 6ms
  • 총 트랙 수 = 100 → → 100 × (8 + 3 + 6) ms = 1.7초

📌 무작위 접근 방식(random access)으로 읽을 경우

  • 클러스터 단위(8섹터)로 읽을 경우 전송 시간: 0.28ms
  • 전체 소요 시간: 383.52초 (약 6.4분)순차 접근이 무작위 접근보다 훨씬 빠름.

 

문제 및 답안

 

참고 자료 (Seagate Cheetah 9)

 

파일 저장 과정 및 운영체제의 역할

I/O 프로세서와 디스크 컨트롤러

📌 (1) 파일 저장 과정 (A Journey of a Byte)

  1. 사용자 프로그램이 운영체제(OS)에 데이터를 저장 요청.
  2. *파일 매니저(File Manager)**가 파일의 위치를 확인.
  3. I/O 프로세서가 적절한 시간에 데이터를 디스크로 전송할 준비.
  4. 디스크 컨트롤러가 헤드를 이동하고 데이터를 디스크에 기록.

📌 파일 저장 과정 예제

  • 사용자가 'P'라는 문자를 저장하면:
    1. OS가 'P'를 찾고, 파일을 열어 저장할 공간을 확인.
    2. 'P'를 버퍼에 저장 후 I/O 프로세서에게 전송.
    3. I/O 프로세서가 'P'를 디스크에 저장.

예제

 

파일 관리자 (The File Manager)

1. 프로그램 요청 :

 - 프로그램은 운영 체제에 변수 c의 내용을 TEXT 파일의 다음 사용한 위치에 쓰도록 요청

 - 여기서 TEXT 는 프로그램 내에서 참조되는 파일의 이름

 

2. 운영 체제의 작업 전달 :

 - 운영 체제는 해당 작업을 파일 관리자에게 전달

 

3. 파일 관리자 :

 - 파일 관리자는 먼저 TEXT 파일에 대한 정보를 저장한 테이블을 조회

 - 여기에는 파일 OPEN여부, 쓰기모드인지, access 타입이 어떻게 되어있는지 등을 포함

 - FAT Table을 검색하여, 해당 바이터가 저장될 섹터의 물리적 위치를 찾음 (몇 번 cluster에 있는지 확인 가능)

 - 파일의 마지막 섹터가 이미 시스템 I/O 버퍼에 저장되었는지 확인하고, 변수 P를 해당 섹터의 위치로 버퍼에 기록

 - 그런 다음, I/O 프로세서에게 버퍼에서의 위치와 디스크로 보낼 위치를 지시

 

4. I/O 프로세서 :

 - 디스크가 데이터를 받을 수 잇는 시간을 찾고, 이를 적절한 형식으로 변환하여 디스크로 보냄

 - 데이터를 디스크에 보낼 때 절절한 chunk 크기로 버퍼링할 수 있음

 - 이후, 데이터를 디스크 컨트롤러로 전송

 

 -> I/O 프로세서를 거쳐가는 이유는 user response time 을 줄이기 위해서

 

5. 디스크 컨트롤러

 - 읽기/쓰기 헤드를 적절한 트랙으로 이동

 - 원하는 섹터가 읽기/쓰기 헤드 아래에 올 때까지 기다린 후, 데이터를 디스크로 전송하여 비트 단위로 기

 

정리:

  • 프로그램이 데이터를 쓰려고 하면, 운영 체제가 파일 관리자에게 작업을 전달합니다.
  • 파일 관리자는 해당 파일의 물리적 위치를 찾고, 데이터를 I/O 프로세서디스크 컨트롤러를 통해 실제 디스크에 기록합니다.
  • 디스크 컨트롤러헤드를 제어하여 데이터를 물리적으로 디스크에 기록하는 역할을 합니다.

 

 

 

 

 

728x90
반응형