Joonas' Note

파일구조 요약 (1~2장) 본문

분류없음

파일구조 요약 (1~2장)

joonas 2017.10.30 09:53

2017/10/30 - 파일구조 요약 (1~2장) (이 글)
2017/10/30 - 파일구조 요약 (3~4장)
2017/10/30 - 파일구조 요약 (5~6장)

교재 : File Structures: An Object-Oriented Approach with C++ 3th edtion

(지금은 절판된걸로 안다)

시험 보기 직전에 보려고 정말 간략하게 요약한 키워드 위주의 정리다.

파일 구조가 무엇인가?

 파일구조란 파일들의 데이터들을 표현하거나 그 데이터에 접근하는 연산들을 관리하는 것의 결합이다. 파일구조는 데이터를 읽고, 쓰고, 수정하는 것이 가능해야한다. 그리고 그것들을 검색하거나 특정 순서로 읽을 수 있어야한다.

왜 배우는가?

컴퓨터는 데이터를 크게 세 군데에 저장한다.

  1. Primary Storage : 메모리
  2. Secondary Storage : Disk, Tape, CD-Rom 등
  3. Tertiary Storage : 컴퓨터에 연결되지 않는 외부 저장소
여기서는 1, 2의 주제만 다룬다.

Primary Storage인 Memory에 저장하고 싶지만, 크기가 너무 작거나 제한적이다. Secondary에 저장해야하지만, 메모리에 비해 속도가 너무 느리다. 답은, 파일의 구조를 향상시키는 것 이다.

궁극적인 목적은, 가능한 적은 디스크 접근으로 가능한 많은 데이터를 가져와 처리할 수 있도록 하는 것이다. 


1장. Introduction

Tape

 Tape은 순차적으로 접근한다. 파일이 아주 크고 데이터가 뒤에 있다면 매우 느리다.

Disk

 Disk는 direct access가 가능하다. 각 파일을 key와 pointer로 묶고 그 리스트를 만들어 관리할 수 있다면 매우 빠른 시간에 검색할 수 있을 것이다.

Tree

 Tree: 트리가 커지면 오히려 관리하는 오버헤드(디스크 접근)이 많아진다. B+ Tree는 나중에.

Using Cpp

 C++의 함수 오버로딩과 추상화, 상속을 써서 파일을 관리하는 쓸만한 파일 구조를 작성한다. (부록)


2장. 파일 처리 연산의 기본(근간)

  • C++에서 제공하는 파일 연산들을 소개한다.
  • C++에서의 오버로딩을 사용하는 방법을 설명한다.
  • 파일을 읽고 기록하는 절차를 설명한다.
  • 현재 읽고 있던 파일의 위치를 변경하는 개념을 설명한다.


Physical/Logical File

파일은 크게 두 가지로 분류할 수 있다.

1. Physical File

실제로 secondary storage의 어딘가에 위치하고 있는 파일을 말한다. OS가 인식하고 있는 파일이 이것이며, 파일 디렉토리로 볼 수 있다.

2. Logical File

프로그램이 설정한 논리적으로 존재하는 파일이다. 실제 물리적인 파일이 어디에 있건 상관없이 프로그램이 파일을 효율적으로 연산하기 위해서 존재한다.

I/O functions

 사용자가 파일을 생성하고, 수정하는 것은 디스크에 직접 데이터를 새겨넣겠다는 의미이다. 운영체제(OS)에게 이 작업을 요청하여 수행해야한다. 즉, System Call을 통해야한다.

low-level에서는 open, read, write 등, C에서는 fopen, fread 등의 형태로 지원한다.

Seeking

어떤 파일 안에서의 (찾고자 하는)특정 위치를 바이트단위로 directly하게 움직이는 것이다.

C++에서는 seekg(byte_offset, origin) 으로 포인터(위치)를 얻을 수 있고 seekp로 설정할 수 있다.


Tag
공유하기 링크
0 Comments
댓글쓰기 폼