컴퓨터공학개론 제 10 장파일구조 1
학습목표 파일시스템이무엇을하는것인지배운다. FAT 파일시스템과그것의장단점을이해한다. NFTS 파일시스템과그것의장단점을이해한다 여러가지파일시스템을비교한다. 순차파일과임의파일의접근방법을배운다. 해싱 (hashing) 이어떻게사용되는지살펴본다. 해싱알고리즘이어떻게생성되는지를이해한다. 2
파일시스템의기능 저장기기에서의파일의생성, 조작, 개명, 복사, 삭제등을책임짐 파일을디렉터리 (directory) 라고부르는공통저장영역에조직화함 파일과디렉터리가어디에위치하고있는지를기억함 저장매체의물리적구조에파일과폴더를연관시킴으로써컴퓨터사용자를지원함 3
그림 10-1 파일시스템의파일과디렉터리는파일캐비넷의문서와폴더와유사하다 4
저장매체 하드디스크또는드라이브 (drive) 는파일시스템의가장흔한저장매체임 물리적으로트랙 (track) 과섹터 (sector) 로구성됨 읽기 / 쓰기헤드 (head) 가하드디스크의지정영역위를움직이면서데이터를저장하거나 ( 쓰기 ) 검출함 임의접근 (random access) 장치 디스크상의어느위치에있든지데이터를직접읽고쓸수있음 처음부터끝까지읽고쓰는순차파일보다빠름 파일을조직하기위해파일시스템을이용함 5
섹터 트랙원판 읽기 / 쓰기헤드 그림 10-3 하드디스크원판 (platter) 은트랙과섹터로나눠지며, 읽기 / 쓰기헤드가데이터를저장하고검출한다. 6
파일시스템과운영체제 파일관리시스템의유형은운영체제에따라달라짐 FAT (file allocation table, 파일할당테이블 ) MS-DOS 로부터 Windows ME 에이르기까지사용됨 NTFS (New Technology File System) Windows NT 부터 Windows 2003 등에기본적으로사용됨 Unix 와 Linux 는여러파일시스템을지원함 XFS, JFS, ReiserFS, ext3 등 HFS+ 현재의 Mac OS X 파일시스템 7
FAT 하드드라이브의섹터의그룹이클러스터를구성함 섹터의블록을연속적으로구성하여성능을높임 파일과그파일에사용되는클러스터의관계를보존한다. 각클러스터는 FAT 에서두개의항목을가짐 현재의클러스터정보 다음클러스터에대한링크또는마지막클러스터임을표시하는특수코드 사용가능한클러스터와불량클러스터를기록함 8
그림 10-4 하드디스크상에서섹터의그룹이클러스터를이룬다. 9
FAT ( 계속 ) 하드드라이브를다음과같은영역으로구성함 파티션부트레코드 (Partition boot record) 파일시스템으로볼륨에접근하는방법에대한정보를가짐 메인 (main) 과백업 (backup) FAT FAT 를읽는중오류가발생하면, 시스템의안정성을보장하기위해백업을메인으로복사함. 루트디렉토리 (Root directory) 루트디렉터리에있는모든파일과폴더를항목으로저장함 10
파티션부트레코드 (1 섹터 ) 메인 FAT( 크기는 2 클러스터까지 ) 백업 FAT( 주 FAT 와같은크기 ) 루트디렉터리 데이터영역 ( 크기는가변적임 ). 여기에모든파일과디렉터리가저장된다. 클러스터단위의크기로섹터들의그룹으로구성된다. 그림 10-5 전형적인 FAT 파일시스템 11
디스크단편화 파일이저장매체에서연속된위치보다는서로다른위치에흩어져있는클러스터들로구성될때일어남. Windows 는클러스터들을연속적으로재구성하는조각모음 (Disk Defragmenter) 유틸리티를제공함. 읽기쓰기헤드의움직임을최소화하여성능을개선함 최고의성능으로실행하는것을보장하도록규칙적으로사용해야함 12
단편화된디스크 조각모음후 그림 10-6 파일은비연속적인클러스터에저장되면서단편화된다. 조각모음유틸리티는파일을연속된클러스터로이동시켜디스크성능을개선한다. 13
FAT 의장점 디스크공간을효율적으로사용함 큰파일은연속된클러스터를사용하지않음 파일이름 (FAT32) 은 255 자까지가질수있음 삭제된파일을복원하는것이쉬움 파일이삭제될때, 시스템은파일이름의첫째자리에 16 진법값 E5h 를넣어둠 파일은그드라이브에남아있으며, 복원과정에서원래의글자로고침으로써복원할수있음 14
FAT 의단점 파일을분할영역에많이저장할수록전체성능이저하됨 하드드라이브가쉽게단편화될수있음 보안이취약함 NTFS 는파일과디렉터리에대한접근권한을부여하는기능을제공함 파일무결성 (integrity) 문제 클러스터분실 무효파일과디렉토리 할당에러 15
NTFS FAT 파일관리시스템의제한사항을극복함 저널링 (journaling) 파일시스템이라고도함 수행된트랜잭션 (transaction) 을기억하며, 오류가생기면트랜잭션들을철회 (rollback) 함 볼륨의모든파일과디렉터리에대한데이터를저장하는마스터파일테이블 (master file table, MFT) 을사용함 각파일의레코드와디렉토리를가진데이타베이스테이블과유사함 클러스터를사용하며, MFT 가커지는것을위해공간블록을비축해둠 16
NTFS 의장점 파일액세스가매우빠르고확실함 MFT 를사용해서, 큰양의데이터를잃어버리지않고문제상황을복구함 보안이 FAT 에비해크게강화됨 암호화파일시스템 (Encrypting File System, EFS) 과파일속성을통한파일암호화지원 파일압축 (file compression) 디스크공간을절약하기위해파일크기를줄이는방법 17
오버헤드가큼 NTFS 의단점 4GB 보다작은볼륨에는추천하지않음 MS-DOS, Windows 95 나 98 로부터 NTFS 볼륨을액세스할수없음 18
파일시스템비교 바른파일시스템을선택하는것은운영체제에달려있음 Windows 시스템에는 NTFS 가추천됨 요즈음의네트워크환경은보안이필요함 요즈음의기계는큰볼륨이필요한도구를사용함 하드드라이브가 10 GB 이하이면, 더작은데이터의볼륨을다루는데는더 FAT 효율적임 UNIX/Linux 는여러파일시스템을선택할수있음 19
표 10-1 FAT16, FAT32 와 NTFS 비교 특징 전체볼륨크기 전체파일크기 OS 지원 플로피디스크호환 예 예 아니오 보안 제한된보안 제한된보안 확정된보안과감사옵션 파일압축 추가유틸리티로지원 추가유틸리티로지원 NTFS 일부로지원 20
표 10-1 FAT16, FAT32 와 NTFS 비교 ( 계속 ) 특징 저널링 ( 파일활동추적 ) 없음 없음 예 대형데이타베이스지원 제한적 예 예 한볼륨에다중디스크드라이브 아니오 아니오 예 21
표 10-2 UNIX/Linux 가지원하는파일시스템 파일시스템 ext ( 확장된파일시스템 ), 새버전 ext2, ext3 ufs (UNIX 파일시스템 ) 설명 Linux 에기본적으로달려오는파일시스템 ; 현재의버전은 ext3, 저널링을지원함. 실질적으로모든 UNIX 시스템과거의모든 Linux 시스템과호환되는 UNIX 용원래의파일시스템 22
표 10-2 UNIX/Linux 가지원하는파일시스템 ( 계속 ) 파일시스템 MS-DOS 네트워크파일시스템 (Network File System) Ums MS/DOS 설명 ( 긴파일이름을지원하지않는 ) FAT16, FAT32 와호환성을제공하는파일시스템 ; UNIX 가 MS-DOS 나 Windows 에서만든플로피디스크를읽을수있도록설치됨. 네트워크액세스와 ( 화일을올리거나내려받는것과같은 ) 파일공유를지원하기위해 Sun Microsystems 가 UNIX 시스템을위해개발한파일시스템. 다른많은운영체제뿐만아니라모든 UNIX/Linux 버전을지원함 Windows NT, 2000, Xp 그리고 Server 2003 이사용하고, 확장된 FAT16 과호환되는파일시스템. 보안인증, 파일소유권, 긴파일이름등을지원함. 23
파일구조 이진수 (binary) 와텍스트 컴퓨터로읽기가가능하나, 사람이읽을수있는것은아님 ( 즉, 실행프로그램, 이미지파일 ) 텍스트파일보다액세스가더간결하고빠름 텍스트파일은 ASCII 나유니코드 (Unicode) 글자로구성됨 응용프로그램을사용하여보고수정하기가쉬움 순차액세스와임의액세스 순차데이타는차례로한뭉치씩액세스됨 임의접근데이터가임의의순서로액세스될수있음 24
그림 10-7 순차접근대임의접근 25
순차접근 (sequential access) 파일의처음부터액세스하기시작하여파일의끝까지처리됨 데이터가파일의끝에첨가되기때문에, 쓰기작업이매우빠름 데이타를삽입하고, 삭제하거나기존레코드를수정하는것은매우느릴수있음 데이터베이스테이블레코드처럼데이타를행 (Row) 으로저장함 행은필드경계기호를가지며, 각필드에대해고정크기를명시할수있음 26
그림 10-8 쉼표가경계기호로사용될수있다 27
그림 10-9 데이터는고정크기를가질수있다 28
임의접근 (Random Access) 대량의데이터에더빠르게액세스함 고정길이의레코드 (relative records) 를저장함 디스크표면에서레코드의위치를수학적으로계산할수있음 레코드를제자리갱신을할수있음 레코드가데이터일부를갖거나데이터를갖지않는다면디스크공간을낭비할수있음 레코드순차번호 (sequential record number) 로레코드를쉽게식별할수있을때잘동작함 29
순차파일접근 임의파일접근 그림 10-10 순차레코드는가변적크기를, 상대레코드는동일한크기를갖는다. 30
해싱 (Hashing) 해시키 (hash key) 라고부르는유일한값을사용하여상대레코드파일 (relative record files) 을액세스하는데사용됨 데이타베이스관리시스템 (database management systems ) 에서널리사용됨 각레코드에대해해시키를생성하는해싱알고리즘을사용하는것을포함함 해시키는정보의행이나레코드의인덱스를만듦 31
해싱의사용이유 상대파일액세스에적합하지않은키필드를, 사용될수있는상대레코드번호로변환할수있음 예 : 고객정보테이블에서전화번호를키로사용함 해시키를얻기위해, 가급적가장큰전화번호를예상되는고객의수로나눔 9999999999 / 2000 ( 예상고객수 ) = 약 5,000,000 전화번호 7025551234 / 5,000,000 으로레코드번호 1045 를얻음 32
해싱의사용이유 ( 계속 ) 해싱은충돌을유발하기도함 두개이상의원래키값에대해동일한상대키를생성함 해결책의예 : 전화번호의각숫자의합을상대키에더하도록알고리즘을확장함 전화번호 7025551234 의모든숫자합은 34 원래키 1045 + 34 는 1079 충돌을줄여주나, 모두피하지는못함 33
충돌 (Collisions) 의해결 가장좋은알고리즘조차충돌을일으킴 한가지해결방안은오버플로우영역 (overflow area) 을생성하는것임 중복된레코드번호를가진레코드를파일끝에있는오버플로우영역에기록함 레코드검색 해시키를계산하고, 레코드를검출함 그위치에있는레코드가원하는것이아니라면, 일치하는레코드를찾을때까지오버플로우영역을차례로검색함 34
충돌은두항목이같은해시값을생성하기때문에일어남 주영역 오버플로우영역 오버플로영역을가리킴 그림 10-11 오버플로영역은충돌해결을돕는다 35
해싱과컴퓨터과학 효율적인알고리즘을가지는것은, 데이터베이스관리시스템을생산하는회사에게중요함 컴퓨터과학에서사용되는많은다른해싱알고리즘이있음 암호화 (encryption) 와해독 (decryption) 인덱싱 (Indexing) 많은프로그래밍언어는언어내에설정된많은해싱루틴라이브러리를가지고있음 36
요약 하드드라이브는임의접근장치의한예임 정보를트랙과섹터에저장함 읽기쓰기헤드를통해데이타를접근함 파일시스템 : 스토리지디바이스에서파일의생성, 조작, 재명명, 복사그리고삭제를담당함 윈도우즈는 FAT 또는 NTFS 를파일시스템으로사용함 37
요약 ( 계속 ) FAT( 화일할당테이블 ) 파일시스템은어떤파일들이어떤특정클러스터를사용하고있는지를기록관리함 디스크단편화에취약함 NTFS (New Technology Filing System) 볼륨에파일과디렉터리를보존하기위하여마스터파일테이블 (MFT) 을사용함 윈도우즈 2000, 윈도우즈 XP, 그리고윈도우즈 2003 에서사용됨 NTFS 는 FAT 보다많은장점을가짐 더나은신뢰성과보안성, 저널링, 파일암호화그리고파일압축 38
요약 ( 계속 ) Linux 는많은파일시스템과함께사용됨 XFS, JFS, ReiserFS 그리고 ext3 파일은 2 진수또는텍스트 (ASCII) 의데이타를저장함 데이타는일반적으로순차또는임의의 ( 상대접근 ) 순서로저장되고액세스됨 39
요약 ( 계속 ) 해싱은상대파일을접근하기위한일반적인방법임 레코드의위치를확인하기위한해시키값을생성하는해싱알고리즘을포함함 충돌은, 해시키가둘이상의상대레코드위치를표현하여중복되는경우에발생함 해싱의목표 키필드가충돌이적은상대레코드번호로변환할수있는알고리즘을생성함 40