Today
53
Total
237,993
Notice
«   2022/07   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
Archives
관리 메뉴

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로 설정할 수 있다.


    반응형

    '후기 > 수업 요약' 카테고리의 다른 글

    정보 보호 수업 요약  (0) 2020.01.06
    파일구조 요약 (5~6장)  (0) 2017.10.30
    파일구조 요약 (3~4장)  (0) 2017.10.30
    파일구조 요약 (1~2장)  (0) 2017.10.30
    Tag
    0 Comments
    댓글쓰기 폼