33
1 자료처리 자료처리 (Advanced Data Structures) (Advanced Data Structures) File Structures File Structures 2006 2006봄학기 봄학기 문양세 문양세 강원대학교 강원대학교 컴퓨터과학과 컴퓨터과학과 Page 2 Advanced Data Structures by Yang-Sae Moon File Structures File Structures 강의 강의 강의 내용 파일의 기본 개념 (Ch. 1 in “화일 구조”) 파일 저장 장치 (Ch. 2 in “화일 구조”) 파일의 입출력 제어 (Ch. 3 in “화일 구조”) 순차 파일 (Ch. 4 in “화일 구조”) 파일 구조와 관련해서는, 기본 concept 위주로 강의를 진행할 예정임 (O/SDevice에 깊게 Dependent한 내용은 생략함) File Structures

02. File Structures - cs.kangwon.ac.krysmoon/courses/2006_1/ds/02. File Structures.pdf · 자료처리(Advanced Data Structures) File Structures 2006년봄학기 문양세 강원대학교컴퓨터과학과

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

1

자료처리자료처리 (Advanced Data Structures)(Advanced Data Structures)

File StructuresFile Structures

20062006년년 봄학기봄학기

문양세문양세

강원대학교강원대학교 컴퓨터과학과컴퓨터과학과

Page 2Advanced Data Structuresby Yang-Sae Moon

File Structures File Structures 강의강의

강의 내용

• 파일의 기본 개념 (Ch. 1 in “화일 구조”)

• 파일 저장 장치 (Ch. 2 in “화일 구조”)

• 파일의 입출력 제어 (Ch. 3 in “화일 구조”)

• 순차 파일 (Ch. 4 in “화일 구조”)

• 파일 구조와 관련해서는, 기본 concept 위주로 강의를 진행할 예정임

(O/S나 Device에 깊게 Dependent한 내용은 생략함)

File Structures

2

Page 3Advanced Data Structuresby Yang-Sae Moon

파일의파일의 종류종류

정보(Information) ≠ 데이타(Data)

File Structures

데이타(data)

처리(processing)

정보(information)

(Computer)(in disk, tape, …)

D I

I = P(D)

P

Object = Variables(Attributes or Data) +Methods(Processing Mechanism)

Page 4Advanced Data Structuresby Yang-Sae Moon

주요주요 용어용어 (1/2)(1/2)

데이타 필드(field), 속성 (attribute), 데이타 항목 (item)

• 이름을 가진 논리적 데이타의 최소 단위 (예: 나이 필드, 이름 속성)

• 특정 객체(object, entity)의 한 성질의 값

• 테이블(table)의 attribute로 이해할 수 있음

레코드 타입 (record type)

• 논리적으로 서로 연관된 하나 이상의 데이타 필드(항목)들의 집합

• 엔티티 타입 (예: 학생 = {이름 필드, 학번 필드, 성별 필드, …})

레코드 인스턴스 (record instance)

• 레코드 타입의 각 필드에 따라 실제 값이 들어가 어떤 특정 객체를 나타내는 것

• 일반적으로 레코드(record)라고 함 (예: {홍길동, 2005012345, 남, …})

• “화일 구조”에서는 record occurrence라 정의하였음

File Structures

3

Page 5Advanced Data Structuresby Yang-Sae Moon

주요주요 용어용어 (2/2)(2/2)

파일 (file)

• (보조)기억장치에 저장된 같은 종류의 레코드 집합 (set of records)

• 하나의 응용 목적을 위해 함께 저장된 레코드 (예 : 급여, 인사, 재고, 재무, 회계 등)

데이타의 집합을 (일반적으로는) 왜 파일로 구성하는가?

• 주기억 장치(main memory)에 전부 적재하기에는 데이타 양이 너무 많다.

• 프로그램은 특정 시간에 데이타 집합의 일부만을 접근한다.

• 자원 이용의 효율성을 위하여, 데이타 전부를 주기억 장치에 한꺼번에 저장시킬 필요가

없다.

• 데이타를 특정 프로그램의 수행과 독립적으로 보관시켜 데이타의 독립성

(independency) 유지하기 위함이다. ( 여러 응용 프로그램이 공용하기 쉽다.)

File Structures

Page 6Advanced Data Structuresby Yang-Sae Moon

기능에기능에 따른따른 파일의파일의 분류분류 (1/3)(1/3)

기능에 따른 파일의 종류

• 마스터 파일 (master file)

• 트랜잭션 파일 (transaction file)

• 작업 파일 (work file)

• 프로그램 파일 (program file)

• 기타: 보고서 파일(report file), 텍스트 파일(text file)

마스터 파일 (mater file)

• 어느 한 시점에서 조직체의 업무에 관한 정적인 면을 나타내는 데이타의 집합

− 제조 회사의 예: 급여 마스터 파일, 고객 마스터 파일, 인사 마스터 파일, 재고 마스터 파일, 자재

요청 마스터 파일

• 현재 시점의 정보를 표현하는 파일(레코드의 집합)로 볼 수 있음

• 비교적 영구적(permanent)인 데이타를 포함하기도 함 (특수 예: 사전)

File Structures

4

Page 7Advanced Data Structuresby Yang-Sae Moon

트랜잭션 파일 (transaction file)

• 마스터 파일의 변경 내용을 모아 둔 파일 혹은

마스터 파일을 변경(update)하기 위한 데이타 파일

− 새로운 레코드의 삽입(insert)

− 기존 레코드의 삭제(delete)

− 기존 레코드의 내용 수정 (modify, replace)

• 트랜잭션 이란?

− 논리적인 작업 단위 (예: 입학 처리 트랜잭션, 이자율 계산 트랜잭션)일련의 조회 및 변경 연산으로 구성됨

− 하나의 건수로 처리되어야 하며 분리될 수 없는 단일 작업 (All done or not done)

File Structures기능에기능에 따른따른 파일의파일의 분류분류 (2/3)(2/3)

Page 8Advanced Data Structuresby Yang-Sae Moon

작업 파일 (work file)

• 한 프로그램에서 생성한 (출력) 데이타를 다른 프로그램의 (입력) 데이타로 사용하기 위

하여 임시로 만든 파일

• 임시 파일(temporary file)이라고 하며, 프로그래밍 과정에서 자연스럽게 자주 사용하는

기법임

• 작업 파일의 예

− 시스템이 자동으로 만드는 작업 파일: Merge Sort 등의 정렬을 위한 파일

− 프로그램이 만드는 작업 파일: 수강 신청 변경 파일

프로그램 파일 (program file)

• 데이타를 처리하기 위한 명령어들을 저장하고 있는 파일

• 고급 언어(C, Java), 어셈블리어, 데이타베이스 질의어 (SQL 언어) 등

File Structures기능에기능에 따른따른 파일의파일의 분류분류 (3/3)(3/3)

5

Page 9Advanced Data Structuresby Yang-Sae Moon

사용사용 목적에목적에 따른따른 파일의파일의 분류분류

입력 파일 (input file):프로그램의 입력으로 사용되는 파일로서, 일반적으로 프로그램이 읽기(read)만을 하는 파일

