[OS] 파일시스템

박세건·2024년 5월 9일
0

CS 학습

목록 보기
14/23
post-thumbnail

컴퓨터 시스템 자원 관리

  • CPU : 프로세스 관리(CPU 스케줄링, 프로세스 동기화)
  • 주기억장치 : 메인 메모리 관리(페이징, 가상 메모리)
  • 보조기억장치 : 파일 시스템

File

파일이란, 논리적인 저장단위로 관련된 정보들의 집합에 이름을 붙여 저장한 것을 의미합니다.

  • 일반적으로 레코드, 블록 단위로 저장
  • 보조기억장치에 저장
  • 필드란?
  • 파일 구성의 최소 단위
  • 레코드란?
    • 하나 이상의 필드가 모인 단위
    • 하나 이상의 레코드가 모여 파일이라 한다

파일의 구조

  • MetaData : 파일의 이름, 위치 크기 시간 정보 등의 파일에 대한 정보가 저장
  • Data 영역 : 실제 파일에 들어있는 데이터

File System

파일시스템이란, 파일을 쉽게 사용할 수 있도록 유지 또는 관리 하는 방법

특징

  • 커널 영역에서 동작
  • 계층적 Directory 구조
  • 각각의 디스크 파티션에 하나씩 배정 가능

파티션

  • 연속된 저장공간을 나눠서 사용하기 위한 규약
  • 하나의 디스크에 여러 파티션을 두는 것이 일반적
  • 여러개의 디스크를 하나의 파티션으로 부르기도 함

역할

  • 파일의 CURD 담당
  • 보조 저장소 관리
  • 다양한 접근 방법 제공
  • 권한 없는 사용자나 악의적인 접근 차단
  • 파일 무결성 확인
    • 파일이 조작되지 않았는지, 이상은 없는지 확인

목적

  • 하드디스크와 메인 메모리 사이의 속도 차이를 줄이기 위함
  • 파일관리
  • 하드 디스크의 용량을 효율적으로 관리

종류

  • Window : NTFS
  • UNIX : UFS
  • MS-DOS : FAT 16/32
  • USB : VFAT
  • CD : CDFS
  • 원격 저장소 : NFS

Access Methods(접근 방법)

  1. Sequential Access(순차 접근)
  2. Random Access(임의 접근)
  3. Index Access(색인 접근)

Sequential Access(순차 접근)

  • 가장 단순한 접근 방법
  • 파일의 정보가 레코드 순서대로 처리
  • 카세트 테이프를 사용하는 방식과 동일(앞으로만 작동)
    • 현재 위치에서 읽거나 쓰면 offset이 자동으로 증가
    • 뒤의 방향을 처리하기 위해서는 되감기 필요(rewind)

연산 종류

  • read next : 현재 위치 읽고 position은 다음으로
  • write next : 현재 위치에서 쓰고 position은 다음으로
  • rest : Pointer 초기화

Direct Access(직접 접근)

  • 파일의 레코드를 원하는 레코드로 접근
  • 빠르게 레코드를 읽고 쓰는 것이 가능
  • 때문에 대규모 정보를 접근할 때 유용(DB 활용)
  • 현재 위치를 가리키는 변수를 유지시키면 순차접근 구현 가능

연산 종류

  • read n : n 번째 블록 읽어라(position은 n에 위치)
  • write n : n 번째 블록 써라
  • position to n : n 번째 블록 위치로 Pointer 이동
  • rewrite n

Index Access(색인 접근)

  • 색인을 먼저 찾고 대응되는 포인터를 얻어서 레코드에 접근
    • 이분탐색 생각
  • 크기가 큰 파일의 입출력 탐색을 도와줌

File Allocation(디스크 할당)

  • 파일의 내용을 담고있는 DataBlock의 위치 정보를 어떻게 저장할지 고려해야 함
  • OS 마다 다른 방식으로 File의 DataBlock을 관리
  • 섹터란?
    • 파일 시스템의 물리적 단위
    • 512bytes
  • 파일에서 블록이란?
    • 파일 시스템에서 데이터를 논리적으로 묶는 단위
    • 주로 섹터로 구성

할당 방법

  • Contiguous Allocation(연속할당)
  • Linked List Allocation(연결 할당)
  • Index Allocation (인덱스 할당)
  • I-Nodes(아이노드)

Contiguous Allocation(연속할당)


총 32개의 Disk Block

  • File을 물리적으로 연속된 DiskBlock에 저장

    Disk Block : 파일 시스템에 의해 나눠진 디스크 구역

장점

  • 구현이 간단
  • 연속된 공간으로 전체 파일을 읽을 경우 성능이 좋음(연속되어있기때문)

