본문 바로가기

23년 1학기 학교공부/운영체제및실습

[OS] 파일 시스템

목차

    728x90
    반응형
    SMALL

    📁 File System

    파일 시스템은 거대한 자료구조이며, 디스크와 같은 보조기억장치에 만들어진다.


    파일시스템이란 파일이라는 정보를 담는 자료구조 + 자료구조 내부 정보에 접근해서 그 정보를 처리하는 알고리즘까지 포함하는 것을 말한다.

     

     

    파일시스템은 아래 다섯가지로 구성된다.

    • Boot Block
    • 파티션 컨트롤 블럭이라고 부르는 Super block
    • 파일 시스템마다 있을수도 있고 없을수도 있는 Directory Structure
    • 파일 컨트롤 블록의 리스트
    • 파일의 내용을 저장하는 데이터 블록들

     

     

     

    📁 Directory Structure

    디렉토리에 대한 정보를 따로 저장하는 영역이다.

    파일 시스템에 따라 있을 수도 있고, 없을 수도 있다.

     

     

     

    📁 Data blocks

    실제 파일의 내용을 저장하는 곳이다.

     

    파일시스템은 하나의 물리적인 디스크 안에 하나의 파일 시스템을 만들수도 있고,

    장치 하나에 논리적으로 여러개의 영역으로 나눠서 각각을 파티션이라고 부르는 영역마다 파일시스템을 만들수도 있고,

    여러개의 디스크에 걸쳐서 파일 시스템을 만들수도 있다.

     

     

    위 그림은 hda 디스크에 hda1, 2, 3이라고 하는 3개의 파티션을 나누고, 각 파티션에 파일시스템을 만들었다.

    hda 1, 2, 3에는 os에 따라 다른 파일시스템이 만들어지는데, 레코드처럼 자료구조로서 네가지 정보가 들어가는 영역이 만들어진다.

     

    위 예시처럼 pc를 쓸때 c드라이브, d드라이브처럼 디스크에 파티션을 나누고 각각의 파일시스템을 만드는것이다.

     

     

     

    실제 파일 시스템의 사례를 보자.

    유닉스 운영체제의 파일 시스템이다.

     

    여기에는 디렉토리 스트럭쳐가 따로 없고, inode list(inode table)라는 영역이 있는데 이게 파일 컨트롤 블록의 리스트이다.

    유닉스에서는 파일 컨트롤 블록을 inode라고 부른다.

     

     

    위 그림은 Windows NTFS 파일시스템의 구조이다.

     

    • 파티션 부트 섹터는 부트 블록과 같고
    • 마스터 파일 테이블은 파일 컨트롤 블록 리스트와 같다.
    • 시스템 파일이 파티션 컨트롤 블록, 즉 슈퍼블록과 같다.
    • 파일 에어리어가 데이터 블록과 같다.

     

     

    두 파일시스템은 순서만 다를 뿐 기본적으로 유사한 구조를 가지고 있다

     

     

     

     

    📁 파티션 컨트롤 블록(슈퍼블록)

    파일시스템 전체에 대한 제어 정보를 가진 일종의 헤더이다.

    제어 정보를 갖고있기 때문에 만약 슈퍼블록이 손상되면 뒤에 있는 파일 시스템을 엑세스하는데 문제가 생긴다.

     

    슈퍼블록은 다음과 같은 정보를 가지고 있다.

    • 파일 시스템에 블럭이 몇개가 있는지, 즉 크기. 파일 시스템이 몇바이트로 구성되어 있는지.
    • 파일 시스템 내에 비어있는 데이터블록이 몇개인지.
    • 프리데이터 블록 리스트, 즉 몇 번 블록들이 사용되지 않고 비어있는지.
    • inode list(inode table, FCB list)
    • 프리 inode 개수

     

     

    inode는 파일 하나당 한개씩 배정된다.

    때문에 inode table에 만들어져있는 inode의 개수가 곧 파일 시스템이 만들어줄 수 있는, 파일 시스템이 담을 수 있는 최대 파일의 개수가 된다.

     

    super block에 위와 같은 정보들을 가지고 있어야 새 파일을 만들 때 빈 inode가 몇개 남았는지 확인하고, 있으면 inode list에서 비어있는 inode를 하나 받고, 파일의 제어정보를 집어넣는다.

    파일이 만들어졌고, 내용이 채워지려면 빈 데이터 블록이 있어야한다. super block에 저장한 정보로 빈 데이터블록이 몇개인지 파악하고, 빈 데이터 블록이 있으면 어떤게 비어있는건지 확인하고, 할당 받아서 내용을 집어넣어 저장하면 파일이 만들어지는것이다.

     

     

     

     

    📁 inode list(FCB list)

    파일 컨트롤 블록은 파일 속성(파일애트리뷰트)이라는 파일에 대한 정보를 저장하고, 크기는 128byte이다.

     

    즉 FCB list란 128바이트짜리 파일 컨트롤 블록이 쭉 연이어져있는 배열이다.

     

    파일 하나당 파일 컨트롤 블록 하나가 할당된다.

    파일이 만들어지면 운영체제는 파일에 대한 속성(애트리뷰트) 정보를 담은 자료구조를 별도로 만든다. 이게 파일 컨트롤 블록인데, 파일 컨트롤 블록은 파일 내부에 만드는게 아니라 정보만 별도의 데이터 스트럭쳐(FCB list)안에 모아놓는다.

    파일시스템이 생성될때 FCB(inode)를 모두 몇개 만들지를 설정한다.

     

    파일 하나당 inode 하나가 배정되므로 n-1개가 파일 시스템이 담을 수 있는 최대 파일 개수이다. 인덱스 번호를 이용해서 inode list 안에서 특정 inode를 식별한다. 이 인덱스 번호가 고유한 식별자이며,  inode 넘버라고 부른다.

     

    inode 2번은 파일시스템의 루트 디렉토리의 inode이다.

    728x90
    반응형
    LIST