출력 파일 (output file):프로그램이 출력에 사용하는 파일로서, 일반적으로 프로그램이 쓰기(write)만을

하는 파일

입출력 파일(input & output file):프로그램에서 입력 및 출력의 두 목적으로 사용하는 파일로서, 읽기 연산 및 쓰기

연산이 모두 적용되는 파일

File Structures

programinput file output file

input & output file

Page 10Advanced Data Structuresby Yang-Sae Moon

파일의파일의 기본기본 연산연산

생성 fopen(…, O_CREAT)

기록 write(…), fprintf(…), …

• 레코드 내용의 갱신 (update)

• 새로운 레코드 삽입 (insert)

• 기존 레코드 삭제 (delete)

판독 read(…), fscanf(…), …

삭제 unlink(…)

개방과 폐쇄 fopen(…), fclose(…), open(…), close(…), …

• 버퍼의 할당과 반환

File Structures

6

Page 11Advanced Data Structuresby Yang-Sae Moon

파일파일 구조구조 선정선정 요소요소 (1/4)(1/4)

파일 구조 선정의 주요 자원 비교

• 주기억 장치 (main memory)

- 특정 데이타를 찾기 위한 최대 비교 연산 횟수 등으로 평가

- 데이타 접근 시간은 모두 일정한 것으로 가정 (random access)

• 보조 저장 장치 (secondary storage) ( 파일 구조 선정의 주요 고려 자원)

- 데이타 액세스 시간이 주기억 장치에 비해 매우 긴 특성을 가짐

- 일반적으로 보조 저장 장치의 접근 횟수가 프로그램 성능의 평가 요소가 됨

파일 구조 선정의 주요 요소

• 가변성 (volatility)

• 활동성 (activity)

• 사용 빈도수 (frequency of use)

• 응답 시간 (response time)

• 파일 크기 (file size)

• 파일 접근 유형

File Structures

Page 12Advanced Data Structuresby Yang-Sae Moon

파일파일 구조구조 선정선정 요소요소 (2/4)(2/4)

가변성 (volatility)

• 파일의 성격

- 내용이 변하지 않는 정적 파일 (주로 보관 및 검색이 목적인 과거의 기록)

- 내용이 자주 변하는 동적 파일 (잦은 변경이 있는 현재의 상황 데이타)

• 가변성

- 전체 레코드 수에 대해 추가 혹은 삭제되는 레코드 수

- 가변성이 높은(추가 및 삭제가 많은) 동적 파일은 빠른 접근과 갱신이 필요

활동성 (activity)

• 주어진 기간 동안에 파일의 총 레코드 수에 대해 액세스가 일어난 레코드 수의 비율

• 가변성이 Update 비율인 반면, 활동성은 액세스 비율을 나타냄

• 활동성이 높으면 (대부분의 레코드가 액세스 된다면) 순차 파일 구조가 유리

File Structures

7

Page 13Advanced Data Structuresby Yang-Sae Moon

파일파일 구조구조 선정선정 요소요소 (3/4)(3/4)

사용 빈도수 (frequency of use)

• 파일의 사용 빈도수

- 일정 기간 동안의 파일 사용 빈도수 (파일이 얼마나 사용되는지를 나타냄)

- 가변성과 활동성에 밀접히 관련 (가변성/활동성이 높으면 일반적으로 빈도수가 높음)

• 사용 빈도수와 파일 구조

- 빈도수가 낮으면 순차 파일 구조가 유리 (sequential access)

- 빈도수가 높으면 임의 접근 구조가 유리 (random access)

응답 시간 (response time)

• 검색이나 갱신에 대해 요구하는 지연 시간

• 빠른 응답 시간의 요구 조건에는 임의 접근 구조를 선택

• 응답 시간이 strict하지 않은 경우에는 순차 파일 구조를 선택

• 실시간(real-time) 조건이 주어지는 경우, 응답 시간은 매우 중요한 설계 요소가 됨

File Structures

Page 14Advanced Data Structuresby Yang-Sae Moon

파일파일 구조구조 선정선정 요소요소 (4/4)(4/4)

파일 크기 (file size)

• 레코드 수와 각 레코드 길이가 파일의 크기를 결정 (trivial)

• 시간이 지남에 따라 파일 크기가 성장 (레코드 길이 확장, 레코드 개수 증가)

• 성장을 유연하게 수용할 수 있는 구조의 채택이 필요 (free space 유지 등)

파일 접근 유형

• 파일에 적용되는 연산의 유형과 접근 형식에 따라 파일 구조를 결정

• 접근 유형의 예제

- 판독 위주 접근 vs. 갱신 위주 접근

- 순차 접근 위주 vs. 임의 접근 위주

File Structures

8

Page 15Advanced Data Structuresby Yang-Sae Moon

File Structures File Structures 강의강의

강의 내용

• 파일의 기본 개념 (Ch. 1 in “화일 구조”)

• 파일 저장 장치 (Ch. 2 in “화일 구조”)

• 파일의 입출력 제어 (Ch. 3 in “화일 구조”)

• 순차 파일 (Ch. 4 in “화일 구조”)

File Structures

Page 16Advanced Data Structuresby Yang-Sae Moon

파일파일 저장저장 장치의장치의 특성특성

저장 장치 (storage device)

• 저장 매체(medium) + 매체에 데이타를 저장하고 검색하기 위한 장치(device)

• 예: physical disk + disk controller

저장 매체 (storage media)

• 데이타를 저장하는 물리적 재료 (physical disk)

• 소멸성(volatile) vs. 비소멸성(nonvolatile) disk vs. memory

접근 장치 (access device or access mechanism)

• 데이타를 판독(read)하거나 기록(write)하는 장치 (혹은 방법)

• 예: disk controller(driver), tape driver

File Structures

9

Page 17Advanced Data Structuresby Yang-Sae Moon

저장저장 장치장치 (memory & storage)(memory & storage)

1차 저장 장치 (primary storage)

• 주기억 장치 (main memory)

- 데이타 액세스 시간이 일정하고 (디스크 등에 비해) 매우 빠름

- 프로그램/데이타 처리를 위한 작업 공간

• 캐시 메모리 (cache memory)

- 주기억 장치의 성능을 향상 시키기 위한 목적으로, CPU Chipset 내에 구현되기도 함

- 주기억 장치 보다 빠른 액세스 속도를 가지며, 최근에는 캐시 메모리 자체도 Primary(L1 Cache), Secondary(L2 Cache)로 구분되기도 함

2차 저장 장치 (secondary storage)

• 자기 디스크 (magnetic disk)

- 데이타 액세스 시간일 일정하지 않고 (메모리에 비해) 액세스 시간이 느림

- 용량이 크고 싸서 주로 파일의 저장에 사용됨

- 저장된 데이타는 주기억 장치를 거쳐(메모리에 올라 와) CPU에 의해 처리됨

• 광 디스크(optical disk), 자기 테이프(magnetic tape) 등

File Structures

Page 18Advanced Data Structuresby Yang-Sae Moon

