본문 바로가기
컴퓨터공학/운영체제

[운영체제] 파일 시스템과 디렉토리 구조

by 독서왕뼝아리 2023. 9. 7.

File

  • 보조 기억 장치에 연관된 정보들의 집합
    • 보조 기억 장치 할당의 최소 단위
    • sequence of bytes
    • 프로그램 파일, 데이터 파일
    • text 파일, binary 파일
  • 파일 속성 : name, identifier, type, location, size, protection, user identification, time 등등
  • 파일 연산 : create, write, reposition, read, delete 등등 수행

⇒ OS는 파일 연산들에 대한 system call을 제공해야 함

 

파일 접근 방법

  • Sequential access : file을 record 단위로 순서대로 접근 (fgetc())
  • Directed access : 원하는 block을 직접 접근 (lseek(), seek())
  • Indexed access : index를 참조하여, 원하는 block을 찾은 후 데이터에 접근

 

 

File System Organization

Partitions 

Disk(물리)를 논리적으로 나눈 개념 → mini disk, virtual disk 라고도 함

여러 개의 디스크를 하나로 묶을 수 있음

 

Directory

파일 분류, 보관하기 위한 개념

마찬가지로 OS에서 연산을 위한 system call을 지원해야 함

Flat Directory Structure

FS 내에 하나의 directory만 존재

⚠️ file name 충돌, 덮어씌워지는 문제, 분류 문제, 다중 사용자 환경에서 문제가 더욱 커짐

 

2-Level Directory Structure

 

사용자 마다 하나의 directory 배정

Master Directory, User Directory 두 개의 층

⚠️ 아직도 sub-directory 생성 불가능 → file name 충돌,

⚠️ 사용자 간 파일 공유 불가능 → 공유하고 싶으면 내 directory를 전체를 공개해야 함

 

 

Hierarchical/Tree Directory Structure

레벨이 두 개니까 관리하기 힘드네 그럼 늘리면 되지!

Tree 형태의 계층적 directory

사용자가 하부 디렉토리 생성 관리 가능 → system call이 제공되어야 함, *이하 Terminologies 개념 등장

대부분의 OS가 사용

⚠️ 서브디렉토리가 많아지면 복잡해짐, 유저는 루트 디렉토리 데이터를 변경 못함

 

*Terminologies

Home Directory, Current Directory, Absolute pathname, Relative pathname 등장

 

 

Acyclic Graph Directory Structure

Hierarchical 구조의 확장

디렉토리 안에 shared directory, shared file을 담을 수 있다. 유연성, 탐색 쉬움

리눅스의 link 개념을 사용 (바로가기)

사이클이 만들어지는 것을 허용하지 않기 때문에 acyclic

 

⚠️ 구조가 복잡함, 구현 어려움, 링크를 고려하면서 수정 삭제 해야 함

  • hard link
  • soft link

 

General Graph Directory Structure

사이클을 허용~!

⚠️ 파일 탐색 시 무한 루프를 고려해야 함