Study/CS 기초

운영체제 - 파일 시스템

김 도경 2024. 10. 21. 18:57

[2024.10.21] 필수 온라인 강의 Part2 운영체제 CH06 파일 시스템

 

- 운영체제 내부에서 파일과 디렉터리를 관리해주는 한 부분

파일과 디렉터리
파일시스템의 관리 대상

 

  • 파일 시스템
    - 파일과 디렉터리(폴더)를 관리하는 커널의 한 부분
    - 다양한 파일 시스템이 있고, 여러 파일 시스템을 동시에 사용할 수 있음

  • 파일 (file)
    - 보조기억장치의 의미있는 정보의 집합
    - 구성 요소 : 이름, 실행하기 위한 정보, 부가 정보(메타데이터, 속성)
              - 속성 : 유형 (확장자), 크기, 생성 날짜, 마지막 접근 날짜, 마지막 수정 날짜, 생성자, 소유자, 위치
  • 블록(block) 
    - 파일(+ 디렉터리) 접근 단위
    - 섹터 단위로 접근하지 않음 : 하드디스크 제일 작은 단위(섹터)
    - 운영체제가 보조기억장치를 지칭할때도 블록 단위로 함

  • 디렉터리(폴더)
    - 파일을 한 곳에 묶어서 관리할 수 있는 대상중 하나
    - 계층/tree 구조 : 경로(특정파일의 위치를 식별할 수 있는 정보)라는 걔념이 발생
    - 루트 디렉터리 = 최상위 폴더(최상단에 위치한 폴더) = /로 표현 = 예시)C드라이브 등

    - 절대 경로 : 최상위 폴터에서의 지금까지의 전제 경로
    - 상대 경로 : 현재경로를 기반으로 한, 파일의 경로
    - 특별경로를 나타내는 표시자 : 현재 경로(.), 상위 경로(..),  홈 디렉터리(기본경로)(~)

    - 많은 운영체제는 디렉터리를 파일과 동일하게 간주한다
    - 디렉터리 테이블 구성 정보 : 파일 이름 , 위치를 유추할 수 있는 정보 , (파일 속성 : 가끔 저장)
       - 보조기억장치에서 디렉터리 테이블(파일 이름/위치 유추할 수 있는 정보)로 저장되어있음
               -> 디렉터리 테이블을 통해 특정 파일에 접근가능
파일 시스템이 만들어지기까지

 

- 보조기억장치 하나에 단일한 파일 시스템이 사용되는 것이 아니다 : 영역을 나눌 필요가 있다.

  • 파티셔닝(partitioning)
     - 보조기억장치의 영역을 구획하는 작업 : 아주 작은 용량은 필요 없음
              -파티션(partition): 보조기억장치에서 구획된 영역
     - 커다란 용량을 가진 기억장치에 마구잡이로 저장시, 관리와 찾는 시간이 굉장히 오래 걸림
     - 파티션마다 각기 다른 파일시스템을 사용 가능함.
    - fdisk 명령어 사용

  • 포매팅(format + ing)
    - 파티셔닝 후에 바로 파일 저장/디렉터리 저장 할 수 없음
    - 파일 시스템을 만들려면, 각각의 파티션에 어떤 파일시스템을 쓸거에요로 초기화를 해줘야함!!!!
    - 파일시스템을 만드는 작업 : 포메팅을 할 때, 파일시스템이 결정이 된다!
    - 파일시스템이 달라지면, 어떤 식으로 보조기억장치에 있는 데이터덩어리를 파일로 할당을 할지/정보를 파일로 읽어드릴지 결정이 됨. 
    - mkfs (make file system) 명령어 사용

    - 운영체제 설치된 이후에도 가능하지만, 운영체제 설치시 파티셔닝/포매팅을 진행함

  • 마운트 (mount) : 파일 시스템에 접근할 경로 결정
    - 파티셔닝을 하고 포매팅을 하면, 어떤 보조기억장치의 영역을 어떤 파일시스템으로 사용할거다!가 나옴
       -> 얘에 접근이 가능해야함. : 어떤식으로 접근하는지를 결정해주는 과정
    - 파일 시스템을 다른 파일 시스템에 편입
      ( 예시 ) usb를 데스크탑에 편입을 시켜서 사용이 가능하게 함)
파일 시스템 종류와 특성
  • 운영체제가 보조기억장치에 있는 정보에 접근시 : 블록 단위로 접근 (가장 작은 단위는 sector)
    연속적으로 블록을 할당할 경우: 외부 단편화 발생
    -> 불연속적으로 파일을 할당하여 접근함

- 불연속적으로 저장된 파일에 접근하는 방법에 따라 나뉜다.

  • FAT 기반 파일 시스템
    - FAT(File Allocation Table)를 활용하는 파일 시스템
    - 저용량 저장장치에서 많이 사용함 ( USB 메모리, SD 카드 , MSMos)
    - FAT : 파일이 어디에 할당되었는지 저장하는 표와 같은 정보
    - 매모리에 캐시가 되어있음 : 메모리 두번에 접근X : 빠름

    - 디렉터리 엔트리(각각의 행)에 파일 속성 표현한다!!! (중요한 특징)
         - 디렉터리 엔트리에 파일 속성 표현 (파일 이름, 확장자, 속성, 예약영역, 생서시간, 마지막접근시간, 마지막수정시간, 시작블록 파일크기)

  • 아이노드 기반 파일 시스템
    - 아이노드(i-node)라는 색인 블록을 활용한 파일 시스템
         - 색인블록 : 이파일이 어떤 블록에 할당이 되어있는지에 대한 정보를 전부 한데 모아놓은 특별한 블록
         - 아이오드 : 이 색인블록으로 만들어진 unix 파일 시스템의 색인블록을 의미
              - 색인블록(index block)을 줄인말 = I-Node
              - 사실상 파일의 모든 것을 담고 있다 (아이노드만 알면 속성, 저장위치 모두 알 수 있음)
             - 파티션 내 아이노드 영역
            - 계층적인 관리, 15개까지만 생성
             - 단일 간접 블록/이중간접블록/삼중간접블록을 검색해보기
             - 아이노드 조회 : $ ls -i
             - 아이노드를 사용량이 100%로 찼을 경우 : 용량이 남아 있어도 파일 생성 불가

  • 기타 파일 시스템 특성 정리
    - NTFS : 윈도우 운영체제에서 주로 사용되는 파일 시스템
    - APFS : macOS, iOS, watchOS, tvOS에서 주로 사용되는 파일 시스템
    - ext2, ext3, ext4, xfs : 리눅스 운영체제에서 주로 사용되는 파일 시스템

  • 파일시스템 특성을 나누는 것 : 얼마나 큰 파일을 가능, 저널링 기능을 제공하는지?

  • 저널링 파일 시스템(journaling file system)
    - 파일 시스템에 크래쉬가 발생했을 때 빠르게 복구하기 위한 방법
           - 작업 직전 파티션의 로그 영역에 로그를 남긴다.
           - 로그를 남긴 후 작업을 수행한다.
           - 작업이 끝났다면 로그를 삭제한다.