저장저장 장치의장치의 유형유형 (1/3)(1/3)

캐시 메모리 (cache memory)

• 가장 빠르고 가장 비싼 저장 장치

• SRAM(Static Random Access Memory)을 주로 사용함

• 일부 캐시의 경우는 CPU Chipset 내에 구현되어 고성능을 보장함

• 현재 수십 KB ~ 수 MB 수준의 용량이 제공됨

주기억 장치 (main memory)

• 프로그램 실행과 이에 필요한 데이타 유지 공간 (프로그램이 로딩되는 공간이며, 프로

그램이 사용하는 데이타가 로딩되는 공간이기도 함)

• DRAM(Dynamic Random Access Memory)을 주로 사용함

• 저용량, 소멸성(데이타 저장에는 부적함)

• 현재 수백 MB ~ 수십 GB 수준의 용량이 제공됨

File Structures

10

Page 19Advanced Data Structuresby Yang-Sae Moon

저장저장 장치의장치의 유형유형 (2/3)(2/3)

플래시 메모리 (flash memory)

• 고밀도, 고성능 메모리로서 비소멸성(nonvolatile)의 특성을 가짐

• 주기억 장치와 비슷한 액세스 속도를 보임

• 핸드폰, MP3 Player, PDA 등에서 디스크/메모리 역할을 수행함

• 현재 수 MB ~ 수 GB 수준의 용량이 제공됨

자기 디스크 (magnetic disk)

• 데이타(파일) 저장 장치의 주된 매체로 사용되고 있음

• 데이타 처리와 기록을 위해서는 주기억 장치를 거쳐야 함 (버퍼를 통해서 이루어짐)

• 고용량이며, 비소멸성의 특징을 가짐

• 현재 수십 GB ~ 수십 TB 수준의 용량이 제공됨 (disk array를 구성하여 사용)

File Structures

Page 20Advanced Data Structuresby Yang-Sae Moon

저장저장 장치의장치의 유형유형 (3/3)(3/3)

광 디스크 (optical disk)

• 광학적으로 저장, 레이저로 판독

• 용량이 크고, 보존 기간이 긴 특성을 가짐

• CD-ROM, CD-R, CD-RW, DVD(digital video disk), DVD-ROM

자기 테이프 (magnetic tape)

• 데이타의 백업과 보존을 위한 저장 매체

• 순차 접근이 적용되는 대표적인 저장 장치

• 테이프 쥬크 박스 (대용량 데이타 저장 가능)

• 은행, 통신 등에서는 주기적인 백업을 위하여 자기 테이프를 널리 활용함

File Structures

11

Page 21Advanced Data Structuresby Yang-Sae Moon

저장저장 장치의장치의 계층계층File Structures

비용 접근 속도

캐시 메모리

메인 메모리

플래시 메모리

자기 디스크

광 디스크

자기 테이프

Page 22Advanced Data Structuresby Yang-Sae Moon

하드하드 디스크디스크 (Hard Disk) (1/2)(Hard Disk) (1/2)File Structures

자기 디스크의 종류

• 하드 디스크(hard disk): 1995년 IBM에서 개발 – 초기 5MB

• 유연한 디스크(flexible disk): floppy disk, diskette (~1.44 MB)

디스크의 구성

• 갭(gap): 자기화되지 않은 영역으로서 섹터를 구분하는 구분자 역할을 함

• 트랙(track): 갭(gap)으로 분리된 (하나의 원을 구성하는) 섹터들로 구성

• 섹터(sector): 기록과 판독 작업의 최소 단위 (block 크기에 대응됨)

• 실린더: 여러 디스크로 디스크 팩(disk pack)이 형성되었을 때, 지름이 같은 트랙의 모음

track

sector

gapcylinder

12

Page 23Advanced Data Structuresby Yang-Sae Moon

하드하드 디스크디스크 (Hard Disk) (2/2)(Hard Disk) (2/2)File Structures

데이타 액세스 시간의 구분

• 디스크에서 데이타를 읽거나, 디스크에 데이타를 쓰기 위해서는

1) 원하는 실린더(또는 트랙)을 찾아야 하고 (디스크 헤드의 좌우 이동),2) 원하는 섹터를 찾아야 하며 (디스크 회전 이동),3) 원하는 양 만큼 데이타를 전송해야 한다.

• Seek time(= s): 원하는 데이타가 있는 실린더(혹은 트랙)에 디스크 헤드를 위치 시키는

데 걸리는 시간

• Rotational latency( = r): 실린더를 찾은 후, 원하는 섹터에 헤드를 위치시키기 위해 디

스크가 회전하는 시간

• Transfer time(= t): 섹터(와 갭)들이 헤드 밑을 회전하며 데이타를 전송하는 시간

− Transfer rate: 초당 데이타가 전송되는 속도 (MBps)

파일 시스템(혹은 저장 시스템)의 설계자는 seek time과 rotational time을 최소화하도

록 데이타 구조의 설계를 진행하여야 함 (clustering, locality, …)

Page 24Advanced Data Structuresby Yang-Sae Moon

플로피플로피 디스크디스크 (Floppy Disk)(Floppy Disk)File Structures

유연한 디스크(flexible) 저장 장치

• 1970년경 IBM에서 개발

• 직경: 5¼ inch, 3½ inch

• 회전 속도: 360 rpm (c.f., 5400 ~ 10K rpm in hard disks)

• 과거(수년 전): 네트워크가 연결되지 않은 컴퓨터 간의 파일 이동을 위한 가장 유용한

장치로 각광 받았음 (한 장에 1K원대)

• 현재?: 용량 및 액세스 속도 문제로 인하여 CD-ROM 및 USB Driver에 그 자리를 거의 빼

앗긴 상태임 (열 장에 수K원대)

13

Page 25Advanced Data Structuresby Yang-Sae Moon

블로킹블로킹 (Blocking) (1/5)(Blocking) (1/5)File Structures

블록(block)

• 데이타 전송의 단위 (디스크와 메모리 사이의 최소 전송 단위)

• 트랙 길이 = b x B

- b = number of blocks in a track

- B = block size (블록 크기)

• 블록 크기 ≤ 트랙 길이

블록 크기

• 과거: 512 bytes, 1024 bytes, 2048 bytes

• 현재: 4096 bytes, 8192 bytes, more …

• 단, 너무 크면 불필요한 데이타 전송 및 메모리 효율성 저하가 발생함

(예를 들어, 블록 크기가 8KB이면, 1 byte를 저장하려 해도 8KB가 필요할 수 있고,1 byte만 전송하려 해도 8KB를 전송해야 한다.)

Page 26Advanced Data Structuresby Yang-Sae Moon

블로킹블로킹 (Blocking) (2/5)(Blocking) (2/5)File Structures

블로킹 (blocking)

• 기억 공간과 I/O 효율을 위하여, 몇 개의 논리적 레코드를 하나의 물리적 레코드(블록)에 저장시키는 것 (즉, 레코드들을 블록에 저장시키는 것을 블로킹이라 함)

• 블로킹 인수 (blocking factor) Bf = ⎣B/R⎦

