본문 바로가기
OS(운영체제)

파일 시스템 인터페이스 (File System Interface)

by 걸어가는 신사 2021. 12. 10.

1. 파일 속성 (File Attributes)

  • 파일은 운영체제마다 다른 속성을 가질 수 있다.
  • 일반적 속성
    • 이름, 식별자, 타입, 위치, 크기, 보호, 시간, 날짜, 사용자 식별

 

2. 파일 연산 (File Operations)

  • 파일 생성 (Create)
    • 파일이 저장될 수 있도록 파일 시스템 내 공간을 찾아 할당
    • 새로 생성된 파일에 대한 항목이 디렉터리에 만들어진다.
  • 파일 열기 (Open)
    • 모든 연산 전에 open을 수행
  • 파일 쓰기 (Write)
    • 주어진 버퍼의 내용을 파일 포인터가 가리키는 위치에 쓴다
  • 파일 읽기 (Read)
    • 파일 포인터가 가리키는 위치의 내용을 버퍼에 읽는다
  • 파일 내 위치 재설정 (Reposition)
    • 파일 포인터가 가리키는 위치를 변경한다
  • 파일 삭제 (Delete)
    • 해당 파일이 차지한 공간을 방출하고, 정보를 디렉터리에서 삭제
  • 파일 절단 (Truncate)
    • 파일의 속성은 유지한 상태에서, 해당 파일의 일부 내용을 지운다.

 

3. 접근 방법 (Access Method)

(1) 순차 접근 (Sequential Access)

  • 파일의 정보가 레코드 순서대로 차례차례 처리된다.
  • 주요 연산
    • read next : 다음 부분(레코드)을 읽고, 파일 포인터가 자동으로 증가
    • write next : 다음 부분(레코드)에 쓰고, 파일 포인터가 자동으로 증가
    • rewind, seek : 파일 포인터를 되돌리거나, 지정된 위치로 이동
  • C언어에서 파일 관련 호출은 순차 접근을 가정한다.

(2) 직접 접근

  • 상대 접근이라고도 불리며, 파일에 저장된 논리 레코드들을 특별한 순서 없이 빠르게 읽고 쓸 수 있다.
  • 일반적으로 디스크 모델에 기반을 두는데, 이는 디스크가 무작위 파일 블록에 임의적 접근을 허용하기 때문이다.

 

4. 디렉터리 구조 (Directory Structure)

  • 디렉터리는 파일 이름에 상응하는 파일 제어 블록으로 바꾸어 주는 심볼 테이블이다.

(1) 1 단계 디렉터리 (Single-Level Directory)

  • 모든 파일은 다 같이 한 개의 디렉터리 밑에 있다.
  • 교유한 파일 이름을 가져야 한다.

(2) 2 단계 디렉터리 (Two-Level Directory)

  • 각 사용자에게 서로 다른 디렉터리를 만들어준다.
  • 경로명 : 사용자명/파일 이름
  • 다른 유저 디렉터리에 같은 이름의 파일이 있을 수 있다.

(3) 트리 구조 디렉터리 (Tree-Structure Directory)

  • 다단계 트리 형태로, 사용자는 자신의 서브디렉터리(subdirectory)를 만들어 파일을 구성할 수 있다.
  • 효율적 탐색 가능
  • 논리적 그룹핑이 가능
  • 현재 디렉터리 개념을 제공한다.
  • 절대 경로(Absolute path)와 상대 경로 (Relative path)를 제공

(4) 비순환 그래프 디렉터리 (Acyclic-Graph Directory)

  • 디렉터리들이 서브 디렉터리들과 파일들을 공유할 수 있도록 허용하는 구조

(5) 일반 그래프 디렉터리 (General Graph Directory)

  • 트리 구조에 새로운 링크를 추가
  • 사이클이 생성될 수 있다. 이를 방지하기 위해
    • 파일에만 링크를 허용하고 디렉터리에는 허용하지 않는다.
    • 가비지 컬렉션을 사용하거나, 매 링크 추가 시 사이클 추가 여부를 검사할 수 있다.

 

5.  메모리 사상 파일 (Memory-Mapped File)

파일을 다룰 때 빈번한 read()/write() 시스템 호출 대신에 파일을 메모리처럼 사용할 수 있는 방법
  • 디스크의 파일을 메모리에 mapping 시키고, 메모리를 접근하듯이 파일을 사용한다.
    • 메모리를 통한 파일 입출력을 통해 파일 접근과 사용을 단순화
  • 메모리 사상 파일 입출력은 디스크 블록을 메모리 참조를 변환
    • 메모리 내 페이지와 관련시켜 mapping
    • 디스크의 페이지들이 메모리의 물리 페이지로 적재된 후, 파일 읽기/쓰기는 일반 메모리 접근으로 처리
  • 메모리 내의 페이지들이 공유되어 여러 프로세스들이 같은 파일에 사상될 수 있다.

  • 디스크 파일의 6개 페이지는 물리 메모리 6개 프레임에 매핑되어 있다.
  • 프로세스 A와 B는 가상 메모리를 통해 파일을 메모리로 인식하고 사용

 

반응형

댓글