파일에 있는 정보들을 어떻게 접근할 것인지 알아보자.
순차 접근
테이프를 읽듯, 처음부터 끝까지 순서대로 읽는 방법.
- 저장되어 있는 레코드 순서대로 접근
- 가장 일반적이며, 편집기나 컴파일러가 쓰는 방식
이를 적용하는 연산이 읽기와 쓰기
- 읽기를 적용하면 파일 포인터(오프셋)이 자동으로 증가
- 쓰기를 적용하면 파일의 제일 끝에 써지며, 역시 파일 포인터가 자동으로 증가
- 오프셋을 옮길 수 있음.
fseek()함수 등…
직접 접근
인덱스를 이용해 배열처럼 접근하는 방식
- 파일의 정의 = 고정 길이를 가진 논리 레코드(블록)의 집합.
- 파일의 각 블록은 번호를 통해 접근할 수 있다.
- 대규모의 정보를 다룰 때 유용하다.
- 파일 연산 (=함수)의 파라미터로 블록 번호가 들어가 있어야 한다.
상대 번호 : 파일의 시작을 0이나 1로 보고 계산한 것.
- 대부분의 블록 번호는 상대 블록 번호
- 상대 블록 번호를 지정하는 문제를 할당 문제라고 함.
| 상대 블록 번호 | 절대 디스크 주소 |
| 1번 블록 | 18270 |
| 2번 블록 | 29000 |
💡 모든 운영체제가 직접 접근 파일과 순차 접근 파일을 동시에 제공하지는 않는다. 다만, 직접 접근 파일이 있으면 이를 통해 순차 접근 기능을 제공할 수 있다.
기타 접근법
색인 접근법
💡 색인(index) = 여러 부분에 대한 포인터
- 찾고자 하는 레코드가 있으면 이 색인부터 찾아 그에 대응하는 포인터를 얻음
- 해당 포인터로 파일을 직접 접근하고, 원하는 레코드를 얻음
색인 테이블 접근법
파일이 너무 크다면, 색인을 모아 색인 파일을 만든다.
색인 파일조차 너무 크다면 색인 파일을 가리키는 색인을 만들 수 있다.
IBM의 ISAM (indexed sequentail access methods) 마스터 색인 → 2차 색인 → 실제 파일 블록
마스터 색인 : 메모리에 유지 2차 색인 : 실제 블록 파일을 가리킴.