
개요
컴퓨터의 보조기억장치(HDD, SSD 등)에 정보를 무질서하게 저장하면 원하는 정보를 찾는 데 시간이 오래 걸릴 수 있습니다. 운영체제는 보조기억장치를 효율적으로 관리하기 위해 파일 시스템을 사용합니다.
파일 시스템은 보조기억장치 내 정보를 파일 및 디렉터리 단위로 접근하고 관리하는 운영체제 내부 프로그램입니다.
파일과 파일 디스크립터
파일은 크게 파일 이름, 실행을 위한 정보, 그리고 메타데이터(metadata)로 구성됩니다.
메타데이터는 파일의 크기, 생성 및 수정 날짜, 접근 권한 등의 부가 정보로 구성되어 있으며, 이를 속성(attribute)라고도 합니다.
운영체제는 프로세스가 파일을 열거나 생성할 때 해당 파일을 식별할 수 있도록 파일 디스크립터(file descriptor)를 할당합니다. 파일 디스크립터는 운영체제가 파일을 관리하는 데 사용하는 고유 식별자이며, 프로세스는 이를 통해 파일을 조작할 수 있습니다.
- open() : 파일을 열고 파일 디스크립터를 반환하는 시스템 콜
- write(fd, data) : 파일 디스크립터 fd를 이용해 데이터를 쓰는 시스템 콜
- close(fd) : 파일 디스크립터 fd를 이용해 파일을 닫는 시스템 콜
디렉터리
운영체제는 여러 파일들을 효율적으로 관리하기 위해 디렉터라(Directory)를 사용합니다.
디렉터리는 계층적 구조를 띄고 있고, 오늘날의 디렉터리는 여러 계층을 가진 트리 구조 디렉터리(tree-structured directory)로 관리됩니다.
윈도우에서는 최상위 디렉터리를 흔히 'C:\'로 표현한다. '\'를 디렉터리 구분자로 사용
디렉터리는 디렉터리에 속한 요소의 관련 정보가 포함된 파일로 간주합니다.
디렉터리에 속한 요소의 관련 정보는 테이블의 형태로 표현되며, 테이블 형태로 표현된 정보의 행 하나하나를 디렉터리 엔트리(directory entry)라고 합니다. 디렉터리 엔트리에는 파일의 이름과 파일이 저장된 위치 정보가 포함되어 있습니다.
home 디렉터리 테이블은 아래와 같습니다.
파일 이름 | 저장된 위치 정보 |
.. | 상위 디렉터리 위치 정보 |
. | 현재 디렉터리 위치 정보 |
minchul | minchul 디렉터리 위치 정보 |
guest | guest 디렉터리 위치 정보 |
파일 할당
운영체제는 파일과 디렉터리를 블록(block)라는 단위로 읽고 씁니다. 보통 하나의 블록 크기는 4KB 정도이며, 운영체제는 보조기억장치에 파일을 저장할 때 하나 이상의 블록을 할당받아 저장합니다.
연결 할당(linked allocation)
각 블록의 일부에 다음 블록의 주소를 저장하여 각각의 블록이 다음 블록을 가리키는 형태로 할당합니다.
색인 할당(indexed allocation)
파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식입니다.
파일 시스템
운영체제는 각기 다른 파일 시스템을 지원하며, 같은 운영체제라도 다른 파일 시스템을 사용하거나 하나의 컴퓨터에서도 여러 파일 시스템을 사용할 수 있습니다.
파티셔닝(partitioning)
한 보조기억장치에 여러 파일 시스템을 적용하여 사용하려면 보조기억장치 내에 파일 시스템을 적용할 영역이 구분되어야 한다. 이때 보조기억장치의 영역을 구획하는 작업을 파티셔닝(partitioning)이라고 하며, 파티셔닝으로 나누어진 하나의 영역을 파티션(partition)이라고 한다.
다양한 파일 시스템 중 어떤 파일 시스템을 사용할지는 보조기억장치를 포매팅할 때 경정할 수 있습니다.
포매팅(formatting)이란 파일 시스템을 설정하여 파일 저장 및 관리 방식을 결정하고, 새로운 데이터를 쓸 준비를 하는 작업을 의미합니다.
리눅스의 경우 지원하는 파일 시스템의 종류는 아래와 같습니다.
- EXT, EXT2, EXT3, EXT4, XFS, ZFS 등
리눅스 계열 운영체제의 파일시스템은 아이노드라는 색인 블록을 기반으로 파일을 할당합니다.
아이노드 기반 파일 시스템
리눅스 계열 운영체제에서는 아이노드(i-node, index-node) 기반 파일 시스템을 사용합니다.
파일마다 고유한 아이노드 번호가 부여되며, 아이노드는 파일의 메타데이터 및 블록 주소 정보를 포함하는 구조체이다.
- ls -li 명령어를 사용하면 각 파일의 아이노드 번호를 확인할 수 있습니다.
각 행의 맨 앞의 숫자가 아이노드 번호입니다.
하드링크 & 소프트 링크
하드 링크(Hard Link) 파일은 원본 파일과 같은 아이노드 번호를 공유하는 파일로, 원본 하드 링크 파일을 변경하면 원본 파일도 변경됩니다.
심볼릭 링크(Symbolic Link) 파일은 원본 파일을 가리키는 파일로 원본 파일의 경로를 저장하는 별도의 파일입니다.
그렇기에 원본 파일이 삭제되거나 이동되면 사용이 불가능합니다.
마운트 (Mount)
마운트(Mount)란 어떤 저장장치의 파일 시스템에서 다른 저장장치의 파일 시스템으로 접근할 수 있도록 파일 시스템을 편입시키는 작업을 의미합니다.
예를 들어, USB 메모리를 컴퓨터에 연결하면 USB 파일 시스템을 운영체제에서 접근할 수 있는 이유가 바로 마운트 때문입니다.
참고
강민철. 『 이것이 취업을 위한 컴퓨터 과학이다 』
[운영체제] #11. File System
더보기목차File ConceptFile AttributesFile OperationsFile Access MethodDirectory Structure Concept전형적인 File System 구성Directory StructuresFile 의 구현Directory 의 구현ProtectionAcess Lists and Groups File ConceptFile as Abstraction정
whitehacking.tistory.com
'운영체제' 카테고리의 다른 글
운영체제 파헤치기5 - 메모리 관리 (0) | 2025.02.23 |
---|---|
운영체제 파헤치기4 - CPU 스케줄링 (0) | 2025.02.13 |
운영체제 파헤치기3 - 동기화와 교착 상태 (0) | 2025.02.11 |
운영체제 파헤치기2 - 프로세스와 스레드 (0) | 2025.02.08 |
운영체제 파헤치기1 - 시스템 콜과 이중 모드 (0) | 2025.02.06 |
느리더라도 단단하게 성장하고자 합니다!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!