[파일처리]Chapter 3

rianne·2024년 4월 25일

파일처리

목록 보기
3/3
post-thumbnail

Chapter 3: Secondary Storage and System Software

Hard Disk Drive

내부가 기계적인 장치로 구성

  • platters: 데이터가 저장되는 영역

  • spindle: 회전 장치

Schematic Illustration of Disk Drive

  • arm의 끝에 head가 달려있음
  • 같은 실린더에 정보가 있으면 동시에 읽을 수 있음(헤더가 여러개)

Surface of Disk Showing Tracks and Sectors

  • track: track을 따라 데이터가 저장됨
  • sector: 트랙을 더 작은 단위로 나눔(가장 작은 단위)

Schematic Illustration of Disk Drive

  • 실린더의 개수==각 platter에서 트랙의 개수(7개)
  • 한개의 실린더는 platter의 개수 만큼의 트랙으로 구성(10개)

Estimating Capacities and Space Needs

  • Suppose a computer disk with the following characteristics is given

    #bytes per sector = 512

    #sectors per track = 63

    #tracks per cylinder = 16

    #cylinders = 4,092

  • What is storage capacity of the disk?

    512 * 63 * 16 * 4,092 = 2,111,864,832 bytes

  • We want to store a file with 50,000 fixed-length data records. How many cylinders does the file require if each data record requires 256 bytes?

    (50,000 * 256) / (512 * 63 * 16) = 24.8 cylinders

Organizing Tracks by Sector

Sector

정해진 크기를 가지며, 디스크에서 주소 지정이 가능한 가장 작은 단위

여러 섹터들이 모여 트랙을 형성

섹터 내 데이터 저장 방법 두 가지

  • 하나의 섹터에 한 레코드만 저장 (시간 효율성): 빠르게 데이터에 접근해야 하는 경우 사용
  • 하나의 레코드가 여러 섹터에 걸쳐 저장 (저장 효율성): 레코드 크기가 크거나 섹터 크기가 작을 때 사용

Cluster(a set of sectors)

연속된 특정 개수의 섹터로 구성된 단위

파일 시스템에서 파일 할당의 최소 단위

파일을 구성하는 가장 작은 단위

OS가 파일을 다루는 단위(os안의 파일 시스템마다 단위가 다름)

클러스터가 클수록 더 많은 섹터를 연속적으로 읽을 수 있으므로 읽기 속도가 향상

클러스터가 클 경우 내부 조각화 (Internal Fragmentation) 발생

*내부 조각화: 파일의 실제 데이터 크기보다 할당된 클러스터 크기가 더 커서 남는 공간이 낭비되는 현상


Extent

파일을 저장할 때 연속된 하나 이상의 클러스터를 사용하는 방법

파일을 저장할 만큼 연속된 공간이 없으면 여러 개의 비연속적인 부분 (extent) 으로 나누어 저장

즉, 파일 전체를 한꺼번에 저장하지 않고 쪼개서 저장하는 방식

Physical Placement of Sectors

문제:

  • 디스크에서 데이터를 읽은 후 디스크 컨트롤러가 받은 정보를 처리하는 데에 일정시간 소요
  • 섹터들이 연속적으로 배치되어 있다면 컨트롤러가 데이터 처리를 마치기도 전에 다음 섹터의 데이터가 도착하게 되어 데이터 손실 및 읽기 오류 발생

해결: '인터리빙(Interleaving)' 방식을 적용

디스크 상에서 이웃하는 섹터들이 물리적으로 연속적이지 않게 배치하는 기법

Clusters

File allocation table(FAT): 클러스터의 위치 결정(몇번째 실린더의 몇번째 트랙 몇번 섹터인지)

Extents

연속된 여러 클러스터를 하나의 단위로 묶은 개념

a는 extent 가 1개

b는 extent 가 3개

같은 용량이면 a와 b 중 a와 같은 형태가 더 좋음

Fragmentation

파일 조각화: 파일이 하드디스크 상에서 연속적으로 저장되지 않고 흩어져서 저장되는 현상

파일 조각화의 영향:

  • 읽기/쓰기 속도 저하
  • 저장 공간 낭비

The Cost of a Disk Access

  • disk access는 데이터를 읽고 쓸 때 발생
  • 디스크 접근 횟수를 줄이는 것이 핵심
  • 3단계로 이루어짐 (기계적인 장치이기 때문에 이런 과정이 필요)
  • Seek Time+Rotational Delay+Transfer time

Seek Time(탐색시간)

→평균값 사용

access arm을 해당 실린더로 이동하는데 걸리는 시간(헤더가 해당 트랙을 가리키도록)

시간비용: 평균적으로 실린더 개수의 1/3

가장 오래 걸리는 단계


Rotational Delay(회전 지연 시간)

→ 평균값 사용

디스크가 회전하여 해당 섹터가 read/write head 아래에 위치하기까지 걸리는 시간

하드 디스크는 보통 분당 약 5,000회전(RPM)으로 회전

한 번 회전하는 데 12msec

평균적으로 회전 지연 시간은 반 회전(약 6msec)

💡 data의 첫번째 byte를 head에 접촉하는 순간 비트 단위로 전송

→ 그 다음 byte를 읽기 위해 접촉한 상태에서 회전 (맨 마지막 data가 head를 통과할 때까지)

→마지막 byte를 읽으면 platter에서 head를 떼어냄


Transfer time(전송시간)

→ 정확히 구할 수 있음

number of bytes transferred*rotation time/number of bytes on a track

Specifications of the Disk Drives

Example: Disk I/O Cost


먼저 파일이 몇개의 트랙에 나눠서 저장될 지 계산

순차적으로 읽을 때도 클러스터 단위로 읽음(1클러스터=8섹터=16레코드)

random access할 때도 클러스터 단위로 읽음

The File Manager


프로그램이 OS한테 변수 c의 내용을 TEXT 파일의 다음 사용 가능한 위치에 쓰도록 요청

→ os는 file manager한테 작업 전달

<file manager 4단계>
1. 파일 상태 및 접근 권한 확인
2. 파일 저장 위치 탐색
3. 버퍼 관리 및 데이터 준비
(맨 마지막 클러스터를 버퍼로 가져와서 마지막 다음자리에 write *deposit)
4. I/O processor작업 지시
(버퍼 안의 클러스터를 다시 disk의 같은 위치에 write하도록)

I/O processor 따로 두는 이유:
일 시켜놓고 파일 매니저는 다른 일 할 수 있음(I/O 작업은 매우 오래 걸림)

0개의 댓글