- B = 블록 크기(block size)

- R = 레코드 크기 (fixed or variable)

• 블로킹은 I/O 시간을 감소시키는 장점(bulk read & write)이 있는 반면에,fragmentation에 의해 저장 공간이 감소하는 단점이 있음

블로킹 방법

• 고정 길이 블로킹 (for fixed length records)

• 신장된(spanning) 가변 길이 블로킹: 가변 길이 레코드를 지원하되, 한 레코드가 인접한

블록에 걸쳐서 저장

• 비신장된 가변 길이 블로킹: 가변 길이 레코드를 지원하되, 한 레코드는 반드시 하나의

블록에 저장

14

Page 27Advanced Data Structuresby Yang-Sae Moon

블로킹블로킹 (Blocking) (3/5)(Blocking) (3/5)File Structures

R1 R2 R3 R4

R5 R6 R7 R8

R1 R3 R4R2 R4 R6R5

R6 R9R7 R10 R11 R12 R13

R1 R3R2 R4 R5

R6 R7 R8 R9 R10

R9

고정 길이 블로킹

신장된 가변 길이 블로킹

비신장 가변 길이 블로킹

트랙 1

트랙 2

트랙 1

트랙 2

트랙 1

트랙 2

Page 28Advanced Data Structuresby Yang-Sae Moon

블로킹블로킹 (Blocking) (4/5)(Blocking) (4/5)File Structures

레코드와 블록

• 고정 길이 블로킹: 길이만 알면 레코드 구분이 가능함

(n번째 레코드 시작 = n x R or (n-1) x R)

• 가변 길이 블로킹

- 분리 표시: 레코드 끝 마크 (end-of-record marker) 삽입

- 각 레코드 앞에 길이 지시자 (length indicator) 관리

- 위치 테이블(position table) 관리

저장 시스템에서는 attribute에 대해서는 길이 지시자를 관리하고, record에 대해서는 위치 테이

블을 관리하는 hybrid 방법을 주로 사용함

레코드 설계 시 고려 사항

• 메모리 바이트 주소 특성

(4-byte 단위, 8-byte 단위)

• 레코드 헤더의 관리

이름 주소 성별 생년월일

0 32 288 292 304

(a) 학생 레코드 레이아웃

이름 주소 성별 생년월일

12 44 300 304 316

레코드헤더

0

(b) 레코드 헤더가 추가된 학생 레코드 레이아웃

15

Page 29Advanced Data Structuresby Yang-Sae Moon

블로킹블로킹 (Blocking) (5/5)(Blocking) (5/5)File Structures

블로킹의 고려 사항

• 적재 밀도 (loading density)

- 갱신을 위한 자유 공간 (free space) 할당

(레코드의 크기 증가 및 레코드의 삽입을 고려하여 일정 비율의 dummy space를 유지함)

- 실제 데이타 저장 공간에 대한 (자유 공간을 포함한) 총 공간과의 비율

• 균형 밀도 (equilibrium density)

- 레코드 자체의 확장과 축소에 따른 레코드의 이동 빈도, 단편화 등의 척도

- 상당히 긴 기간 동안 시스템을 운용하고 안정시킨 뒤에 예상되는 저장 밀도

• 집약성 (locality)

- 논리적으로 연관된 레코드들이 물리적으로 가깝게 위치하는 정도

- 예: 학번이 유사한 학생의 레코드는 동일 블록 내에 있거나 근접한 블록에 존재하는 경우, 집약성

이 강하다(strong)고 이야기함

Page 30Advanced Data Structuresby Yang-Sae Moon

기타기타 저장저장 장치장치 (1/2)(1/2)File Structures

자기 테이프 (magnetic tape)

• 카세트 테이프를 생각하면 되며, 대표적인 순차 접근 장치로서, 주로 백업 장치로서 많

이 활용됨

• QIC (Quarter-Inch Cartridge)

- 가장 오래된 형태

- 용량: 7 ~ 70 GB, 전송률: 4 ~ 6 MBps

• DAT (Digital Audio Tape) 가장 많이 쓰이는 유형

- (초기에) 음향 기기용으로 개발

- 폭: 4 mm, 용량: 4 ~ 40 GB, 전송률: 4 ~ 6 Mbps

• DLT (Digital Linear Tape)

- 고용량: 10 ~ 80 GB, 고전송률: 12 MBps

16

Page 31Advanced Data Structuresby Yang-Sae Moon

기타기타 저장저장 장치장치 (2/2)(2/2)File Structures

광 디스크 (optical disk)

• 레이저를 사용하여 금속성 표면에 정보를 저장함

• CD-ROM

- 장점: 가격이 저렴하고, 대량 생산이 가능하며, 보존성이 뛰어남

- 단점: 디스크보다는 느리며, 임의 액세스가 신속하지 못함

• CD-R: CD Recordable (한번 기록한 후에는 CD-ROM과 동일함)

• CD-RW: CD Read/Write (여러 번 기록이 가능함)

• DVD: Digital Video Disk

- 양면 사용, 밀도와 저장 방식 개선

- CD(~700 MB)의 7배 이상의 용량: 4.7 ~ 17 GB

Page 32Advanced Data Structuresby Yang-Sae Moon

RAID (1/8)RAID (1/8)File Structures

RAID (Redundant Arrays of Inexpensive Disks)

• RAID 개념의 근원은 1988년 SIGMOD에 발표된 Patterson, Gibson, Katz의 논문이다.

• 사용하는 디스크 개수가 증가하면 이로 인한 장애 발생 빈도가 증가할 수 있는데,RAID는 이러한 문제를 해결하여 신뢰성을 높인다.

• 또한, 작은 용량의 디스크 여러 개를 묶어 하나의 논리적 디스크를 제공하여 경제성을

높이며, 입출력을 분산시켜 성능을 향상시킨다.

중복을 통한 신뢰성 개선

• 디스크 장애율 (MTTF: Mean Time To Failure)

- 단일 디스크 = 100,000시간 (11.4년)

- 100개의 디스크 어레이(한 개라도 장애가 날 확률) = 100,000/100 = 1,000시간(41.66일)

• 신뢰성 문제 해결을 위하여 디스크(혹은 데이타)의 중복을 수행

- 일반적으로 Mirroring(이중화, Shadowing)을 적용

- Mirroring된 디스크 어레이의 MTTF ≈ (106)2 시간 ≈ 57,000년

- 실제로는 (자연재해, 전원 중단 등으로 인하여) Mirroring된 두 디스크에 동시에 장애가 발생하는

경우가 종종 있음

17

Page 33Advanced Data Structuresby Yang-Sae Moon

RAID (2/8)RAID (2/8)File Structures

병렬성을 통한 성능의 개선

• Data Striping을 통해서 전송률을 개선 (예: 동일 파일을 여러 디스크에 분산 저장)

• Bit-level Striping: 각 Byte의 Bit를 여러 디스크 상에 분할 저장

- 8개의 디스크로 구성된 어레이의 경우: i번째 Bit는 i번째 디스크에 저장 (i = 0~7)

최대 8배의 액세스 속도 향상

