07. 파일 시스템

권한·2025년 11월 12일

운영체제

목록 보기
7/7

파일과 디렉토리

파일

file. HDD나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합. 의미있고 관련있는 정보를 모은 논리적 단위

  • 속성attribute 또는 메타데이터metadata
    유형, 위치(보조기억장치상 현재 위치), 보호(읽기쓰기실행 권한) 등 파일 관련
    정보
    • 유형 == 파일 종류(확장자)
      • 실행 파일 : 없음, exe, com, bin
      • 목적 파일 : obj, o
      • 소스 코드 파일 : c, cpp, cc, java, asm, py
      • 워드 프로세서 파일 : xml, rtf, doc, docx
      • 라이브러리 파일 : lib, a, so, dll
      • 멀티미디어 파일 : mpeg, mov, mp3, mp4, avi
      • 백업/보관 파일 : rar, zip, tar
  • 파일 연산을 위한 시스템 호출

디렉토리

directory == 폴더folder

  • 1단계 디렉토리single-level directory : 모든 파일이 하나의 디렉토리 아래 존재

  • 트리 구조 디렉토리tree-structured directory : 여러 계층으로 디렉토리를 가짐

  • 경로path
    디렉토리를 이용해 파일 위치, 파일 이름을 특정짓는 정보

    • 절대 경로absolute path
      루트 디렉토리로부터 자기 자신까지 이르는 고유한 경로
    • 상대 경로relative path
      현재 디렉토리로부터 시작

      💡 상대 경로 나타내는 또 다른 방법
      . : 현재 작업 디렉토리
      .. : 현재 작업 디렉토리의 상위(부모) 디렉토리
      🐥 최상위 디렉토리를 루트root 디렉토리 /
      루트 디렉토리는 부모 디렉토리가 없기 때문에 ..은 자기 자신을 의미

  • 디렉토리 연산을 위한 시스템 호출

  • 디렉토리 엔트리(행)
    많은 운영체제에서 디렉토리를 조금 특별한 파일로 간주. 디렉토리는 내부에 해당 디렉토리에 담긴 대상과 관련된 정보 담고있음. 이 정보는 보조기억장치에 보통 테이블(표) 형태로 구성•저장. 테이블에는 위치를 유추할 수 있는 정보가 담김

파일 시스템

디지털 데이터를 효과적으로 관리하기 위해 파일을 체계적으로 기록하는 방식

  • 파일 시스템의 주요기능
    • 저장장치 내 빈 공간 파악, 적절한 공간에 파일 저장
    • 사용자가 파일 생성, 수정, 삭제할 수 있도록 함
    • 파일 생성 시각, 수정 시간, 변경 시각... 관리. 생성, 수정, 삭제에 대한 로그 기록 및 백업, 복구 지원
    • 사용자 따라 접근 권한 부여하기도 함

파티셔닝

partitioning. 파티션(칸막이)을 나누는 작업. 저장 장치의 논리적인 영역을 구획
파티션partition : 파티셔닝을 통해 나누어진 영역 하나하나. 저장장치 내 공간을 분리해 독립적 공간을 만든 것
*일반적으로 하나의 볼륨은 하나의 파티션 내에 생성 → 파티션, 볼륨 용어 혼용 사용됨

포매팅

formatting. 포맷 작업. 저장 장치를 완전히 삭제하는 것이 아닌, 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지 결정하고 새로운 데이터를 쓸 준비를 하는 작업. 포매팅을 거치면 파일시스템이 결정됨. (= 볼륨에 파일시스템을 다시 설치하는것)

  • 저수준 포매팅
    저장 장치를 생성할 당시 공장에서 수행되는 물리적 포매팅
  • 논리적 포매팅
    파일 시스템을 생성하는 포매팅

❗ 파티셔닝과 포매팅을 거치지 않으면 보조기억장치를 곧바로 사용할 수 없음

파일 할당 방법

