SW Engineering/OS Concept

43_파일 접근 방법 (Access Method)

SungWookKang 2015. 7. 16. 14:15
반응형

43_파일 접근 방법 (Access Method)

 

파일이 사용될 때는 이 정보가 반드시 메모리로 적재되어야 한다. 어떤 시스템은 파일에 대해 단 하나의 접근 방법만 제공한다. IBM의 파일과 같은 다른 파일은 많은 접근 방법을 제공한다.

 

 

[순차 접근 (Sequential Access)]

가장 간단한 접근 방법은 순차 접근이다. 디스크에 있는 파일을 마치 테이프를 재생하는 것처럼 접근한다. 여기서의 접근 방법은 저장되어 있는 레코드 순서로 접근함을 의미한다. 이 접근 모드는 가장 일반적이며 편집기나 컴파일러는 보통 이러한 형식으로 파일을 접근 한다.

 

 

파일에 대한 대부분은 읽기(read), 쓰기(write)이다. 읽기는 파일의 다음 부분부터 차례로 읽어 나가며 자동적으로 현재 위치를 추적하는 파일 포인터(offset)가 자동으로 증가 된다.

 

쓰기 작업은 파일의 끝에 추가하며 새로운 파일의 끝으로 파일 포인터가 이동한다. 오프셋을 맨 앞이나 맨 뒤로 옮길 수도 있고 정수 n개의 레코드 만큼 앞뒤로 건너뛸 수도 있다. 순차 접근 모델은 테이프 모델에 기반하며 임의 접근 장치는 순차 접근이 가능하다.

 

 

[직접 접근 (Direct Access)]

직접 접근을 위해서 파일은 고정 길이의 논리 레코드의 집합으로 정의되고 직접 접근 파일은 어떠한 블록이라도 직접 접근할 수 있다.

 

직접 접근 방법은 파일의 디스크 모델에 기반하며 이는 디스크가 임의의 파일 블록에 임의적 접근을 허용하기 때문이다. 직접 접근을 위해 파일은 번호를 갖는 일련의 블록 또는 레코드로 간주 된다. 직접 접근 파일은 임의의 블록을 읽거나 쓸 수 있게 한다. 그래서 블록 23을 읽고 다음 54를 읽고 65를 쓸 수 있다.

 

직접 접근 파일에는 읽거나 쓰기의 순서에 제약이 없다.

 

직접 접근 방법을 위해서는 파일 연산이 블록 번호 매개변수를 포함할 수 있도록 수정되어야 한다. 사용자가 사용하는 블록 번호는 통상 파일의 시작을 0으로 보고 계산한 레코드의 위치로서 상대 블록 번호(relative block number)이다. 따라서 블록의 실제 절대적인 디스크 주소가 처음 블록의 경우 23453이고 두 번째 블록인 경우 2353일지라도 파일의 첫 번째 상대 블록은 0이고 다음의 순서는 1이다.

 

상대적 블록 번호를 사용하기 위해서는 운영체제가 파일 어디에 저장되어야 하는지를 결정해야만 하고 사용자가 자신의 파일이 아닌 것에 접근하는 것을 막을 수 있도록 도와줘야 한다.

 

시스템은 파일의 N번째 레코드에 대한 요청을 어떻게 처리 할까? 논리적 레코드의 길이가 L이라고 가정하면 N번째 레코드에 대한 요청 파일의 L*(N)의 위치로부터 L 바이트에 대한 요청(N=0이면 첫 번째라고 가정하였다.)이 된다. 논리적 레코드는 고정된 길이이므로 레코드를 읽고 쓰고 지우는 것은 간단하다.

 

 

[기타 접근 방법]

직접 접근 파일이 있으면 그것을 기반으로 여러 가지 다른 파일 접근 방법을 제공할 수 있다. 그런데 이들은 대부분 파일에 대한 색인(index)을 사용한다. 찾으려고 하는 레코드가 있으면 먼저 이 색인부터 찾아 그에 대응하는 포인터를 얻는다. 그런 다음 그 포인터를 사용하여 파일을 직접 접근하고 원하는 레코드를 찾는다.

 

파일이 아주 크면 색인 자체도 매우 커서 메모리에 다 들어가지 못할 수가 있으므로 그것 자체를 파일로 만들어 주어야 한다. 색인 파일이 너무 커지면 그것에 대해서도 또 색인을 만들 수 있다. 일차 색인 파일(primary index file)은 이차 색인 파일의 포인터를 가지고 이는 다시 실제 자료 항목을 가리킨다.

 

IBM의 ISAM(index sequential access method)은 크기가 작은 마스터 색인을 메모리에 유지하고 그것이 이차 색인 디스크 블록을 가리키도록 한다. 이차 색인이 실제 파일 블록을 가리킨다. 파일은 키 값에 따라 순서대로 유지한다. 어떤 특정 항목을 찾기 위해서는 먼저 마스터 색인에서 이진 탐색을 하여 이차 색인 블록 번호를 알아 낸다. 이 블록을 읽은 후 다시 이진 탐색을 하여 원하는 레코드를 찾아내고 마지막으로 이 블록을 순차적으로 탐색 한다.

이러한 방법은 어떠한 레코드도 최대 두 번의 직접 접근 읽기로 그 위치를 알 수 있다.

 

 

 

[참고자료]

Operating System Concepts / 홍릉과학출판사

 

 

반응형