- 4개의 디스크로 구성된 어레이의 경우: i번째 및 (i+4)번째 Bit를 i번째 디스크에 저장 (i = 0~3)

최대 4배의 액세스 속도 향상

• Block-level Striping: 한 파일의 블록들이 여러 디스크 상에 분할 저장

- n개의 디스크 어레이인 경우: 한 파일의 i번째 블록이 (i%n)번째 디스크에 저장 (i = 0~(n-1))

K W A O N N G !Physical Disks

Logical Disk

KANGWON!

Page 34Advanced Data Structuresby Yang-Sae Moon

RAID (3/8)RAID (3/8)File Structures

RAID의 레벨

• 많은 수의 소형 디스크를 사용하여 성능과 신뢰성을 높이고자 하는 목적

• RAID는 0, 1, 2, 3, 4, 5의 여섯 레벨로 크게 나누어진다.

• 레벨은 어떤 척도의 높고 낮음을 의미하기 보다는 각 레벨이 서로 다른 용도를 위하여

최적화된 시스템이라 볼 수 있다.

• 즉, 응용에 따라서, 사용 용도에 따라서 적당한 레벨을 선택해야 하는 것이다.

RAID 0 (비중복 스트라이핑)

• 장애 대비를 위하여 여분의 공간을 가지지 않는다.

• 데이타의 빠른 입출력을 위하여 데이타를 여러 디스크에 분산하여 저장하는 Striping 방법을 사용한다.

• 신뢰성은 떨어지나 성능이 매우 뛰어나다.

18

Page 35Advanced Data Structuresby Yang-Sae Moon

RAID (4/8)RAID (4/8)File Structures

RAID 1 (디스크 미러링)

• 두 개의 디스크에 동일한 데이타를 저장하는 Mirroring 기법을 사용하는 구조이다.

• 읽을 때 빠르나, 쓸 때는 약간 느리다(당연한 결과!).(두 디스크에 동시에 쓰거나, 하나에 먼저 쓰고 다른 하나를 나중에 쓰는 방법 사용)

• 신뢰성은 높으나 저장 용량 당 단가가 비싸다.

RAID 2 (메모리 스타일 오류 정정 코드)

• Bit-level striping을 수행하되 오류 정정을 위하여 여분의 디스크를 관리한다.

• 에러 검출 능력이 없는 디스크를 위해 Hamming 오류정정코드를 사용한다.

• 그러나, 실제로 SCSI 드라이브는 에러 검출 능력을 제공하므로, 이 레벨은 별로 쓰이지

않는다.

Page 36Advanced Data Structuresby Yang-Sae Moon

RAID (5/8)RAID (5/8)File Structures

RAID 3 (bit-interleaved parity), RAID 4 (block-interleaved parity)

• Disk Array가 N+1 구조를 가지며, N은 데이타용으로 1은 패리티용으로 사용된다.

• 데이타는 N개의 디스크에 분산(striping)되어 저장되고, 이들에 대한 패리티가 한 개의

디스크에 저장된다.

• 한 개의 디스크에 오류가 생기면 나머지 디스크들과 패리티용 디스크를 사용하여 데이

타의 복구가 가능하다.

• 데이타를 바이트 단위로 분산하여 저장하는 방법이 RAID 3이고,

블록 단위로 분산하여 저장하는 방법이 RAID 4이다.

• 읽을 때는 RAID 0에 해당하는 빠른 속도이나, 패리티 갱신으로 인하여 쓸 때는 RAID 0보다 느리다.

RAID 5 (block-interleaved distributed parity)

• 패리티 정보를 모든 드라이브에 분산하여 저장한다.

• 이는 패리티 디스크가 병목을 일으키는 현상을 방지하기 위해서다.

• 쓸 때는 RAID 3이나 4에 비하여 빠르나, 읽을 때는 느리다.

19

Page 37Advanced Data Structuresby Yang-Sae Moon

RAID (6/8)RAID (6/8)File Structures

RAID 레벨에 따른 디스크 형성의 예제

(a) RAID 0 : 비중복 스트리핑

(b) RAID 1 : 미러 디스크

(c) RAID 2 : 메모리 스타일 오류 수정 코드

(d) RAID 3 : 비트-인터리브된 패러티 (e) RAID 4 : 블록 인터리브된 패러티

P

(f) RAID 5 : 블록 인터리브된 분산 패리티

C C C C

P P P

P P P P

PP

Page 38Advanced Data Structuresby Yang-Sae Moon

RAID (7/8)RAID (7/8)File Structures

RAID 사용 시 장애 대처 및 디스크 교체

• RAID 1~5는 시스템 운용 중에 디스크의 교체가 가능하다.

• 교체 중간에(혹은 고장난 디스크가 있는 동안에)는 RAID 1의 경우 미러된 디스크로, RAID 2~5의 경우 여러 디스크의 도움을 받아 서비스를 진행할 수 있다.

• 또한, 교체를 하면 다른 디스크들의 도움으로 원래의 데이타를 자동 복구할 수 있다.

• 결국, RAID 1~5의 경우 하나의 디스크 장애에 대해서는 서비스 중단이 발생하지 않는다

고 볼 수 있다.

RAID 레벨의 선택 기준

• RAID 0: 데이타 손실이 중요치 않은 고성능 응용에서 사용

• RAID 1: 높은 신뢰성 및 장애 시 빠른 복구가 필요한 경우에 사용

• RAID 2, 4: 레벨 3, 5에 포함됨 (RAID 2 RAID 3, RAID 4 RAID 5)

• RAID 3, 5: 고성능을 요하는 동시에, 적정 수준의 신뢰성도 요구되는 경우

20

Page 39Advanced Data Structuresby Yang-Sae Moon

RAID (8/8)RAID (8/8)File Structures

RAID 레벨의 선택 기준 (계속)

• 지금까지 설명한 바와 같이 RAID는 응용의 목적에 맞도록 레벨을 선택해야 한다.

• RAID 1을 사용하는 경우, I/O 속도 향상을 위하여 데이타를 여러 디스크에 적절히 분배

하여 저장하는 strategy가 필요하다.

• 아니면, RAID 0+1(or RAID 10, 레이드 일영), 즉 striping & mirroring을 사용하여 신뢰성

과 성능을 높일 수도 있다.( 통신 분야에서 많이 사용하는 방법)

Page 40Advanced Data Structuresby Yang-Sae Moon

File Structures File Structures 강의강의

강의 내용

• 파일의 기본 개념 (Ch. 1 in “화일 구조”)

• 파일 저장 장치 (Ch. 2 in “화일 구조”)

• 파일의 입출력 제어 (Ch. 3 in “화일 구조”)

• 순차 파일 (Ch. 4 in “화일 구조”)

File Structures

21

Page 41Advanced Data Structuresby Yang-Sae Moon

파일의파일의 입출력입출력 제어제어 환경환경 (1/3)(1/3)File Structures

사용자 (프로그램) 관점: 논리적 구조의 파일을 사용함

• 사용자 입장에서 파일은 정형화된 구조(예: 레코드의 집합, 프로그램 파일)를 가짐

