[OS] Chap13-02 : 파일 시스템 인터페이스_접근 방법
운영체제(Operating System Concepts) 를 읽고 정리한 정리본입니다.
📌 Chap13-02 : 파일 시스템 인터페이스_접근 방법
파일은 정보를 저장한다. 정보가 접근되어 컴퓨터 메모리로 읽혀야만 파일 사용이 가능하다.
일부 시스템은 파일에 대해 단 하나의 접근 방법만 제공하며, 또 다른 운영체제는 많은 접근 방법을 지원한다.
이러한 파일의 접근 방법에 대해 알아보자.
🫧 접근 방법
- 순차 접근 방법 (Sequential Access)
- 직접 접근 방법 (Direct Access)
- 기타 접근 방법 (Other Access Methods)
✨ 순차 접근 방법 (Sequential Access)
-
디스크에 있는 파일을 순차적으로 접근하는 방법
- 저장되어 있는 레코드 순서대로 접근한다.
- 읽거나 쓰면 자동으로 현재 위치를 추적하는 파일 포인터 (offset)가 자동으로 증가
-> ex) 편집기, 컴파일러
✨ 직접 접근 방법 (Direct Access) = 상대 접근
파일은 고정 길이의 논리 레코드의 집합으로 정의되고, 번호를 갖는 일련의 블록 또는 레코드로 간주한다.
즉, 파일을 고정 사이즈 단위의 블록으로 나누어 그 어떤 블록이라도 바로 액세스가 가능하도록 해 둔 것이다.
블록 14를 읽고, 블록 53을 쓰는 것과 같이 읽기나 쓰기 순서에 제약이 없다.
대규모의 정보를 다루는 데 매우 유용하며 대규모 데이터베이스가 직접 접근 방식을 사용한다.
직접 접근 방법을 위해서는 파일 연산이 블록 번호 파라미터를 포함할 수 있도록 수정되어야 한다.
read_next() -> read(n)
write_next() -> write(n)
또는 read_next()를 수정하지 않고 다음과 같이 추가할 수 있다.
position_file(n)
블록 번호를 통해 블록 번호에 해당하는 블록에 접근할 수 있게 된다.
여기서 블록 번호는 n으로 표기되는데, 이는 파일의 시작을 0으로 보고 계산한 레코드의 위치로써, 상대 블록 번호
로 불리운다.
따라, 실주소와 가상주소가 다른 것처럼 실제 블록 번호와 상대 블록 번호도 다를 수 있다.
ex) 디스크 주소의 처음 블록이 14703, 두 번째 블록이 3192일지라도 파일의 첫 번째 상대 블록은 0, 두 번째 상대 블록은 1로 판단
이러한 실주소와 상대적 블록 번호를 사상시켜주기 위해서는 운영체제가 파일이 어디에 저장되어야 하는지를 결정 (14장에서 다룰 예정, 할당 문제라고도 부름) 해야 한다.
이는 상대적 블록 번호를 찾을 뿐 아니라 사용자가 자신의 파일이 아닌 부분에 접근하는 것 또한 막아준다.
✨ 기타 접근 방법 (Other Access Methods)
직접 접근 파일을 기반으로 여러 가지 다른 파일 접근 방법 제공이 가능하다. 이는 색인
을 사용해 이루어진다.
여기서 말하는 색인은 책의 맨 뒷부분에 나오는 것과 같이 여러 부분에 대한 포인터를 제공하는 것으로 이해할 수 있다.
☁️ 파일을 찾는 방법
- 찾고자 하는 레코드가 있으면 그 레코드에 해당하는 색인을 찾는다.
- 찾은 색인에 대응하는 포인터를 얻는다.
- 그 포인터를 사용해 파일을 직접 접근하고 원하는 레코드를 찾는다.
만일 파일의 크기가 크다면 색인 자체도 매우 커 메모리에 다 들어가지 못할 수가 있으므로 색인 자체를 파일로 만들어줘야 한다. 만든 색인 파일이 커지면 그것에 대해서도 또 색인을 만들 수 있다.
해당 그림은 크기가 작은 마스터 색인을 메모리에 유지하고 그것이 2차 색인 디스크 블록을 가리키도록 하는 그림이다.
어떤 특정한 항목을 찾기 위해서는 먼저 마스터 색인에서 이진 탐색을 하여 2차 색인 블록 번호를 알아내고, 다시 이진 탐색을 하여 원하는 레코드를 찾은 후 smith, john, social-security, age와 관련된 정보를 알아낼 수 있다.