Joonas' Note
파일구조 요약 (1~2장) 본문
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
(지금은 절판된걸로 안다)
시험 보기 직전에 보려고 정말 간략하게 요약한 키워드 위주의 정리다.
파일 구조가 무엇인가?
파일구조란 파일들의 데이터들을 표현하거나 그 데이터에 접근하는 연산들을 관리하는 것의 결합이다. 파일구조는 데이터를 읽고, 쓰고, 수정하는 것이 가능해야한다. 그리고 그것들을 검색하거나 특정 순서로 읽을 수 있어야한다.
왜 배우는가?
컴퓨터는 데이터를 크게 세 군데에 저장한다.
- Primary Storage : 메모리
- Secondary Storage : Disk, Tape, CD-Rom 등
- Tertiary Storage : 컴퓨터에 연결되지 않는 외부 저장소
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로 설정할 수 있다.
'후기 > 수업 요약' 카테고리의 다른 글
정보 보호 수업 요약 (0) | 2020.01.06 |
---|---|
파일구조 요약 (5~6장) (0) | 2017.10.30 |
파일구조 요약 (3~4장) (0) | 2017.10.30 |