Operating Systems 13. File System Interface
파일 속성
- 파일은 운영체제마다 다른 속성을 가질 수 있다.
- 일반적인 파일 속성 : 이름, 식별자, 타입, 위치, 크기, 보호, 시간, 날짜, 사용자 시벽
파일 연산
- 파일 생성
- 파일 열기
- 파일 쓰기
- 파일 읽기
- 파일 내 위치 재설정
- 파일 삭제
- 파일 절단
- 접근 함수
순차 접근(Sequential Access)
- 파일의 정보가 레코드 순서대로 차례차례 처리된다.
- 연산 : read next, write next, rewind, seek
직접 접근(Direct Access)
- 상대 접근이라고도 불리며, 파일에 저장된 논리 레코드들을 특별한 순서 없이 빠르게 읽고 쓸 수 있다.
- n이 블록 번호라고 할 때, read n, write n 을 제공한다.
Directory Structure
- 디렉토리 효과 : file 위치에 빨리 접근할 수 있다.
- Naming : 편리하다.
Single-Level Directory
-> directory 를 사용하지 않는 것과 같다.
Two-Level Directory
- 사용자별로 디렉토리를 구분해서 사용한다.
- grouping 을 할 수 없다.
Tree-Structure Directory
- 다단계 트리 형태로, 사용자는 자신의 서브디렉터리를 만들어 파일을 구성할 수 있다.
- 효율적 탐색을 수행할 수 있으며, 논리적 그룹핑이 가능하다.
- 현재 디렉토리 개념을 제공한다. (working directory)
- 절대 경로와 상대 경로를 제공한다.
- link 명령을 사용할 수 없다.
Acyclic-Graph Directories
- Linux 의 Symbolic Link 또는 windows 의 바로가기와 유사하다.
- 디렉토리들이 파일과 서브디렉토리를 공유할 수 있어, 공유된 파일을 임의로 제거하면 dangling pointer 가 존재하게 된다.
General Graph Directory
- 트리 구조에 새로운 링크를 추가한 것이 일반 그래프 구조이다.
- 사이클이 생성될 수 있으며 이를 방지하기 위해
- 파일에만 링크를 허용하고 디렉터리에는 허용하지 않거나
- 가비지 컬렉션을 사용할 수 있다.
메모리 사상 파일(Memory-Mapped Files)
- 파일을 다룰 때 빈번한 read()/write() 대신 파일을 메모리처럼 사용하기 위해 mmap() 시스템 호출로 기능을 제공한다.
- 메모리 사상 파일 입출력은 디스크 블록을 메모리 참조로 변환한다.
- 메모리 내 페이지와 관련시켜 사상(mapping)
- 디스크의 페이지들이 메모리의 물리 페이지로 적재된 후, 이후 파일 읽기/쓰기는 일반 메모리 접근으로 처리한다.
- 예)
- 파일을 메모리로 인식하고 사용하여, 프로세스끼리 파일을 공유할 수 있다.