본문 바로가기
CS(Computer Science)

[CS] inode 파일 시스템 구조 이해

by 개발지망생 2023. 3. 1.

📖 inode 파일 시스템 구조 이해

inode 방식의 파일 시스템은 기본적으로 블록단위로 이루어져 있다.

  • 수퍼 블록 : 파일 시스템에 대한 정보 및 파티션 정보를 가지고 있다.
  • 아이노드 블록 : 각각의  파일에 대한 상세한 정보가 들어 있다.
  • 데이터 블록 : 실제 데이터가 들어 있다.

✅ inode와 파일

리눅스 시스템에서 각각의  파일은 유일한 inode 고윳값과 inode 기반으로 하는 PCB 같은 자료구조에 의해 주요 정보를 관리한다.

과정을 대략 정리하면 다음과 같다.

 

  1. '파일이름 : inode'로 파일이름은 inode 번호와 매칭
  2. 파일 시스템에서는 inode를 기반으로 파일 액세스
  3. inode 기반 메타 데이터 저장

 

💡 inode 기반 메타데이터에는 어떤 것들이 있을까?
inode 기반 메타데이터 에는 파일 권한, 소유자 정보, 파일 사이즈, 생성시간등 시간 관련 정보, 어떤 블록을 가지고 있는지에 대한 데이터 저장 위치 등이 있다.

 

📌 디렉터리 엔트리

현재폴더에 있는 파일과 하부 폴더 정보를 알고 싶어 별도로 관리를 하는 것을 디렉터리 엔트리 라고 한다.

예시를 들며 정리하면 다음과 같다.

 

  1. 리눅스 파일 탐색 : 예 - /home/ubuntu/link.txt
  2. 각 디렉터리 엔트리(dentry)를 탐색
    • 각 엔트리는 해당 디렉터리 파일/디렉터리 정보를 가지고 있음
  3. '/' dentry에서 'home'을 찾고, 'home'에서 'ubuntu'를 찾고, 'ubuntu'에서 link.txt파일 이름에 해당하는 inode를 얻음

 

📌 가상 파일 시스템(Virtual File System)

Network 등  다양한 기기도 동일한 파일 시스템 인터페이스를 통해 관리 가능하다
예 : read/write 시스템콜 사용, 각 기기별 read_spec/write_spec 코드 구현(운영체제 내부)

 

유닉스 계열의 전통적인 운영체제는 모든 것을 파일로 다루는데 모든 것을 파일로 다룬다는 것은 시스템콜 입장에서 보면 read/write 시스템콜 사용함을 의미하는 것이며, 각 기기별 read_spec/write_spec 코드 구현(운영체제 내부) 하는데 이것을 보통 드라이버라고 부르며 파일 같은 경우는 파일시스템이라 부른다.


개별적인 인터페이스를 개별적인 드라이버나 파일시스템에서 구현을 해주고 어떤 기기인지만 지정을 해주면 동일한 인터페이스를 가지고 여러 기기들을 다룰 수 있다. 그때 그 동일한 인터페이스가 파일 시스템 관련된 인터페이스 이기 때문에 파일  시스템으로 여러 기기를 다룬다 해서 가상 파일 시스템이라 한다.

 

💡 리눅스(유닉스) 운영체제와 가상 파일 시스템
모든 것은 파일이라는 철학을 따른다.
- 모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져 있다.
- 마우스, 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어진다.
- 모든 자원에 대한 추상화 인터페이스로 파일 인터페이스를 활용한다.

💡 특수 파일
디바이스를 파일처럼 다루다 보니까 이걸 특수 파일이라 하며, 두 가지 타입으로 나뉜다.
블록 디바이스 : HDD, CD/DVD와 같이 블록 또는 섹터 등 정해진 단위로 데이터 전송, IO 송수신 속도가 높다.
캐릭터 디바이스 : 키보드, 마우스 등 byte 단위 데이터 전송, IO 송수신 속도가 낮다.

 

✅ 운영체제 이론 기반, 현대 운영체제 구조 이해

 

📌 리눅스 운영체제

리눅스 커널(운영체제) + 시스템 프로그램(쉘) + 응용 프로그램

 

📌안드로이드 스마트폰

리눅스커널 + (쉘 + 기본 프로그램들) + 안드로이드 프레임워크

'CS(Computer Science)' 카테고리의 다른 글

[CS] 부팅 과정 이해  (0) 2023.03.01
[CS] 가상머신과 운영체제 이해  (0) 2023.03.01
[CS] 가상 메모리 정리  (0) 2023.02.27
[CS] 스레드(thread) 간략 정리  (0) 2023.02.22
[CS] 프로세스 구조 이해  (0) 2023.02.19

댓글