단점

  • File이 한번에 끝까지 기록되어야 함
  • File의 끝을 알리기 위해 Block을 사용하는 경우 Disk 낭비

Linked List Allocation(연결 할당)

  • Linked List로 구현하여 데이터를 저장

장점

  • File의 DataBlock은 어디든 위치
  • 공간의 낭비가 없음

단점

  • Direct Access, Index Access 불가
    • 파일의 특정위치는 시작 node 부터 탐색해야하기 때문
  • 다음 DataBlock을 가리킬 정보가 필요하기에 성능에서 뒤쳐질 수 있음
    • 대부분의 프로그램은 단위가 2의 배수이기때문에 다음 DataBlock을 가리킬 정보때문에 2의 배수가 아닐 수 있음

Index Allocation(인덱스 할당)

  • File의 Data와 관련된 Block을 하나의 Block에 저장(각각 어디에 존재하는 지)
    • 이를 Index Block이라고 하며 모든 Data의 위치를 파악할 수 있음
  • Index Block을 통해 Direct Access가 가능
  • Linked List Allocation보다 빠름

단점

  • Index Block의 크기가 고정이라 저장할 Pointer의 수가 한정적

I-Nodes

  • Index Block들을 Table 형태로 관리하는 방법

UNIX : I-Nodes
MS-DOS : Linked List Allocation


Directory Structure

  • Directory가 속한 파일 이름과 속성을 포함
  • Directory란?
    • 파일의 메타데이터 중 일부를 보관하고 있는 특별한 파일
    • 윈도우의 폴더 생각
    • Directory도 파일의 한 종류

기능

  • Create(파일 생성)
  • Search(파일 찾기)
  • Rename(파일 이름 수정)
  • Delete(파일 삭제)
  • List(Directory 나열)
  • Traverse (파일 시스템 순회)

구성

  • Naming : 적절한 이름 사용
  • Grouping : 적절한 분류로 그룹화
  • Efficiency : 파일을 빠르게 탐색

Directory Level

  • Single Level Directory
  • Two Level Directory
  • Tree Structured Directories
  • Acyclic Graph Directory(비순환 그래프)
  • General Graph Directory(일반 그래프)

Single Level Directory

  • 가장 간단한 구조
  • 모든 파일들이 Directory 밑에만 존재
  • 파일 이름이 서로 달라야함
  • 파일이 많아지면 문제 발생
    • 이름 문제
    • 그룹화 문제

Two Level Directory

  • 사용자별 별도의 Directory 소유
  • 사용자별 이름 중복 허용
  • 효율적인 탐색 가능
    • 경로명으로 찾기 가능

구조

  • MFD(Master File Directory) : 사용자의 이름으로 색인, UFD를 가리킴
  • UFD(User File Directory) : 사용자별 Directory
  • Grouping 없음

Tree Structured Directories

  • 이름 그대로 계층 구조 (트리 구조)
  • 사용자별 서브 디렉토리 소유 가능
  • 고유한 경로를 갖음 (절대 경로, 상대 경로)
  • 효율적인 탐색
  • 그룹화 가능
  • 연결된 것이 파일인지 디렉토리인지는 Bit를 사용해서 구분
    • 0 : 일반 파일
    • 1 : Directory

Acyclic Graph Directory(비순환 그래프)

  • Directory들이 Sub Directory나 File 공유 가능한 구조
  • 같은 파일에 대해서 서로 다른 Alias 사용 가능
  • 파일을 삭제하면 그것을 참조하고있는 다른 Directory의 대상이 사라짐
    • Dangling Pointer 문제
    • 이 문제를 해결하기 위한 참조 계수 존재
      • 참조 계수가 0이면 파일이 존재하지 않음을 의미, 그때 삭제 가능

General Graph Directory(일반 그래프)

  • 순환을 허용
  • 무한 루프 가능성 때문에 잘 사용하지 않음
  • 순환이 발생하지 않도록 하는 조치가 필요
    • 링크만 허용
    • Garbage Collection을 통한 접근 여부를 표시

용어

  • 커널 영역?
    • 운영체제를 실행시키 위한 메모리 공간
    • 컴퓨터가 부팅될때 메모리 내에 따로 적재
  • 커널?
    • 운영체제의 핵심 부분
    • 운영체제의 서비스를 담당
  • 클러스터?
    • 파일 시스템에서 실제 데이터저장하고 관리하는 논리적인 최소 단위
    • 주로 섹터로 구성
    • Cluster=Sector1+Sector2+...s
  • offset이란?
  • Access Methods란 파일시스템이 파일에 접근하는 방법?
profile
멋있는 사람 - 일단 하자

0개의 댓글

관련 채용 정보