Skip to main content

SSAFY CS 스터디: 이취컴 Chapter 3-6 정리

Chapter 03 운영체제 - 6 파일 시스템

p.223~254


파일 시스템: 보조기억장치 정보를 파일 및 디렉터리 형태로 저장하고 관리할 수 있게 하는 OS 내부 프로그램

파일과 디렉터리

파일

파일명, 파일 실행을 위한 정보, 부가 정보로 구성

부가 정보
  • 속성: 형식, 위치, 크기
  • 메타데이터
파일 디스크립터

프로세스가 시스템 콜을 통해 할당받은 파일을 구분하고자 저수준에서 식별하는 정보.
프로세스가 새 파일을 열거나 생성시 해당 파일에 대한 파일 디스크립터를 프로세스에 할당한다.

open()은 파일 디스크립터를 반환하고, write()close()는 파일 디스크립터를 인자로 받는다.

※윈도우에선 파일 핸들이라고 한다.

파일만 식별하지 않아요

입출력장치, IPC용 파이프, 소켓도 파일 디스크립터로 식별한다.
보통 0~2는 stdin, stdout, stderr로 예약되어 있기에, 식별 값은 3부터 시작한다.

디렉터리

윈도우에서 폴더라고 부르며, 트리 구조로 관리된다.

  • 최상위 디렉터리와 서브 디렉터리로 구성
  • 경로: 디렉터리와 구분자를 통해 파일 위치를 특정하는 정보

※윈도우의 최상위 디렉터리는 C:\

디렉터리도 파일이다

디렉터리는 '디렉터리에 속한 요소의 정보를 담은 파일'이다.

해당 정보는 테이블로 관리되며, 테이블의 행을 디렉터리 엔트리라고 한다.
👉️ [ 파일명, 파일 위치 정보 ] 필수 포함, 선택적으로는 생성시간, 수정시간, 크기 등..

파일 할당

OS는 파일과 디렉터리를 블록 단위로 읽고 쓴다. (보통 4096 바이트)

연결 할당 (Linked Allocation)

각 블록에 다음 블록의 주소를 저장하여 가리키는 형태로 할당하는 방식
디렉터리 엔트리에 파일명, 첫번째 블록 주소, 블록 길이가 들어있다.

색인 할당 (Indexed Allocation)

파일을 이루는 모든 블록의 주소를 색인 블록에 저장하는 방식
디렉터리 엔트리에 파일명, 색인 블록 주소가 들어있다.


파일 시스템

OS마다 다른 파일 시스템을 지원한다.
동일 OS에서도 사용하는 파일 시스템이 다를 수 있고, 한 컴퓨터에서 여러 파일 시스템을 사용할 수도 있다.

파티셔닝

보조기억장치의 영역을 구획하는 작업. 구획된 영역을 파티션이라고 한다.
👉 파티션마다 다른 파일 시스템을 사용할 수 있다.

어떤 파일 시스템을 사용할지는 보조기억장치를 포맷할 때 결정 가능하다.

  • 포맷: 파일 시스템 설정해 어떤 방식으로 파일 저장하고 관리할지 결정 + 새로운 데이터 쓸 준비하는 작업

  • 아이노드: "파일명 제외" / 파일이 저장된 위치, 속성 등의 정보를 담고 있는 색인 블록

아이노드 기반 파일 시스템

각 파일이 아이노드를 가지고 있으며, 아이노드에 각각의 번호가 부여됨.
데이터 영역에 공간이 남아있어도, 아이노드 영역이 가득 차면 새 파일을 생성할 수 없다.

EXT4 포맷의 각 블록 그룹 별 블록 구성

  1. 슈퍼 블록: 아이노드 개수, 총 블록 수, 블록 크기 등 전체적인 정보
  2. 그룹 식별자: 현 블록 그룹의 메타데이터
  3. 블록 비트맵: 현 블록 그룹에서 데이터 할당 상태를 저장
  4. 아이노드 비트맵: 현 블록 그룹에서 아이노드 할당 상태를 저장
  5. 아이노드 테이블: 각 파일의 아이노드 정보
  6. 데이터 블록: 각 파일의 데이터
하드 링크와 심볼릭 링크

  • 하드 링크: 원본 파일과 같은 아이노드를 공유하는 파일
    • 하드 링크 파일을 변경하면 원본도 변경됨
    • 원본 파일이 삭제되거나 이동해도 파일 데이터 접근 가능
    • 동일 파일을 여러 이름으로 참조하고 싶을 때 유용
  • 심볼릭 링크: 원본 파일의 위치를 저장한 파일 (ex. 바로가기)
    • 원본 파일이 삭제되거나 이동하면 사용 불가능
    • 복잡한 경로의 파일을 간단하게 참고하고 싶을 때 유용

마운트

USB를 꽂았을 때 컴퓨터의 파일 시스템을 통해 USB의 파일 시스템에 접근할 수 있는 이유는 '마운트'되었기 때문

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


📒 추가 학습 NOTE

전원 버튼을 누르고 부팅이 되기까지

  • 부팅: 커널을 메모리에 적재하여, 컴퓨터를 시작하는 과정
  • UEFI: 대용량 환경에서 부팅 가능하고, 빠르고 안전한 부팅 및 GUI 지원하는 인터페이스

부팅 과정

  1. 전원이 인가된다. (=전원 버튼을 누른다)
  2. ROM에 들어있는 BIOS를 읽어들인다.
  3. BIOS가 하드웨어 이상 여부 검사인 POST를 수행한다.
  4. 보조기억장치의 MBR에서 부트로더(=부트스트랩)를 읽어들인다.

가상 머신과 컨테이너

가상 머신

SW적으로 만들어낸 가상의 컴퓨터

하이퍼바이저

  • 가상 머신을 만들고 실행하기 위해 사용하는 소프트웨어 (ex. VirtualBox, VMware)
  • 하드웨어 수준의 자원 격리 및 가상화 제공
  • 장점: 높은 격리성
  • 단점: 별도의 OS를 유지하면서 공용 HW 자원을 할당받음 -> 오버헤드 大 -> 속도, 용량 문제

컨테이너

  • 동일한 커널 공유, 주어진 프로세스의 실행에 필요한 자원만을 격리한다.
  • 운영체제 수준의 자원 격리 및 가상화 제공
  • 장점: 경량화, 플랫폼에 구애받지 않는 실행

ex. Docker, LXC

컨테이너 오케스트레이션

컨테이너 자동 배포, 동적 개수 가감, 컨테이너 간 네트워크 구성 등 컨테이너를 관리하는 도구
ex. k8s