운영체제는 파일과 디렉토리를 블록block단위로 읽고 씀

  • 연속 할당contiguous allocation
    보조기억장치 내 연속적인 블록에 파일 할당
    연속 할당된 파일에 접근하기 위해선 파일의 첫번째 블록 주소와 블록 길이가 필요 → 디렉토리 엔트리에 파일이름, 첫번째 블록 주소, 블록 길이 명시
    • 구현이 단순하지만, 외부 단편화를 야기

  • 불연속 할당 - 연결 할당linked allocation
    각 블록 일부에 다음 블록의 주소를 저장해 각 블록이 다음 블록 가르키는 형태. 파일을 이루는 데이터를 연결 리스트로 관리. 파일이 여러 블록에 흩어져있어도 OK
    파일의 마지막 블록에는 다음 블록이 없다는 특별한 표시자(ex음수) 사용

    • 첫번째 블록부터 하나씩 차례대로 읽어야함
      임의 접근(random access, 파일 내 임의 위치에 접근) 속도가 매우 느림
    • 하드웨어 고장/오류 발생시 해당 블록 이후 블록 접근 불가
      파일을 이루는 블록에 문제가 발생하면 그 블록 이후의 블록에 접근 불가

    → 연결할당을 변형한 대표적 파일 시스템이 FAT 파일시스템임.

  • 불연속 할당 - 색인 할당indexed allocation
    블록 일부에 다음 블록 주소 표현. 파일의 모든 블록 주소를 색인블록index block에 모아 관리. 유닉스 파일 시스템의 기반
    디렉토리 엔트리에서는 파일이름, 색인블록주소를 명시

    • 임의의 위치에 접근하기 쉬움

파일 시스템 살펴보기

  • FAT 파일 시스템
    USB메모리, SD카드 등 저용량 저장 장치에서 사용
    • 파일 할당 테이블FAT; File Allocation Table
      각 블록에 포함된 다음 블록 주소들을 한데 모아 테이블로 관리
    • FAT파일 시스템 사용하는 파티션 도식도FAT가 메모리에 적재된 채 실행되면 기존 연결 할당보다 다음 블록을 찾는 속도가 매우 빨라짐(임의 접근 성능 개선).
    • FAT 파일 시스템의 디렉토리 엔트리 - 속성은 읽기전용/숨김 파일/시스템 파일/일반파일/디렉토리 식별 항목

💡 윈도우에서는 블록 대신 '클러스터'라고 부름.
💡 버전 따라 FAT12, FAT16, FAT32가 있으며 FAT뒤의 숫자는 블록(클러스터)을 표현하는 비트 수

  • 유닉스 파일 시스템
    유닉스 계열 운영체제에서 사용
    • i-node(index node)에 색인 블록 저장. 파일 속성 정보와 15개의 블록 주소가 저장될 수 있음.
      - i-node는 15개의 블록으로 한정되어 있음
      1. 블록 주소 중 12개는 직접 블록 주소 저장
      direct block : 파일 데이터가 저장된 블록
      2. 12개로 충분하지 않으면 13번째 주소에 단일 간접 블록 주소 저장
      single indirect block : 파일 데이터 저장한 블록 주소가 저장된 블록
      3. 13개로 충분하지 않으면 14번째 주소에 이중 간접 블록 주소 저장
      double indirect block : 단일 간접 블록(들)의 주소를 저장하는 블록
      4. 14개로 충분하지 않으면 15번째 주소에 삼중 간접 블록 주소 저장
      triple indirect block : 이중 간접 블록 주소(들)가 저장된 블록
  • NT 파일 시스템(NTFS)
    윈도우 운영체제에서 사용
  • ext 파일 시스템
    리눅스 운영체제에서 사용

💡 저널링journaling 기능
작업 로그를 통해 시스템 크래시가 발생했을 때 빠르게 복구하기 위한 방법
*시스템 크래시 : 컴퓨터 작업 중 갑자기 전원이 나가거나 치명적인 오류로 컴퓨터가 강제로 종료되어 버린 상황
(유/리눅스의 fsck, 윈도우 scandisk등 부팅 직후 파일 시스템 검사/복구하는 프로그램이 있지만, 시스템의 모든 블록에 대해 검사하므로 오래걸림)

1. 작업 직전 파티션 로그 영역에 수행하는 작업(변경 사항)에 대한 로그 남김
2. 로그를 남긴 후 작업 수행
3. 작업이 끝났다면 로그 삭제

→ 시스템 크래시가 발생했다면 로그 영역에 남긴 로그만 검사하면 OK

💡 마운트 mount
저장 장치의 파일 시스템에서 다른 저장 장치의 파일 시스템에 접근할 수 있도록 파일 시스템을 편입 시키는 작업

profile
티스토리로 옮김

0개의 댓글