• 사용자는 실제로 파일이 디스크의 어디에 어떤 형태로 저장되어 있는지 확인하기 어렵

고 확인할 필요가 없음

운영체제(with 파일 관리자) 과점: 물리적 구조의 파일을 사용함

• 파일이 어떠한 논리적 구조를 가지고 있는지는 중요치 않음

• 주어진 파일을 실제로 어떻게 찾고(디렉토리 관리), 어떻게 저장하고, 어떻게 해석하는

지에 대한 책임을 가짐

• Channel, Device Driver 등을 통하여 실제 I/O를 수행하는 주체이기도 하며, 수행된 I/O의 결과로 사용자에게 논리적 관점의 파일 구조를 전달함

Page 42Advanced Data Structuresby Yang-Sae Moon

파일의파일의 입출력입출력 제어제어 환경환경 (2/3)(2/3)File Structures

운영체제: 다수 사용자를 위해 컴퓨터 자원을 관리하는 S/W

운영체제의 기능 (예제)

• Main Memory Manager

• Process Manager

• Scheduler

• File Manager

− 파일 조직 기법 제공 (블로킹, 분산 저장 등)

− 사용자의 I/O 명령문(read, write, …)에 대한 I/O 처리

• Device Manager: 물리적 저장 장치에 대한 접근 기능 제공

사용자 프로그램

운영 체제

보조 기억 장치

논리적 관점

물리적 관점

22

Page 43Advanced Data Structuresby Yang-Sae Moon

파일의파일의 입출력입출력 제어제어 환경환경 (3/3)(3/3)File Structures

File Manager 중심의 운영체제 구조 (예제)

Device(Hard Disk)

Device(Compact Disk)

Device(Fast Ethernet)

Device(something)

• • •

Device Driver(Hard Disk)

Device Driver(Compact Disk)

Device Driver(Fast Ethernet)

Device Driver(something)

File Manager

Memory Manager (Buffer Manager)

Buffer maintained in O/S

Code Stack Heap

… … …

User Area

O/S Area

Page 44Advanced Data Structuresby Yang-Sae Moon

UNIXUNIX에서의에서의 입출력입출력 (1/6)(1/6)File Structures

UNIX에서는 파일을 단순히 바이트의 시퀀스(sequence of bytes)로 가정

• 디스크 자체, 디스크 파일, 키보드, 콘솔 장치 등도 파일로 취급 (/dev/…)

파일 기술자 (file descriptor)

• 사용자에게 파일을 접근할 수 있도록 하는 식별자(identifier)로서, 정수로 표현

• 파일 세부 정보(경로, 권한, offset 등)를 저장한 배열의 인덱스 역할 수행

• Special file descriptor

− 표준 입력(키보드) = 0 (= STDIN) fscanf(stdin, …);

− 표준 출력(출력 화면) = 1 (= STDOUT) fprintf(stdout, …);

− 표준 에러 = 2 (= STDERR) fprintf(stderr, …);

• 사용자가 개방(open)한 파일은 3부터 부여

프로세스와 커널

• 프로세스: 동시에 실행 가능한 프로그램 (모든 작업의 기본 단위)

• 커널(kernel): 프로세스 이하의 모든 계층을 통합 (UNIX O/S와 동일한 개념)(커널에서는 I/O를 일련의 바이트 상에서의 연산으로 본다.)

23

Page 45Advanced Data Structuresby Yang-Sae Moon

UNIXUNIX에서의에서의 입출력입출력 (2/6)(2/6)File Structures

커널의 I/O 시스템이 관리하는 테이블

• 파일 기술자 테이블 (file descriptor table)

− 각 프로세스가 사용하는 파일 기록 테이블 (매핑 테이블에 해당함)

• 개방 파일 테이블 (open file table)

− 현재 시스템이 사용 중인 개방된 파일에 대한 엔트리 저장

− 각 엔트리는 판독/기록 허용 여부, 사용 프로세스 수, 다음 연산을 위한 파일 오프셋 등을 저장

(파일 오프셋의 경우는 파일 기술자 테이블에 저장될 수도 있음)

• 인덱스 노드 (index node), 파일 할당 테이블 (file allocation table)

− 파일의 저장 위치, 크기, 소유자 등의 정보를 관리

− 디렉토리 엔트리의 개념으로 이해할 수 있음

• 인덱스 노드 테이블 (index node table)

Page 46Advanced Data Structuresby Yang-Sae Moon

UNIXUNIX에서의에서의 입출력입출력 (3/6)(3/6)File Structures

파일 기술자 테이블과 개방 파일 테이블

화일기술자

개방화일테이블엔트리

0(키보드)1(화면)2(에러)3(일반화일)4(일반화일)…

파일 기술자 테이블(프로그램당 하나)

R/W모드

화일사용프로세스수

…write

…1…

다음접근오프셋

Write루틴포인터

…100…

…Inode테이블엔트리

개방 파일 테이블(UNIX 전체에 하나)

24

Page 47Advanced Data Structuresby Yang-Sae Moon

UNIXUNIX에서의에서의 입출력입출력 (4/6)(4/6)File Structures

Inode (index node) 구조

그룹 이름

화일 유형

접근 권한

화일 접근 시간

화일 수정 시간

화일 크기 (블록수)블록 카운트

화일 할당 테이블

inode 테이블의한 엔트리

데이타 블록번호 0

…데이타 블록번호 1

데이타 블록번호 9

화일 할당 테이블(계층 구조를 가질 수 있음)

장치

소유자 ID

Page 48Advanced Data Structuresby Yang-Sae Moon

UNIXUNIX에서의에서의 입출력입출력 (5/6)(5/6)File Structures

UNIX에서의 파일 입출력 절차

파일 기술자 값이 3인 파일에 대한 레코드 판독(read) 명령어를 처리한다고 가정하면,

1. 프로그램의 파일 기술자 테이블에서 개방 파일 테이블을 이용하여, 개방 파일 테이블의

해당 엔트리를 검색한다.

2. 개방 파일 테이블에서 Inode 테이블 포인터를 이용하여, Inode 테이블의 해당 엔트리를

검색한다.

3. Inode 테이블에서 해당 파일의 데이타가 저장된 디스크 블록의 주소를 얻어 디스크에서

데이타 블록을 판독한다.

25

Page 49Advanced Data Structuresby Yang-Sae Moon

UNIXUNIX에서의에서의 입출력입출력 (6/6)(6/6)File Structures

디렉토리와 파일

• 디렉토리: 파일을 식별하는 Inode 번호와 그에 해당하는 파일 이름들을 데이타로 저장

한 파일 (디렉토리 자체도 파일로 관리됨)

• Inode에 대한 포인터는 파일에 대한 모든 정보를 참조함 (UNIX에서 파일 관리의 기본은

Inode 구조로 볼 수 있음)

파일 이름과 Inode

• 여러 파일 이름이 같은 Inode를 포인터로 가리킬 수 있음 (hard link 구조)

• 이 경우, 한 파일 이름이 삭제되더라도 포인터 수만 감소시킴

Page 50Advanced Data Structuresby Yang-Sae Moon

File Structures File Structures 강의강의

강의 내용

• 파일의 기본 개념 (Ch. 1 in “화일 구조”)

• 파일 저장 장치 (Ch. 2 in “화일 구조”)

• 파일의 입출력 제어 (Ch. 3 in “화일 구조”)

• 순차 파일 (Ch. 4 in “화일 구조”)

File Structures

26

Page 51Advanced Data Structuresby Yang-Sae Moon

순차순차 파일파일 (Sequential File)(Sequential File)File Structures

정의

• 레코드들을 저장하는 가장 기본적인 방법으로서, 레코드들을 (지정된 순서에 따라) 연속적으로 저장하는 파일

• 레코드들을 접근할 때도 저장할 때의 순서대로 연속적으로 접근해야 함

종류

• 입력 순차 파일 (entry-sequenced file):

- 레코드가 입력되는 순서대로 저장함 (즉, 입력 순서가 레코드의 저장 순서를 결정함)

- Heap File(차례로 쌓는다는 의미)이라고도 함

• 키 순차 파일 (key-sequenced file)

- 레코드의 특정 필드 값(키 값) 순서에 따라 저장

- 특정 필드 값에 따라 정렬(sorting)된 상태를 유지함

Page 52Advanced Data Structuresby Yang-Sae Moon

스트림스트림 화일화일 (Stream File)(Stream File)File Structures

정의

• 연속적인 판독(read) 연산을 통해 레코드가 파일에 저장되어 있는 순서에 따라 데이타

를 액세스하는 파일

• 데이타가 하나의 연속된 바이트 스트림으로 구성

종류

• 순차 접근 스트림 파일 (sequential access stream file)

- 순차 접근만을 허용함 (예를 들어, 테이프의 경우 순차 접근만이 허용됨)

• 임의 접근 스트림 파일 (random access stream file)

- 임의 접근이 허용됨 (예를 들어, 디스크의 경우 임의 접근도 허용함)

접근 모드 (access mode)

• 파일에서 수행하려는 연산에 따라 판독(read), 기록(write), 갱신(read/write), 첨가

(append) 등을 파일 개방(open) 시에 명시하여야 함

27

Page 53Advanced Data Structuresby Yang-Sae Moon

순차순차 접근접근 스트림스트림 파일파일 (1/5)(1/5)File Structures

판독(read) 연산

• 기본 스트림 화일을 판독(read) 모드로 열면 판독 포인터는 파일의 첫 번째 바이트를 가

리킨다.

• 해당 위치에서 시작하여 해당 바이트 값을 전송하고, 판독 포인터를 스트림 화일의 다음

바이트 시작 위치로 변경한다.

• n번째 바이트 값을 판독하기 위해서는 반드시 (n-1)번째 바이트 값을 판독해야 한다.

기록(write) 연산

• 파일을 기록(write) 모드로 열면 기록 포인터는 화일의 첫 번째 바이트가 기록될 위치를

가리킨다.

• 해당 위치에서 시작하여 해당 바이트 값을 기록하고, 기록 포인터를 다음 바이트가 기록

될 위치로 변경한다.

• n번째 바이트 값을 기록하기 위해서는 반드시 (n-1)번 기록 연산을 수행해야 한다.

Page 54Advanced Data Structuresby Yang-Sae Moon

순차순차 접근접근 스트림스트림 파일파일 (2/5)(2/5)File Structures

C 언어를 이용한 스트림 파일의 생성

streamfile = fopen(“stream.txt”, “w”);

• 이름이 “stream.txt”인 공백 스트림 파일이 생성되어 기록(write) 모드로 개방된다.

• 아래 그림에서 화살표는 개방된 상태에서의 인덱스 값을 갖는 포인터를 나타낸다.

? ? ? ? ? ??

index : 0 1 2 3 4 5 6

streamfile

28

Page 55Advanced Data Structuresby Yang-Sae Moon

순차순차 접근접근 스트림스트림 파일파일 (3/5)(3/5)File Structures

C 언어를 이용한 스트림 파일의 생성 (계속)fputc(ch, streamfile);

• 스트림 파일에 한 글자(character)를 기록한다.

• fputc()를 연속적으로 사용하여 S, M, I, T, H 값을 파일에 기록한다.

• 아래 그림은 상기와 같이 다섯 글자를 기록한 이후의 포인터의 위치를 나타낸다.

M I T H ? ?S

index : 0 1 2 3 4 5 6

streamfile

Page 56Advanced Data Structuresby Yang-Sae Moon

순차순차 접근접근 스트림스트림 파일파일 (4/5)(4/5)File Structures

C 언어를 이용한 스트림 파일의 생성 (계속)fclose(streamfile);

• 앞서 개방한 스트림 파일 streamfile을 닫는다.

• “ ”로 표현된 end-of-file 표시가 스트림 파일 끝에 첨가된다.

• 지금까지 생성하고 기록한 스트림 파일은 “stream.txt”라는 파일 이름으로 저장된다.

M I T HS

index : 0 1 2 3 4 5

streamfile

29

Page 57Advanced Data Structuresby Yang-Sae Moon

순차순차 접근접근 스트림스트림 파일파일 (5/5)(5/5)File Structures

순차 접근 스트림 파일

• 연속적으로 파일을 접근하고, 파일에 있는 모든 바이트를 처리하는 경우에 유용

• 화일을 순차적으로 접근하는 과정은 배열을 순차적으로 접근하는 것과 유사

• 특정 바이트 혹은 바이트 스트링만을 찾기 위한 방법으로는 좋지 않음

임의 접근 스트림 파일

• 이원 탐색법 (binary search):배열의 인덱스를 이용하여 배열의 원소를 직접(임의로) 액세스

• 이원 탐색법을 파일에 적용

− 반드시 파일에 있는 바이트를 임의로 액세스할 수 있어야 함

− 순차 접근 스트림 파일을 불가하며, 임의 접근 스트림 화일은 가능함

Page 58Advanced Data Structuresby Yang-Sae Moon

임의임의 접근접근 스트림스트림 파일파일 (1/3)(1/3)File Structures

오프셋(offset) 값을 이용

• 순차적으로 바이트를 액세스하는 것이 아니라, 오프셋이 가리키는 위치에 대한 임의 접

근을 수행

임의 접근을 위한 함수

• fseek() 함수

− 파일 스트림에서 판독 또는 기록 포인터의 위치를 변경하는 데 사용

− 파일의 시작, 끝, 현재의 위치로부터 오프셋 크기 만큼 판독 또는 기록 포인터를 이동시킴

• ftell() 함수

− 파일 스트림에서 판독 또는 기록 포인터의 인덱스 값을 반환하는 데 사용

− 즉, 파일에서 포인터가 가리키는 현재 위치(오프셋)를 리턴함

30

Page 59Advanced Data Structuresby Yang-Sae Moon

임의임의 접근접근 스트림스트림 파일파일 (2/3)(2/3)File Structures

판독 모드(“r”)로 개방한 스트림 파일

streamfile = fopen(“stream.txt”, “r”);

• 파일 “stream.txt”를 판독 모드로 개방함

• 아래 그림과 같이, 파일이 열리면 판독 포인터는 파일의 첫 번째 바이트를 가리키도록

설정됨

offset = ftell(streamfile);

• 현재의 포인터 값을 반환해 주는 함수

• 위 예의 경우, 현재 판독 포인터는 인덱스 값이 0이므로, 0이 반환됨

M I T H ◆S

index : 0 1 2 3 4 5

streamfile

Page 60Advanced Data Structuresby Yang-Sae Moon

임의임의 접근접근 스트림스트림 파일파일 (3/3)(3/3)File Structures

판독 모드(“r”)로 개방한 스트림 파일 (계속)fseek(streamfile, 2, SEEK_SET);

• 시작 위치(SEEK_SET)로부터 판독 포인터를 2바이트 이동시킴

• SEEK_SET: 시작 위치, SEEK_END: 끝 위치, SEEK_CUR: 현재 위치

• 위 함수의 수행에 따라 판독 포인터의 위치는 다음과 같이 변경됨

offset = ftell(streamfile);

• 위 예의 경우, 현재 판독 포인터는 인덱스 값이 2이므로, 2가 반환됨

M I T H ◆S

index : 0 1 2 3 4 5

streamfile

31

Page 61Advanced Data Structuresby Yang-Sae Moon

순차순차 파일의파일의 유형유형 (1/4)(1/4)File Structures

입력 순차 파일 (entry-sequenced file)

• 레코드가 순서대로 쌓여있다는 의미에서 heap file이라고도 함

• 레코드에 대한 분석, 분류, 표준화 과정을 거치지 않음

• 필드의 순서, 길이 등에 대해서도 제한 없음

• 레코드의 길이, 타입도 일정하지 않을 수 있음

• 레코드는 여러 개의 <필드, 값> 쌍으로 구성

CITY = 춘천 #POPULATION = 25만;

SNUMBER=1234 #WEIGHT=60;

SNAME = 김철수 #HEIGHT = 170 #AGE = 30;

SNUMBER = 1234 #SNAME = 홍길동 #SEX = 남 #IQ = 130;

DEPARTMENT = 컴퓨터과학과 #NUMBER_OF_PROFESSOR = 10;

Page 62Advanced Data Structuresby Yang-Sae Moon

순차순차 파일의파일의 유형유형 (2/4)(2/4)File Structures

입력 순차 파일의 갱신 작업

• 새로운 레코드 삽입, 기존 레코드 삭제, 기존 레코드 변경 등

• 레코드 삽입: 기존 파일 끝에 레코드를 첨가(append)

• 레코드 삭제 및 변경

- 새로운 순차 파일을 생성하면서 동시에 수행

- 작업 대상 레코드를 검색하면서 기존의 레코드를 새로운 파일로 출력

해당 레코드 검색 시 삭제 혹은 변경 작업 수행 (변경 시, 변경 결과를 새로운 파일로 출력)나머지 남은 레코드들을 다시 새로운 파일로 모두 출력

입력 순차 파일의 검색 작업

• 주어진 필드 값(예: 학번 = 20051234)에 대응하는 레코드를 찾기 위하여, 첫 번째 레코

드부터 차례로 검색하면서 원하는 필드 값을 순차적으로 검색(비교)

• 키 필드(key field): 검색을 수행하는 데 있어서, 레코드에서 비교 대상(검색 대상)이 되

는 필드 (예: 학생 테이블에서 학번 필드)

• 탐색 키 필드(search key field): 검색을 수행하는 데 있어서 비교 대상(검색 대상)으로

주어진 필드 (예: 찾고자 하는 학생의 학번인 20051234)

32

Page 63Advanced Data Structuresby Yang-Sae Moon

순차순차 파일의파일의 유형유형 (3/4)(3/4)File Structures

키 순차 파일 (key-sequenced file)

• 저장 장치의 레코드 순서와 파일에 저장된 레코드들의 논리적 순서가 같은 구조의 파일

• 파일 내의 레코드들이 키 필드 값에 따라 정렬됨

• 데이타 필드, 즉, 애트리뷰트 이름은 개별 레코드가 아닌 파일 설명자에 한 번만 저장하

면 됨 (앞서 예를 든 순차 파일의 경우 매번 필드 이름을 저장하고 있음)

학번

1243

1257

1332

1334

1367

1440

이름

홍길동

김철수

박영희

이기수

정미영

최미숙

나이

10

20

19

21

20

21

본적

강원

경기

충청

전라

서울

강원

키 필드: 레코드의 순서를 결정하는 필드임

Page 64Advanced Data Structuresby Yang-Sae Moon

순차순차 파일의파일의 유형유형 (4/4)(4/4)File Structures

키 순차 파일 (계속)

• 키 순차 파일은 정렬된 화일(sorted file)이라고도 함

(레코드들이 특정 키 필드 값에 따라 정렬된 파일을 “정렬된 파일”이라 함)

• 정렬 키(sort key): 정렬 순서 결정에 사용된 값의 필드

• 오름차순(ascending) / 내림차순(descending) 정렬

키 순차 파일의 특징

• 일괄 처리(batch processing)에서 많이 사용

• 순서상 다음 위치에 해당하는 레코드를 신속하게 접근할 수 있음

• 하나의 순차 파일이 두 개의 상이한 정렬 순서를 만족시킬 수 없음

(예: 학번과 나이를 모두 키 필드로 사용할 수 없음, 나이 순으로 학번이 부여된다면?)

• 여러 정렬 순서 파일이 필요한 경우에는 임시 파일을 생성했다가 용도가 끝나면 파일을

삭제함

33

Page 65Advanced Data Structuresby Yang-Sae Moon

순차순차 파일의파일의 설계설계 시시 고려고려 사항사항File Structures

레코드 내의 필드 배치는 어떻게 할 것인가?

• 활동 파일(active file)과 비활동 파일(inactive file)을 구분하여 저장

활동 파일에 대한 크기를 감소시켜 액세스가 빠르게 함

• 레코드 내의 필드 및 크기를 고려하여 고정 길이 혹은 가변 길이를 선택함

레코드 구조 및 크기가 유사하면 고정 길이를, 그렇지 않으면 가변길이를 사용

키 필드는 어느 것으로 할 것인가?

• 응용의 종류 및 특성에 따라 선정 (예: 전화번호부 – 가입자 이름)

• 키 필드의 선정은 레코드 액세스 순서를 나타내므로 성능에 큰 영향을 미침

적정 블로킹 인수는 얼마로 하여야 하는가?

• 순차 파일에서는 일반적으로 가능한 블록을 크게 하는 것이 바람직하며, 블로킹 인수 또

한 큰 값을 사용하는 것이 유리함

(가능한 단번에 많은 데이타를 송수신하는 것이 유리하며, 레코드 중간에 레코드의 추

가가 어려우므로 블로킹 인수도 큰 값이 유리함)

• 블록 크기는 버퍼 크기나 운영 체제가 지원하는 블록 크기에 의해 제한될 수 있음